diff --git a/.github/workflows/Ubuntu.yml b/.github/workflows/Ubuntu.yml index dfe2421f..6d7389d8 100644 --- a/.github/workflows/Ubuntu.yml +++ b/.github/workflows/Ubuntu.yml @@ -14,6 +14,8 @@ jobs: with: cuda: '11.7.0' linux-local-args: '["--toolkit"]' + - run: sudo apt-get update + - run: sudo apt-get install -y xorg-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev - run: nvcc -V - name: Checkout uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index c4f91b97..0649cec5 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ temp docs/doxygen/html/ docs/doxygen/latex/ + +!apps/lbmMultiRes/practice_v28.obj +!apps/lbmMultiRes/sphere3.obj diff --git a/CMakeLists.txt b/CMakeLists.txt index 11a374e8..be5969b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,18 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE Release) endif () +if (WIN32) + set(LIBIGL_USE_STATIC_LIBRARY "ON" CACHE BOOL "Use Libigl as a static library") + set(NEON_USE_POLYSCOPE "ON" CACHE BOOL "Enable Ployscope for visualization") +endif() + +if(${NEON_USE_POLYSCOPE}) + message(STATUS "Polyscope is enabled") +else() + message(STATUS "Polyscope is disabled") +endif() + + # Manage between building Neon as shared or static library include("${PROJECT_SOURCE_DIR}/cmake/ManageLibraryType.cmake") @@ -70,6 +82,9 @@ if (NOT OpenMP_CXX_FOUND) message(FATAL_ERROR "Neon could not find OpenMP") endif () target_link_libraries(NeonDeveloperLib INTERFACE OpenMP::OpenMP_CXX) +if(${NEON_USE_POLYSCOPE}) + target_compile_definitions(NeonDeveloperLib INTERFACE NEON_USE_POLYSCOPE) +endif() #target_link_libraries(libNeonXXX INTERFACE $) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 828f8dd7..f9b5bb71 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -5,3 +5,4 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR) #add_subdirectory("gameOfLife") #add_subdirectory("poisson") add_subdirectory("lbmMultiRes") +add_subdirectory("lbmMultiResDisg") diff --git a/apps/lbmMultiRes/CMakeLists.txt b/apps/lbmMultiRes/CMakeLists.txt index 1c52366f..267b50b0 100644 --- a/apps/lbmMultiRes/CMakeLists.txt +++ b/apps/lbmMultiRes/CMakeLists.txt @@ -1,12 +1,17 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR) set (APP_NAME app-lbmMultiRes) -file(GLOB_RECURSE SrcFiles lbmMultiRes.cu lattice.h init.h postProcess.h util.h coalescence.h collide.h explosion.h stream.h store.h verify.h) +file(GLOB_RECURSE SrcFiles lbmMultiRes.cu lbmMultiRes.h lattice.h init.h postProcess.h util.h coalescence.h collide.h explosion.h stream.h store.h verify.h flowOverShape.h lidDrivenCavity.h fusedFinest.h) add_executable(${APP_NAME} ${SrcFiles}) target_link_libraries(${APP_NAME} - PUBLIC libNeonSkeleton) + PUBLIC libNeonSkeleton glm::glm igl::core) + +if(${NEON_USE_POLYSCOPE}) + target_link_libraries(${APP_NAME} + PUBLIC libNeonSkeleton polyscope) +endif() set_target_properties(${APP_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON diff --git a/apps/lbmMultiRes/coalescence.h b/apps/lbmMultiRes/coalescence.h index a7c4381d..95d046d2 100644 --- a/apps/lbmMultiRes/coalescence.h +++ b/apps/lbmMultiRes/coalescence.h @@ -2,12 +2,12 @@ #include "lattice.h" template -inline Neon::set::Container coalescence(Neon::domain::mGrid& grid, - const bool fineInitStore, - const int level, - const Neon::domain::mGrid::Field& sumStore, - const Neon::domain::mGrid::Field& fout, - Neon::domain::mGrid::Field& fin) +inline Neon::set::Container coalescence(Neon::domain::mGrid& grid, + const bool fineInitStore, + const int level, + const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& fin) { // Initiated by the coarse level (hence "pull"), this function simply read the missing population // across the interface between coarse<->fine boundary by reading the population prepare during the store() @@ -22,7 +22,8 @@ inline Neon::set::Container coalescence(Neon::domain::mGrid& g return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { //If this cell has children i.e., it is been refined, than we should not work on it //because this cell is only there to allow query and not to operate on - const int refFactor = pout.getRefFactor(level); + //const int refFactor = pout.getRefFactor(level); + constexpr T repRefFactor = 0.5; if (!pin.hasChildren(cell)) { for (int q = 0; q < Q; ++q) { @@ -32,15 +33,16 @@ inline Neon::set::Container coalescence(Neon::domain::mGrid& g } //if we have a neighbor at the same level that has been refined, then cell is on //the interface and this is where we should do the coalescence - if (pin.hasChildren(cell, dir)) { + + if (pin.hasChildren(cell, dir) && pin.isActive(cell, dir)) { auto neighbor = pout.getNghData(cell, dir, q); if (neighbor.mIsValid) { if (fineInitStore) { auto ssVal = ss.getNghData(cell, dir, q); assert(ssVal.mData != 0); - pin(cell, q) = neighbor.mData / static_cast(ssVal.mData * refFactor); + pin(cell, q) = neighbor.mData * ssVal.mData; } else { - pin(cell, q) = neighbor.mData / static_cast(refFactor); + pin(cell, q) = neighbor.mData * repRefFactor; } } } diff --git a/apps/lbmMultiRes/collide.h b/apps/lbmMultiRes/collide.h index 477ff5cb..f1e02cac 100644 --- a/apps/lbmMultiRes/collide.h +++ b/apps/lbmMultiRes/collide.h @@ -134,7 +134,7 @@ inline Neon::set::Container collideBGKUnrolled(Neon::domain::mGrid& //this is because we use the refined voxels the interface to //accumulate the fine level information in Store operation //which should be reset after each collide - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { out(cell, q) = 0; } } @@ -228,7 +228,7 @@ inline Neon::set::Container collideKBC(Neon::domain::mGrid& //equilibrium const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { T cu = 0; for (int d = 0; d < 3; ++d) { cu += latticeVelocity[q][d] * vel.v[d]; @@ -241,7 +241,7 @@ inline Neon::set::Container collideKBC(Neon::domain::mGrid& } //momentum_flux - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { for (int i = 0; i < 6; ++i) { Pi[i] += fneq[q] * latticeMoment[q][i]; } @@ -249,7 +249,7 @@ inline Neon::set::Container collideKBC(Neon::domain::mGrid& //fdecompose_shear - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { deltaS[q] = rho * fdecompose_shear(q); T deltaH = fneq[q] - deltaS[q]; @@ -263,7 +263,7 @@ inline Neon::set::Container collideKBC(Neon::domain::mGrid& //fout - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { T deltaH = fneq[q] - deltaS[q]; out(cell, q) = ins[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); } @@ -273,7 +273,7 @@ inline Neon::set::Container collideKBC(Neon::domain::mGrid& //this is because we use the refined voxels the interface to //accumulate the fine level information in Store operation //which should be reset after each collide - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { out(cell, q) = 0; } } @@ -301,20 +301,20 @@ Neon::set::Container collideBGK(Neon::domain::mGrid& grid const T omega = computeOmega(omega0, level, numLevels); return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { - if (type(cell, 0) == CellType::bulk) { + if (type(cell, 0) == CellType::bulk ) { if (!in.hasChildren(cell)) { //fin T ins[Q]; - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { ins[q] = in(cell, q); } //density T rho = 0; - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { rho += ins[q]; } @@ -323,9 +323,9 @@ Neon::set::Container collideBGK(Neon::domain::mGrid& grid const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { T cu = 0; - for (int d = 0; d < 3; ++d) { + for (int8_t d = 0; d < 3; ++d) { cu += latticeVelocity[q][d] * vel.v[d]; } cu *= 3.0; @@ -343,7 +343,7 @@ Neon::set::Container collideBGK(Neon::domain::mGrid& grid //this is because we use the refined voxels the interface to //accumulate the fine level information in Store operation //which should be reset after each collide - for (int q = 0; q < Q; ++q) { + for (int8_t q = 0; q < Q; ++q) { out(cell, q) = 0; } } @@ -354,9 +354,10 @@ Neon::set::Container collideBGK(Neon::domain::mGrid& grid } -template +template inline NEON_CUDA_HOST_DEVICE void store(const typename Neon::domain::mGrid::Idx& cell, FieldT& pout, + const int8_t q, const T cellVal) { @@ -373,7 +374,7 @@ inline NEON_CUDA_HOST_DEVICE void store(const typename Neon::domain::mGrid::Idx& //cn may not be active because 1. it is outside the domain, or 2. this location is occupied by a coarse cell //we are interested in 2. - if (!cn.isActive()) { + if (!pout.isActive(cn)) { //now, we can get the uncle but we need to make sure it is active i.e., //it is not out side the domain boundary @@ -385,7 +386,9 @@ inline NEON_CUDA_HOST_DEVICE void store(const typename Neon::domain::mGrid::Idx& const auto cs = pout.getUncle(cell, CsDir); - if (cs.isActive()) { + const auto csChild = pout.helpGetNghIdx(cell, CsDir); + + if (cs.isActive() && pout.isActive(csChild)) { #ifdef NEON_PLACE_CUDA_DEVICE atomicAdd(&pout.uncleVal(cell, CsDir, q), cellVal); @@ -421,7 +424,7 @@ inline Neon::set::Container collideBGKUnrolledFusedStore(Neon::domain::mGrid& } return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { - if (type(cell, 0) == CellType::bulk) { + if (type(cell, 0) == CellType::bulk ) { if (!in.hasChildren(cell)) { //fin @@ -530,28 +533,181 @@ inline Neon::set::Container collideBGKUnrolledFusedStore(Neon::domain::mGrid& if (level < numLevels - 1) { //store operation - store(cell, out, pop_out_00); - store(cell, out, pop_out_01); - store(cell, out, pop_out_02); - store(cell, out, pop_out_03); - store(cell, out, pop_out_04); - store(cell, out, pop_out_05); - store(cell, out, pop_out_06); - store(cell, out, pop_out_07); - store(cell, out, pop_out_08); - store(cell, out, pop_out_09); - - store(cell, out, pop_out_opp_00); - store(cell, out, pop_out_opp_01); - store(cell, out, pop_out_opp_02); - store(cell, out, pop_out_opp_03); - store(cell, out, pop_out_opp_04); - store(cell, out, pop_out_opp_05); - store(cell, out, pop_out_opp_06); - store(cell, out, pop_out_opp_07); - store(cell, out, pop_out_opp_08); + store(cell, out, 0, pop_out_00); + store(cell, out, 1, pop_out_01); + store(cell, out, 2, pop_out_02); + store(cell, out, 3, pop_out_03); + store(cell, out, 4, pop_out_04); + store(cell, out, 5, pop_out_05); + store(cell, out, 6, pop_out_06); + store(cell, out, 7, pop_out_07); + store(cell, out, 8, pop_out_08); + store(cell, out, 9, pop_out_09); + + store(cell, out, 10, pop_out_opp_00); + store(cell, out, 11, pop_out_opp_01); + store(cell, out, 12, pop_out_opp_02); + store(cell, out, 13, pop_out_opp_03); + store(cell, out, 14, pop_out_opp_04); + store(cell, out, 15, pop_out_opp_05); + store(cell, out, 16, pop_out_opp_06); + store(cell, out, 17, pop_out_opp_07); + store(cell, out, 18, pop_out_opp_08); + } + + } else { + if (level != 0) { + //zero out the center only if we are not of the finest level + //this is because we use the refined voxels the interface to + //accumulate the fine level information in Store operation + //which should be reset after each collide + for (int8_t q = 0; q < Q; ++q) { + out(cell, q) = 0; + } + } + } + } + }; + }); +} + + +template +inline Neon::set::Container collideKBCFusedStore(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout) +{ + return grid.newContainer( + "CH" + std::to_string(level), level, + [&, level, omega0, numLevels](Neon::set::Loader& loader) { + const auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + const T beta = omega * 0.5; + const T invBeta = 1.0 / beta; + + if (level < numLevels - 1) { + //reload the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk ) { + + constexpr T tiny = 1e-7; + + if (!in.hasChildren(cell)) { + + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + //density + T rho = 0; + for (int i = 0; i < Q; ++i) { + rho += ins[i]; + } + + //velocity + const Neon::Vec_3d vel = velocity(ins, rho); + + T Pi[6] = {0, 0, 0, 0, 0, 0}; + T e0 = 0; + T e1 = 0; + T deltaS[Q]; + T fneq[Q]; + T feq[Q]; + + + auto fdecompose_shear = [&](const int q) -> T { + const T Nxz = Pi[0] - Pi[5]; + const T Nyz = Pi[3] - Pi[5]; + if (q == 9) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 18) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 3) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 6) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 1) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 2) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 12 || q == 24) { + return Pi[1] / 4.0; + } else if (q == 21 || q == 15) { + return -Pi[1] / 4.0; + } else if (q == 10 || q == 20) { + return Pi[2] / 4.0; + } else if (q == 19 || q == 11) { + return -Pi[2] / 4.0; + } else if (q == 8 || q == 4) { + return Pi[4] / 4.0; + } else if (q == 7 || q == 5) { + return -Pi[4] / 4.0; + } else { + return T(0); + } + }; + + + //equilibrium + const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); + for (int8_t q = 0; q < Q; ++q) { + T cu = 0; + for (int d = 0; d < 3; ++d) { + cu += latticeVelocity[q][d] * vel.v[d]; + } + cu *= 3.0; + + feq[q] = rho * latticeWeights[q] * (1. + cu + 0.5 * cu * cu - usqr); + + fneq[q] = ins[q] - feq[q]; + } + + //momentum_flux + for (int8_t q = 0; q < Q; ++q) { + for (int i = 0; i < 6; ++i) { + Pi[i] += fneq[q] * latticeMoment[q][i]; + } } + + //fdecompose_shear + for (int8_t q = 0; q < Q; ++q) { + deltaS[q] = rho * fdecompose_shear(q); + + T deltaH = fneq[q] - deltaS[q]; + + e0 += (deltaS[q] * deltaH / feq[q]); + e1 += (deltaH * deltaH / feq[q]); + } + + //gamma + T gamma = invBeta - (2.0 - invBeta) * e0 / (tiny + e1); + + + //fout + for (int8_t q = 0; q < Q; ++q) { + const T deltaH = fneq[q] - deltaS[q]; + + const T res = ins[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); + + if (level < numLevels - 1) { + //store operation + store(cell, out, q, res); + } + + out(cell, q) = res; + } } else { if (level != 0) { //zero out the center only if we are not of the finest level @@ -566,4 +722,4 @@ inline Neon::set::Container collideBGKUnrolledFusedStore(Neon::domain::mGrid& } }; }); -} \ No newline at end of file +} diff --git a/apps/lbmMultiRes/explosion.h b/apps/lbmMultiRes/explosion.h index c74e2028..c5237835 100644 --- a/apps/lbmMultiRes/explosion.h +++ b/apps/lbmMultiRes/explosion.h @@ -20,34 +20,30 @@ inline Neon::set::Container explosion(Neon::domain::mGrid& grid, return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { //If this cell has children i.e., it is been refined, then we should not work on it //because this cell is only there to allow query and not to operate on - if (!pin.hasChildren(cell)) { + if (!pin.hasChildren(cell) && pin.hasParent(cell)) { for (int8_t q = 0; q < Q; ++q) { const Neon::int8_3d dir = -getDir(q); if (dir.x == 0 && dir.y == 0 && dir.z == 0) { continue; } - //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction //we want to only work on cells that interface with L+1 (coarse) cell along q - if (!pin.hasChildren(cell, dir)) { - //try to query the cell along this direction (opposite of the population direction) as we do - //in 'normal' streaming - auto neighborCell = pout.helpGetNghIdx(cell, dir); - if (!neighborCell.isActive()) { - //only if we can not do normal streaming, then we may have a coarser neighbor from which - //we can read this pop + //try to query the cell along this direction (opposite of the population direction) as we do + //in 'normal' streaming + //only if we can not do normal streaming, then we may have a coarser neighbor from which + //we can read this pop + + if (!pin.isActive(cell, dir)) { - //get the uncle direction/offset i.e., the neighbor of the cell's parent - //this direction/offset is wrt to the cell's parent - Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); + //get the uncle direction/offset i.e., the neighbor of the cell's parent + //this direction/offset is wrt to the cell's parent + Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); - auto uncleLoc = pout.getUncle(cell, uncleDir); + auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); - auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); - if (uncle.mIsValid) { - pin(cell, q) = uncle.mData; - } + if (uncle.mIsValid) { + pin(cell, q) = uncle.mData; } } } diff --git a/apps/lbmMultiRes/flowOverShape.h b/apps/lbmMultiRes/flowOverShape.h new file mode 100644 index 00000000..ec843d07 --- /dev/null +++ b/apps/lbmMultiRes/flowOverShape.h @@ -0,0 +1,519 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "lbmMultiRes.h" + +#include "init.h" + + +#include "igl/max.h" +#include "igl/min.h" +#include "igl/read_triangle_mesh.h" +#include "igl/remove_unreferenced.h" +#include "igl/writeOBJ.h" + +#include "igl/AABB.h" + +template +void initFlowOverShape(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& cellType, + const Neon::double_3d inletVelocity, + const sdfT shapeSDF) +{ + + const Neon::index_3d gridDim = grid.getDimension(); + + //init fields + for (int level = 0; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "Init_" + std::to_string(level), level, + [&fin, &fout, &cellType, &sumStore, level, gridDim, inletVelocity, shapeSDF](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto& out = fout.load(loader, level, Neon::MultiResCompute::MAP); + auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + const T usqr = (3.0 / 2.0) * (inletVelocity.x * inletVelocity.x + inletVelocity.y * inletVelocity.y + inletVelocity.z * inletVelocity.z); + + + Neon::domain::mGrid::Partition sdf; + if constexpr (std::is_same_v>) { + sdf = shapeSDF.load(loader, level, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + //velocity and density + (void)sdf; + (void)shapeSDF; + + type(cell, 0) = CellType::bulk; + + for (int q = 0; q < Q; ++q) { + ss(cell, q) = 0; + in(cell, q) = 0; + out(cell, q) = 0; + } + + if (!in.hasChildren(cell)) { + const Neon::index_3d idx = in.getGlobalIndex(cell); + + if (idx.x == 0) { + type(cell, 0) = CellType::inlet; + } + + if constexpr (std::is_same_v>) { + if (sdf(cell, 0) == 1) { + type(cell, 0) = CellType::bounceBack; + } + } else { + if (shapeSDF(idx)) { + type(cell, 0) = CellType::bounceBack; + } + } + + //the cell classification + if (idx.y == 0 || idx.y == gridDim.y - (1 << level) || + idx.z == 0 || idx.z == gridDim.z - (1 << level)) { + type(cell, 0) = CellType::bounceBack; + } + + //population init value + for (int q = 0; q < Q; ++q) { + T pop_init_val = latticeWeights[q]; + + //bounce back + if (type(cell, 0) == CellType::bounceBack) { + pop_init_val = 0; + } + + if (type(cell, 0) == CellType::inlet) { + pop_init_val = 0; + + for (int d = 0; d < 3; ++d) { + pop_init_val += latticeVelocity[q][d] * inletVelocity.v[d]; + } + pop_init_val *= -6. * latticeWeights[q]; + } + + out(cell, q) = pop_init_val; + in(cell, q) = pop_init_val; + } + } + }; + }); + + container.run(0); + } + + + //init sumStore + initSumStore(grid, sumStore); +} + +template +void flowOverJet(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + Neon::index_3d gridDim(19 * params.scale, 8 * params.scale, 8 * params.scale); + + Neon::index_3d jetBoxDim(2 * params.scale, 2 * params.scale, 2 * params.scale); + Neon::index_3d jetBoxPosition(3 * params.scale, 3 * params.scale, 3 * params.scale); + + int depth = 3; + + const Neon::mGridDescriptor<1> descriptor(depth); + + Neon::domain::mGrid grid( + backend, gridDim, + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 2 * params.scale && idx.x < 7 * params.scale && + idx.y >= 3 * params.scale && idx.y < 5 * params.scale && + idx.z >= 3 * params.scale && idx.z < 5 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= params.scale && idx.x < 11 * params.scale && + idx.y >= 2 * params.scale && idx.y < 6 * params.scale && + idx.z >= 2 * params.scale && idx.z < 6 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}, + Neon::domain::Stencil::s19_t(false), descriptor); + + + //LBM problem + const T uin = 0.04; + const T clength = T((jetBoxDim.x / 2) / (1 << (depth - 1))); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + //auto test = grid.newField("test", 1, 0); + //test.ioToVtk("Test", true, true, true, true, {-1, -1, 1}); + //exit(0); + + //allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + + //init fields + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, [=] NEON_CUDA_HOST_DEVICE(Neon::index_3d idx) { + idx.x -= jetBoxPosition.x; + idx.y -= jetBoxPosition.y; + idx.z -= jetBoxPosition.z; + if (idx.x < 0 || idx.y < 0 || idx.z < 0) { + return false; + } + + idx.x = (jetBoxDim.x / 2) - (idx.x - (jetBoxDim.x / 2)); + return sdfJetfighter(glm::ivec3(idx.z, idx.y, idx.x), glm::ivec3(jetBoxDim.x, jetBoxDim.y, jetBoxDim.z)) <= 0; + + //Neon::index_4d sphere(jetBoxPosition.x + jetBoxDim.x / 2, jetBoxPosition.y + jetBoxDim.y / 2, jetBoxPosition.z + jetBoxDim.z / 2, jetBoxDim.x / 4); + //const T dx = sphere.x - idx.x; + //const T dy = sphere.y - idx.y; + //const T dz = sphere.z - idx.z; + //if ((dx * dx + dy * dy + dz * dz) < sphere.w * sphere.w) { + // return true; + //} else { + // return false; + //} + }); + + //cellType.updateHostData(); + //cellType.ioToVtk("cellType", true, true, true, true); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} + +template +void flowOverSphere(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + + Neon::index_3d gridDim(136 * params.scale, 96 * params.scale, 136 * params.scale); + + Neon::index_4d sphere(52 * params.scale, 52 * params.scale, 68 * params.scale, 8 * params.scale); + + int depth = 3; + + const Neon::mGridDescriptor<1> descriptor(depth); + + Neon::domain::mGrid grid( + backend, gridDim, + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 40 * params.scale && idx.x < 96 * params.scale && idx.y >= 40 * params.scale && idx.y < 64 * params.scale && idx.z >= 40 * params.scale && idx.z < 96 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= 24 * params.scale && idx.x < 112 * params.scale && idx.y >= 24 * params.scale && idx.y < 72 * params.scale && idx.z >= 24 * params.scale && idx.z < 112 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}, + Neon::domain::Stencil::s19_t(false), descriptor); + + + //LBM problem + const T uin = 0.04; + //const T clength = T(grid.getDimension(descriptor.getDepth() - 1).x); + const T clength = T(sphere.w / (1 << (depth - 1))); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + //auto test = grid.newField("test", 1, 0); + //test.ioToVtk("Test", true, true, true, false); + //exit(0); + + //allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + //init fields + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, [sphere] NEON_CUDA_HOST_DEVICE(const Neon::index_3d idx) { + const T dx = sphere.x - idx.x; + const T dy = sphere.y - idx.y; + const T dz = sphere.z - idx.z; + + if ((dx * dx + dy * dy + dz * dz) < sphere.w * sphere.w) { + return true; + } else { + return false; + } + }); + + //cellType.updateHostData(); + //cellType.ioToVtk("cellType", true, true, true, true); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} + + +template +void flowOverMesh(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + //define the gird and the box that will encompass the mesh + Neon::index_3d gridDim(19 * params.scale, 10 * params.scale, 10 * params.scale); + Eigen::RowVector3d meshBoxDim(3.5 * params.scale, 3.5 * params.scale, 3.5 * params.scale); + Eigen::RowVector3d meshBoxCenter(5 * params.scale, 5 * params.scale, 5 * params.scale); + + //Neon::index_3d gridDim(1.5 * 29 * params.scale, 10 * params.scale, 10 * params.scale); + //Eigen::RowVector3d meshBoxDim(2 * params.scale, 2 * params.scale, 2 * params.scale); + //Eigen::RowVector3d meshBoxCenter(20 * params.scale, 10, 5 * params.scale); + + + //read the mesh and scale it such that it fits inside meshBox + Eigen::MatrixXi faces; + Eigen::MatrixXd vertices; + igl::read_triangle_mesh(params.meshFile, vertices, faces); + + //remove unreferenced vertices because they may affect the scaling + Eigen::VectorXi _1, _2; + igl::remove_unreferenced(Eigen::MatrixXd(vertices), Eigen::MatrixXi(faces), vertices, faces, _1, _2); + + + //mesh bounding box using the mesh coordinates + Eigen::RowVectorXd bbMax, bbMin; + Eigen::RowVectorXi bbMaxI, bbMinI; + igl::max(vertices, 1, bbMax, bbMaxI); + igl::min(vertices, 1, bbMin, bbMinI); + + //center the mesh + vertices.rowwise() -= ((bbMin + bbMax) / 2.0); + + //scale + double scaling_factor = meshBoxDim.maxCoeff() / (bbMax - bbMin).maxCoeff(); + vertices *= scaling_factor; + + auto toRad = [](double t) { return t * (3.14159265358979311600 / 180); }; + + Eigen::Matrix3d rotationX; + //rotate about x-axis by thetaX degrees + rotationX << 1, 0, 0, + 0, std::cos(toRad(params.thetaX)), -std::sin(toRad(params.thetaX)), + 0, std::sin(toRad(params.thetaX)), std::cos(toRad(params.thetaX)); + + //rotate about y-axis by thetaY degrees + Eigen::Matrix3d rotationY; + rotationY << std::cos(toRad(params.thetaY)), 0, std::sin(toRad(params.thetaY)), + 0, 1, 0, + -std::sin(toRad(params.thetaY)), 0, std::cos(toRad(params.thetaY)); + + //rotate about z-axis by thetaZ degrees + Eigen::Matrix3d rotationZ; + rotationZ << std::cos(toRad(params.thetaZ)), -std::sin(toRad(params.thetaZ)), 0, + std::sin(toRad(params.thetaZ)), std::cos(toRad(params.thetaZ)), 0, + 0, 0, 1; + + Eigen::Matrix3d rotation = rotationX * rotationY * rotationZ; + vertices = vertices * rotation; + + //translate + vertices.rowwise() += meshBoxCenter; + + //calc the bounding box again + igl::max(vertices, 1, bbMax, bbMaxI); + igl::min(vertices, 1, bbMin, bbMinI); + + + igl::writeOBJ("scaled.obj", vertices, faces); + +#ifdef NEON_USE_POLYSCOPE + polyscopeAddMesh(params.meshFile, faces, vertices); +#endif + + NEON_INFO("AABB init"); + + igl::AABB aabb; + aabb.init(vertices, faces); + + + //define the grid + int depth = 3; + + auto distToMesh = [&](const Neon::index_3d idx) { + Eigen::Matrix p(idx.x, idx.y, idx.z), c; + int face_index(0); + aabb.squared_distance(vertices, faces, p, face_index, c); + return (p - c).norm(); + }; + + std::vector> + activeCellLambda = + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 2 * params.scale && idx.x < 8 * params.scale && + idx.y >= 3 * params.scale && idx.y < 7 * params.scale && + idx.z >= 3 * params.scale && idx.z < 7 * params.scale; + //return distToMesh(idx) < params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= params.scale && idx.x < 13 * params.scale && + idx.y >= 2 * params.scale && idx.y < 8 * params.scale && + idx.z >= 2 * params.scale && idx.z < 8 * params.scale; + //return distToMesh(idx) < 2 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}; + + //int depth = 5; + // + //std::vector> + // activeCellLambda = + // {[&](const Neon::index_3d idx) -> bool { + // return idx.x >= (0.1 * 29 * params.scale) + 4.3 * params.scale && idx.x < (0.1 * 29 * params.scale) + 10 * params.scale && + // idx.y < 1.2 * params.scale && + // idx.z >= 3 * params.scale && idx.z < 7 * params.scale; + // }, + // [&](const Neon::index_3d idx) -> bool { + // return idx.x >= (0.1 * 29 * params.scale) + 3.0 * params.scale && idx.x < (0.1 * 29 * params.scale) + 14 * params.scale && + // idx.y < 3 * params.scale && + // idx.z >= 3 * params.scale && idx.z < 7 * params.scale; + // }, + // [&](const Neon::index_3d idx) -> bool { + // return idx.x >= (0.1 * 29 * params.scale) + 2.2 * params.scale && idx.x < (0.1 * 29 * params.scale) + 19.5 * params.scale && + // idx.y < 4.3 * params.scale && + // idx.z >= 3 * params.scale && idx.z < 7 * params.scale; + // }, + // [&](const Neon::index_3d idx) -> bool { + // return idx.x >= (0.1 * 29 * params.scale) + 0.7 * params.scale && idx.x < (0.1 * 29 * params.scale) + 25 * params.scale && + // idx.y < 6.2 * params.scale && + // idx.z >= 2 * params.scale && idx.z < 8 * params.scale; + // }, + // [&](const Neon::index_3d idx) -> bool { + // return true; + // }}; + + const Neon::mGridDescriptor<1> descriptor(depth); + + NEON_INFO("Create mGrid"); + + Neon::domain::mGrid grid( + backend, gridDim, activeCellLambda, Neon::domain::Stencil::s19_t(false), descriptor); + + + //LBM problem + const T uin = 0.04; + //const T clength = T((meshBoxDim.minCoeff() / 2) / (1 << (depth - 1))); + + //the plane wing extends along the z direction + const T span = (bbMax - bbMin).z(); + const T clength = (span / 2.f) / (1 << (depth - 1)); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + //NEON_INFO("Writing Test file"); + //auto test = grid.newField("test", 1, 0); + //test.ioToVtk("Test", true, true, true, true, {-1, -1, 1}); + //exit(0); + + NEON_INFO("Started populating inside field"); + //a field with 1 if the voxel is inside the shape + auto inside = grid.newField("inside", 1, 0); + + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { + grid.newContainer("isInside", l, [&](Neon::set::Loader& loader) { + auto& in = inside.load(loader, l, Neon::MultiResCompute::MAP); + + return [&](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!in.hasChildren(cell) && l == 0) { + Neon::index_3d voxelGlobalLocation = in.getGlobalIndex(cell); + if (voxelGlobalLocation.x < meshBoxCenter.x() - meshBoxDim.x() / 2 || voxelGlobalLocation.x >= meshBoxCenter.x() + meshBoxDim.x() / 2 || + voxelGlobalLocation.y < meshBoxCenter.y() - meshBoxDim.y() / 2 || voxelGlobalLocation.y >= meshBoxCenter.y() + meshBoxDim.y() / 2 || + voxelGlobalLocation.z < meshBoxCenter.z() - meshBoxDim.z() / 2 || voxelGlobalLocation.z >= meshBoxCenter.z() + meshBoxDim.z() / 2) { + in(cell, 0) = 0; + } else { + const double voxelSpacing = 0.5 * double(grid.getDescriptor().getSpacing(l - 1)); + + const double centerToCornerDistSqr = (3.0 / 4.0) * (2.0 * voxelSpacing); + + Eigen::Matrix p(voxelGlobalLocation.x + voxelSpacing, voxelGlobalLocation.y + voxelSpacing, voxelGlobalLocation.z + voxelSpacing), c; + + int face_index(0); + + aabb.squared_distance(vertices, faces, p, face_index, c); + + double sqr_dist = (p - c).norm(); + + in(cell, 0) = int8_t(sqr_dist + std::numeric_limits::epsilon() < centerToCornerDistSqr); + } + } else { + in(cell, 0) = 0; + } + }; + }) + .run(0); + } + grid.getBackend().syncAll(); + + NEON_INFO("Finished populating inside field"); + + inside.updateDeviceData(); + + //inside.ioToVtk("inside", true, true, true, true); + //exit(0); + + NEON_INFO("Start allocating fields"); + //allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + NEON_INFO("Finished allocating fields"); + + //init fields + + NEON_INFO("Start initFlowOverShape"); + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, inside); + NEON_INFO("Finished initFlowOverShape"); + + //cellType.updateHostData(); + //cellType.ioToVtk("cellType", true, true, true, true); + //exit(0); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} \ No newline at end of file diff --git a/apps/lbmMultiRes/fusedFinest.h b/apps/lbmMultiRes/fusedFinest.h new file mode 100644 index 00000000..3caf09f9 --- /dev/null +++ b/apps/lbmMultiRes/fusedFinest.h @@ -0,0 +1,361 @@ +#pragma once +#include "collide.h" + +template +inline NEON_CUDA_HOST_DEVICE void stream(const typename Neon::domain::mGrid::Idx& cell, + FieldT& out, + const FieldT& explosionIn, + const FieldType& type, + const int8_t q, + const T cellVal) +{ + //since we are on the finest level, we only need to do streaming and explosion (no coalescence) + //streaming is done as push + + const Neon::int8_3d dir = getDir(q); + + //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction + const auto nghCell = out.helpGetNghIdx(cell, dir); + if (!out.hasChildren(nghCell)) { + if (out.isActive(nghCell)) { + auto nghType = type(nghCell,0); + if (nghType == CellType::bulk) { + out(nghCell, q) = cellVal; + } else { + const int8_t opposte_q = latticeOppositeID[q]; + out(cell, opposte_q) = cellVal + out(nghCell, q); + } + } else if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + //only if we are not on the coarsest level and + //only if we can not do normal streaming, then we may have a coarser neighbor from which + //we can read this pop + + //get the uncle direction/offset i.e., the neighbor of the cell's parent + //this direction/offset is wrt to the cell's parent + Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); + + const int8_t opposte_q = latticeOppositeID[q]; + const auto uncle = explosionIn.uncleVal(cell, uncleDir, opposte_q, T(0)); + if (uncle.mIsValid) { + out(cell, opposte_q) = uncle.mData; + } + } + } +} + + +template +inline Neon::set::Container collideBGKUnrolledFusedAll(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool storeOut) //store in fout +{ + if (level != 0) { + Neon::NeonException exp("collideBGKUnrolledFusedAll"); + exp << "Only works with on the finest level. Input level =" << level; + NEON_THROW(exp); + } + + return grid.newContainer( + "CHSOE" + std::to_string(level), level, + [&, level, omega0, numLevels, storeOut](Neon::set::Loader& loader) { + const auto type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + + if (numLevels > 1) { + //load the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + + const T X_M1 = ins[0] + ins[3] + ins[4] + ins[5] + ins[6]; + const T X_P1 = ins[10] + ins[13] + ins[14] + ins[15] + ins[16]; + const T X_0 = ins[9] + ins[1] + ins[2] + ins[7] + ins[8] + ins[11] + ins[12] + ins[17] + ins[18]; + const T Y_M1 = ins[1] + ins[3] + ins[7] + ins[8] + ins[14]; + const T Y_P1 = ins[4] + ins[11] + ins[13] + ins[17] + ins[18]; + const T Z_M1 = ins[2] + ins[5] + ins[7] + ins[16] + ins[18]; + const T Z_P1 = ins[6] + ins[8] + ins[12] + ins[15] + ins[17]; + + //density + const T rho = X_M1 + X_P1 + X_0; + + //velocity + Neon::Vec_3d vel; + + vel.v[0] = (X_P1 - X_M1) / rho; + vel.v[1] = (Y_P1 - Y_M1) / rho; + vel.v[2] = (Z_P1 - Z_M1) / rho; + + + const T usqr = T(1.5) * (vel.v[0] * vel.v[0] + vel.v[1] * vel.v[1] + vel.v[2] * vel.v[2]); + + //collide + const T ck_u03 = vel.v[0] + vel.v[1]; + const T ck_u04 = vel.v[0] - vel.v[1]; + const T ck_u05 = vel.v[0] + vel.v[2]; + const T ck_u06 = vel.v[0] - vel.v[2]; + const T ck_u07 = vel.v[1] + vel.v[2]; + const T ck_u08 = vel.v[1] - vel.v[2]; + + constexpr T c1over18 = 1. / 18.; + constexpr T c1over36 = 1. / 36.; + constexpr T c1over3 = 1. / 3.; + constexpr T c4dot5 = 4.5; + constexpr T c3 = 3.; + constexpr T c1 = 1.; + constexpr T c6 = 6.; + + const T eq_00 = rho * c1over18 * (c1 - c3 * vel.v[0] + c4dot5 * vel.v[0] * vel.v[0] - usqr); + const T eq_01 = rho * c1over18 * (c1 - c3 * vel.v[1] + c4dot5 * vel.v[1] * vel.v[1] - usqr); + const T eq_02 = rho * c1over18 * (c1 - c3 * vel.v[2] + c4dot5 * vel.v[2] * vel.v[2] - usqr); + const T eq_03 = rho * c1over36 * (c1 - c3 * ck_u03 + c4dot5 * ck_u03 * ck_u03 - usqr); + const T eq_04 = rho * c1over36 * (c1 - c3 * ck_u04 + c4dot5 * ck_u04 * ck_u04 - usqr); + const T eq_05 = rho * c1over36 * (c1 - c3 * ck_u05 + c4dot5 * ck_u05 * ck_u05 - usqr); + const T eq_06 = rho * c1over36 * (c1 - c3 * ck_u06 + c4dot5 * ck_u06 * ck_u06 - usqr); + const T eq_07 = rho * c1over36 * (c1 - c3 * ck_u07 + c4dot5 * ck_u07 * ck_u07 - usqr); + const T eq_08 = rho * c1over36 * (c1 - c3 * ck_u08 + c4dot5 * ck_u08 * ck_u08 - usqr); + + const T eqopp_00 = eq_00 + rho * c1over18 * c6 * vel.v[0]; + const T eqopp_01 = eq_01 + rho * c1over18 * c6 * vel.v[1]; + const T eqopp_02 = eq_02 + rho * c1over18 * c6 * vel.v[2]; + const T eqopp_03 = eq_03 + rho * c1over36 * c6 * ck_u03; + const T eqopp_04 = eq_04 + rho * c1over36 * c6 * ck_u04; + const T eqopp_05 = eq_05 + rho * c1over36 * c6 * ck_u05; + const T eqopp_06 = eq_06 + rho * c1over36 * c6 * ck_u06; + const T eqopp_07 = eq_07 + rho * c1over36 * c6 * ck_u07; + const T eqopp_08 = eq_08 + rho * c1over36 * c6 * ck_u08; + + const T pop_out_00 = (c1 - omega) * ins[0] + omega * eq_00; + const T pop_out_01 = (c1 - omega) * ins[1] + omega * eq_01; + const T pop_out_02 = (c1 - omega) * ins[2] + omega * eq_02; + const T pop_out_03 = (c1 - omega) * ins[3] + omega * eq_03; + const T pop_out_04 = (c1 - omega) * ins[4] + omega * eq_04; + const T pop_out_05 = (c1 - omega) * ins[5] + omega * eq_05; + const T pop_out_06 = (c1 - omega) * ins[6] + omega * eq_06; + const T pop_out_07 = (c1 - omega) * ins[7] + omega * eq_07; + const T pop_out_08 = (c1 - omega) * ins[8] + omega * eq_08; + + const T pop_out_opp_00 = (c1 - omega) * ins[10] + omega * eqopp_00; + const T pop_out_opp_01 = (c1 - omega) * ins[11] + omega * eqopp_01; + const T pop_out_opp_02 = (c1 - omega) * ins[12] + omega * eqopp_02; + const T pop_out_opp_03 = (c1 - omega) * ins[13] + omega * eqopp_03; + const T pop_out_opp_04 = (c1 - omega) * ins[14] + omega * eqopp_04; + const T pop_out_opp_05 = (c1 - omega) * ins[15] + omega * eqopp_05; + const T pop_out_opp_06 = (c1 - omega) * ins[16] + omega * eqopp_06; + const T pop_out_opp_07 = (c1 - omega) * ins[17] + omega * eqopp_07; + const T pop_out_opp_08 = (c1 - omega) * ins[18] + omega * eqopp_08; + + const T eq_09 = rho * c1over3 * (c1 - usqr); + const T pop_out_09 = (c1 - omega) * ins[9] + omega * eq_09; + + + //store operation + store(cell, (storeOut) ? out : in, 0, pop_out_00); + store(cell, (storeOut) ? out : in, 1, pop_out_01); + store(cell, (storeOut) ? out : in, 2, pop_out_02); + store(cell, (storeOut) ? out : in, 3, pop_out_03); + store(cell, (storeOut) ? out : in, 4, pop_out_04); + store(cell, (storeOut) ? out : in, 5, pop_out_05); + store(cell, (storeOut) ? out : in, 6, pop_out_06); + store(cell, (storeOut) ? out : in, 7, pop_out_07); + store(cell, (storeOut) ? out : in, 8, pop_out_08); + store(cell, (storeOut) ? out : in, 9, pop_out_09); + + store(cell, (storeOut) ? out : in, 10, pop_out_opp_00); + store(cell, (storeOut) ? out : in, 11, pop_out_opp_01); + store(cell, (storeOut) ? out : in, 12, pop_out_opp_02); + store(cell, (storeOut) ? out : in, 13, pop_out_opp_03); + store(cell, (storeOut) ? out : in, 14, pop_out_opp_04); + store(cell, (storeOut) ? out : in, 15, pop_out_opp_05); + store(cell, (storeOut) ? out : in, 16, pop_out_opp_06); + store(cell, (storeOut) ? out : in, 17, pop_out_opp_07); + store(cell, (storeOut) ? out : in, 18, pop_out_opp_08); + + //streaming (push) + stream(cell, out, (storeOut) ? out : in, type, 0, pop_out_00); + stream(cell, out, (storeOut) ? out : in, type, 1, pop_out_01); + stream(cell, out, (storeOut) ? out : in, type, 2, pop_out_02); + stream(cell, out, (storeOut) ? out : in, type, 3, pop_out_03); + stream(cell, out, (storeOut) ? out : in, type, 4, pop_out_04); + stream(cell, out, (storeOut) ? out : in, type, 5, pop_out_05); + stream(cell, out, (storeOut) ? out : in, type, 6, pop_out_06); + stream(cell, out, (storeOut) ? out : in, type, 7, pop_out_07); + stream(cell, out, (storeOut) ? out : in, type, 8, pop_out_08); + stream(cell, out, (storeOut) ? out : in, type, 9, pop_out_09); + + stream(cell, out, (storeOut) ? out : in, type, 10, pop_out_opp_00); + stream(cell, out, (storeOut) ? out : in, type, 11, pop_out_opp_01); + stream(cell, out, (storeOut) ? out : in, type, 12, pop_out_opp_02); + stream(cell, out, (storeOut) ? out : in, type, 13, pop_out_opp_03); + stream(cell, out, (storeOut) ? out : in, type, 14, pop_out_opp_04); + stream(cell, out, (storeOut) ? out : in, type, 15, pop_out_opp_05); + stream(cell, out, (storeOut) ? out : in, type, 16, pop_out_opp_06); + stream(cell, out, (storeOut) ? out : in, type, 17, pop_out_opp_07); + stream(cell, out, (storeOut) ? out : in, type, 18, pop_out_opp_08); + } + }; + }); +} + + +template +inline Neon::set::Container collideKBCFusedAll(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool storeOut) +{ + + if (level != 0) { + Neon::NeonException exp("collideKBCFusedAll"); + exp << "Only works with on the finest level. Input level =" << level; + NEON_THROW(exp); + } + + return grid.newContainer( + "CHSOE" + std::to_string(level), level, + [&, level, omega0, numLevels, storeOut](Neon::set::Loader& loader) { + const auto type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + const T beta = omega * 0.5; + const T invBeta = 1.0 / beta; + + if (numLevels > 1) { + //reload the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + constexpr T tiny = 1e-7; + + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + //density + T rho = 0; + for (int i = 0; i < Q; ++i) { + rho += ins[i]; + } + + //velocity + const Neon::Vec_3d vel = velocity(ins, rho); + + T Pi[6] = {0, 0, 0, 0, 0, 0}; + T e0 = 0; + T e1 = 0; + T deltaS[Q]; + T fneq[Q]; + T feq[Q]; + + + auto fdecompose_shear = [&](const int q) -> T { + const T Nxz = Pi[0] - Pi[5]; + const T Nyz = Pi[3] - Pi[5]; + if (q == 9) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 18) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 3) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 6) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 1) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 2) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 12 || q == 24) { + return Pi[1] / 4.0; + } else if (q == 21 || q == 15) { + return -Pi[1] / 4.0; + } else if (q == 10 || q == 20) { + return Pi[2] / 4.0; + } else if (q == 19 || q == 11) { + return -Pi[2] / 4.0; + } else if (q == 8 || q == 4) { + return Pi[4] / 4.0; + } else if (q == 7 || q == 5) { + return -Pi[4] / 4.0; + } else { + return T(0); + } + }; + + + //equilibrium + const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); + for (int8_t q = 0; q < Q; ++q) { + T cu = 0; + for (int d = 0; d < 3; ++d) { + cu += latticeVelocity[q][d] * vel.v[d]; + } + cu *= 3.0; + + feq[q] = rho * latticeWeights[q] * (1. + cu + 0.5 * cu * cu - usqr); + + fneq[q] = ins[q] - feq[q]; + } + + //momentum_flux + for (int8_t q = 0; q < Q; ++q) { + for (int i = 0; i < 6; ++i) { + Pi[i] += fneq[q] * latticeMoment[q][i]; + } + } + + + //fdecompose_shear + for (int8_t q = 0; q < Q; ++q) { + deltaS[q] = rho * fdecompose_shear(q); + + T deltaH = fneq[q] - deltaS[q]; + + e0 += (deltaS[q] * deltaH / feq[q]); + e1 += (deltaH * deltaH / feq[q]); + } + + //gamma + T gamma = invBeta - (2.0 - invBeta) * e0 / (tiny + e1); + + + //fout + for (int8_t q = 0; q < Q; ++q) { + const T deltaH = fneq[q] - deltaS[q]; + + const T res = ins[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); + + + //store operation + store(cell, (storeOut) ? out : in, q, res); + + //streaming (push) + stream(cell, out, (storeOut) ? out : in, type, q, res); + } + } + }; + }); +} diff --git a/apps/lbmMultiRes/init.h b/apps/lbmMultiRes/init.h index 48e9edaa..4730c701 100644 --- a/apps/lbmMultiRes/init.h +++ b/apps/lbmMultiRes/init.h @@ -6,100 +6,9 @@ template -uint32_t init(Neon::domain::mGrid& grid, - Neon::domain::mGrid::Field& sumStore, - Neon::domain::mGrid::Field& fin, - Neon::domain::mGrid::Field& fout, - Neon::domain::mGrid::Field& cellType, - Neon::domain::mGrid::Field& vel, - Neon::domain::mGrid::Field& rho, - const Neon::double_3d ulid) +void initSumStore(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore) { - uint32_t* dNumActiveVoxels = nullptr; - - if (grid(0).getBackend().runtime() == Neon::Runtime::stream) { - cudaMalloc((void**)&dNumActiveVoxels, sizeof(uint32_t)); - cudaMemset(dNumActiveVoxels, 0, sizeof(uint32_t)); - } else { - dNumActiveVoxels = (uint32_t*)malloc(sizeof(uint32_t)); - } - - const Neon::index_3d gridDim = grid.getDimension(); - - //init fields - for (int level = 0; level < grid.getDescriptor().getDepth(); ++level) { - - auto container = - grid.newContainer( - "Init_" + std::to_string(level), level, - [&fin, &fout, &cellType, &vel, &rho, &sumStore, level, gridDim, ulid, dNumActiveVoxels](Neon::set::Loader& loader) { - auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); - auto& out = fout.load(loader, level, Neon::MultiResCompute::MAP); - auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); - auto& u = vel.load(loader, level, Neon::MultiResCompute::MAP); - auto& rh = rho.load(loader, level, Neon::MultiResCompute::MAP); - auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); - - return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { - //velocity and density - u(cell, 0) = 0; - u(cell, 1) = 0; - u(cell, 2) = 0; - rh(cell, 0) = 0; - type(cell, 0) = CellType::bulk; - - for (int q = 0; q < Q; ++q) { - ss(cell, q) = 0; - in(cell, q) = 0; - out(cell, q) = 0; - } - -#ifdef NEON_PLACE_CUDA_DEVICE - atomicAdd(dNumActiveVoxels, 1); -#else -#pragma omp atomic - dNumActiveVoxels[0] += 1; -#endif - - if (!in.hasChildren(cell)) { - const Neon::index_3d idx = in.getGlobalIndex(cell); - - //pop - for (int q = 0; q < Q; ++q) { - T pop_init_val = latticeWeights[q]; - - if (level == 0) { - if (idx.x == 0 || idx.x == gridDim.x - 1 || - idx.y == 0 || idx.y == gridDim.y - 1 || - idx.z == 0 || idx.z == gridDim.z - 1) { - type(cell, 0) = CellType::bounceBack; - - if (idx.y == gridDim.y - 1) { - type(cell, 0) = CellType::movingWall; - pop_init_val = 0; - for (int d = 0; d < 3; ++d) { - pop_init_val += latticeVelocity[q][d] * ulid.v[d]; - } - pop_init_val *= -6. * latticeWeights[q]; - } else { - pop_init_val = 0; - } - } - } - - out(cell, q) = pop_init_val; - in(cell, q) = pop_init_val; - } - } else { - in(cell, 0) = 0; - out(cell, 0) = 0; - } - }; - }); - - container.run(0); - } - //init sumStore for (int level = 0; level < grid.getDescriptor().getDepth() - 1; ++level) { @@ -107,7 +16,7 @@ uint32_t init(Neon::domain::mGrid& grid, auto container = grid.newContainer( "InitSumStore_" + std::to_string(level), level, - [&sumStore, level, gridDim](Neon::set::Loader& loader) { + [&sumStore, level](Neon::set::Loader& loader) { auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::STENCIL_UP); return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { @@ -123,7 +32,9 @@ uint32_t init(Neon::domain::mGrid& grid, const auto cn = ss.helpGetNghIdx(cell, uncleDir); - if (!cn.isActive()) { + + if (!ss.isActive(cn)) { + const auto uncle = ss.getUncle(cell, uncleDir); if (uncle.isActive()) { @@ -136,7 +47,7 @@ uint32_t init(Neon::domain::mGrid& grid, if (cs.isActive()) { #ifdef NEON_PLACE_CUDA_DEVICE - atomicAdd(&ss.uncleVal(cell, CsDir, q), int(1)); + atomicAdd(&ss.uncleVal(cell, CsDir, q), 1.f); #else #pragma omp atomic ss.uncleVal(cell, CsDir, q) += 1; @@ -153,15 +64,81 @@ uint32_t init(Neon::domain::mGrid& grid, } + for (int level = 1; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "ReciprocalSumStore_" + std::to_string(level), level, + [&sumStore, level](Neon::set::Loader& loader) { + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + //const T refFactor = ss.getRefFactor(level); + constexpr T refFactor = 2.0; + for (int8_t q = 0; q < Q; ++q) { + if (ss(cell, q) > 0.001) { + ss(cell, q) = 1.f / (refFactor * ss(cell, q)); + } + } + }; + }); + + container.run(0); + } + grid.getBackend().syncAll(); +} + + +template +std::vector +countActiveVoxels(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& fin) +{ + + uint32_t* dNumActiveVoxels = nullptr; + const uint32_t depth = grid.getDescriptor().getDepth(); + const size_t numBytes = depth * sizeof(uint32_t); + + std::vector ret(depth); - uint32_t hNumActiveVoxels = 0; if (grid(0).getBackend().runtime() == Neon::Runtime::stream) { - cudaMemcpy(&hNumActiveVoxels, dNumActiveVoxels, sizeof(uint32_t), cudaMemcpyDeviceToHost); - cudaFree(dNumActiveVoxels); + cudaMalloc((void**)&dNumActiveVoxels, numBytes); + cudaMemset(dNumActiveVoxels, 0, numBytes); } else { - hNumActiveVoxels = dNumActiveVoxels[0]; + dNumActiveVoxels = ret.data(); + } + + const Neon::index_3d gridDim = grid.getDimension(); + + for (int level = 0; level < depth; ++level) { + + auto container = + grid.newContainer( + "CountActiveVoxels" + std::to_string(level), level, + [&fin, level, gridDim, dNumActiveVoxels](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!in.hasChildren(cell)) { +#ifdef NEON_PLACE_CUDA_DEVICE + atomicAdd(dNumActiveVoxels + level, 1); +#else +#pragma omp atomic + dNumActiveVoxels[level] += 1; +#endif + } + }; + }); + + container.run(0); + } + + + if (grid(0).getBackend().runtime() == Neon::Runtime::stream) { + cudaMemcpy(ret.data(), dNumActiveVoxels, numBytes, cudaMemcpyDeviceToHost); + cudaFree(dNumActiveVoxels); } - return hNumActiveVoxels; -} \ No newline at end of file + return ret; +} diff --git a/apps/lbmMultiRes/lattice.h b/apps/lbmMultiRes/lattice.h index 5381dd51..a2665fc5 100644 --- a/apps/lbmMultiRes/lattice.h +++ b/apps/lbmMultiRes/lattice.h @@ -7,11 +7,12 @@ enum CellType : int bounceBack = 0, movingWall = 1, bulk = 2, - undefined = 3, + inlet = 3, + undefined = 5, }; - -/*NEON_CUDA_DEVICE_ONLY static constexpr char latticeVelocity[27][3] = { +#ifdef KBC +NEON_CUDA_DEVICE_ONLY static constexpr char latticeVelocity[27][3] = { {0, 0, 0}, {0, 0, -1}, {0, 0, 1}, @@ -72,7 +73,8 @@ NEON_CUDA_DEVICE_ONLY static constexpr double latticeWeights[27] = { 1.0 / 216.0, 1.0 / 216.0 -};*/ +}; +#endif NEON_CUDA_DEVICE_ONLY static constexpr char latticeMoment[27][6] = { {0, 0, 0, 0, 0, 0}, @@ -103,6 +105,7 @@ NEON_CUDA_DEVICE_ONLY static constexpr char latticeMoment[27][6] = { {1, 1, -1, 1, -1, 1}, {1, 1, 1, 1, 1, 1}}; +#ifdef BGK NEON_CUDA_DEVICE_ONLY static constexpr char latticeVelocity[19][3] = { {-1, 0, 0} /*! 0 Symmetry first section (GO) */, {0, -1, 0} /*! 1 */, @@ -168,3 +171,4 @@ NEON_CUDA_DEVICE_ONLY static constexpr double latticeWeights[19] = { 1. / 36. /*! 17 */, 1. / 36. /*! 18 */ }; +#endif \ No newline at end of file diff --git a/apps/lbmMultiRes/lbmMultiRes.cu b/apps/lbmMultiRes/lbmMultiRes.cu index 361a2f9e..eccedc3f 100644 --- a/apps/lbmMultiRes/lbmMultiRes.cu +++ b/apps/lbmMultiRes/lbmMultiRes.cu @@ -1,416 +1,177 @@ #include "Neon/core/tools/clipp.h" +#define BGK +//#define KBC + #include "Neon/Neon.h" #include "Neon/Report.h" #include "Neon/domain/mGrid.h" #include "Neon/skeleton/Skeleton.h" -#include "collide.h" -#include "init.h" -#include "lattice.h" -#include "postProcess.h" -#include "store.h" -#include "stream.h" -#include "util.h" - Neon::Report report; -template -void nonUniformTimestepRecursive(Neon::domain::mGrid& grid, - const bool fineInitStore, - const bool streamFusedExpl, - const bool streamFusedCoal, - const bool streamFuseAll, - const bool collisionFusedStore, - const T omega0, - const int level, - const int numLevels, - const Neon::domain::mGrid::Field& cellType, - const Neon::domain::mGrid::Field& sumStore, - Neon::domain::mGrid::Field& fin, - Neon::domain::mGrid::Field& fout, - std::vector& containers) +struct Params { - if (!collisionFusedStore) { - // 1) collision for all voxels at level L=level - //containers.push_back(collideKBC(grid, omega0, level, numLevels, cellType, fin, fout)); - containers.push_back(collideBGKUnrolled(grid, omega0, level, numLevels, cellType, fin, fout)); - - // 2) Storing fine (level - 1) data for later "coalescence" pulled by the coarse (level) - if (level != numLevels - 1) { - if (fineInitStore) { - containers.push_back(storeFine(grid, level, fout)); - } else { - containers.push_back(storeCoarse(grid, level + 1, fout)); - } - } - } else { - // 6) collision for all voxels at level L = level fused with - // 7) Storing fine (level) data for later "coalescence" pulled by the coarse(level) - containers.push_back(collideBGKUnrolledFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); - } - - - // 3) recurse down - if (level != 0) { - nonUniformTimestepRecursive(grid, - fineInitStore, - streamFusedExpl, - streamFusedCoal, - streamFuseAll, - collisionFusedStore, - omega0, - level - 1, - numLevels, - cellType, - sumStore, - fin, - fout, - containers); - } - - // 4) Streaming step that also performs the necessary "explosion" and "coalescence" steps. - if (streamFusedExpl) { - streamFusedExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else if (streamFusedCoal) { - streamFusedCoalescence(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else if (streamFuseAll) { - streamFusedCoalescenceExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else { - stream(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } - - // 5) stop - if (level == numLevels - 1) { - return; - } - - if (!collisionFusedStore) { - - // 6) collision for all voxels at level L = level - //containers.push_back(collideBGK(grid, omega0, level, numLevels, cellType, fin, fout)); - containers.push_back(collideBGKUnrolled(grid, omega0, level, numLevels, cellType, fin, fout)); - - // 7) Storing fine(level) data for later "coalescence" pulled by the coarse(level) - if (level != numLevels - 1) { - if (fineInitStore) { - containers.push_back(storeFine(grid, level, fout)); - } else { - containers.push_back(storeCoarse(grid, level + 1, fout)); - } - } - } else { - // 6) collision for all voxels at level L = level fused with - // 7) Storing fine (level) data for later "coalescence" pulled by the coarse(level) - containers.push_back(collideBGKUnrolledFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); - } - - // 8) recurse down - if (level != 0) { - nonUniformTimestepRecursive(grid, - fineInitStore, - streamFusedExpl, - streamFusedCoal, - streamFuseAll, - collisionFusedStore, - omega0, - level - 1, - numLevels, - cellType, - sumStore, - fin, - fout, - containers); - } - - // 9) Streaming step - if (streamFusedExpl) { - streamFusedExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else if (streamFusedCoal) { - streamFusedCoalescence(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else if (streamFuseAll) { - streamFusedCoalescenceExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } else { - stream(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); - } -} + std::string deviceType = "gpu"; + std::string problemType = "lid"; + std::string meshFile = ""; + int freq = 100; + int Re = 100; + int deviceId = 99; + int numIter = 2; + bool benchmark = true; + bool fineInitStore = false; + bool streamFusedExpl = false; + bool streamFusedCoal = false; + bool streamFuseAll = false; + bool collisionFusedStore = false; + bool fusedFinest = false; + int sliceX = -1; + int sliceY = -1; + int sliceZ = 1; + double thetaX = 0; + double thetaY = 0; + double thetaZ = 0; + bool vtk = false; + bool binary = false; + bool gui = false; + int scale = 2; + std::string dataType = "float"; +}; + +#include "flowOverShape.h" +#include "lidDrivenCavity.h" -template -void runNonUniformLBM(const int problemID, - const Neon::Backend backend, - const int numIter, - const bool fineInitStore, - const bool streamFusedExpl, - const bool streamFusedCoal, - const bool streamFuseAll, - const bool collisionFusedStore, - const bool benchmark) +int main(int argc, char** argv) { - static_assert(std::is_same_v || std::is_same_v); - - //constexpr int depth = 2; - constexpr int depth = 3; - - float levelSDF[depth + 1]; - - Neon::index_3d gridDim; - - gridDim = Neon::index_3d(6, 6, 6); - levelSDF[0] = 0; - levelSDF[1] = -2.0 / 3.0; - levelSDF[2] = -1.0; - - if (problemID == 0) { - gridDim = Neon::index_3d(48, 48, 48); - levelSDF[0] = 0; - levelSDF[1] = -8 / 24.0; - levelSDF[2] = -16 / 24.0; - levelSDF[3] = -1.0; - } else if (problemID == 1) { - gridDim = Neon::index_3d(160, 160, 160); - levelSDF[0] = 0; - levelSDF[1] = -31.0 / 160.0; - levelSDF[2] = -64 / 160.0; - levelSDF[3] = -1.0; - } + Neon::init(); + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + Params params; - generatepalabosDATFile(std::string("lid_" + std::to_string(gridDim.x) + "_" + - std::to_string(gridDim.y) + "_" + - std::to_string(gridDim.x) + ".dat"), - gridDim, - depth, - levelSDF); + auto cli = + (clipp::option("--deviceType") & clipp::value("deviceType", params.deviceType) % "Type of device (gpu or cpu)", + clipp::required("--deviceId") & clipp::integers("deviceId", params.deviceId) % "Device id", + clipp::option("--numIter") & clipp::integer("numIter", params.numIter) % "LBM number of iterations", + clipp::option("--problemType") & clipp::value("problemType", params.problemType) % "Problem type ('lid' for lid-driven cavity, 'sphere' for flow over sphere, or 'jet' for flow over jet fighter, 'mesh' for flow over mesh)", + clipp::option("--meshFile") & clipp::value("meshFile", params.meshFile) % "Path to mesh file for 'mesh' type problem", + clipp::option("--dataType") & clipp::value("dataType", params.dataType) % "Data type (float or double)", + clipp::option("--re") & clipp::integers("Re", params.Re) % "Reynolds number", + clipp::option("--scale") & clipp::integers("scale", params.scale) % "Scale of the problem for parametrized problems. 0-9 for lid. jet is up to 112. Sphere is 2 (or maybe more)", - //define the grid - const Neon::mGridDescriptor<1> descriptor(depth); + clipp::option("--sliceX") & clipp::integer("sliceX", params.sliceX) % "Slice along X for output images/VTK", + clipp::option("--sliceY") & clipp::integer("sliceY", params.sliceY) % "Slice along Y for output images/VTK", + clipp::option("--sliceZ") & clipp::integer("sliceZ", params.sliceZ) % "Slice along Z for output images/VTK", - Neon::domain::mGrid grid( - backend, gridDim, - {[&](const Neon::index_3d id) -> bool { - return sdfCube(id, gridDim - 1) <= levelSDF[0] && - sdfCube(id, gridDim - 1) > levelSDF[1]; - }, - [&](const Neon::index_3d& id) -> bool { - return sdfCube(id, gridDim - 1) <= levelSDF[1] && - sdfCube(id, gridDim - 1) > levelSDF[2]; - }, - [&](const Neon::index_3d& id) -> bool { - return sdfCube(id, gridDim - 1) <= levelSDF[2] && - sdfCube(id, gridDim - 1) > levelSDF[3]; - }}, - Neon::domain::Stencil::s19_t(false), descriptor); + clipp::option("--thetaX") & clipp::value("thetaX", params.thetaX) % "Angle (degree) of rotation of the input model along X axis", + clipp::option("--thetaY") & clipp::value("thetaY", params.thetaY) % "Angle (degree) of rotation of the input model along Y axis", + clipp::option("--thetaZ") & clipp::value("thetaZ", params.thetaZ) % "Angle (degree) of rotation of the input model along Z axis", - //LBM problem - const T ulb = 0.04; - const int Re = 100; - const T clength = T(grid.getDimension(descriptor.getDepth() - 1).x); - const T visclb = ulb * clength / static_cast(Re); - const T omega = 1.0 / (3. * visclb + 0.5); - const Neon::double_3d ulid(ulb, 0., 0.); + ((clipp::option("--benchmark").set(params.benchmark, true) % "Run benchmark mode") | + (clipp::option("--visual").set(params.benchmark, false) % "Run export partial data")), - //allocate fields - auto fin = grid.newField("fin", Q, 0); - auto fout = grid.newField("fout", Q, 0); - auto storeSum = grid.newField("storeSum", Q, 0); - auto cellType = grid.newField("CellType", 1, CellType::bulk); + clipp::option("--vtk").set(params.vtk, true) % "Output VTK files. Active only with if 'visual' is true", + clipp::option("--binary").set(params.binary, true) % "Output binary (down-sampled) files. Active only with if 'visual' is true", + clipp::option("--gui").set(params.gui, true) % "Show Polyscope gui. Active only with if 'visual' is true", - auto vel = grid.newField("vel", 3, 0); - auto rho = grid.newField("rho", 1, 0); + clipp::option("--freq") & clipp::integers("freq", params.freq) % "Output frequency (only works with visual mode)", - //init fields - uint32_t numActiveVoxels = init(grid, storeSum, fin, fout, cellType, vel, rho, ulid); + ((clipp::option("--storeFine").set(params.fineInitStore, true) % "Initiate the Store operation from the fine level") | + (clipp::option("--storeCoarse").set(params.fineInitStore, false) % "Initiate the Store operation from the coarse level") | + (clipp::option("--collisionFusedStore").set(params.collisionFusedStore, true) % "Fuse Collision with Store operation")), + (clipp::option("--fusedFinest").set(params.fusedFinest, true) % "Fuse all operations on the finest level"), - //skeleton - std::vector containers; - nonUniformTimestepRecursive(grid, - fineInitStore, - streamFusedExpl, - streamFusedCoal, - streamFuseAll, - collisionFusedStore, - omega, - descriptor.getDepth() - 1, - descriptor.getDepth(), - cellType, - storeSum, - fin, fout, containers); + ((clipp::option("--streamFusedExpl").set(params.streamFusedExpl, true) % "Fuse Stream with Explosion") | + (clipp::option("--streamFusedCoal").set(params.streamFusedCoal, true) % "Fuse Stream with Coalescence") | + (clipp::option("--streamFuseAll").set(params.streamFuseAll, true) % "Fuse Stream with Coalescence and Explosion"))); - Neon::skeleton::Skeleton skl(grid.getBackend()); - skl.sequence(containers, "MultiResLBM"); - skl.ioToDot("MultiResLBM", "", true); - //execution - auto start = std::chrono::high_resolution_clock::now(); - for (int t = 0; t < numIter; ++t) { - if (t % 100 == 0) { - NEON_INFO("Non-uniform LBM Iteration: {}", t); - } - skl.run(); - if (!benchmark && t % 500 == 0) { - postProcess(grid, Re, descriptor.getDepth(), fout, cellType, t, vel, rho, ulb, true, false); + if (!clipp::parse(argc, argv, cli)) { + auto fmt = clipp::doc_formatting{}.doc_column(31); + std::cout << make_man_page(cli, argv[0], fmt) << '\n'; + return -1; } - } - backend.syncAll(); - auto stop = std::chrono::high_resolution_clock::now(); - auto duration = std::chrono::duration_cast(stop - start); - - const double MLUPS = static_cast(numIter * numActiveVoxels) / duration.count(); - - const double effNumIter = double(numIter) * double(1 << (depth - 1)); - const double effMLUPS = (effNumIter * double(gridDim.x) * double(gridDim.y) * double(gridDim.y)) / double(duration.count()); - - NEON_INFO("Time = {0:8.8f} (microseconds)", double(duration.count())); - NEON_INFO("MLUPS = {0:8.8f}, numActiveVoxels = {1}", MLUPS, numActiveVoxels); - NEON_INFO("Effective MLUPS = {0:8.8f}, Effective numActiveVoxels = {1}", effMLUPS, gridDim.rMul()); - - - //Reporting - auto algoName = [&]() { - std::string ret; - if (collisionFusedStore) { - ret = "CH"; - } else { - ret = "C-H"; - } - if (streamFusedExpl) { - ret += "-SE-O"; - } else if (streamFusedCoal) { - ret += "-SO-E"; - } else if (streamFuseAll) { - ret += "-SEO"; - } else { - ret += "-S-E-O"; + if (params.deviceType != "cpu" && params.deviceType != "gpu") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input device type " << params.deviceType; + NEON_THROW(exp); } - return ret; - }; - auto typeName = [&]() { - std::string ret; - if (std::is_same_v) { - ret = "F"; - } else { - ret = "D"; + if (params.problemType != "lid" && params.problemType != "sphere" && params.problemType != "jet" && params.problemType != "mesh") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input problem type " << params.problemType; + NEON_THROW(exp); } - return ret; - }; - - auto reportSuffix = [&]() { - std::string ret = "P" + std::to_string(problemID) + "_"; - ret += algoName(); - ret += "_" + typeName(); - - return ret; - }; - - //system - report.addMember("DeviceType", Neon::DeviceTypeUtil::toString(backend.devType())); - - //grid - report.addMember("N", gridDim.x); - report.addMember("Depth", depth); - report.addMember("DataType", typeName()); - - //problem - report.addMember("ProblemID", problemID); - report.addMember("ulb", ulb); - report.addMember("Re", Re); - report.addMember("clength", clength); - report.addMember("visclb", visclb); - report.addMember("omega", omega); - - //algorithm - report.addMember("fineInitStore", fineInitStore); - report.addMember("streamFusedExpl", streamFusedExpl); - report.addMember("streamFusedCoal", streamFusedCoal); - report.addMember("streamFuseAll", streamFuseAll); - report.addMember("collisionFusedStore", collisionFusedStore); - report.addMember("Algorithm", algoName()); - - //perf - report.addMember("Time (microsecond)", duration.count()); - report.addMember("MLUPS", MLUPS); - report.addMember("NumIter", numIter); - report.addMember("NumVoxels", numActiveVoxels); - report.addMember("EMLUPS", effMLUPS); - report.addMember("ENumIter", effNumIter); - report.addMember("ENumVoxels", gridDim.rMul()); - - //output - report.write("MultiResLBM_" + reportSuffix(), true); - - //post process - postProcess(grid, Re, descriptor.getDepth(), fout, cellType, numIter, vel, rho, ulb, true, true); -} - -int main(int argc, char** argv) -{ - Neon::init(); - - if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { - report = Neon::Report("Lid Driven Cavity MultiRes LBM"); - report.commandLine(argc, argv); - - std::string deviceType = "gpu"; - int deviceId = 99; - int numIter = 2; - bool benchmark = true; - bool fineInitStore = false; - bool streamFusedExpl = false; - bool streamFusedCoal = false; - bool streamFuseAll = false; - bool collisionFusedStore = false; - int problemId = 0; - std::string dataType = "float"; - - auto cli = - (clipp::option("--deviceType") & clipp::value("deviceType", deviceType) % "Type of device (gpu, cpu)", - clipp::option("--deviceId") & clipp::integers("deviceId", deviceId) % "Device id", - clipp::option("--numIter") & clipp::integer("numIter", numIter) % "LBM number of iterations", - clipp::option("--problemId") & clipp::integer("problemId", problemId) % "Problem ID (0 or 1)", - clipp::option("--dataType") & clipp::value("dataType", dataType) % "Data type (float or double)", - - ((clipp::option("--benchmark").set(benchmark, true) % "Run benchmark mode") | - (clipp::option("--visual").set(benchmark, false) % "Run export partial data")), - - ((clipp::option("--storeFine").set(fineInitStore, true) % "Initiate the Store operation from the fine level") | - (clipp::option("--storeCoarse").set(fineInitStore, false) % "Initiate the Store operation from the coarse level") | - (clipp::option("--collisionFusedStore").set(collisionFusedStore, true) % "Fuse Collision with Store operation")), - - ((clipp::option("--streamFusedExpl").set(streamFusedExpl, true) % "Fuse Stream with Explosion") | - (clipp::option("--streamFusedCoal").set(streamFusedCoal, true) % "Fuse Stream with Coalescence") | - (clipp::option("--streamFuseAll").set(streamFuseAll, true) % "Fuse Stream with Coalescence and Explosion"))); - - if (!clipp::parse(argc, argv, cli)) { - auto fmt = clipp::doc_formatting{}.doc_column(31); - std::cout << make_man_page(cli, argv[0], fmt) << '\n'; - return -1; + if (params.dataType != "float" && params.dataType != "double") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input data type " << params.dataType; + NEON_THROW(exp); } - //Neon grid + //Neon grid and backend Neon::Runtime runtime = Neon::Runtime::stream; - if (deviceType == "cpu") { + if (params.deviceType == "cpu") { runtime = Neon::Runtime::openmp; } - std::vector gpu_ids{deviceId}; + std::vector gpu_ids{params.deviceId}; Neon::Backend backend(gpu_ids, runtime); +#ifdef KBC + constexpr int Q = 27; +#endif +#ifdef BGK constexpr int Q = 19; - if (dataType == "float") { - runNonUniformLBM(problemId, backend, numIter, fineInitStore, streamFusedExpl, streamFusedCoal, streamFuseAll, collisionFusedStore, benchmark); - } else if (dataType == "double") { - runNonUniformLBM(problemId, backend, numIter, fineInitStore, streamFusedExpl, streamFusedCoal, streamFuseAll, collisionFusedStore, benchmark); - } else { - Neon::NeonException exp("app-lbmMultiRes"); - exp << "Input data type " << dataType; - NEON_THROW(exp); +#endif + + if (params.problemType == "lid") { + report = Neon::Report("Lid Driven Cavity MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + lidDrivenCavity(backend, params); + } + if (params.dataType == "double") { + lidDrivenCavity(backend, params); + } + } + + if (params.problemType == "sphere") { + report = Neon::Report("Sphere MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverSphere(backend, params); + } + if (params.dataType == "double") { + flowOverSphere(backend, params); + } + } + + if (params.problemType == "jet") { + report = Neon::Report("Jet MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverJet(backend, params); + } + if (params.dataType == "double") { + flowOverJet(backend, params); + } + } + + if (params.problemType == "mesh") { + report = Neon::Report("Mesh MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverMesh(backend, params); + } + if (params.dataType == "double") { + flowOverMesh(backend, params); + } } } return 0; diff --git a/apps/lbmMultiRes/lbmMultiRes.h b/apps/lbmMultiRes/lbmMultiRes.h new file mode 100644 index 00000000..54604676 --- /dev/null +++ b/apps/lbmMultiRes/lbmMultiRes.h @@ -0,0 +1,513 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "Neon/skeleton/Skeleton.h" + +#include "collide.h" +#include "fusedFinest.h" +#include "init.h" +#include "lattice.h" +#include "postProcess.h" +#include "store.h" +#include "stream.h" +#include "util.h" + +template +void collideStep(Neon::domain::mGrid& grid, + const bool fineInitStore, + const bool collisionFusedStore, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + if (!collisionFusedStore) { + // collision for all voxels at level L=level +#ifdef KBC + containers.push_back(collideKBC(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif + +#ifdef BGK + containers.push_back(collideBGKUnrolled(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif + + // Storing fine (level - 1) data for later "coalescence" pulled by the coarse (level) + if (level != numLevels - 1) { + if (fineInitStore) { + containers.push_back(storeFine(grid, level, fout)); + } else { + containers.push_back(storeCoarse(grid, level + 1, fout)); + } + } + } else { + // collision for all voxels at level L = level fused with + // Storing fine (level) data for later "coalescence" pulled by the coarse(level) +#ifdef KBC + containers.push_back(collideKBCFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif + +#ifdef BGK + containers.push_back(collideBGKUnrolledFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif + } +} + + +template +void streamingStep(Neon::domain::mGrid& grid, + const bool fineInitStore, + const bool streamFusedExpl, + const bool streamFusedCoal, + const bool streamFuseAll, + const bool collisionFusedStore, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + // Streaming step that also performs the necessary "explosion" and "coalescence" steps. + if (streamFusedExpl) { + streamFusedExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); + } else if (streamFusedCoal) { + streamFusedCoalescence(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); + } else if (streamFuseAll) { + streamFusedCoalescenceExplosion(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); + } else { + stream(grid, fineInitStore || collisionFusedStore, level, numLevels, cellType, sumStore, fout, fin, containers); + } +} + +template +void collideFusedStreaming(Neon::domain::mGrid& grid, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + +#ifdef KBC + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + true)); + + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + false)); +#endif + +#ifdef BGK + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + true)); + + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + false)); +#endif +} + +template +void nonUniformTimestepRecursive(Neon::domain::mGrid& grid, + const bool fineInitStore, + const bool streamFusedExpl, + const bool streamFusedCoal, + const bool streamFuseAll, + const bool collisionFusedStore, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers, + bool fusedFinest) +{ + if (fusedFinest && level == 0) { + collideFusedStreaming(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + return; + + } else { + //Collide + collideStep(grid, + fineInitStore, + collisionFusedStore, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + + + // Recurse down + if (level != 0) { + nonUniformTimestepRecursive(grid, + fineInitStore, + streamFusedExpl, + streamFusedCoal, + streamFuseAll, + collisionFusedStore, + omega0, + level - 1, + numLevels, + cellType, + sumStore, + fin, + fout, + containers, + fusedFinest); + } + + //Streaming + streamingStep(grid, + fineInitStore, + streamFusedExpl, + streamFusedCoal, + streamFuseAll, + collisionFusedStore, + level, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + + // Stop + if (level == numLevels - 1) { + return; + } + + //Collide + collideStep(grid, + fineInitStore, + collisionFusedStore, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + + // Recurse down + if (level != 0) { + nonUniformTimestepRecursive(grid, + fineInitStore, + streamFusedExpl, + streamFusedCoal, + streamFuseAll, + collisionFusedStore, + omega0, + level - 1, + numLevels, + cellType, + sumStore, + fin, + fout, + containers, + fusedFinest); + } + + //Streaming + streamingStep(grid, + fineInitStore, + streamFusedExpl, + streamFusedCoal, + streamFuseAll, + collisionFusedStore, + level, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + } +} + + +template +void runNonUniformLBM(Neon::domain::mGrid& grid, + const Params& params, + const T clength, + const T omega, + const T visclb, + const Neon::double_3d velocity, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& storeSum, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool verify = false) +{ + const int depth = grid.getDescriptor().getDepth(); + const auto gridDim = grid.getDimension(); + + std::vector numActiveVoxels = countActiveVoxels(grid, fin); + uint32_t sumActiveVoxels = 0; + for (auto n : numActiveVoxels) { + sumActiveVoxels += n; + } + + Neon::domain::mGrid::Field vel; + Neon::domain::mGrid::Field rho; + if (!params.benchmark || verify) { + vel = grid.newField("vel", 3, 0); + rho = grid.newField("rho", 1, 0); + } + + //skeleton + std::vector containers; + nonUniformTimestepRecursive(grid, + params.fineInitStore, + params.streamFusedExpl, + params.streamFusedCoal, + params.streamFuseAll, + params.collisionFusedStore, + omega, + depth - 1, + depth, + cellType, + storeSum, + fin, + fout, + containers, + params.fusedFinest); + + Neon::skeleton::Skeleton skl(grid.getBackend()); + skl.sequence(containers, "MultiResLBM"); + skl.ioToDot("MultiResLBM", "", true); + + const Neon::int8_3d slice(params.sliceX, params.sliceY, params.sliceZ); + + std::vector> psDrawable; + std::vector> psHex; + std::vector psHexVert; + std::vector psColor; + + if (!params.benchmark) { + initVisualization(grid, vel, psDrawable, psHex, psHexVert, slice); + + if (slice.x == -1 && slice.y == -1 && slice.z == -1) { + if (sumActiveVoxels != psDrawable.size()) { + Neon::NeonException exp("runNonUniformLBM"); + exp << "Mismatch between number of active voxels and drawable voxels"; + exp << "psDrawable.size()= " << psDrawable.size() << ", sumActiveVoxels= " << sumActiveVoxels; + NEON_THROW(exp); + } + } + } + + NEON_INFO("Re: {}", params.Re); + NEON_INFO("clength: {}", clength); + NEON_INFO("omega: {}", omega); + NEON_INFO("visclb: {}", visclb); +#ifdef KBC + NEON_INFO("Collision: KBC"); +#endif +#ifdef BGK + NEON_INFO("Collision: BGK"); +#endif + + + NEON_INFO("velocity: {}, {}, {}", velocity.x, velocity.y, velocity.z); + + + //execution + NEON_INFO("Domain Size {}, {}, {}", gridDim.x, gridDim.y, gridDim.z); + for (uint32_t l = 0; l < depth; ++l) { + NEON_INFO("numActiveVoxels [{}]: {}", l, numActiveVoxels[l]); + } + NEON_INFO("sumActiveVoxels: {}", sumActiveVoxels); + auto start = std::chrono::high_resolution_clock::now(); + for (int t = 0; t < params.numIter; ++t) { + if (t % 100 == 0) { + NEON_INFO("Non-uniform LBM Iteration: {}", t); + } + skl.run(); + if (!params.benchmark && t % params.freq == 0) { + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << t; + std::string fileName = "Velocity_" + suffix.str(); + + postProcess(grid, depth, fout, cellType, vel, rho, slice, fileName, params.vtk && t != 0, params.binary && t != 0, psDrawable, psHex, psHexVert); +#ifdef NEON_USE_POLYSCOPE + postProcessPolyscope(psDrawable, vel, psColor, fileName, params.gui, t == 0); +#endif + } + } + grid.getBackend().syncAll(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + //const double MLUPS = static_cast(params.numIter * sumActiveVoxels) / duration.count(); + //NEON_INFO("MLUPS = {0:8.8f}, sumActiveVoxels = {1}", MLUPS, sumActiveVoxels); + + double MLUPS = 0; + for (uint32_t l = 0; l < depth; ++l) { + double d = (depth - 1) - l; + MLUPS += double(params.numIter) * std::pow(2, d) * double(numActiveVoxels[l]); + } + MLUPS /= double(duration.count()); + NEON_INFO("MLUPS = {0:8.8f}", MLUPS); + NEON_INFO("Time = {0:8.8f} (microseconds)", double(duration.count())); + + const double effNumIter = double(params.numIter) * double(1 << (depth - 1)); + const double effMLUPS = (effNumIter * double(gridDim.x) * double(gridDim.y) * double(gridDim.y)) / double(duration.count()); + NEON_INFO("Effective MLUPS = {0:8.8f}, Effective numActiveVoxels = {1}", effMLUPS, gridDim.rMul()); + + //Reporting + auto algoName = [&]() { + std::string ret; + + if (params.collisionFusedStore) { + ret = "CH"; + } else if (params.fineInitStore) { + ret = "C-H"; + } else { + ret = "C-h"; + } + + if (params.streamFusedExpl) { + ret += "-SE-O"; + } else if (params.streamFusedCoal) { + ret += "-SO-E"; + } else if (params.streamFuseAll) { + ret += "-SEO"; + } else { + ret += "-S-E-O"; + } + + if (params.fusedFinest) { + ret += "+"; + } + return ret; + }; + + auto typeName = [&]() { + std::string ret; + if (std::is_same_v) { + ret = "F"; + } else { + ret = "D"; + } + return ret; + }; + + auto reportSuffix = [&]() { + std::string ret = "P" + std::to_string(params.scale) + "_"; + ret += algoName(); + ret += "_" + typeName(); + + return ret; + }; + + //system + report.addMember("DeviceType", Neon::DeviceTypeUtil::toString(grid.getBackend().devType())); + + //grid + report.addMember("Grid Size X", gridDim.x); + report.addMember("Grid Size Y", gridDim.y); + report.addMember("Grid Size Z", gridDim.z); + report.addMember("Depth", depth); + report.addMember("DataType", typeName()); + + //problem + report.addMember("ProblemScale", params.scale); + report.addMember("problemType", params.problemType); + report.addMember("omega", omega); + report.addMember("Re", params.Re); + report.addMember("velocity", velocity.to_string()); + report.addMember("clength", clength); + report.addMember("visclb", visclb); +#ifdef BGK + report.addMember("Collision", std::string("BGK")); +#endif +#ifdef KBC + report.addMember("Collision", std::string("KBC")); +#endif + + + //algorithm + report.addMember("fineInitStore", params.fineInitStore); + report.addMember("streamFusedExpl", params.streamFusedExpl); + report.addMember("streamFusedCoal", params.streamFusedCoal); + report.addMember("streamFuseAll", params.streamFuseAll); + report.addMember("collisionFusedStore", params.collisionFusedStore); + report.addMember("fusedFinest", params.fusedFinest); + report.addMember("Algorithm", algoName()); + + //perf + report.addMember("Time (microsecond)", duration.count()); + report.addMember("MLUPS", MLUPS); + report.addMember("NumIter", params.numIter); + report.addMember("NumActiveVoxels", numActiveVoxels); + report.addMember("EMLUPS", effMLUPS); + report.addMember("ENumIter", effNumIter); + report.addMember("ENumVoxels", gridDim.rMul()); + + //output + report.write("MultiResLBM_naive_" + reportSuffix(), true); + + //post process + if (!params.benchmark) { + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << params.numIter; + std::string fileName = "Velocity_" + suffix.str(); + postProcess(grid, depth, fout, cellType, vel, rho, slice, fileName, params.vtk, params.binary, psDrawable, psHex, psHexVert); +#ifdef NEON_USE_POLYSCOPE + postProcessPolyscope(psDrawable, vel, psColor, fileName, params.gui, false); +#endif + } else if (verify) { + postProcess(grid, depth, fout, cellType, vel, rho, slice, "", false, false, psDrawable, psHex, psHexVert); + } + + if (verify) { + verifyLidDrivenCavity(grid, + depth, + vel, + params.Re, + params.numIter, + velocity.x); + } +} diff --git a/apps/lbmMultiRes/lid/run.sh b/apps/lbmMultiRes/lid/run.sh new file mode 100644 index 00000000..f3236085 --- /dev/null +++ b/apps/lbmMultiRes/lid/run.sh @@ -0,0 +1,15 @@ +#!/bin/bash +exe="../../../build/bin/app-lbmMultiRes" +numIter=50 +deviceId=7 + +for scale in 1 2 3 4 5 6 7 8 9; do +for dataType in "float" "double"; do +for collideOption in "--storeCoarse" "--storeFine" "--collisionFusedStore" "--fusedFinest --collisionFusedStore"; do +for streamOption in " " "--streamFusedExpl" "--streamFusedCoal" "--streamFuseAll"; do +echo ${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType lid --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType lid --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +done +done +done +done \ No newline at end of file diff --git a/apps/lbmMultiRes/lidDrivenCavity.h b/apps/lbmMultiRes/lidDrivenCavity.h new file mode 100644 index 00000000..4a93490f --- /dev/null +++ b/apps/lbmMultiRes/lidDrivenCavity.h @@ -0,0 +1,272 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "lbmMultiRes.h" + +#include "init.h" + +template +void initLidDrivenCavity(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& cellType, + const Neon::double_3d ulid) +{ + const Neon::index_3d gridDim = grid.getDimension(); + + //init fields + for (int level = 0; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "Init_" + std::to_string(level), level, + [&fin, &fout, &cellType, &sumStore, level, gridDim, ulid](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto& out = fout.load(loader, level, Neon::MultiResCompute::MAP); + auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + type(cell, 0) = CellType::bulk; + + for (int q = 0; q < Q; ++q) { + ss(cell, q) = 0; + in(cell, q) = 0; + out(cell, q) = 0; + } + + if (!in.hasChildren(cell)) { + const Neon::index_3d idx = in.getGlobalIndex(cell); + + //the cell classification + if (level == 0) { + if (idx.x == 0 || idx.x == gridDim.x - 1 || + idx.y == 0 || idx.y == gridDim.y - 1 || + idx.z == 0 || idx.z == gridDim.z - 1) { + type(cell, 0) = CellType::bounceBack; + + if (idx.y == gridDim.y - 1) { + type(cell, 0) = CellType::movingWall; + } + } + } + + //population init value + for (int q = 0; q < Q; ++q) { + T pop_init_val = latticeWeights[q]; + + //bounce back + if (type(cell, 0) == CellType::bounceBack) { + pop_init_val = 0; + } + + //moving wall + if (type(cell, 0) == CellType::movingWall) { + pop_init_val = 0; + for (int d = 0; d < 3; ++d) { + pop_init_val += latticeVelocity[q][d] * ulid.v[d]; + } + pop_init_val *= -6. * latticeWeights[q]; + } + + out(cell, q) = pop_init_val; + in(cell, q) = pop_init_val; + } + } + }; + }); + + container.run(0); + } + + + //init sumStore + initSumStore(grid, sumStore); +} + +template +void lidDrivenCavity(const Neon::Backend backend, + Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + Neon::index_3d gridDim; + + //int depth = 2; + //std::vector levelSDF(depth + 1); + //gridDim = Neon::index_3d(6, 6, 6); + //levelSDF[0] = 0; + //levelSDF[1] = -2.0 / 3.0; + //levelSDF[2] = -1.0; + + + int depth = 3; + std::vector levelSDF(depth + 1); + gridDim = Neon::index_3d(192, 192, 192); + levelSDF[0] = 0; + levelSDF[1] = -36.0 / 96.0; + levelSDF[2] = -72.0 / 96.0; + levelSDF[3] = -1.0; + + + if (params.scale == 0) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(48, 48, 48); + levelSDF[0] = 0; + levelSDF[1] = -8.0 / 24.0; + levelSDF[2] = -16.0 / 24.0; + levelSDF[3] = -1.0; + } else if (params.scale == 1) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(160, 160, 160); + levelSDF[0] = 0; + levelSDF[1] = -16.0 / 80.0; + levelSDF[2] = -32.0 / 80.0; + levelSDF[3] = -1.0; + } else if (params.scale == 2) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(240, 240, 240); + levelSDF[0] = 0; + levelSDF[1] = -24.0 / 120.0; + levelSDF[2] = -80.0 / 120.0; + levelSDF[3] = -1.0; + } else if (params.scale == 3) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(320, 320, 320); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -1.0; + } else if (params.scale == 4) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(480, 480, 480); + levelSDF[0] = 0; + levelSDF[1] = -48.0 / 240.0; + levelSDF[2] = -96.0 / 240.0; + levelSDF[3] = -1.0; + } else if (params.scale == 5) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -64.0 / 256.0; + levelSDF[2] = -112.0 / 256.0; + levelSDF[3] = -1.0; + } else if (params.scale == 6) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(160, 160, 160); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -128.0 / 160.0; + levelSDF[4] = -1.0; + } else if (params.scale == 7) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(240, 240, 240); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 120.0; + levelSDF[2] = -80.0 / 120.0; + levelSDF[3] = -112.0 / 120.0; + levelSDF[4] = -1.0; + } else if (params.scale == 8) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(320, 320, 320); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -112.0 / 160.0; + levelSDF[4] = -1.0; + } else if (params.scale == 9) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(480, 480, 480); + levelSDF[0] = 0; + levelSDF[1] = -48.0 / 240.0; + levelSDF[2] = -96.0 / 240.0; + levelSDF[3] = -160.0 / 240.0; + levelSDF[4] = -1.0; + } else if (params.scale == 10) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -120.0 / 512.0; + levelSDF[2] = -200.0 / 512.0; + levelSDF[3] = -400.0 / 512.0; + levelSDF[4] = -1.0; + } else if (params.scale == 11) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -120.0 / 512.0; + levelSDF[2] = -200.0 / 512.0; + levelSDF[3] = -400.0 / 512.0; + levelSDF[4] = -1.0; + } + + + //generatepalabosDATFile(std::string("lid_" + std::to_string(gridDim.x) + "_" + + // std::to_string(gridDim.y) + "_" + + // std::to_string(gridDim.x) + ".dat"), + // gridDim, + // depth, + // levelSDF); + + //define the grid + const Neon::mGridDescriptor<1> descriptor(depth); + + std::vector> activeCellLambda(depth); + for (size_t i = 0; i < depth; ++i) { + activeCellLambda[i] = [=](const Neon::index_3d id) -> bool { + float sdf = sdfCube(id, gridDim - 1); + return sdf <= levelSDF[i] && sdf > levelSDF[i + 1]; + }; + } + + Neon::domain::mGrid grid( + backend, gridDim, + activeCellLambda, + Neon::domain::Stencil::s19_t(false), descriptor); + + //LBM problem + const T ulb = 0.04; + const T clength = T(grid.getDimension(descriptor.getDepth() - 1).x); + const T visclb = ulb * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d ulid(ulb, 0., 0.); + + //auto test = grid.newField("test", 1, 0); + //test.ioToVtk("Test", true, true, true, false, {1, 1, 0}); + //exit(0); + + //allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + //init fields + initLidDrivenCavity(grid, storeSum, fin, fout, cellType, ulid); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + ulid, + cellType, + storeSum, + fin, + fout, + true); +} \ No newline at end of file diff --git a/apps/lbmMultiRes/postProcess.h b/apps/lbmMultiRes/postProcess.h index 2853a30b..de7dac06 100644 --- a/apps/lbmMultiRes/postProcess.h +++ b/apps/lbmMultiRes/postProcess.h @@ -5,18 +5,27 @@ #include "verify.h" +#ifdef NEON_USE_POLYSCOPE +#include "polyscope/surface_mesh.h" +#include "polyscope/volume_mesh.h" +#endif + +#include + template -void postProcess(Neon::domain::mGrid& grid, - const int Re, - const int numLevels, - const Neon::domain::mGrid::Field& fpop, - const Neon::domain::mGrid::Field& cellType, - const int iteration, - Neon::domain::mGrid::Field& vel, - Neon::domain::mGrid::Field& rho, - T ulb, - bool verify, - bool generateValidateFile) +void postProcess(Neon::domain::mGrid& grid, + const int numLevels, + const Neon::domain::mGrid::Field& fpop, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& vel, + Neon::domain::mGrid::Field& rho, + const Neon::int8_3d slice, + std::string fileName, + bool outputFile, + bool outoutFileBinary, + const std::vector>& psDrawable, + const std::vector>& psHex, + const std::vector& psHexVert) { grid.getBackend().syncAll(); @@ -55,12 +64,20 @@ void postProcess(Neon::domain::mGrid& grid, u(cell, 1) = vel.v[1]; u(cell, 2) = vel.v[2]; } - if (type(cell, 0) == CellType::movingWall) { + if (type(cell, 0) == CellType::movingWall || type(cell, 0) == CellType::inlet) { rh(cell, 0) = 1.0; - u(cell, 0) = pop(cell, 0) / (6. * 1. / 18.); - u(cell, 1) = pop(cell, 1) / (6. * 1. / 18.); - u(cell, 2) = pop(cell, 2) / (6. * 1. / 18.); + for (int q = 0; q < Q; ++q) { + for (int d = 0; d < 3; ++d) { + int d1 = (d + 1) % 3; + int d2 = (d + 2) % 3; + if (latticeVelocity[q][d] == -1 && + latticeVelocity[q][d1] == 0 && + latticeVelocity[q][d2] == 0) { + u(cell, d) = pop(cell, q) / (6. * latticeWeights[q]); + } + } + } } } }; @@ -75,91 +92,407 @@ void postProcess(Neon::domain::mGrid& grid, vel.updateHostData(); //rho.updateHostData(); + if (outputFile) { + //vel.ioToVtk(fileName, true, true, true, true, slice); + //rho.ioToVtk("Density_" + suffix.str()); - int precision = 4; - std::ostringstream suffix; - suffix << std::setw(precision) << std::setfill('0') << iteration; + std::ofstream file(fileName + ".vtk"); + file << "# vtk DataFile Version 2.0\n"; + file << "mGrid\n"; + file << "ASCII\n"; + file << "DATASET UNSTRUCTURED_GRID\n"; + file << "POINTS " << psHexVert.size() << " float \n"; - vel.ioToVtk("Velocity_" + suffix.str()); - //rho.ioToVtk("Density_" + suffix.str()); + for (size_t v = 0; v < psHexVert.size(); ++v) { + file << psHexVert[v].x << " " << psHexVert[v].y << " " << psHexVert[v].z << "\n"; + } - std::vector> xPosVal; - std::vector> yPosVal; - if (verify || generateValidateFile) { - const Neon::index_3d grid_dim = grid.getDimension(); + file << "CELLS " << psHex.size() << " " << psHex.size() * 9 << " \n"; + + for (uint64_t i = 0; i < psHex.size(); ++i) { + file << "8 "; + for (int j = 0; j < 8; ++j) { + int d = j; + if (j == 2) { + d = 3; + } + if (j == 3) { + d = 2; + } + if (j == 6) { + d = 7; + } + if (j == 7) { + d = 6; + } + file << psHex[i][d] << " "; + } + file << "\n"; + } + + file << "CELL_TYPES " << psHex.size() << " \n"; + for (uint64_t i = 0; i < psHex.size(); ++i) { + file << 11 << "\n"; + } + + file << "CELL_DATA " << psHex.size() << " \n"; + + //data + //file << "SCALARS Velocity float 1 \n"; + //file << "LOOKUP_TABLE default \n"; + file << "VECTORS Velocity float \n"; + + for (size_t t = 0; t < psDrawable.size(); ++t) { + const auto id = psDrawable[t].first; + int level = psDrawable[t].second; + + for (int d = 0; d < 3; ++d) { + T v = vel(id, d, level); + file << v << " "; + } + file << "\n"; + + //T c = 0; + //for (int d = 0; d < 3; ++d) { + // T v = vel(id, d, level); + // c += v * v; + //} + //file << c << "\n"; + } + + + file << "SCALARS Level float 1 \n"; + file << "LOOKUP_TABLE default \n"; + for (size_t t = 0; t < psDrawable.size(); ++t) { + int level = psDrawable[t].second; + file << level << "\n"; + } + + file.close(); + } + + if (outoutFileBinary) { + //the level at which we will do the sampling + const int depth = grid.getDescriptor().getDepth(); + const auto gridDim = grid.getDimension(); + const int theLevel = depth - 1; + + const Neon::index_4d grid4D(gridDim.x / (1 << theLevel), gridDim.y / (1 << theLevel), gridDim.z / (1 << theLevel), 3); + std::vector ioBuffer(grid4D.x * grid4D.y * grid4D.z * grid4D.w); + float* ioBufferPtr = ioBuffer.data(); - const T scale = 1.0 / ulb; + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { - for (int level = 0; level < numLevels; ++level) { - vel.forEachActiveCell( - level, [&](const Neon::index_3d& id, const int& card, T& val) { - if (id.x == grid_dim.x / 2 && id.z == grid_dim.z / 2) { - if (card == 0) { - yPosVal.push_back({static_cast(id.v[1]) / static_cast(grid_dim.y), val * scale}); + grid.newContainer("Viz", l, [=](Neon::set::Loader& loader) { + auto& v = vel.load(loader, l, Neon::MultiResCompute::MAP); + + return [=](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!v.hasChildren(cell)) { + Neon::index_3d loc = v.getGlobalIndex(cell); + + if (loc.x % (1 << theLevel) != 0 || loc.y % (1 << theLevel) != 0 || loc.z % (1 << theLevel) != 0) { + return; + } + + loc.x /= (1 << theLevel); + loc.y /= (1 << theLevel); + loc.z /= (1 << theLevel); + + + for (int c = 0; c < 3; ++c) { + + const float val = v(cell, c); + + + Neon::index_4d loc4D(loc.x, loc.y, loc.z, c); + ioBufferPtr[loc4D.mPitch(grid4D)] = val; + } } - } + }; + }) + .run(0); + } + + { + Neon::index_3d nodeDim(grid4D.x + 1, grid4D.y + 1, grid4D.z + 1); + + Neon::IoToVTK io("Bin" + fileName, nodeDim, {1, 1, 1}, {0, 0, 0}, Neon::IoFileType::BINARY); - if (id.y == grid_dim.y / 2 && id.z == grid_dim.z / 2) { - if (card == 1) { - xPosVal.push_back({static_cast(id.v[0]) / static_cast(grid_dim.x), val * scale}); + io.addField([=](Neon::index_3d idx, int card) { + Neon::index_4d loc4D(idx.x, idx.y, idx.z, card); + return ioBufferPtr[loc4D.mPitch(grid4D)]; + }, + 3, "V", Neon::ioToVTKns::VtiDataType_e::voxel); + } + } +} + + +template +void initVisualization(Neon::domain::mGrid& grid, + const Neon::domain::mGrid::Field& vel, + std::vector>& psDrawable, + std::vector>& psHex, + std::vector& psHexVert, + const Neon::int8_3d slice) +{ + //polyscope register points + //std::vector> psHex; + //std::vector psHexVert; + psHex.clear(); + psHexVert.clear(); + psDrawable.clear(); + + + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { + constexpr double tiny = 1e-7; + const Neon::double_3d voxelSize(1.0 / grid.getDimension(l).x, 1.0 / grid.getDimension(l).y, 1.0 / grid.getDimension(l).z); + const int voxelSpacing = grid.getDescriptor().getSpacing(l - 1); + const Neon::index_3d dim0 = grid.getDimension(0); + + grid.newContainer("initVisualization", l, [&](Neon::set::Loader& loader) { + const auto& u = vel.load(loader, l, Neon::MultiResCompute::MAP); + + return [&](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!u.hasChildren(cell)) { + bool draw = true; + + Neon::index_3d voxelGlobalLocation = u.getGlobalIndex(cell); + + if (slice.x == 1 || slice.y == 1 || slice.z == 1) { + draw = false; + const Neon::double_3d locationScaled(double(voxelGlobalLocation.x) / double(dim0.x), + double(voxelGlobalLocation.y) / double(dim0.y), + double(voxelGlobalLocation.z) / double(dim0.z)); + for (int s = 0; s < 3 && !draw; ++s) { + if (slice.v[s] == 1 && locationScaled.v[s] - tiny <= 0.5 && locationScaled.v[s] + voxelSize.v[s] >= 0.5 - tiny) { + draw = true; + } + } + } + + + if (draw) { + +#pragma omp critical + { + + psDrawable.push_back({cell, int8_t(l)}); + } + + std::array hex; + + const Neon::float_3d gf(voxelGlobalLocation.x, voxelGlobalLocation.y, voxelGlobalLocation.z); + + //x,y,z + hex[0] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y, gf.z}); + + //+x,y,z + hex[1] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y, gf.z}); + + + //+x,y,+z + hex[2] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y, gf.z + voxelSpacing}); + + + //x,y,+z + hex[3] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y, gf.z + voxelSpacing}); + + + //x,+y,z + hex[4] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y + voxelSpacing, gf.z}); + + + //+x,+y,z + hex[5] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y + voxelSpacing, gf.z}); + + + //+x,+y,+z + hex[6] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y + voxelSpacing, gf.z + voxelSpacing}); + + + //x,+y,+z + hex[7] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y + voxelSpacing, gf.z + voxelSpacing}); + +#pragma omp critical + { + + psHex.push_back(hex); + } } } - }, - Neon::computeMode_t::seq); + }; + }) + .run(0); + } + +#ifdef NEON_USE_POLYSCOPE + if (!polyscope::isInitialized()) { + polyscope::init(); + } + polyscope::options::groundPlaneMode = polyscope::GroundPlaneMode::None; + polyscope::view::projectionMode = polyscope::ProjectionMode::Orthographic; + //Neon::index_3d dim0 = grid.getDimension(0); + //polyscope::view::lookAt(glm::vec3{0, 0, 0}, glm::vec3{0., 0., 1.}); + auto psMesh = polyscope::registerHexMesh("LBM", psHexVert, psHex); + polyscope::options::screenshotExtension = ".png"; +#endif +} + +#ifdef NEON_USE_POLYSCOPE +template +void postProcessPolyscope(const std::vector>& psDrawable, + const Neon::domain::mGrid::Field& vel, + std::vector& psColor, + std::string screenshotName, + bool show, + bool showEdges) +{ + if (psColor.empty()) { + psColor.resize(psDrawable.size()); + } + for (uint32_t t = 0; t < psDrawable.size(); ++t) { + const auto id = psDrawable[t].first; + int level = psDrawable[t].second; + + T c = 0; + for (int d = 0; d < 3; ++d) { + T v = vel(id, d, level); + c += v * v; } - //sort the position so the linear interpolation works - std::sort(xPosVal.begin(), xPosVal.end(), [=](std::pair& a, std::pair& b) { - return a.first < b.first; - }); - - std::sort(yPosVal.begin(), yPosVal.end(), [=](std::pair& a, std::pair& b) { - return a.first < b.first; - }); + psColor[t] = std::sqrt(c); } - if (verify) { - NEON_INFO("Max difference = {0:.8f}", verifyGhia1982(Re, xPosVal, yPosVal)); + auto colorQu = polyscope::getVolumeMesh("LBM")->addCellScalarQuantity("Velocity", psColor); + colorQu->setEnabled(true); + colorQu->setColorMap("jet"); + if (showEdges) { + polyscope::getVolumeMesh("LBM")->setEdgeWidth(1.0); + } else { + polyscope::getVolumeMesh("LBM")->setEdgeWidth(0.0); } - if (generateValidateFile) { - auto writeToFile = [](const std::vector>& posVal, std::string filename) { - std::ofstream file; - file.open(filename); - for (auto v : posVal) { - file << v.first << " " << v.second << "\n"; - } - file.close(); - }; - writeToFile(yPosVal, "NeonMultiResLBM_" + suffix.str() + "_Y.dat"); - writeToFile(xPosVal, "NeonMultiResLBM_" + suffix.str() + "_X.dat"); + //colorQu->setMapRange({0, 0.04}); + + polyscope::screenshot(screenshotName + ".png"); + + if (show) { + polyscope::show(); + } +} + +void polyscopeAddMesh( + const std::string name, + const Eigen::MatrixXi& faces, + const Eigen::MatrixXd& vertices) +{ + if (!polyscope::isInitialized()) { + polyscope::init(); + } + + polyscope::registerSurfaceMesh(polyscope::guessNiceNameFromPath(name), vertices, faces); +} +#endif + +template +void verifyLidDrivenCavity(Neon::domain::mGrid& grid, + const int numLevels, + Neon::domain::mGrid::Field& vel, + const int Re, + const int iteration, + const T ulb) +{ + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << iteration; + + std::vector> xPosVal; + std::vector> yPosVal; + + const Neon::index_3d grid_dim = grid.getDimension(); + + const T scale = 1.0 / ulb; + + for (int level = 0; level < numLevels; ++level) { + vel.forEachActiveCell( + level, [&](const Neon::index_3d& id, const int& card, T& val) { + if (id.x == grid_dim.x / 2 && id.z == grid_dim.z / 2) { + if (card == 0) { + yPosVal.push_back({static_cast(id.v[1]) / static_cast(grid_dim.y), val * scale}); + } + } + + if (id.y == grid_dim.y / 2 && id.z == grid_dim.z / 2) { + if (card == 1) { + xPosVal.push_back({static_cast(id.v[0]) / static_cast(grid_dim.x), val * scale}); + } + } + }, + Neon::computeMode_t::seq); } + //sort the position so the linear interpolation works + std::sort(xPosVal.begin(), xPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + std::sort(yPosVal.begin(), yPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + + NEON_INFO("Max difference = {0:.8f}", verifyGhia1982(Re, xPosVal, yPosVal)); + + + auto writeToFile = [](const std::vector>& posVal, std::string filename) { + std::ofstream file; + file.open(filename); + for (auto v : posVal) { + file << v.first << " " << v.second << "\n"; + } + file.close(); + }; + writeToFile(yPosVal, "NeonMultiResLBM_" + suffix.str() + "_Y.dat"); + writeToFile(xPosVal, "NeonMultiResLBM_" + suffix.str() + "_X.dat"); } -inline void generatepalabosDATFile(const std::string filename, - const Neon::index_3d gridDim, - const int depth, - const float* levelSDF) +inline void generatepalabosDATFile(const std::string filename, + const Neon::index_3d gridDim, + const int depth, + const std::vector& levelSDF) { std::ofstream file; file.open(filename); + float delta = 0.5; + + Neon::index_3d gridDimFull(gridDim.x / delta, gridDim.y / delta, gridDim.z / delta); + //a cuboid coordinates specified by it cartesian extents x0, x1, y0, y1, z0, z1 - file << 0 << " " << gridDim.x << " " - << 0 << " " << gridDim.y << " " - << 0 << " " << gridDim.z << "\n"; + file << 0 << " " << gridDim.x - 1 << " " + << 0 << " " << gridDim.y - 1 << " " + << 0 << " " << gridDim.z - 1 << "\n"; //dx: the finest voxel size - file << "1\n"; + file << delta << "\n"; //nx, ny and nz representing the number of finest voxels along each dimension of the cuboid. - file << gridDim.x << " " - << gridDim.y << " " - << gridDim.z << "\n"; + file << gridDimFull.x << " " + << gridDimFull.y << " " + << gridDimFull.z << "\n"; + + for (int32_t k = 0; k < gridDimFull.z; ++k) { + for (int32_t j = 0; j < gridDimFull.y; ++j) { + for (int32_t i = 0; i < gridDimFull.x; ++i) { - for (int32_t k = 0; k < gridDim.z; ++k) { - for (int32_t j = 0; j < gridDim.y; ++j) { - for (int32_t i = 0; i < gridDim.x; ++i) { - float sdf = sdfCube({i, j, k}, gridDim - 1); + float sdf = sdfCube({i, j, k}, gridDimFull - 1); for (int d = 0; d < depth; ++d) { if (sdf <= levelSDF[d] && sdf > levelSDF[d + 1]) { @@ -168,6 +501,7 @@ inline void generatepalabosDATFile(const std::string filename, } } } + file << "\n"; } file << "\n"; } diff --git a/apps/lbmMultiRes/practice_v28.obj b/apps/lbmMultiRes/practice_v28.obj new file mode 100644 index 00000000..c49052d8 --- /dev/null +++ b/apps/lbmMultiRes/practice_v28.obj @@ -0,0 +1,127368 @@ +#https://cults3d.com/en/3d-model/art/airbus-a320-200 +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object practice_v28.obj +# +# Vertices: 37338 +# Faces: 90013 +# +#### +v -246000.000000 -17506.783203 25500.947266 +v -245354.984375 -15848.866211 24431.814453 +v -246000.000000 -15000.000000 23693.759766 +v -244706.750000 -15788.769531 24472.966797 +v -244706.750000 -13251.937500 22394.892578 +v -244050.671875 -15729.211914 24514.128906 +v -244050.000000 -13189.257812 22432.597656 +v -243400.843750 -15671.450195 24554.427734 +v -243400.843750 -13128.596680 22469.435547 +v -242082.671875 -13009.246094 22542.957031 +v -242082.671875 -11490.186523 21066.445312 +v -240752.578125 -12893.816406 22615.462891 +v -240752.578125 -11371.417969 21134.201172 +v -238058.203125 -12674.444336 22757.445312 +v -238058.203125 -11145.732422 21266.884766 +v -235320.734375 -12469.931641 22895.429688 +v -235320.734375 -10935.374023 21395.832031 +v -229728.515625 -12103.285156 23159.589844 +v -229728.515625 -10558.373047 21642.689453 +v -227874.343750 -10128.349609 21379.892578 +v -228426.281250 -10033.024414 21218.460938 +v -246000.000000 -20165.060547 27078.796875 +v -245354.984375 -18601.332031 26267.878906 +v -244706.750000 -18544.595703 26312.123047 +v -244051.343750 -18488.417969 26356.333984 +v -243400.843750 -18433.818359 26399.705078 +v -242082.671875 -15557.909180 24634.771484 +v -240752.578125 -15448.081055 24714.003906 +v -238058.203125 -15239.302734 24869.162109 +v -235320.734375 -15044.596680 25019.951172 +v -229728.515625 -14695.324219 25308.621094 +v -225306.390625 -11629.953125 23142.863281 +v -226011.484375 -10991.410156 22459.808594 +v -246000.000000 -22949.148438 28425.466797 +v -245354.984375 -21541.281250 27853.685547 +v -244706.750000 -21488.128906 27900.601562 +v -244052.000000 -21435.552734 27947.433594 +v -243400.843750 -21384.339844 27993.470703 +v -242082.671875 -18326.587891 26486.087891 +v -240752.578125 -18222.843750 26571.273438 +v -238058.203125 -18025.574219 26738.091797 +v -235320.734375 -17841.521484 26900.212891 +v -229728.515625 -17511.123047 27210.578125 +v -224000.000000 -15000.000000 26024.552734 +v -224087.812500 -14067.079102 25322.625000 +v -246000.000000 -25838.544922 29539.353516 +v -245354.984375 -24637.460938 29177.494141 +v -244706.750000 -24588.087891 29226.638672 +v -244052.671875 -24539.291016 29275.648438 +v -243400.843750 -24491.656250 29323.921875 +v -242082.671875 -21283.849609 28085.066406 +v -240752.578125 -21186.607422 28175.396484 +v -238058.203125 -21001.628906 28352.287109 +v -235320.734375 -20828.955078 28524.195312 +v -229728.515625 -20518.714844 28853.294922 +v -224000.000000 -20051.994141 29064.191406 +v -224000.000000 -17463.236328 27645.550781 +v -246000.000000 -28807.410156 30415.154297 +v -245354.984375 -27858.630859 30227.562500 +v -244706.750000 -27813.187500 30278.474609 +v -244053.343750 -27768.312500 30329.195312 +v -243400.843750 -27724.410156 30379.259766 +v -242082.671875 -24398.267578 29419.871094 +v -240752.578125 -24307.869141 29514.496094 +v -238058.203125 -24135.835938 29699.791016 +v -235320.734375 -23975.146484 29879.871094 +v -229728.515625 -23686.136719 30224.613281 +v -224000.000000 -22743.658203 30276.134766 +v -245354.984375 -31173.539062 30992.146484 +v -246000.000000 -31834.464844 31048.390625 +v -245354.984375 -34550.941406 31459.509766 +v -246000.000000 -34903.167969 31433.935547 +v -246000.000000 -37993.203125 31564.287109 +v -240752.578125 -37737.910156 31983.093750 +v -243400.843750 -34440.792969 31617.388672 +v -244054.687500 -34476.910156 31565.177734 +v -244706.750000 -34513.664062 31512.498047 +v -244706.750000 -31132.140625 31044.347656 +v -235320.734375 -37512.453125 32379.029297 +v -238058.203125 -34171.066406 32022.656250 +v -240752.578125 -34301.648438 31822.867188 +v -242082.671875 -34370.132812 31720.843750 +v -242082.671875 -30972.837891 31249.599609 +v -243400.843750 -31051.242188 31147.681641 +v -244054.015625 -31091.292969 31096.298828 +v -235320.734375 -34048.746094 32216.818359 +v -229728.515625 -37314.792969 32752.605469 +v -229728.515625 -33827.714844 32588.523438 +v -224000.000000 -34190.386719 32986.652344 +v -224000.000000 -31260.560547 32639.011719 +v -224000.000000 -37142.898438 33104.335938 +v -229728.515625 -30372.601562 32104.388672 +v -224000.000000 -28363.439453 32067.439453 +v -229728.515625 -26981.419922 31312.365234 +v -224000.000000 -25518.207031 31277.910156 +v -224341.468750 -13183.938477 24596.564453 +v -224749.609375 -12366.718750 23863.642578 +v -226868.531250 -10477.080078 21852.427734 +v -229000.000000 -10000.000000 21121.072266 +v -235007.421875 -10000.000000 20416.562500 +v -241000.000000 -10000.000000 19576.085938 +v -241566.140625 -10032.154297 19526.341797 +v -242126.296875 -10128.506836 19552.171875 +v -242663.531250 -10284.840820 19650.318359 +v -243166.484375 -10493.746094 19811.906250 +v -243400.843750 -11613.000977 20997.740234 +v -244049.375000 -11037.509766 20282.060547 +v -244049.562500 -11675.382812 20963.337891 +v -244757.968750 -11701.874023 20880.498047 +v -244706.750000 -11739.930664 20928.078125 +v -245300.765625 -12449.813477 21550.439453 +v -245354.984375 -13315.125977 22357.236328 +v -245920.953125 -14114.416992 22977.013672 +v -245687.218750 -13259.299805 22256.976562 +v -238058.203125 -30752.185547 31546.927734 +v -240752.578125 -30896.890625 31350.107422 +v -240752.578125 -27555.128906 30576.691406 +v -242082.671875 -27638.406250 30478.662109 +v -238058.203125 -27396.564453 30768.656250 +v -235320.734375 -30616.792969 31738.207031 +v -235320.734375 -27248.341797 30955.214844 +v -246000.000000 -41000.000000 31440.843750 +v -244706.750000 -40075.070312 31608.101562 +v -243400.843750 -40015.398438 31713.312500 +v -242082.671875 -39957.476562 31817.080078 +v -240752.578125 -39901.273438 31919.414062 +v -242082.671875 -42108.277344 31628.615234 +v -240752.578125 -42056.800781 31730.343750 +v -241977.390625 -45903.542969 30997.970703 +v -241000.000000 -46000.000000 31042.812500 +v -244706.750000 -42215.882812 31420.875000 +v -245904.078125 -41974.683594 31355.707031 +v -245620.203125 -42911.472656 31264.121094 +v -245159.218750 -43775.058594 31172.861328 +v -243400.843750 -42161.296875 31525.462891 +v -244539.062500 -44532.000000 31090.951172 +v -243783.750000 -45153.402344 31028.396484 +v -242917.765625 -45617.593750 30994.675781 +v -238058.203125 -41958.382812 31929.550781 +v -235000.937500 -46000.000000 31427.236328 +v -235320.734375 -41865.835938 32123.148438 +v -229728.515625 -41697.550781 32493.773438 +v -229728.515625 -39510.148438 32687.392578 +v -224000.000000 -41000.000000 32903.816406 +v -229000.000000 -46000.000000 31778.357422 +v -228016.734375 -45902.367188 31855.974609 +v -227076.109375 -45615.046875 31973.802734 +v -226213.406250 -45151.492188 32123.019531 +v -225460.125000 -44531.195312 32291.759766 +v -224842.421875 -43777.511719 32466.845703 +v -224381.750000 -42916.195312 32635.167969 +v -224096.750000 -41978.820312 32784.195312 +v -235320.734375 -39693.093750 32314.560547 +v -238058.203125 -39793.914062 32119.808594 +v -224096.671875 -41978.472656 -32784.242188 +v -229728.515625 -41501.539062 -32516.341797 +v -224000.000000 -41000.000000 -32903.816406 +v -229728.515625 -39214.546875 -32703.736328 +v -224000.000000 -37573.500000 -33101.820312 +v -229728.515625 -36920.039062 -32750.486328 +v -224000.000000 -34146.218750 -32983.109375 +v -229728.515625 -34627.093750 -32654.974609 +v -229728.515625 -32344.781250 -32420.000000 +v -235320.734375 -32575.753906 -32050.218750 +v -235320.734375 -30328.322266 -31683.466797 +v -240752.578125 -30610.705078 -31296.037109 +v -240752.578125 -28409.447266 -30804.332031 +v -246000.000000 -30635.757812 -30828.095703 +v -246000.000000 -27264.351562 -29992.484375 +v -224381.484375 -42915.539062 -32635.281250 +v -229728.515625 -43771.941406 -32191.753906 +v -235320.734375 -41671.136719 -32145.460938 +v -235320.734375 -43926.320312 -31824.574219 +v -240752.578125 -41863.644531 -31752.380859 +v -240752.578125 -44100.957031 -31435.417969 +v -245620.328125 -42911.171875 -31264.154297 +v -245159.500000 -43774.636719 -31172.908203 +v -244538.859375 -44532.210938 -31090.933594 +v -243782.953125 -45153.933594 -31028.351562 +v -241000.000000 -46000.000000 -31042.812500 +v -242917.640625 -45617.648438 -30994.679688 +v -241977.203125 -45903.578125 -30997.974609 +v -224841.796875 -43776.578125 -32467.042969 +v -225459.718750 -44530.781250 -32291.865234 +v -226213.453125 -45151.523438 -32123.009766 +v -227076.375000 -45615.152344 -31973.763672 +v -228016.984375 -45902.414062 -31855.949219 +v -229000.000000 -46000.000000 -31778.357422 +v -235000.937500 -46000.000000 -31427.236328 +v -245904.109375 -41974.519531 -31355.724609 +v -246000.000000 -41000.000000 -31440.843750 +v -240752.578125 -39609.980469 -31935.373047 +v -246000.000000 -37530.664062 -31561.349609 +v -240752.578125 -37348.910156 -31981.023438 +v -240752.578125 -35089.378906 -31887.755859 +v -235320.734375 -37120.343750 -32376.933594 +v -235320.734375 -34842.765625 -32282.511719 +v -246000.000000 -34069.281250 -31354.394531 +v -240752.578125 -32840.328125 -31658.302734 +v -240752.578125 -26245.500000 -30186.556641 +v -246000.000000 -23987.771484 -28857.230469 +v -240752.578125 -24127.808594 -29446.083984 +v -240752.578125 -22065.314453 -28586.287109 +v -235320.734375 -23793.648438 -29810.613281 +v -235320.734375 -21714.679688 -28940.171875 +v -229728.515625 -23503.414062 -30154.556641 +v -229728.515625 -21410.417969 -29274.072266 +v -224000.000000 -20923.009766 -29483.958984 +v -229728.515625 -19382.511719 -28274.847656 +v -224000.000000 -17880.302734 -27892.492188 +v -229728.515625 -17428.769531 -27160.333984 +v -224000.000000 -15000.000000 -26024.552734 +v -229728.515625 -15558.266602 -25933.984375 +v -224087.781250 -14067.237305 -25322.748047 +v -229728.515625 -13780.080078 -24599.250000 +v -224341.343750 -13184.260742 -24596.843750 +v -224749.312500 -12367.207031 -23864.097656 +v -229728.515625 -12103.285156 -23159.589844 +v -225305.609375 -11630.808594 -23143.751953 +v -226010.093750 -10992.447266 -22460.966797 +v -229728.515625 -10558.371094 -21642.687500 +v -226866.796875 -10477.895508 -21853.447266 +v -227873.656250 -10128.516602 -21380.136719 +v -228425.921875 -10033.062500 -21218.542969 +v -229000.000000 -10000.000000 -21121.072266 +v -235007.421875 -10000.000000 -20416.562500 +v -235320.734375 -10935.372070 -21395.830078 +v -240752.578125 -11371.416016 -21134.199219 +v -235320.734375 -12469.931641 -22895.429688 +v -240752.578125 -12893.816406 -22615.462891 +v -235320.734375 -14135.487305 -24318.671875 +v -240752.578125 -14546.174805 -24021.298828 +v -235320.734375 -15901.754883 -25638.179688 +v -240752.578125 -16298.447266 -25324.673828 +v -235320.734375 -17759.718750 -26850.542969 +v -240752.578125 -18141.689453 -26522.210938 +v -235320.734375 -19700.365234 -27952.343750 +v -240752.578125 -20066.960938 -27610.539062 +v -246000.000000 -20829.443359 -27426.617188 +v -246000.000000 -17821.906250 -25704.726562 +v -246000.000000 -15000.000000 -23693.759766 +v -245920.906250 -14114.166016 -22976.808594 +v -245687.046875 -13258.870117 -22256.607422 +v -245300.406250 -12449.207031 -21549.902344 +v -244757.125000 -11700.916016 -20879.628906 +v -244048.390625 -11036.756836 -20281.394531 +v -243165.609375 -10493.323242 -19811.562500 +v -241000.000000 -10000.000000 -19576.085938 +v -242663.203125 -10284.722656 -19650.232422 +v -242125.875000 -10128.409180 -19552.125000 +v -241565.937500 -10032.131836 -19526.345703 +v -224000.000000 -24098.685547 -30795.177734 +v -229728.515625 -25652.423828 -30912.843750 +v -235320.734375 -25928.253906 -30560.251953 +v -224000.000000 -27381.291016 -31821.037109 +v -229728.515625 -27848.373047 -31545.482422 +v -235320.734375 -28109.482422 -31185.673828 +v -229728.515625 -30082.183594 -32049.019531 +v -224000.000000 -30739.123047 -32553.001953 +v -235320.734375 -39399.472656 -32330.716797 +v -242294.093750 -45829.628906 10480.281250 +v -242294.093750 -45829.628906 -10480.281250 +v -243500.000000 -45330.128906 -10480.281250 +v -244538.921875 -44532.140625 -10480.281250 +v -245330.125000 -43500.000000 -10480.281250 +v -245829.625000 -42294.093750 -10480.281250 +v -245829.625000 -42294.093750 10480.281250 +v -245330.125000 -43500.000000 10480.281250 +v -244539.000000 -44532.070312 10480.281250 +v -243500.000000 -45330.128906 10480.281250 +v -224170.375000 -42294.093750 10967.938477 +v -224170.375000 -42294.093750 -10967.938477 +v -224669.875000 -43500.000000 -10967.938477 +v -225459.859375 -44530.917969 -10967.938477 +v -226500.000000 -45330.128906 -10967.938477 +v -227705.906250 -45829.628906 -10967.938477 +v -227705.906250 -45829.628906 10967.938477 +v -226500.000000 -45330.128906 10967.938477 +v -225460.000000 -44531.058594 10967.938477 +v -224669.875000 -43500.000000 10967.938477 +v -227705.906250 -10170.371094 0.000000 +v -226500.000000 -10669.873047 0.000000 +v -225464.468750 -11464.465820 0.000000 +v -224669.875000 -12500.000000 0.000000 +v -224170.375000 -13705.904297 0.000000 +v -245829.625000 -13705.904297 0.000000 +v -245330.125000 -12500.000000 0.000000 +v -244535.531250 -11464.465820 0.000000 +v -243500.000000 -10669.873047 0.000000 +v -242294.093750 -10170.371094 0.000000 +v 186083.109375 -14092.129883 29095.822266 +v 186000.000000 -15000.000000 29889.419922 +v 197047.234375 -15105.000000 30093.919922 +v 186000.000000 -16835.123047 31316.060547 +v 197047.234375 -17501.701172 31910.707031 +v 186000.000000 -18775.632812 32594.158203 +v 197047.234375 -20025.765625 33427.335938 +v 186000.000000 -20813.029297 33711.472656 +v 186000.000000 -22935.533203 34654.277344 +v 197047.234375 -22651.722656 34630.347656 +v 186000.000000 -25131.964844 35409.675781 +v 197047.234375 -25354.097656 35506.300781 +v 186000.000000 -27386.279297 35963.824219 +v 197047.234375 -28107.419922 36041.734375 +v 186000.000000 -29683.181641 36304.406250 +v 197047.234375 -30886.214844 36223.203125 +v 186000.000000 -32001.851562 36419.992188 +v 202537.718750 -27587.492188 35872.117188 +v 208000.000000 -29683.765625 35822.078125 +v 208000.000000 -27672.744141 35717.074219 +v 208000.000000 -25683.214844 35408.230469 +v 202537.718750 -24906.042969 35339.203125 +v 208000.000000 -23730.685547 34906.253906 +v 202537.718750 -22274.210938 34467.375000 +v 208000.000000 -21833.777344 34225.195312 +v 208000.000000 -20003.314453 33378.792969 +v 202537.718750 -19716.802734 33270.019531 +v 208000.000000 -18248.777344 32380.894531 +v 202537.718750 -17258.626953 31760.531250 +v 208000.000000 -16579.126953 31245.800781 +v 202537.718750 -14924.490234 29952.294922 +v 208000.000000 -15000.000000 29986.271484 +v 207916.875000 -14092.095703 29171.236328 +v 207677.515625 -13233.397461 28333.568359 +v 202537.718750 -12739.201172 27858.697266 +v 197047.234375 -12861.136719 27990.423828 +v 186323.687500 -13230.240234 28282.869141 +v 186712.750000 -12427.167969 27467.089844 +v 187248.203125 -11694.840820 26668.089844 +v 197047.234375 -10795.583984 25613.671875 +v 187936.171875 -11048.676758 25913.800781 +v 188791.781250 -10514.045898 25250.162109 +v 191000.000000 -10000.000000 24572.992188 +v 189286.968750 -10302.606445 24976.742188 +v 189825.828125 -10139.821289 24761.617188 +v 190401.390625 -10035.962891 24621.994141 +v 207291.906250 -12434.937500 27490.994141 +v 206761.765625 -11706.194336 26663.630859 +v 206079.078125 -11060.555664 25880.441406 +v 202537.718750 -10727.568359 25493.130859 +v 205226.156250 -10522.920898 25190.824219 +v 204730.015625 -10308.833008 24907.326172 +v 204187.781250 -10143.127930 24685.669922 +v 203605.812500 -10036.834961 24544.634766 +v 203000.000000 -10000.000000 24500.695312 +v 186000.000000 -34306.027344 36305.855469 +v 188768.671875 -33978.152344 36275.187500 +v 191533.140625 -33675.941406 36231.941406 +v 194292.859375 -33366.664062 36178.226562 +v 197043.078125 -33051.343750 36113.023438 +v 197038.906250 -35204.539062 35786.500000 +v 202537.718750 -32401.888672 35942.964844 +v 202537.718750 -34498.324219 35617.871094 +v 208000.000000 -32659.789062 35592.671875 +v 208000.000000 -35570.828125 34926.484375 +v 202537.718750 -36571.347656 35083.769531 +v 202537.718750 -38609.253906 34346.980469 +v 197030.578125 -39427.031250 34509.800781 +v 197026.421875 -41472.289062 33572.316406 +v 194292.859375 -39821.222656 34571.796875 +v 194292.859375 -41891.597656 33632.527344 +v 191533.140625 -42305.382812 33682.460938 +v 191533.140625 -44339.531250 32550.212891 +v 188768.671875 -44768.011719 32589.068359 +v 189006.031250 -45585.207031 32046.787109 +v 188148.234375 -45106.996094 32446.996094 +v 187414.109375 -44484.449219 32893.777344 +v 188768.671875 -42709.773438 33722.667969 +v 186817.968750 -43740.554688 33360.746094 +v 186373.578125 -42896.363281 33826.195312 +v 186095.781250 -41973.972656 34271.667969 +v 188768.671875 -40589.203125 34664.453125 +v 186000.000000 -41000.000000 34681.011719 +v 188768.671875 -38418.765625 35408.054688 +v 186000.000000 -38820.281250 35424.785156 +v 186000.000000 -36584.640625 35970.265625 +v 188768.671875 -36210.925781 35947.089844 +v 189967.875000 -45892.312500 31725.468750 +v 191000.000000 -46000.000000 31519.634766 +v 194292.859375 -45837.593750 31186.449219 +v 197016.687500 -46000.000000 30645.517578 +v 197018.093750 -45370.703125 31130.802734 +v 202537.718750 -44395.210938 30983.648438 +v 202537.718750 -42532.890625 32290.601562 +v 207671.406250 -42782.667969 31307.943359 +v 207917.046875 -41906.976562 31882.291016 +v 203000.000000 -46000.000000 29564.886719 +v 203529.437500 -45971.890625 29483.140625 +v 204058.406250 -45886.691406 29452.095703 +v 204575.468750 -45745.300781 29473.859375 +v 205069.796875 -45551.480469 29547.019531 +v 205960.734375 -45029.148438 29828.560547 +v 206695.296875 -44368.199219 30247.351562 +v 207264.890625 -43609.738281 30753.498047 +v 208000.000000 -41000.000000 32454.511719 +v 202537.718750 -40600.335938 33413.820312 +v 197022.250000 -43457.519531 32443.867188 +v 208000.000000 -38364.125000 33864.941406 +v 191533.140625 -40209.628906 34623.125000 +v 191533.140625 -38064.589844 35365.839844 +v 191533.140625 -35882.589844 35904.234375 +v 194292.859375 -37702.160156 35313.410156 +v 194292.859375 -35546.585938 35851.007812 +v 197034.750000 -37333.773438 35249.976562 +v 194292.859375 -43901.109375 32501.958984 +v 208000.000000 -37883.019531 -34078.382812 +v 208000.000000 -41000.000000 -32454.511719 +v 202537.718750 -40870.691406 -33270.019531 +v 207917.062500 -41906.906250 -31882.335938 +v 202537.718750 -43601.878906 -31569.095703 +v 207671.468750 -42782.519531 -31308.037109 +v 207264.937500 -43609.648438 -30753.560547 +v 206695.625000 -44367.832031 -30247.591797 +v 205961.125000 -45028.867188 -29828.726562 +v 205069.640625 -45551.550781 -29546.986328 +v 204575.312500 -45745.355469 -29473.843750 +v 204058.203125 -45886.738281 -29452.095703 +v 203529.296875 -45971.906250 -29483.154297 +v 203000.000000 -46000.000000 -29564.886719 +v 197016.687500 -46000.000000 -30645.517578 +v 197047.234375 -44551.054688 -31718.365234 +v 194292.859375 -45012.667969 -31775.730469 +v 194292.859375 -42172.718750 -33487.789062 +v 191533.140625 -42589.953125 -33537.507812 +v 191533.140625 -40504.800781 -34503.812500 +v 190151.468750 -40697.488281 -34525.585938 +v 190151.468750 -38548.753906 -35295.839844 +v 188773.156250 -38725.988281 -35315.628906 +v 188774.562500 -36525.507812 -35883.175781 +v 187384.828125 -36689.132812 -35901.117188 +v 187384.828125 -34449.343750 -36259.394531 +v 186000.000000 -34284.488281 -36307.960938 +v 187384.828125 -32195.253906 -36401.742188 +v 186000.000000 -32554.357422 -36413.394531 +v 186000.000000 -30816.375000 -36389.679688 +v 191000.000000 -46000.000000 -31519.634766 +v 191533.140625 -45464.714844 -31822.906250 +v 190151.468750 -42795.058594 -33558.667969 +v 188771.750000 -40887.449219 -34544.957031 +v 187384.828125 -38902.136719 -35333.265625 +v 186000.000000 -37698.425781 -35725.539062 +v 190151.468750 -45686.941406 -31842.986328 +v 189967.593750 -45892.257812 -31725.544922 +v 189007.250000 -45585.730469 -32046.302734 +v 188149.046875 -45107.562500 -32446.562500 +v 188770.359375 -42997.468750 -33577.515625 +v 187414.546875 -44484.906250 -32893.480469 +v 187384.828125 -43197.835938 -33594.250000 +v 186818.187500 -43740.882812 -33360.558594 +v 186373.640625 -42896.523438 -33826.109375 +v 186095.796875 -41974.046875 -34271.632812 +v 187384.828125 -41075.867188 -34562.191406 +v 186000.000000 -41000.000000 -34681.011719 +v 187384.828125 -29939.357422 -36323.132812 +v 186000.000000 -27370.513672 -35960.707031 +v 187384.828125 -27694.140625 -36026.761719 +v 187384.828125 -25472.089844 -35518.972656 +v 188780.171875 -27581.685547 -36008.679688 +v 188781.578125 -25372.339844 -35501.128906 +v 190151.468750 -27469.636719 -35988.601562 +v 190151.468750 -25273.138672 -35481.351562 +v 191533.140625 -27355.253906 -35965.906250 +v 191533.140625 -25171.757812 -35458.976562 +v 194292.859375 -27122.521484 -35912.589844 +v 194292.859375 -24965.468750 -35406.410156 +v 197047.234375 -26884.896484 -35847.757812 +v 197047.234375 -24754.851562 -35342.492188 +v 202537.718750 -26396.882812 -35679.054688 +v 202537.718750 -24322.439453 -35176.164062 +v 208000.000000 -24157.404297 -35032.964844 +v 208000.000000 -22490.888672 -34483.167969 +v 202537.718750 -22281.285156 -34470.195312 +v 208000.000000 -20872.572266 -33804.628906 +v 202537.718750 -20285.074219 -33567.433594 +v 208000.000000 -17805.894531 -32098.203125 +v 202537.718750 -18345.470703 -32474.171875 +v 202537.718750 -16474.128906 -31196.703125 +v 197047.234375 -16696.175781 -31344.212891 +v 197047.234375 -14856.740234 -29881.947266 +v 194292.859375 -14941.858398 -29935.990234 +v 194292.859375 -13174.328125 -28298.333984 +v 191533.140625 -13236.069336 -28340.347656 +v 191533.140625 -11555.538086 -26533.599609 +v 190151.468750 -11575.834961 -26550.341797 +v 191000.000000 -10000.000000 -24572.992188 +v 190401.375000 -10035.964844 -24621.998047 +v 189825.968750 -10139.788086 -24761.572266 +v 189287.171875 -10302.531250 -24976.648438 +v 188792.328125 -10513.775391 -25249.820312 +v 188791.390625 -11595.493164 -26565.041016 +v 187936.906250 -11048.116211 -25913.113281 +v 187384.828125 -11615.451172 -26578.494141 +v 187248.390625 -11694.635742 -26667.853516 +v 188789.984375 -13295.791992 -28373.945312 +v 190151.468750 -13266.374023 -28358.230469 +v 190151.468750 -15066.226562 -29999.351562 +v 191533.140625 -15025.267578 -29980.435547 +v 191533.140625 -16910.861328 -31447.519531 +v 194292.859375 -16804.617188 -31400.900391 +v 194292.859375 -18750.478516 -32686.730469 +v 197047.234375 -18617.675781 -32627.722656 +v 197047.234375 -20609.269531 -33726.152344 +v 186000.000000 -24014.357422 -35052.464844 +v 187384.828125 -23285.697266 -34806.121094 +v 188782.968750 -23198.470703 -34788.617188 +v 190151.468750 -23111.884766 -34769.253906 +v 191533.140625 -23023.298828 -34747.328125 +v 194292.859375 -22843.027344 -34695.816406 +v 197047.234375 -22658.984375 -34633.183594 +v 186000.000000 -20806.875000 -33708.417969 +v 187384.828125 -21147.447266 -33894.562500 +v 188784.375000 -21072.492188 -33877.496094 +v 190151.468750 -20998.222656 -33858.660156 +v 191533.140625 -20922.148438 -33837.308594 +v 194292.859375 -20767.324219 -33787.148438 +v 187384.828125 -19069.830078 -32790.644531 +v 186000.000000 -17790.076172 -31972.685547 +v 187384.828125 -17065.332031 -31500.726562 +v 186000.000000 -15000.000000 -29889.419922 +v 187384.828125 -15146.445312 -30031.160156 +v 186083.140625 -14091.964844 -29095.671875 +v 187384.828125 -13325.655273 -28388.298828 +v 186323.796875 -13229.945312 -28282.580078 +v 186712.906250 -12426.916016 -27466.828125 +v 203000.000000 -10000.000000 -24500.695312 +v 197047.234375 -11471.946289 -26446.435547 +v 194292.859375 -11514.149414 -26494.265625 +v 202537.718750 -11386.275391 -26321.974609 +v 203605.890625 -10036.843750 -24544.646484 +v 204188.046875 -10143.194336 -24685.759766 +v 204730.171875 -10308.887695 -24907.400391 +v 205226.375000 -10523.031250 -25190.968750 +v 206079.437500 -11060.833984 -25880.794922 +v 206761.671875 -11706.095703 -26663.511719 +v 202537.718750 -12982.873047 -28114.312500 +v 197047.234375 -13111.339844 -28247.248047 +v 207291.765625 -12434.695312 -27490.728516 +v 207677.484375 -13233.317383 -28333.482422 +v 202537.718750 -14682.710938 -29741.318359 +v 207916.875000 -14092.081055 -29171.226562 +v 208000.000000 -15000.000000 -29986.271484 +v 208000.000000 -25861.609375 -35444.234375 +v 208000.000000 -27595.968750 -35708.929688 +v 202537.718750 -28492.953125 -35972.566406 +v 208000.000000 -29346.583984 -35819.113281 +v 202537.718750 -30598.994141 -36050.414062 +v 208000.000000 -31100.599609 -35769.859375 +v 202537.718750 -32703.347656 -35909.441406 +v 208000.000000 -32841.472656 -35563.902344 +v 202537.718750 -34794.351562 -35554.625000 +v 208000.000000 -34558.035156 -35208.148438 +v 202537.718750 -36860.351562 -34992.253906 +v 208000.000000 -36242.910156 -34709.714844 +v 202537.718750 -38889.683594 -34228.621094 +v 197047.234375 -41746.664062 -33427.335938 +v 197047.234375 -39712.554688 -34390.468750 +v 194292.859375 -40112.820312 -34452.664062 +v 197047.234375 -37628.828125 -35157.710938 +v 194292.859375 -38002.671875 -35221.292969 +v 191533.140625 -38368.785156 -35273.585938 +v 197047.234375 -35507.453125 -35722.738281 +v 194292.859375 -35854.402344 -35787.343750 +v 191533.140625 -36194.179688 -35840.476562 +v 190151.468750 -36361.195312 -35863.089844 +v 197047.234375 -33360.398438 -36079.234375 +v 194292.859375 -33680.125000 -36144.484375 +v 191533.140625 -33993.250000 -36198.148438 +v 190151.468750 -34147.160156 -36220.988281 +v 188775.968750 -34298.417969 -36241.253906 +v 197047.234375 -31199.642578 -36220.875000 +v 194292.859375 -31491.972656 -36286.382812 +v 191533.140625 -31778.271484 -36340.257812 +v 190151.468750 -31918.992188 -36363.187500 +v 188777.359375 -32057.140625 -36383.511719 +v 197047.234375 -29037.152344 -36142.656250 +v 194292.859375 -29302.062500 -36208.023438 +v 191533.140625 -29561.515625 -36261.777344 +v 190151.468750 -29689.037109 -36284.660156 +v 188778.765625 -29814.091797 -36304.921875 +v 191533.140625 -18880.578125 -32735.259766 +v 190151.468750 -18944.496094 -32755.914062 +v 188785.781250 -19006.820312 -32774.117188 +v 190151.468750 -16963.048828 -31467.363281 +v 188787.171875 -17013.869141 -31484.833984 +v 188788.578125 -15106.055664 -30015.992188 +v 207829.625000 -13705.904297 -9995.423828 +v 207829.625000 -13705.904297 9995.423828 +v 207330.125000 -12500.000000 9995.423828 +v 206535.531250 -11464.465820 9995.423828 +v 205500.000000 -10669.873047 9995.423828 +v 204294.093750 -10170.371094 9995.423828 +v 204294.093750 -10170.371094 -9995.423828 +v 205500.000000 -10669.873047 -9995.423828 +v 206535.531250 -11464.465820 -9995.423828 +v 207330.125000 -12500.000000 -9995.423828 +v 204294.093750 -45829.628906 10818.170898 +v 205500.000000 -45330.128906 10818.170898 +v 206535.531250 -44535.535156 10818.170898 +v 207330.125000 -43500.000000 10818.170898 +v 207829.625000 -42294.093750 10818.170898 +v 207829.625000 -42294.093750 -10818.170898 +v 207330.125000 -43500.000000 -10818.170898 +v 206535.531250 -44535.535156 -10818.170898 +v 205500.000000 -45330.128906 -10818.170898 +v 204294.093750 -45829.628906 -10818.170898 +v 186170.375000 -42294.093750 -11560.336914 +v 186170.375000 -42294.093750 11560.336914 +v 186669.875000 -43500.000000 11560.336914 +v 187464.468750 -44535.535156 11560.336914 +v 188500.000000 -45330.128906 11560.336914 +v 189705.906250 -45829.628906 11560.336914 +v 189705.906250 -45829.628906 -11560.336914 +v 188500.000000 -45330.128906 -11560.336914 +v 187464.468750 -44535.535156 -11560.336914 +v 186669.875000 -43500.000000 -11560.336914 +v 189705.906250 -10170.371094 9963.139648 +v 188500.000000 -10669.873047 9963.139648 +v 187464.468750 -11464.465820 9963.139648 +v 186669.875000 -12500.000000 9963.139648 +v 186170.375000 -13705.904297 9963.139648 +v 186170.375000 -13705.904297 -9963.139648 +v 186669.875000 -12500.000000 -9963.139648 +v 187464.468750 -11464.465820 -9963.139648 +v 188500.000000 -10669.873047 -9963.139648 +v 189705.906250 -10170.371094 -9963.139648 +v -66112.851562 -24673.078125 34566.730469 +v -66112.851562 -24673.076172 33419.773438 +v -66100.414062 -24945.951172 34657.542969 +v -66112.851562 -24673.076172 32182.003906 +v -66112.851562 -24673.076172 30944.234375 +v -66225.578125 -24088.457031 32182.003906 +v -66225.578125 -24088.457031 30944.234375 +v -66451.750000 -23537.199219 32182.003906 +v -66451.750000 -23537.199219 30944.234375 +v -66754.117188 -23076.488281 32182.003906 +v -66754.117188 -23076.488281 30944.234375 +v -67140.585938 -22674.582031 32182.003906 +v -67140.585938 -22674.582031 30944.234375 +v -67599.898438 -22348.171875 32182.003906 +v -67599.898438 -22348.171875 30944.234375 +v -67964.429688 -22169.341797 32182.003906 +v -67964.429688 -22169.341797 30944.234375 +v -68352.609375 -22040.648438 32182.003906 +v -68352.609375 -22040.648438 30944.234375 +v -68836.187500 -21957.609375 32182.003906 +v -68836.187500 -21957.609375 30944.234375 +v -68881.906250 -21953.917969 32182.003906 +v -68881.906250 -21953.917969 30944.234375 +v -69100.414062 -21945.951172 33527.859375 +v -68881.906250 -21953.917969 29706.466797 +v -68881.906250 -21953.917969 28468.697266 +v -68836.187500 -21957.609375 28468.697266 +v -68836.187500 -21957.609375 27230.927734 +v -68352.609375 -22040.648438 27230.927734 +v -68352.609375 -22040.648438 25993.158203 +v -67964.429688 -22169.341797 25993.158203 +v -67964.429688 -22169.341797 24755.388672 +v -67599.898438 -22348.171875 24755.388672 +v -67599.898438 -22348.171875 23517.619141 +v -67140.585938 -22674.582031 23517.619141 +v -67140.585938 -22674.582031 22279.849609 +v -66754.117188 -23076.488281 22279.849609 +v -66754.117188 -23076.488281 21042.080078 +v -66451.750000 -23537.199219 21042.080078 +v -66451.750000 -23537.199219 19804.310547 +v -66225.578125 -24088.457031 19804.310547 +v -66225.578125 -24088.457031 18566.541016 +v -66112.851562 -24673.076172 18566.541016 +v -66112.851562 -24673.076172 17328.771484 +v -66112.851562 -24673.076172 16091.001953 +v -66112.851562 -24673.076172 14853.233398 +v -66225.578125 -24088.457031 16091.001953 +v -66225.578125 -24088.457031 14853.233398 +v -66451.750000 -23537.199219 16091.001953 +v -66451.750000 -23537.199219 14853.233398 +v -66754.117188 -23076.488281 16091.001953 +v -66754.117188 -23076.488281 14853.233398 +v -67140.585938 -22674.582031 16091.001953 +v -67140.585938 -22674.582031 14853.233398 +v -67599.898438 -22348.171875 16091.001953 +v -67599.898438 -22348.171875 14853.233398 +v -67964.429688 -22169.341797 16091.001953 +v -67964.429688 -22169.341797 14853.233398 +v -68352.609375 -22040.648438 16091.001953 +v -68352.609375 -22040.648438 14853.233398 +v -68836.187500 -21957.609375 16091.001953 +v -68836.187500 -21957.609375 14853.233398 +v -68881.906250 -21953.917969 16091.001953 +v -68881.906250 -21953.917969 14853.233398 +v -68881.906250 -21953.917969 13615.463867 +v -68881.906250 -21953.917969 12377.694336 +v -68836.187500 -21957.609375 12377.694336 +v -68836.187500 -21957.609375 11139.924805 +v -68352.609375 -22040.648438 11139.924805 +v -68352.609375 -22040.648438 9902.155273 +v -67964.429688 -22169.341797 9902.155273 +v -67964.429688 -22169.341797 8664.385742 +v -67599.898438 -22348.171875 8664.385742 +v -67599.898438 -22348.171875 7426.616699 +v -67140.585938 -22674.582031 7426.616699 +v -67140.585938 -22674.582031 6188.847168 +v -66754.117188 -23076.488281 6188.847168 +v -66754.117188 -23076.488281 4951.077637 +v -66451.750000 -23537.199219 4951.077637 +v -66451.750000 -23537.199219 3713.308350 +v -66225.578125 -24088.457031 3713.308350 +v -66225.578125 -24088.457031 2475.538818 +v -66112.851562 -24673.076172 2475.538818 +v -66112.851562 -24673.076172 1237.769409 +v -66112.851562 -24673.076172 0.000000 +v -66100.414062 -24945.951172 -34657.542969 +v -66112.851562 -24673.076172 -1237.769409 +v -66112.851562 -24673.076172 -2475.538818 +v -66225.578125 -24088.457031 -1237.769409 +v -66225.578125 -24088.457031 -2475.538818 +v -66451.750000 -23537.199219 -1237.769409 +v -66451.750000 -23537.199219 -2475.538818 +v -66754.117188 -23076.488281 -1237.769409 +v -66754.117188 -23076.488281 -2475.538818 +v -67140.585938 -22674.582031 -1237.769409 +v -67140.585938 -22674.582031 -2475.538818 +v -67599.898438 -22348.171875 -1237.769409 +v -67599.898438 -22348.171875 -2475.538818 +v -67964.429688 -22169.341797 -1237.769409 +v -67964.429688 -22169.341797 -2475.538818 +v -68352.609375 -22040.648438 -1237.769409 +v -68352.609375 -22040.648438 -2475.538818 +v -68836.187500 -21957.609375 -1237.769409 +v -68836.187500 -21957.609375 -2475.538818 +v -68881.906250 -21953.917969 -1237.769409 +v -68881.906250 -21953.917969 -2475.538818 +v -69100.414062 -21945.951172 -33527.859375 +v -68881.906250 -21953.917969 -3713.308350 +v -68881.906250 -21953.917969 -4951.077637 +v -68836.187500 -21957.609375 -4951.077637 +v -68836.187500 -21957.609375 -6188.847168 +v -68352.609375 -22040.648438 -6188.847168 +v -68352.609375 -22040.648438 -7426.616699 +v -67964.429688 -22169.341797 -7426.616699 +v -67964.429688 -22169.341797 -8664.385742 +v -67599.898438 -22348.171875 -8664.385742 +v -67599.898438 -22348.171875 -9902.155273 +v -67140.585938 -22674.582031 -9902.155273 +v -67140.585938 -22674.582031 -11139.924805 +v -66754.117188 -23076.488281 -11139.924805 +v -66754.117188 -23076.488281 -12377.694336 +v -66451.750000 -23537.199219 -12377.694336 +v -66451.750000 -23537.199219 -13615.463867 +v -66225.578125 -24088.457031 -13615.463867 +v -66225.578125 -24088.457031 -14853.233398 +v -66112.851562 -24673.076172 -14853.233398 +v -66112.851562 -24673.076172 -16091.001953 +v -66112.851562 -24673.076172 -17328.771484 +v -66112.851562 -24673.076172 -18566.541016 +v -66225.578125 -24088.457031 -17328.771484 +v -66225.578125 -24088.457031 -18566.541016 +v -66451.750000 -23537.199219 -17328.771484 +v -66451.750000 -23537.199219 -18566.541016 +v -66754.117188 -23076.488281 -17328.771484 +v -66754.117188 -23076.488281 -18566.541016 +v -67140.585938 -22674.582031 -17328.771484 +v -67140.585938 -22674.582031 -18566.541016 +v -67599.898438 -22348.171875 -17328.771484 +v -67599.898438 -22348.171875 -18566.541016 +v -67964.429688 -22169.341797 -17328.771484 +v -67964.429688 -22169.341797 -18566.541016 +v -68352.609375 -22040.648438 -17328.771484 +v -68352.609375 -22040.648438 -18566.541016 +v -68836.187500 -21957.609375 -17328.771484 +v -68836.187500 -21957.609375 -18566.541016 +v -68881.906250 -21953.917969 -17328.771484 +v -68881.906250 -21953.917969 -18566.541016 +v -68881.906250 -21953.917969 -19804.310547 +v -68881.906250 -21953.917969 -21042.080078 +v -68836.187500 -21957.609375 -21042.080078 +v -68836.187500 -21957.609375 -22279.849609 +v -68352.609375 -22040.648438 -22279.849609 +v -68352.609375 -22040.648438 -23517.619141 +v -67964.429688 -22169.341797 -23517.619141 +v -67964.429688 -22169.341797 -24755.388672 +v -67599.898438 -22348.171875 -24755.388672 +v -67599.898438 -22348.171875 -25993.158203 +v -67140.585938 -22674.582031 -25993.158203 +v -67140.585938 -22674.582031 -27230.927734 +v -66754.117188 -23076.488281 -27230.927734 +v -66754.117188 -23076.488281 -28468.697266 +v -66451.750000 -23537.199219 -28468.697266 +v -66451.750000 -23537.199219 -29706.466797 +v -66225.578125 -24088.457031 -29706.466797 +v -66225.578125 -24088.457031 -30944.234375 +v -66112.851562 -24673.076172 -30944.234375 +v -66112.851562 -24673.076172 -32182.003906 +v -66112.851562 -24673.076172 -33419.773438 +v -66112.851562 -24673.078125 -34566.730469 +v -66225.570312 -24088.474609 -34364.304688 +v -66225.578125 -24088.457031 -33419.773438 +v -66451.750000 -23537.199219 -34163.449219 +v -66451.750000 -23537.199219 -33419.773438 +v -66754.117188 -23076.488281 -33988.046875 +v -66754.117188 -23076.488281 -33419.773438 +v -67140.203125 -22674.910156 -33829.472656 +v -67140.585938 -22674.582031 -33419.773438 +v -67599.898438 -22348.169922 -33696.503906 +v -67599.898438 -22348.171875 -33419.773438 +v -67964.007812 -22169.515625 -33622.273438 +v -67964.429688 -22169.341797 -33419.773438 +v -68352.609375 -22040.646484 -33568.062500 +v -68352.609375 -22040.648438 -33419.773438 +v -68836.187500 -21957.609375 -33532.828125 +v -68836.187500 -21957.609375 -33419.773438 +v -68881.906250 -21953.917969 -33419.773438 +v -68881.906250 -21953.917969 -32182.003906 +v -68881.906250 -21953.917969 -30944.234375 +v -68881.906250 -21953.917969 -29706.466797 +v -68836.187500 -21957.609375 -30944.234375 +v -68836.187500 -21957.609375 -29706.466797 +v -68352.609375 -22040.648438 -30944.234375 +v -68352.609375 -22040.648438 -29706.466797 +v -67964.429688 -22169.341797 -30944.234375 +v -67964.429688 -22169.341797 -29706.466797 +v -67599.898438 -22348.171875 -30944.234375 +v -67599.898438 -22348.171875 -29706.466797 +v -67140.585938 -22674.582031 -30944.234375 +v -67140.585938 -22674.582031 -29706.466797 +v -66754.117188 -23076.488281 -30944.234375 +v -66754.117188 -23076.488281 -29706.466797 +v -66451.750000 -23537.199219 -30944.234375 +v -66225.562500 -24088.492188 34364.312500 +v -66225.578125 -24088.457031 33419.773438 +v -66451.750000 -23537.199219 34163.449219 +v -66451.750000 -23537.199219 33419.773438 +v -66754.117188 -23076.488281 33988.046875 +v -66754.117188 -23076.488281 33419.773438 +v -67140.843750 -22674.361328 33829.257812 +v -67140.585938 -22674.582031 33419.773438 +v -67599.890625 -22348.166016 33696.500000 +v -67599.898438 -22348.171875 33419.773438 +v -67964.500000 -22169.312500 33622.187500 +v -67964.429688 -22169.341797 33419.773438 +v -68352.609375 -22040.646484 33568.058594 +v -68352.609375 -22040.648438 33419.773438 +v -68836.187500 -21957.609375 33532.828125 +v -68836.187500 -21957.609375 33419.773438 +v -68881.906250 -21953.917969 33419.773438 +v -68881.906250 -21953.917969 0.000000 +v -68881.906250 -21953.917969 1237.769409 +v -68881.906250 -21953.917969 2475.538818 +v -68836.187500 -21957.609375 1237.769409 +v -68836.187500 -21957.609375 2475.538818 +v -68352.609375 -22040.648438 1237.769409 +v -68352.609375 -22040.648438 2475.538818 +v -67964.429688 -22169.341797 1237.769409 +v -67964.429688 -22169.341797 2475.538818 +v -67599.898438 -22348.171875 1237.769409 +v -67599.898438 -22348.171875 2475.538818 +v -67140.585938 -22674.582031 1237.769409 +v -67140.585938 -22674.582031 2475.538818 +v -66754.117188 -23076.488281 1237.769409 +v -66754.117188 -23076.488281 2475.538818 +v -66451.750000 -23537.199219 1237.769409 +v -66451.750000 -23537.199219 2475.538818 +v -66225.578125 -24088.457031 1237.769409 +v -68881.906250 -21953.917969 -28468.697266 +v -68836.187500 -21957.609375 -28468.697266 +v -68352.609375 -22040.648438 -28468.697266 +v -67964.429688 -22169.341797 -28468.697266 +v -67599.898438 -22348.171875 -28468.697266 +v -67140.585938 -22674.582031 -28468.697266 +v -68881.906250 -21953.917969 -27230.927734 +v -68836.187500 -21957.609375 -27230.927734 +v -68352.609375 -22040.648438 -27230.927734 +v -67964.429688 -22169.341797 -27230.927734 +v -67599.898438 -22348.171875 -27230.927734 +v -68881.906250 -21953.917969 -24755.388672 +v -68881.906250 -21953.917969 -23517.619141 +v -68836.187500 -21957.609375 -24755.388672 +v -68836.187500 -21957.609375 -23517.619141 +v -68352.609375 -22040.648438 -24755.388672 +v -68881.906250 -21953.917969 -22279.849609 +v -68881.906250 -21953.917969 -14853.233398 +v -68881.906250 -21953.917969 -13615.463867 +v -68836.187500 -21957.609375 -14853.233398 +v -68836.187500 -21957.609375 -13615.463867 +v -68352.609375 -22040.648438 -14853.233398 +v -68352.609375 -22040.648438 -13615.463867 +v -67964.429688 -22169.341797 -14853.233398 +v -67964.429688 -22169.341797 -13615.463867 +v -67599.898438 -22348.171875 -14853.233398 +v -67599.898438 -22348.171875 -13615.463867 +v -67140.585938 -22674.582031 -14853.233398 +v -67140.585938 -22674.582031 -13615.463867 +v -66754.117188 -23076.488281 -14853.233398 +v -66754.117188 -23076.488281 -13615.463867 +v -66451.750000 -23537.199219 -14853.233398 +v -68881.906250 -21953.917969 -12377.694336 +v -68836.187500 -21957.609375 -12377.694336 +v -68352.609375 -22040.648438 -12377.694336 +v -67964.429688 -22169.341797 -12377.694336 +v -67599.898438 -22348.171875 -12377.694336 +v -67140.585938 -22674.582031 -12377.694336 +v -68881.906250 -21953.917969 -9902.155273 +v -68881.906250 -21953.917969 -8664.385742 +v -68836.187500 -21957.609375 -9902.155273 +v -68836.187500 -21957.609375 -8664.385742 +v -68352.609375 -22040.648438 -9902.155273 +v -68352.609375 -22040.648438 -8664.385742 +v -67964.429688 -22169.341797 -9902.155273 +v -68881.906250 -21953.917969 -7426.616699 +v -68836.187500 -21957.609375 -7426.616699 +v -68881.906250 -21953.917969 3713.308350 +v -68881.906250 -21953.917969 4951.077637 +v -68836.187500 -21957.609375 3713.308350 +v -68836.187500 -21957.609375 4951.077637 +v -68352.609375 -22040.648438 3713.308350 +v -68352.609375 -22040.648438 4951.077637 +v -67964.429688 -22169.341797 3713.308350 +v -67964.429688 -22169.341797 4951.077637 +v -67599.898438 -22348.171875 3713.308350 +v -67599.898438 -22348.171875 4951.077637 +v -67140.585938 -22674.582031 3713.308350 +v -67140.585938 -22674.582031 4951.077637 +v -66754.117188 -23076.488281 3713.308350 +v -68881.906250 -21953.917969 6188.847168 +v -68836.187500 -21957.609375 6188.847168 +v -68352.609375 -22040.648438 6188.847168 +v -67964.429688 -22169.341797 6188.847168 +v -67599.898438 -22348.171875 6188.847168 +v -68881.906250 -21953.917969 8664.385742 +v -68881.906250 -21953.917969 9902.155273 +v -68836.187500 -21957.609375 8664.385742 +v -68836.187500 -21957.609375 9902.155273 +v -68352.609375 -22040.648438 8664.385742 +v -68881.906250 -21953.917969 11139.924805 +v -68881.906250 -21953.917969 18566.541016 +v -68881.906250 -21953.917969 19804.310547 +v -68836.187500 -21957.609375 18566.541016 +v -68836.187500 -21957.609375 19804.310547 +v -68352.609375 -22040.648438 18566.541016 +v -68352.609375 -22040.648438 19804.310547 +v -67964.429688 -22169.341797 18566.541016 +v -67964.429688 -22169.341797 19804.310547 +v -67599.898438 -22348.171875 18566.541016 +v -67599.898438 -22348.171875 19804.310547 +v -67140.585938 -22674.582031 18566.541016 +v -67140.585938 -22674.582031 19804.310547 +v -66754.117188 -23076.488281 18566.541016 +v -66754.117188 -23076.488281 19804.310547 +v -66451.750000 -23537.199219 18566.541016 +v -68881.906250 -21953.917969 21042.080078 +v -68836.187500 -21957.609375 21042.080078 +v -68352.609375 -22040.648438 21042.080078 +v -67964.429688 -22169.341797 21042.080078 +v -67599.898438 -22348.171875 21042.080078 +v -67140.585938 -22674.582031 21042.080078 +v -68881.906250 -21953.917969 23517.619141 +v -68881.906250 -21953.917969 24755.388672 +v -68836.187500 -21957.609375 23517.619141 +v -68836.187500 -21957.609375 24755.388672 +v -68352.609375 -22040.648438 23517.619141 +v -68352.609375 -22040.648438 24755.388672 +v -67964.429688 -22169.341797 23517.619141 +v -68881.906250 -21953.917969 25993.158203 +v -68836.187500 -21957.609375 25993.158203 +v -66112.851562 -24673.076172 -29706.466797 +v -66112.851562 -24673.076172 -28468.697266 +v -66225.578125 -24088.457031 -28468.697266 +v -66225.578125 -24088.457031 -27230.927734 +v -66451.750000 -23537.199219 -27230.927734 +v -66451.750000 -23537.199219 -25993.158203 +v -66754.117188 -23076.488281 -25993.158203 +v -66754.117188 -23076.488281 -24755.388672 +v -67140.585938 -22674.582031 -24755.388672 +v -67140.585938 -22674.582031 -23517.619141 +v -67599.898438 -22348.171875 -23517.619141 +v -67599.898438 -22348.171875 -22279.849609 +v -67964.429688 -22169.341797 -22279.849609 +v -67964.429688 -22169.341797 -21042.080078 +v -68352.609375 -22040.648438 -21042.080078 +v -68352.609375 -22040.648438 -19804.310547 +v -68836.187500 -21957.609375 -19804.310547 +v -66112.851562 -24673.076172 -25993.158203 +v -66112.851562 -24673.076172 -24755.388672 +v -66112.851562 -24673.076172 -23517.619141 +v -66225.578125 -24088.457031 -23517.619141 +v -66225.578125 -24088.457031 -22279.849609 +v -66451.750000 -23537.199219 -22279.849609 +v -66451.750000 -23537.199219 -21042.080078 +v -66754.117188 -23076.488281 -21042.080078 +v -66754.117188 -23076.488281 -19804.310547 +v -67140.585938 -22674.582031 -19804.310547 +v -66112.851562 -24673.076172 -21042.080078 +v -66112.851562 -24673.076172 -19804.310547 +v -66112.851562 -24673.076172 -13615.463867 +v -66112.851562 -24673.076172 -12377.694336 +v -66112.851562 -24673.076172 -11139.924805 +v -66225.578125 -24088.457031 -11139.924805 +v -66225.578125 -24088.457031 -9902.155273 +v -66451.750000 -23537.199219 -9902.155273 +v -66451.750000 -23537.199219 -8664.385742 +v -66754.117188 -23076.488281 -8664.385742 +v -66754.117188 -23076.488281 -7426.616699 +v -67140.585938 -22674.582031 -7426.616699 +v -67140.585938 -22674.582031 -6188.847168 +v -67599.898438 -22348.171875 -6188.847168 +v -67599.898438 -22348.171875 -4951.077637 +v -67964.429688 -22169.341797 -4951.077637 +v -67964.429688 -22169.341797 -3713.308350 +v -68352.609375 -22040.648438 -3713.308350 +v -66112.851562 -24673.076172 -9902.155273 +v -66112.851562 -24673.076172 -8664.385742 +v -66225.578125 -24088.457031 -8664.385742 +v -66225.578125 -24088.457031 -7426.616699 +v -66451.750000 -23537.199219 -7426.616699 +v -66451.750000 -23537.199219 -6188.847168 +v -66754.117188 -23076.488281 -6188.847168 +v -66754.117188 -23076.488281 -4951.077637 +v -67140.585938 -22674.582031 -4951.077637 +v -67140.585938 -22674.582031 -3713.308350 +v -67599.898438 -22348.171875 -3713.308350 +v -66112.851562 -24673.076172 -6188.847168 +v -66112.851562 -24673.076172 -4951.077637 +v -66112.851562 -24673.076172 -3713.308350 +v -66225.578125 -24088.457031 -3713.308350 +v -66112.851562 -24673.076172 3713.308350 +v -66112.851562 -24673.076172 4951.077637 +v -66225.578125 -24088.457031 4951.077637 +v -66225.578125 -24088.457031 6188.847168 +v -66451.750000 -23537.199219 6188.847168 +v -66451.750000 -23537.199219 7426.616699 +v -66754.117188 -23076.488281 7426.616699 +v -66754.117188 -23076.488281 8664.385742 +v -67140.585938 -22674.582031 8664.385742 +v -67140.585938 -22674.582031 9902.155273 +v -67599.898438 -22348.171875 9902.155273 +v -67599.898438 -22348.171875 11139.924805 +v -67964.429688 -22169.341797 11139.924805 +v -67964.429688 -22169.341797 12377.694336 +v -68352.609375 -22040.648438 12377.694336 +v -68352.609375 -22040.648438 13615.463867 +v -68836.187500 -21957.609375 13615.463867 +v -66112.851562 -24673.076172 7426.616699 +v -66112.851562 -24673.076172 8664.385742 +v -66112.851562 -24673.076172 9902.155273 +v -66225.578125 -24088.457031 9902.155273 +v -66225.578125 -24088.457031 11139.924805 +v -66451.750000 -23537.199219 11139.924805 +v -66451.750000 -23537.199219 12377.694336 +v -66754.117188 -23076.488281 12377.694336 +v -66754.117188 -23076.488281 13615.463867 +v -67140.585938 -22674.582031 13615.463867 +v -66112.851562 -24673.076172 12377.694336 +v -66112.851562 -24673.076172 13615.463867 +v -66112.851562 -24673.076172 19804.310547 +v -66112.851562 -24673.076172 21042.080078 +v -66112.851562 -24673.076172 22279.849609 +v -66225.578125 -24088.457031 22279.849609 +v -66225.578125 -24088.457031 23517.619141 +v -66451.750000 -23537.199219 23517.619141 +v -66451.750000 -23537.199219 24755.388672 +v -66754.117188 -23076.488281 24755.388672 +v -66754.117188 -23076.488281 25993.158203 +v -67140.585938 -22674.582031 25993.158203 +v -67140.585938 -22674.582031 27230.927734 +v -67599.898438 -22348.171875 27230.927734 +v -67599.898438 -22348.171875 28468.697266 +v -67964.429688 -22169.341797 28468.697266 +v -67964.429688 -22169.341797 29706.466797 +v -68352.609375 -22040.648438 29706.466797 +v -66112.851562 -24673.076172 23517.619141 +v -66112.851562 -24673.076172 24755.388672 +v -66225.578125 -24088.457031 24755.388672 +v -66225.578125 -24088.457031 25993.158203 +v -66451.750000 -23537.199219 25993.158203 +v -66451.750000 -23537.199219 27230.927734 +v -66754.117188 -23076.488281 27230.927734 +v -66754.117188 -23076.488281 28468.697266 +v -67140.585938 -22674.582031 28468.697266 +v -67140.585938 -22674.582031 29706.466797 +v -67599.898438 -22348.171875 29706.466797 +v -66112.851562 -24673.076172 27230.927734 +v -66112.851562 -24673.076172 28468.697266 +v -66112.851562 -24673.076172 29706.466797 +v -66225.578125 -24088.457031 29706.466797 +v -66225.578125 -24088.457031 -32182.003906 +v -66451.750000 -23537.199219 -32182.003906 +v -66754.117188 -23076.488281 -32182.003906 +v -67140.585938 -22674.582031 -32182.003906 +v -67599.898438 -22348.171875 -32182.003906 +v -67964.429688 -22169.341797 -32182.003906 +v -68352.609375 -22040.648438 -32182.003906 +v -68836.187500 -21957.609375 -32182.003906 +v -68881.906250 -21953.917969 -25993.158203 +v -68836.187500 -21957.609375 -25993.158203 +v -68352.609375 -22040.648438 -25993.158203 +v -67964.429688 -22169.341797 -25993.158203 +v -66112.851562 -24673.076172 -27230.927734 +v -66225.578125 -24088.457031 -25993.158203 +v -66225.578125 -24088.457031 -24755.388672 +v -66451.750000 -23537.199219 -24755.388672 +v -66754.117188 -23076.488281 -23517.619141 +v -67140.585938 -22674.582031 -22279.849609 +v -67599.898438 -22348.171875 -21042.080078 +v -67964.429688 -22169.341797 -19804.310547 +v -68881.906250 -21953.917969 -16091.001953 +v -68836.187500 -21957.609375 -16091.001953 +v -68352.609375 -22040.648438 -16091.001953 +v -67964.429688 -22169.341797 -16091.001953 +v -67599.898438 -22348.171875 -16091.001953 +v -67140.585938 -22674.582031 -16091.001953 +v -66754.117188 -23076.488281 -16091.001953 +v -66451.750000 -23537.199219 -16091.001953 +v -66225.578125 -24088.457031 -16091.001953 +v -66451.750000 -23537.199219 -23517.619141 +v -66754.117188 -23076.488281 -22279.849609 +v -67140.585938 -22674.582031 -21042.080078 +v -67599.898438 -22348.171875 -19804.310547 +v -68881.906250 -21953.917969 -11139.924805 +v -68836.187500 -21957.609375 -11139.924805 +v -68352.609375 -22040.648438 -11139.924805 +v -67964.429688 -22169.341797 -11139.924805 +v -67599.898438 -22348.171875 -11139.924805 +v -66112.851562 -24673.076172 -22279.849609 +v -66225.578125 -24088.457031 -21042.080078 +v -66225.578125 -24088.457031 -19804.310547 +v -66451.750000 -23537.199219 -19804.310547 +v -68881.906250 -21953.917969 -6188.847168 +v -66225.578125 -24088.457031 -12377.694336 +v -68881.906250 -21953.917969 7426.616699 +v -68836.187500 -21957.609375 7426.616699 +v -68352.609375 -22040.648438 7426.616699 +v -67964.429688 -22169.341797 7426.616699 +v -66451.750000 -23537.199219 -11139.924805 +v -66754.117188 -23076.488281 -9902.155273 +v -67140.585938 -22674.582031 -8664.385742 +v -67599.898438 -22348.171875 -7426.616699 +v -67964.429688 -22169.341797 -6188.847168 +v -68352.609375 -22040.648438 -4951.077637 +v -68836.187500 -21957.609375 -3713.308350 +v -68881.906250 -21953.917969 17328.771484 +v -68836.187500 -21957.609375 17328.771484 +v -68352.609375 -22040.648438 17328.771484 +v -67964.429688 -22169.341797 17328.771484 +v -67599.898438 -22348.171875 17328.771484 +v -67140.585938 -22674.582031 17328.771484 +v -66754.117188 -23076.488281 17328.771484 +v -66451.750000 -23537.199219 17328.771484 +v -66225.578125 -24088.457031 17328.771484 +v -66112.851562 -24673.076172 -7426.616699 +v -66225.578125 -24088.457031 -6188.847168 +v -66225.578125 -24088.457031 -4951.077637 +v -66451.750000 -23537.199219 -4951.077637 +v -66754.117188 -23076.488281 -3713.308350 +v -68881.906250 -21953.917969 22279.849609 +v -68836.187500 -21957.609375 22279.849609 +v -68352.609375 -22040.648438 22279.849609 +v -67964.429688 -22169.341797 22279.849609 +v -67599.898438 -22348.171875 22279.849609 +v -66451.750000 -23537.199219 -3713.308350 +v -68881.906250 -21953.917969 27230.927734 +v -66225.578125 -24088.457031 0.000000 +v -66451.750000 -23537.199219 0.000000 +v -66754.117188 -23076.488281 0.000000 +v -67140.585938 -22674.582031 0.000000 +v -67599.898438 -22348.171875 0.000000 +v -67964.429688 -22169.341797 0.000000 +v -68352.609375 -22040.648438 0.000000 +v -68836.187500 -21957.609375 0.000000 +v -66112.851562 -24673.076172 6188.847168 +v -66225.578125 -24088.457031 7426.616699 +v -66225.578125 -24088.457031 8664.385742 +v -66451.750000 -23537.199219 8664.385742 +v -66754.117188 -23076.488281 9902.155273 +v -67140.585938 -22674.582031 11139.924805 +v -67599.898438 -22348.171875 12377.694336 +v -67964.429688 -22169.341797 13615.463867 +v -66451.750000 -23537.199219 9902.155273 +v -66754.117188 -23076.488281 11139.924805 +v -67140.585938 -22674.582031 12377.694336 +v -67599.898438 -22348.171875 13615.463867 +v -66112.851562 -24673.076172 11139.924805 +v -66225.578125 -24088.457031 12377.694336 +v -66225.578125 -24088.457031 13615.463867 +v -66451.750000 -23537.199219 13615.463867 +v -66225.578125 -24088.457031 21042.080078 +v -66451.750000 -23537.199219 22279.849609 +v -66754.117188 -23076.488281 23517.619141 +v -67140.585938 -22674.582031 24755.388672 +v -67599.898438 -22348.171875 25993.158203 +v -67964.429688 -22169.341797 27230.927734 +v -68352.609375 -22040.648438 28468.697266 +v -68836.187500 -21957.609375 29706.466797 +v -66112.851562 -24673.076172 25993.158203 +v -66225.578125 -24088.457031 27230.927734 +v -66225.578125 -24088.457031 28468.697266 +v -66451.750000 -23537.199219 28468.697266 +v -66754.117188 -23076.488281 29706.466797 +v -66451.750000 -23537.199219 29706.466797 +v -66100.414062 -28737.449219 35685.300781 +v -66100.414062 -28737.449219 -35685.300781 +v -68391.000000 -31652.363281 36189.378906 +v -68883.117188 -31729.568359 30167.031250 +v -69100.414062 -31737.449219 36200.437500 +v -68883.117188 -31729.568359 24133.625000 +v -68883.117188 -31729.568359 18100.218750 +v -68391.000000 -31652.363281 24133.625000 +v -68391.000000 -31652.363281 18100.218750 +v -68009.156250 -31531.935547 24133.625000 +v -68009.156250 -31531.935547 18100.218750 +v -67647.031250 -31361.886719 24133.625000 +v -67647.031250 -31361.886719 18100.218750 +v -67160.375000 -31025.732422 24133.625000 +v -67160.375000 -31025.732422 18100.218750 +v -66750.015625 -30601.753906 24133.625000 +v -66750.015625 -30601.753906 18100.218750 +v -66421.968750 -30088.710938 24133.625000 +v -66421.968750 -30088.710938 18100.218750 +v -66216.460938 -29563.761719 24133.625000 +v -66216.460938 -29563.761719 18100.218750 +v -66111.664062 -28997.021484 24133.625000 +v -66111.664062 -28997.021484 18100.218750 +v -66111.664062 -28997.021484 12066.812500 +v -66111.664062 -28997.021484 6033.406250 +v -66216.460938 -29563.761719 6033.406250 +v -66216.460938 -29563.761719 0.000000 +v -66421.968750 -30088.710938 0.000000 +v -66421.968750 -30088.710938 -6033.406250 +v -66750.015625 -30601.753906 -6033.406250 +v -66750.015625 -30601.753906 -12066.812500 +v -67160.375000 -31025.732422 -12066.812500 +v -67160.375000 -31025.732422 -18100.218750 +v -67647.031250 -31361.886719 -18100.218750 +v -67647.031250 -31361.886719 -24133.625000 +v -68009.156250 -31531.935547 -24133.625000 +v -68009.156250 -31531.935547 -30167.031250 +v -68391.000000 -31652.363281 -30167.031250 +v -68391.000000 -31652.363281 -36189.375000 +v -68883.117188 -31729.568359 -30167.031250 +v -69100.414062 -31737.449219 -36200.437500 +v -68883.117188 -31729.568359 -24133.625000 +v -68883.117188 -31729.568359 -18100.218750 +v -68391.000000 -31652.363281 -18100.218750 +v -68391.000000 -31652.363281 -12066.812500 +v -68009.156250 -31531.935547 -12066.812500 +v -68009.156250 -31531.935547 -6033.406250 +v -67647.031250 -31361.886719 -6033.406250 +v -67647.031250 -31361.886719 0.000000 +v -67160.375000 -31025.732422 0.000000 +v -67160.375000 -31025.732422 6033.406250 +v -66750.015625 -30601.753906 6033.406250 +v -66750.015625 -30601.753906 12066.812500 +v -66421.968750 -30088.710938 12066.812500 +v -68391.000000 -31652.363281 30167.031250 +v -68009.054688 -31531.894531 36173.359375 +v -68009.156250 -31531.935547 30167.031250 +v -67647.031250 -31361.884766 36150.054688 +v -67647.031250 -31361.886719 30167.031250 +v -67160.117188 -31025.513672 36101.511719 +v -67160.375000 -31025.732422 30167.031250 +v -66750.015625 -30601.753906 36035.765625 +v -66750.015625 -30601.753906 30167.031250 +v -66421.968750 -30088.710938 35949.292969 +v -66421.968750 -30088.710938 30167.031250 +v -66216.460938 -29563.761719 35852.988281 +v -66216.460938 -29563.761719 30167.031250 +v -66111.664062 -28997.023438 35740.105469 +v -66111.664062 -28997.021484 30167.031250 +v -66111.664062 -28997.021484 0.000000 +v -66111.664062 -28997.021484 -6033.406250 +v -66111.664062 -28997.021484 -12066.812500 +v -66216.460938 -29563.761719 -12066.812500 +v -66216.460938 -29563.761719 -18100.218750 +v -66421.968750 -30088.710938 -18100.218750 +v -66421.968750 -30088.710938 -24133.625000 +v -66750.015625 -30601.753906 -24133.625000 +v -66750.015625 -30601.753906 -30167.031250 +v -67160.375000 -31025.732422 -30167.031250 +v -67159.796875 -31025.246094 -36101.472656 +v -67647.031250 -31361.884766 -36150.058594 +v -66111.664062 -28997.021484 -35740.105469 +v -66111.664062 -28997.021484 -30167.031250 +v -66111.664062 -28997.021484 -24133.625000 +v -66111.664062 -28997.021484 -18100.218750 +v -66216.460938 -29563.761719 -24133.625000 +v -66216.460938 -29563.761719 -30167.031250 +v -66216.453125 -29563.761719 -35852.988281 +v -66421.968750 -30088.710938 -30167.031250 +v -66421.968750 -30088.712891 -35949.289062 +v -66750.015625 -30601.753906 -36035.765625 +v -67647.031250 -31361.886719 -30167.031250 +v -68008.820312 -31531.802734 -36173.351562 +v -68883.117188 -31729.568359 0.000000 +v -68883.117188 -31729.568359 -6033.406250 +v -68883.117188 -31729.568359 -12066.812500 +v -68391.000000 -31652.363281 -6033.406250 +v -68883.117188 -31729.568359 6033.406250 +v -68883.117188 -31729.568359 12066.812500 +v -68391.000000 -31652.363281 12066.812500 +v -68391.000000 -31652.363281 -24133.625000 +v -67160.375000 -31025.732422 -24133.625000 +v -68009.156250 -31531.935547 -18100.218750 +v -67647.031250 -31361.886719 -12066.812500 +v -67160.375000 -31025.732422 -6033.406250 +v -66750.015625 -30601.753906 0.000000 +v -66421.968750 -30088.710938 6033.406250 +v -66216.460938 -29563.761719 12066.812500 +v -66750.015625 -30601.753906 -18100.218750 +v -66421.968750 -30088.710938 -12066.812500 +v -66216.460938 -29563.761719 -6033.406250 +v -68391.000000 -31652.363281 0.000000 +v -68391.000000 -31652.363281 6033.406250 +v -68009.156250 -31531.935547 0.000000 +v -68009.156250 -31531.935547 6033.406250 +v -68009.156250 -31531.935547 12066.812500 +v -67647.031250 -31361.886719 6033.406250 +v -67160.375000 -31025.732422 12066.812500 +v -67647.031250 -31361.886719 12066.812500 +v -69398.914062 -31737.449219 36200.437500 +v -69398.914062 -31737.449219 -36200.437500 +v -72391.039062 -28954.617188 35731.285156 +v -72391.039062 -28954.617188 30631.140625 +v -72398.914062 -28737.449219 35685.300781 +v -72391.039062 -28954.617188 25061.841797 +v -72391.039062 -28954.617188 19492.542969 +v -72293.046875 -29527.376953 25061.841797 +v -72293.046875 -29527.376953 19492.542969 +v -72094.070312 -30055.058594 25061.841797 +v -72094.070312 -30055.058594 19492.542969 +v -71889.437500 -30409.955078 25061.841797 +v -71889.437500 -30409.955078 19492.542969 +v -71637.664062 -30734.439453 25061.841797 +v -71637.664062 -30734.439453 19492.542969 +v -71254.273438 -31094.912109 25061.841797 +v -71254.273438 -31094.912109 19492.542969 +v -70812.828125 -31383.355469 25061.841797 +v -70812.828125 -31383.355469 19492.542969 +v -70085.656250 -31657.787109 25061.841797 +v -70085.656250 -31657.787109 19492.542969 +v -69599.226562 -31730.751953 25061.841797 +v -69599.226562 -31730.751953 19492.542969 +v -69599.226562 -31730.751953 13923.245117 +v -69599.226562 -31730.751953 8353.947266 +v -70085.656250 -31657.787109 8353.947266 +v -70085.656250 -31657.787109 2784.649170 +v -70812.828125 -31383.355469 2784.649170 +v -70812.828125 -31383.355469 -2784.649170 +v -71254.273438 -31094.912109 -2784.649170 +v -71254.273438 -31094.912109 -8353.947266 +v -71637.664062 -30734.439453 -8353.947266 +v -71637.664062 -30734.439453 -13923.245117 +v -71889.437500 -30409.955078 -13923.245117 +v -71889.437500 -30409.955078 -19492.542969 +v -72094.070312 -30055.058594 -19492.542969 +v -72094.070312 -30055.058594 -25061.841797 +v -72293.046875 -29527.376953 -25061.841797 +v -72293.046875 -29527.376953 -30631.140625 +v -72391.039062 -28954.617188 -30631.140625 +v -72391.039062 -28954.617188 -35731.285156 +v -72398.914062 -28737.449219 -35685.300781 +v -72293.046875 -29527.376953 30631.140625 +v -72293.046875 -29527.376953 35846.019531 +v -72094.070312 -30055.058594 30631.140625 +v -72094.070312 -30055.058594 35943.351562 +v -71889.437500 -30409.955078 30631.140625 +v -71889.390625 -30410.027344 36004.332031 +v -71637.664062 -30734.439453 30631.140625 +v -71637.664062 -30734.439453 36056.902344 +v -71254.273438 -31094.912109 30631.140625 +v -71254.882812 -31094.431641 36111.718750 +v -70812.828125 -31383.355469 30631.140625 +v -70812.828125 -31383.355469 36153.046875 +v -70458.656250 -31544.035156 36174.996094 +v -70085.656250 -31657.787109 30631.140625 +v -70085.656250 -31657.787109 36190.085938 +v -69599.226562 -31730.751953 30631.140625 +v -69599.226562 -31730.751953 2784.649170 +v -69599.226562 -31730.751953 -2784.649170 +v -69599.226562 -31730.751953 -8353.947266 +v -70085.656250 -31657.787109 -8353.947266 +v -70085.656250 -31657.787109 -13923.245117 +v -70812.828125 -31383.355469 -13923.245117 +v -70812.828125 -31383.355469 -19492.542969 +v -71254.273438 -31094.912109 -19492.542969 +v -71254.273438 -31094.912109 -25061.841797 +v -71637.664062 -30734.439453 -25061.841797 +v -71637.664062 -30734.439453 -30631.140625 +v -71889.437500 -30409.955078 -30631.140625 +v -71889.468750 -30409.914062 -36004.312500 +v -72094.070312 -30055.058594 -35943.355469 +v -70085.656250 -31657.785156 -36190.089844 +v -69599.226562 -31730.751953 -30631.140625 +v -69599.226562 -31730.751953 -25061.841797 +v -69599.226562 -31730.751953 -19492.542969 +v -70085.656250 -31657.787109 -25061.841797 +v -70085.656250 -31657.787109 -19492.542969 +v -70812.828125 -31383.355469 -25061.841797 +v -70085.656250 -31657.787109 -30631.140625 +v -70458.382812 -31544.140625 -36175.003906 +v -70812.828125 -31383.355469 -30631.140625 +v -70812.828125 -31383.355469 -36153.042969 +v -71254.710938 -31094.562500 -36111.742188 +v -71254.273438 -31094.912109 -30631.140625 +v -71637.664062 -30734.439453 -36056.902344 +v -72094.070312 -30055.058594 -30631.140625 +v -72293.046875 -29527.376953 -35846.023438 +v -72391.039062 -28954.617188 -2784.649170 +v -72391.039062 -28954.617188 -8353.947266 +v -72391.039062 -28954.617188 -13923.245117 +v -72293.046875 -29527.376953 -8353.947266 +v -72293.046875 -29527.376953 -13923.245117 +v -72094.070312 -30055.058594 -8353.947266 +v -72094.070312 -30055.058594 -13923.245117 +v -71889.437500 -30409.955078 -8353.947266 +v -69599.226562 -31730.751953 -13923.245117 +v -72391.039062 -28954.617188 -25061.841797 +v -72391.039062 -28954.617188 -19492.542969 +v -72391.039062 -28954.617188 2784.649170 +v -72391.039062 -28954.617188 8353.947266 +v -72391.039062 -28954.617188 13923.245117 +v -72293.046875 -29527.376953 13923.245117 +v -71889.437500 -30409.955078 -25061.841797 +v -70085.656250 -31657.787109 13923.245117 +v -70812.828125 -31383.355469 13923.245117 +v -70812.828125 -31383.355469 8353.947266 +v -71254.273438 -31094.912109 13923.245117 +v -71254.273438 -31094.912109 8353.947266 +v -71254.273438 -31094.912109 2784.649170 +v -71637.664062 -30734.439453 13923.245117 +v -71637.664062 -30734.439453 8353.947266 +v -71637.664062 -30734.439453 2784.649170 +v -71637.664062 -30734.439453 -2784.649170 +v -71889.437500 -30409.955078 13923.245117 +v -71889.437500 -30409.955078 8353.947266 +v -71889.437500 -30409.955078 2784.649170 +v -71889.437500 -30409.955078 -2784.649170 +v -72094.070312 -30055.058594 13923.245117 +v -72094.070312 -30055.058594 8353.947266 +v -72094.070312 -30055.058594 2784.649170 +v -72094.070312 -30055.058594 -2784.649170 +v -72293.046875 -29527.376953 2784.649170 +v -72293.046875 -29527.376953 -2784.649170 +v -72293.046875 -29527.376953 8353.947266 +v -70085.656250 -31657.787109 -2784.649170 +v -70812.828125 -31383.355469 -8353.947266 +v -71254.273438 -31094.912109 -13923.245117 +v -71637.664062 -30734.439453 -19492.542969 +v -72293.046875 -29527.376953 -19492.542969 +v -72398.914062 -24945.951172 34657.542969 +v -72398.914062 -24945.951172 -34657.542969 +v -69959.468750 -21998.785156 33550.328125 +v -69521.328125 -21948.449219 32732.125000 +v -69398.914062 -21945.951172 33527.859375 +v -69521.328125 -21948.449219 30806.705078 +v -69521.328125 -21948.449219 28881.287109 +v -69959.468750 -21998.787109 30806.705078 +v -69959.468750 -21998.787109 28881.287109 +v -70594.125000 -22194.322266 30806.705078 +v -70594.125000 -22194.322266 28881.287109 +v -71142.992188 -22505.009766 30806.705078 +v -71142.992188 -22505.009766 28881.287109 +v -71525.859375 -22830.273438 30806.705078 +v -71525.859375 -22830.273438 28881.287109 +v -71846.507812 -23211.224609 30806.705078 +v -71846.507812 -23211.224609 28881.287109 +v -72132.671875 -23710.414062 30806.705078 +v -72132.671875 -23710.414062 28881.287109 +v -72324.101562 -24280.160156 30806.705078 +v -72324.101562 -24280.160156 28881.287109 +v -72398.117188 -24877.054688 30806.705078 +v -72398.117188 -24877.054688 28881.287109 +v -72398.117188 -24877.054688 26955.867188 +v -72398.117188 -24877.054688 25030.447266 +v -72324.101562 -24280.160156 25030.447266 +v -72324.101562 -24280.160156 23105.029297 +v -72132.671875 -23710.414062 23105.029297 +v -72132.671875 -23710.414062 21179.609375 +v -71846.507812 -23211.224609 21179.609375 +v -71846.507812 -23211.224609 19254.191406 +v -71525.859375 -22830.273438 19254.191406 +v -71525.859375 -22830.273438 17328.771484 +v -71142.992188 -22505.009766 17328.771484 +v -71142.992188 -22505.009766 15403.352539 +v -70594.125000 -22194.322266 15403.352539 +v -70594.125000 -22194.322266 13477.933594 +v -69959.468750 -21998.787109 13477.933594 +v -69959.468750 -21998.787109 11552.514648 +v -69521.328125 -21948.449219 11552.514648 +v -69521.328125 -21948.449219 9627.095703 +v -69521.328125 -21948.449219 7701.676270 +v -69521.328125 -21948.449219 5776.257324 +v -69959.468750 -21998.787109 7701.676270 +v -69959.468750 -21998.787109 5776.257324 +v -70594.125000 -22194.322266 7701.676270 +v -70594.125000 -22194.322266 5776.257324 +v -71142.992188 -22505.009766 7701.676270 +v -71142.992188 -22505.009766 5776.257324 +v -71525.859375 -22830.273438 7701.676270 +v -71525.859375 -22830.273438 5776.257324 +v -71846.507812 -23211.224609 7701.676270 +v -71846.507812 -23211.224609 5776.257324 +v -72132.671875 -23710.414062 7701.676270 +v -72132.671875 -23710.414062 5776.257324 +v -72324.101562 -24280.160156 7701.676270 +v -72324.101562 -24280.160156 5776.257324 +v -72398.117188 -24877.054688 7701.676270 +v -72398.117188 -24877.054688 5776.257324 +v -72398.117188 -24877.054688 3850.838135 +v -72398.117188 -24877.054688 1925.419067 +v -72324.101562 -24280.160156 1925.419067 +v -72324.101562 -24280.160156 0.000000 +v -72132.671875 -23710.414062 0.000000 +v -72132.671875 -23710.414062 -1925.419067 +v -71846.507812 -23211.224609 -1925.419067 +v -71846.507812 -23211.224609 -3850.838135 +v -71525.859375 -22830.273438 -3850.838135 +v -71525.859375 -22830.273438 -5776.257324 +v -71142.992188 -22505.009766 -5776.257324 +v -71142.992188 -22505.009766 -7701.676270 +v -70594.125000 -22194.322266 -7701.676270 +v -70594.125000 -22194.322266 -9627.095703 +v -69959.468750 -21998.787109 -9627.095703 +v -69959.468750 -21998.787109 -11552.514648 +v -69521.328125 -21948.449219 -11552.514648 +v -69521.328125 -21948.449219 -13477.933594 +v -69398.914062 -21945.951172 -33527.859375 +v -69521.328125 -21948.449219 -15403.352539 +v -69521.328125 -21948.449219 -17328.771484 +v -69959.468750 -21998.787109 -15403.352539 +v -69959.468750 -21998.787109 -17328.771484 +v -70594.125000 -22194.322266 -15403.352539 +v -70594.125000 -22194.322266 -17328.771484 +v -71142.992188 -22505.009766 -15403.352539 +v -71142.992188 -22505.009766 -17328.771484 +v -71525.859375 -22830.273438 -15403.352539 +v -71525.859375 -22830.273438 -17328.771484 +v -71846.507812 -23211.224609 -15403.352539 +v -71846.507812 -23211.224609 -17328.771484 +v -72132.671875 -23710.414062 -15403.352539 +v -72132.671875 -23710.414062 -17328.771484 +v -72324.101562 -24280.160156 -15403.352539 +v -72324.101562 -24280.160156 -17328.771484 +v -72398.117188 -24877.054688 -15403.352539 +v -72398.117188 -24877.054688 -17328.771484 +v -72398.117188 -24877.054688 -19254.191406 +v -72398.117188 -24877.054688 -21179.609375 +v -72324.101562 -24280.160156 -21179.609375 +v -72324.101562 -24280.160156 -23105.029297 +v -72132.671875 -23710.414062 -23105.029297 +v -72132.671875 -23710.414062 -25030.447266 +v -71846.507812 -23211.224609 -25030.447266 +v -71846.507812 -23211.224609 -26955.867188 +v -71525.859375 -22830.273438 -26955.867188 +v -71525.859375 -22830.273438 -28881.287109 +v -71142.992188 -22505.009766 -28881.287109 +v -71142.992188 -22505.009766 -30806.705078 +v -70594.125000 -22194.322266 -30806.705078 +v -70594.125000 -22194.322266 -32732.125000 +v -69959.468750 -21998.787109 -32732.125000 +v -69959.468750 -21998.787109 -33550.328125 +v -69521.328125 -21948.449219 -32732.125000 +v -69521.328125 -21948.449219 -30806.705078 +v -69521.328125 -21948.449219 -28881.287109 +v -69959.468750 -21998.787109 -28881.287109 +v -69959.468750 -21998.787109 -26955.867188 +v -70594.125000 -22194.322266 -26955.867188 +v -70594.125000 -22194.322266 -25030.447266 +v -71142.992188 -22505.009766 -25030.447266 +v -71142.992188 -22505.009766 -23105.029297 +v -71525.859375 -22830.273438 -23105.029297 +v -71525.859375 -22830.273438 -21179.609375 +v -71846.507812 -23211.224609 -21179.609375 +v -71846.507812 -23211.224609 -19254.191406 +v -72132.671875 -23710.414062 -19254.191406 +v -70594.125000 -22194.318359 33632.644531 +v -70594.125000 -22194.322266 32732.125000 +v -69959.468750 -21998.787109 32732.125000 +v -71142.992188 -22505.009766 32732.125000 +v -71142.992188 -22505.009766 33760.777344 +v -71525.859375 -22830.273438 32732.125000 +v -71525.875000 -22830.285156 33891.457031 +v -71846.507812 -23211.224609 32732.125000 +v -71846.507812 -23211.224609 34040.062500 +v -72132.671875 -23710.414062 32732.125000 +v -72132.671875 -23710.414062 34227.613281 +v -72324.101562 -24280.160156 32732.125000 +v -72324.093750 -24280.148438 34431.867188 +v -72398.117188 -24877.054688 32732.125000 +v -72398.117188 -24877.054688 34634.835938 +v -72398.117188 -24877.054688 0.000000 +v -72398.117188 -24877.054688 -1925.419067 +v -72398.117188 -24877.054688 -3850.838135 +v -72324.101562 -24280.160156 -3850.838135 +v -72324.101562 -24280.160156 -5776.257324 +v -72132.671875 -23710.414062 -5776.257324 +v -72132.671875 -23710.414062 -7701.676270 +v -71846.507812 -23211.224609 -7701.676270 +v -71846.507812 -23211.224609 -9627.095703 +v -71525.859375 -22830.273438 -9627.095703 +v -71525.859375 -22830.273438 -11552.514648 +v -71142.992188 -22505.009766 -11552.514648 +v -71142.992188 -22505.009766 -13477.933594 +v -70594.125000 -22194.322266 -13477.933594 +v -72398.117188 -24877.054688 -34634.835938 +v -72398.117188 -24877.054688 -32732.125000 +v -72398.117188 -24877.054688 -30806.705078 +v -72398.117188 -24877.054688 -28881.287109 +v -72324.101562 -24280.160156 -30806.705078 +v -72324.101562 -24280.160156 -28881.287109 +v -72132.671875 -23710.414062 -30806.705078 +v -72132.671875 -23710.414062 -28881.287109 +v -71846.507812 -23211.224609 -30806.705078 +v -71846.507812 -23211.224609 -28881.287109 +v -71525.859375 -22830.273438 -30806.705078 +v -72324.101562 -24280.179688 -34431.878906 +v -72324.101562 -24280.160156 -32732.125000 +v -72132.671875 -23710.414062 -34227.613281 +v -72132.671875 -23710.414062 -32732.125000 +v -71846.507812 -23211.224609 -34040.058594 +v -71846.507812 -23211.224609 -32732.125000 +v -71526.085938 -22830.498047 -33891.542969 +v -71525.859375 -22830.273438 -32732.125000 +v -71142.992188 -22505.009766 -33760.777344 +v -71142.992188 -22505.009766 -32732.125000 +v -70594.125000 -22194.322266 -33632.640625 +v -69521.328125 -21948.449219 0.000000 +v -69521.328125 -21948.449219 -1925.419067 +v -69521.328125 -21948.449219 -3850.838135 +v -69959.468750 -21998.787109 -1925.419067 +v -69959.468750 -21998.787109 -3850.838135 +v -70594.125000 -22194.322266 -1925.419067 +v -70594.125000 -22194.322266 -3850.838135 +v -71142.992188 -22505.009766 -1925.419067 +v -71142.992188 -22505.009766 -3850.838135 +v -71525.859375 -22830.273438 -1925.419067 +v -72398.117188 -24877.054688 -26955.867188 +v -72398.117188 -24877.054688 -25030.447266 +v -72324.101562 -24280.160156 -26955.867188 +v -72324.101562 -24280.160156 -25030.447266 +v -72132.671875 -23710.414062 -26955.867188 +v -72398.117188 -24877.054688 -23105.029297 +v -72398.117188 -24877.054688 -11552.514648 +v -72398.117188 -24877.054688 -9627.095703 +v -72324.101562 -24280.160156 -11552.514648 +v -72324.101562 -24280.160156 -9627.095703 +v -72132.671875 -23710.414062 -11552.514648 +v -72132.671875 -23710.414062 -9627.095703 +v -71846.507812 -23211.224609 -11552.514648 +v -72398.117188 -24877.054688 -7701.676270 +v -72324.101562 -24280.160156 -7701.676270 +v -72398.117188 -24877.054688 9627.095703 +v -72398.117188 -24877.054688 11552.514648 +v -72324.101562 -24280.160156 9627.095703 +v -72324.101562 -24280.160156 11552.514648 +v -72132.671875 -23710.414062 9627.095703 +v -72132.671875 -23710.414062 11552.514648 +v -71846.507812 -23211.224609 9627.095703 +v -71846.507812 -23211.224609 11552.514648 +v -71525.859375 -22830.273438 9627.095703 +v -71525.859375 -22830.273438 11552.514648 +v -71142.992188 -22505.009766 9627.095703 +v -71142.992188 -22505.009766 11552.514648 +v -70594.125000 -22194.322266 9627.095703 +v -70594.125000 -22194.322266 11552.514648 +v -69959.468750 -21998.787109 9627.095703 +v -72398.117188 -24877.054688 13477.933594 +v -72324.101562 -24280.160156 13477.933594 +v -72132.671875 -23710.414062 13477.933594 +v -71846.507812 -23211.224609 13477.933594 +v -71525.859375 -22830.273438 13477.933594 +v -71142.992188 -22505.009766 13477.933594 +v -72398.117188 -24877.054688 17328.771484 +v -72398.117188 -24877.054688 19254.191406 +v -72324.101562 -24280.160156 17328.771484 +v -72324.101562 -24280.160156 19254.191406 +v -72132.671875 -23710.414062 17328.771484 +v -72132.671875 -23710.414062 19254.191406 +v -71846.507812 -23211.224609 17328.771484 +v -72398.117188 -24877.054688 21179.609375 +v -72324.101562 -24280.160156 21179.609375 +v -69521.328125 -21948.449219 -26955.867188 +v -69521.328125 -21948.449219 -25030.447266 +v -69959.468750 -21998.787109 -25030.447266 +v -69959.468750 -21998.787109 -23105.029297 +v -70594.125000 -22194.322266 -23105.029297 +v -70594.125000 -22194.322266 -21179.609375 +v -71142.992188 -22505.009766 -21179.609375 +v -71142.992188 -22505.009766 -19254.191406 +v -71525.859375 -22830.273438 -19254.191406 +v -69521.328125 -21948.449219 -21179.609375 +v -69521.328125 -21948.449219 -19254.191406 +v -69521.328125 -21948.449219 -9627.095703 +v -69521.328125 -21948.449219 -7701.676270 +v -69521.328125 -21948.449219 -5776.257324 +v -69959.468750 -21998.787109 -5776.257324 +v -69521.328125 -21948.449219 1925.419067 +v -69521.328125 -21948.449219 3850.838135 +v -69959.468750 -21998.787109 3850.838135 +v -69521.328125 -21948.449219 15403.352539 +v -69521.328125 -21948.449219 17328.771484 +v -69521.328125 -21948.449219 19254.191406 +v -69959.468750 -21998.787109 19254.191406 +v -69959.468750 -21998.787109 21179.609375 +v -70594.125000 -22194.322266 21179.609375 +v -70594.125000 -22194.322266 23105.029297 +v -71142.992188 -22505.009766 23105.029297 +v -71142.992188 -22505.009766 25030.447266 +v -71525.859375 -22830.273438 25030.447266 +v -71525.859375 -22830.273438 26955.867188 +v -71846.507812 -23211.224609 26955.867188 +v -69521.328125 -21948.449219 23105.029297 +v -69521.328125 -21948.449219 25030.447266 +v -69521.328125 -21948.449219 26955.867188 +v -69959.468750 -21998.787109 26955.867188 +v -69959.468750 -21998.787109 -30806.705078 +v -72324.101562 -24280.160156 26955.867188 +v -72132.671875 -23710.414062 26955.867188 +v -72132.671875 -23710.414062 25030.447266 +v -71142.992188 -22505.009766 26955.867188 +v -70594.125000 -22194.322266 26955.867188 +v -69521.328125 -21948.449219 21179.609375 +v -69959.468750 -21998.787109 23105.029297 +v -71846.507812 -23211.224609 25030.447266 +v -71525.859375 -22830.273438 23105.029297 +v -71142.992188 -22505.009766 21179.609375 +v -70594.125000 -22194.322266 19254.191406 +v -69959.468750 -21998.787109 17328.771484 +v -70594.125000 -22194.322266 25030.447266 +v -69959.468750 -21998.787109 25030.447266 +v -71846.507812 -23211.224609 23105.029297 +v -69521.328125 -21948.449219 13477.933594 +v -69959.468750 -21998.787109 15403.352539 +v -72398.117188 -24877.054688 23105.029297 +v -71525.859375 -22830.273438 21179.609375 +v -71142.992188 -22505.009766 19254.191406 +v -70594.125000 -22194.322266 17328.771484 +v -72324.101562 -24280.160156 15403.352539 +v -72398.117188 -24877.054688 15403.352539 +v -72132.671875 -23710.414062 15403.352539 +v -71846.507812 -23211.224609 15403.352539 +v -71525.859375 -22830.273438 15403.352539 +v -72324.101562 -24280.160156 3850.838135 +v -72132.671875 -23710.414062 3850.838135 +v -72132.671875 -23710.414062 1925.419067 +v -71846.507812 -23211.224609 3850.838135 +v -71846.507812 -23211.224609 1925.419067 +v -71846.507812 -23211.224609 0.000000 +v -71525.859375 -22830.273438 3850.838135 +v -71525.859375 -22830.273438 1925.419067 +v -71525.859375 -22830.273438 0.000000 +v -71142.992188 -22505.009766 3850.838135 +v -71142.992188 -22505.009766 1925.419067 +v -71142.992188 -22505.009766 0.000000 +v -70594.125000 -22194.322266 3850.838135 +v -70594.125000 -22194.322266 1925.419067 +v -70594.125000 -22194.322266 0.000000 +v -69521.328125 -21948.449219 -23105.029297 +v -69959.468750 -21998.787109 -21179.609375 +v -69959.468750 -21998.787109 1925.419067 +v -69959.468750 -21998.787109 0.000000 +v -72324.101562 -24280.160156 -1925.419067 +v -72132.671875 -23710.414062 -3850.838135 +v -71846.507812 -23211.224609 -5776.257324 +v -71525.859375 -22830.273438 -7701.676270 +v -71142.992188 -22505.009766 -9627.095703 +v -70594.125000 -22194.322266 -11552.514648 +v -69959.468750 -21998.787109 -13477.933594 +v -70594.125000 -22194.322266 -5776.257324 +v -72398.117188 -24877.054688 -5776.257324 +v -69959.468750 -21998.787109 -7701.676270 +v -72324.101562 -24280.160156 -13477.933594 +v -72398.117188 -24877.054688 -13477.933594 +v -72132.671875 -23710.414062 -13477.933594 +v -71846.507812 -23211.224609 -13477.933594 +v -71525.859375 -22830.273438 -13477.933594 +v -72324.101562 -24280.160156 -19254.191406 +v -70594.125000 -22194.322266 -19254.191406 +v -69959.468750 -21998.787109 -19254.191406 +v -72132.671875 -23710.414062 -21179.609375 +v -71846.507812 -23211.224609 -23105.029297 +v -71525.859375 -22830.273438 -25030.447266 +v -71142.992188 -22505.009766 -26955.867188 +v -70594.125000 -22194.322266 -28881.287109 +v -75965.750000 -17631.449219 31350.974609 +v -76000.000000 -18000.000000 31565.083984 +v -72999.929688 -18290.033203 31729.648438 +v -76000.000000 -20109.314453 32686.210938 +v -72999.929688 -20676.296875 32958.863281 +v -76000.000000 -22286.623047 33671.039062 +v -72999.929688 -23145.044922 34014.585938 +v -76000.000000 -24522.242188 34515.527344 +v -72999.929688 -25682.529297 34891.132812 +v -72999.929688 -28275.001953 35582.800781 +v -76000.000000 -29130.023438 35767.421875 +v -72999.929688 -30908.716797 36083.902344 +v -72999.929688 -33569.925781 36388.738281 +v -69999.953125 -33569.925781 36388.738281 +v -66999.976562 -33569.925781 36388.738281 +v -66999.976562 -30908.716797 36083.902344 +v -64000.000000 -31484.369141 36166.929688 +v -64000.000000 -29129.941406 35767.417969 +v -64000.000000 -26806.197266 35215.578125 +v -64000.000000 -24522.279297 34515.550781 +v -64000.000000 -22286.822266 33671.128906 +v -66999.976562 -20676.296875 32958.863281 +v -69999.953125 -20676.296875 32958.863281 +v -72676.117188 -20676.296875 32958.863281 +v -72514.218750 -23145.044922 34014.585938 +v -76000.000000 -26806.492188 35215.648438 +v -76000.000000 -31484.376953 36166.917969 +v -76000.000000 -33859.914062 36409.769531 +v -76000.000000 -36244.886719 36491.605469 +v -64000.000000 -33859.777344 36409.773438 +v -64000.000000 -36244.882812 36491.617188 +v -64000.000000 -20109.496094 32686.310547 +v -66999.976562 -18290.033203 31729.648438 +v -69999.953125 -18290.033203 31729.648438 +v -72838.023438 -18290.033203 31729.648438 +v -64000.000000 -18000.000000 31565.093750 +v -64034.257812 -17631.412109 31350.964844 +v -64136.152344 -17274.689453 31138.285156 +v -64304.414062 -16939.347656 30933.359375 +v -64537.476562 -16635.802734 30743.601562 +v -64832.437500 -16376.181641 30578.029297 +v -65182.667969 -16174.629883 30447.371094 +v -65578.250000 -16044.973633 30362.326172 +v -66000.000000 -16000.000000 30332.642578 +v -74000.000000 -16000.000000 30332.642578 +v -74421.617188 -16044.946289 30362.306641 +v -74816.945312 -16174.456055 30447.259766 +v -75167.859375 -16376.384766 30578.156250 +v -75462.632812 -16635.923828 30743.677734 +v -75695.679688 -16939.490234 30933.441406 +v -75863.882812 -17274.779297 31138.328125 +v -76000.000000 -38000.000000 36447.218750 +v -75961.500000 -38390.535156 36425.332031 +v -75847.601562 -38765.750000 36400.207031 +v -75663.242188 -39110.683594 36373.574219 +v -75414.812500 -39413.617188 36347.398438 +v -64152.414062 -38765.785156 36400.210938 +v -64038.503906 -38390.558594 36425.339844 +v -64000.000000 -38000.000000 36447.230469 +v -74000.000000 -40000.000000 36289.296875 +v -75112.664062 -39661.921875 36323.988281 +v -74766.828125 -39847.152344 36305.386719 +v -74391.179688 -39961.371094 36293.425781 +v -64336.800781 -39110.750000 36373.574219 +v -66000.000000 -40000.000000 36289.296875 +v -64585.242188 -39413.667969 36347.394531 +v -64887.296875 -39661.894531 36323.996094 +v -65233.128906 -39847.136719 36305.390625 +v -65608.796875 -39961.367188 36293.429688 +v -64000.000000 -35400.433594 -36481.312500 +v -64000.000000 -38000.000000 -36447.230469 +v -69999.953125 -36858.894531 -36486.164062 +v -64038.496094 -38390.511719 -36425.343750 +v -64152.351562 -38765.628906 -36400.222656 +v -66000.000000 -40000.000000 -36289.296875 +v -64337.082031 -39111.167969 -36373.542969 +v -64585.042969 -39413.468750 -36347.410156 +v -64887.742188 -39662.191406 -36323.964844 +v -65233.101562 -39847.125000 -36305.390625 +v -65608.835938 -39961.375000 -36293.425781 +v -74000.000000 -40000.000000 -36289.296875 +v -73554.851562 -36858.894531 -36486.164062 +v -73109.695312 -33713.429688 -36399.449219 +v -76000.000000 -35400.210938 -36481.296875 +v -76000.000000 -32797.109375 -36320.960938 +v -74391.210938 -39961.367188 -36293.429688 +v -74766.890625 -39847.125000 -36305.390625 +v -75112.742188 -39661.871094 -36323.992188 +v -75414.851562 -39413.578125 -36347.402344 +v -75663.218750 -39110.714844 -36373.574219 +v -75847.609375 -38765.726562 -36400.207031 +v -75961.492188 -38390.566406 -36425.328125 +v -76000.000000 -38000.000000 -36447.218750 +v -76000.000000 -30212.634766 -35970.859375 +v -72664.546875 -30585.947266 -36033.210938 +v -76000.000000 -27659.423828 -35436.644531 +v -76000.000000 -25149.875000 -34723.882812 +v -76000.000000 -22695.154297 -33837.585938 +v -76000.000000 -20307.652344 -32782.917969 +v -76000.000000 -18000.000000 -31565.083984 +v -69981.210938 -18702.537109 -31957.833984 +v -69962.468750 -21534.736328 -33349.738281 +v -64000.000000 -22695.009766 -33837.539062 +v -64000.000000 -25149.976562 -34723.925781 +v -64000.000000 -27659.761719 -35436.738281 +v -64000.000000 -30212.750000 -35970.890625 +v -64000.000000 -32797.312500 -36320.988281 +v -69999.953125 -33713.429688 -36399.449219 +v -75965.742188 -17631.410156 -31350.955078 +v -75695.578125 -16939.335938 -30933.345703 +v -66000.000000 -16000.000000 -30332.642578 +v -74000.000000 -16000.000000 -30332.642578 +v -75462.507812 -16635.785156 -30743.585938 +v -75167.523438 -16376.154297 -30578.009766 +v -75863.843750 -17274.683594 -31138.273438 +v -74817.289062 -16174.612305 -30447.359375 +v -74421.687500 -16044.959961 -30362.316406 +v -65578.289062 -16044.964844 -30362.320312 +v -65182.835938 -16174.547852 -30447.320312 +v -64832.468750 -16376.154297 -30578.013672 +v -64537.503906 -16635.775391 -30743.580078 +v -64304.433594 -16939.316406 -30933.337891 +v -64136.160156 -17274.667969 -31138.271484 +v -64034.257812 -17631.402344 -31350.958984 +v -64000.000000 -18000.000000 -31565.093750 +v -64000.000000 -20307.478516 -32782.843750 +v -74517.640625 -39931.851562 26033.726562 +v -74517.640625 -39931.851562 15620.236328 +v -74517.640625 -39931.851562 5206.745605 +v -75000.000000 -39732.050781 5206.745605 +v -75000.000000 -39732.050781 -5206.745605 +v -75414.828125 -39413.601562 5206.745605 +v -75414.835938 -39413.593750 -5206.745605 +v -75732.054688 -39000.000000 5206.745605 +v -75732.054688 -39000.000000 -5206.745605 +v -75931.851562 -38517.636719 -5206.745605 +v -75931.851562 -38517.636719 -15620.236328 +v -75931.851562 -38517.636719 -26033.726562 +v -75000.000000 -39732.050781 26033.726562 +v -75000.000000 -39732.050781 15620.236328 +v -75414.812500 -39413.613281 26033.726562 +v -75414.820312 -39413.605469 15620.236328 +v -75732.054688 -39000.000000 26033.726562 +v -75732.054688 -39000.000000 15620.236328 +v -75931.851562 -38517.636719 15620.236328 +v -75931.851562 -38517.636719 5206.745605 +v -75931.851562 -38517.636719 26033.726562 +v -75732.054688 -39000.000000 -26033.726562 +v -75414.843750 -39413.582031 -26033.726562 +v -75000.000000 -39732.050781 -26033.726562 +v -74517.640625 -39931.851562 -26033.726562 +v -74517.640625 -39931.851562 -15620.236328 +v -74517.640625 -39931.851562 -5206.745605 +v -75000.000000 -39732.050781 -15620.236328 +v -75414.835938 -39413.589844 -15620.236328 +v -75732.054688 -39000.000000 -15620.236328 +v -64068.148438 -38517.636719 26033.734375 +v -64068.148438 -38517.636719 15620.241211 +v -64068.148438 -38517.636719 5206.747070 +v -64267.949219 -39000.000000 5206.747070 +v -64267.949219 -39000.000000 -5206.747070 +v -64585.128906 -39413.554688 -5206.747070 +v -64585.101562 -39413.527344 -15620.241211 +v -65000.000000 -39732.050781 -15620.241211 +v -65000.000000 -39732.050781 -26033.734375 +v -65482.363281 -39931.851562 -26033.734375 +v -65482.363281 -39931.851562 -15620.241211 +v -65482.363281 -39931.851562 -5206.747070 +v -65000.000000 -39732.050781 -5206.747070 +v -65000.000000 -39732.050781 5206.747070 +v -64585.156250 -39413.582031 5206.747070 +v -64585.183594 -39413.613281 15620.241211 +v -64267.949219 -39000.000000 15620.241211 +v -64267.949219 -39000.000000 26033.734375 +v -64585.210938 -39413.640625 26033.734375 +v -65000.000000 -39732.050781 15620.241211 +v -65482.363281 -39931.851562 5206.747070 +v -65000.000000 -39732.050781 26033.734375 +v -65482.363281 -39931.851562 26033.734375 +v -65482.363281 -39931.851562 15620.241211 +v -64585.070312 -39413.500000 -26033.734375 +v -64267.949219 -39000.000000 -15620.241211 +v -64068.148438 -38517.636719 -5206.747070 +v -64267.949219 -39000.000000 -26033.734375 +v -64068.148438 -38517.636719 -26033.734375 +v -64068.148438 -38517.636719 -15620.241211 +v -65482.363281 -16068.148438 21043.396484 +v -65482.363281 -16068.148438 10521.698242 +v -65482.363281 -16068.148438 0.000000 +v -65000.000000 -16267.949219 0.000000 +v -65000.000000 -16267.949219 -10521.698242 +v -64585.785156 -16585.787109 -10521.698242 +v -64585.785156 -16585.787109 -21043.396484 +v -64267.949219 -17000.000000 -21043.396484 +v -64068.148438 -17482.361328 -21043.396484 +v -64068.148438 -17482.361328 -10521.698242 +v -64068.148438 -17482.361328 0.000000 +v -64267.949219 -17000.000000 0.000000 +v -64267.949219 -17000.000000 10521.698242 +v -64585.785156 -16585.787109 10521.698242 +v -64585.785156 -16585.787109 21043.396484 +v -65000.000000 -16267.949219 21043.396484 +v -64267.949219 -17000.000000 21043.396484 +v -64068.148438 -17482.361328 10521.698242 +v -64068.148438 -17482.361328 21043.396484 +v -65000.000000 -16267.949219 -21043.396484 +v -65482.363281 -16068.148438 -10521.698242 +v -65482.363281 -16068.148438 -21043.396484 +v -65000.000000 -16267.949219 10521.698242 +v -64585.785156 -16585.787109 0.000000 +v -64267.949219 -17000.000000 -10521.698242 +v -75931.851562 -17482.361328 21043.388672 +v -75931.851562 -17482.361328 10521.694336 +v -75931.851562 -17482.361328 0.000000 +v -75732.054688 -17000.000000 0.000000 +v -75732.054688 -17000.000000 -10521.694336 +v -75414.210938 -16585.787109 -10521.694336 +v -75414.210938 -16585.787109 -21043.388672 +v -75000.000000 -16267.949219 -21043.388672 +v -74517.640625 -16068.148438 -21043.388672 +v -74517.640625 -16068.148438 -10521.694336 +v -74517.640625 -16068.148438 0.000000 +v -75000.000000 -16267.949219 0.000000 +v -75000.000000 -16267.949219 10521.694336 +v -75414.210938 -16585.787109 10521.694336 +v -75414.210938 -16585.787109 21043.388672 +v -75732.054688 -17000.000000 21043.388672 +v -75000.000000 -16267.949219 21043.388672 +v -74517.640625 -16068.148438 21043.388672 +v -74517.640625 -16068.148438 10521.694336 +v -75732.054688 -17000.000000 -21043.388672 +v -75931.851562 -17482.361328 -21043.388672 +v -75931.851562 -17482.361328 -10521.694336 +v -75732.054688 -17000.000000 10521.694336 +v -75414.210938 -16585.787109 0.000000 +v -75000.000000 -16267.949219 -10521.694336 +v -51831.785156 -24343.304688 34453.875000 +v -51831.781250 -24343.314453 26955.867188 +v -51770.628906 -24945.951172 34657.542969 +v -51831.781250 -24343.314453 19254.191406 +v -51831.781250 -24343.314453 11552.514648 +v -52012.464844 -23765.898438 19254.191406 +v -52012.464844 -23765.898438 11552.514648 +v -52258.542969 -23306.007812 19254.191406 +v -52258.542969 -23306.007812 11552.514648 +v -52736.710938 -22740.685547 19254.191406 +v -52736.710938 -22740.685547 11552.514648 +v -53113.035156 -22445.462891 19254.191406 +v -53113.035156 -22445.462891 11552.514648 +v -53535.812500 -22211.861328 19254.191406 +v -53535.812500 -22211.861328 11552.514648 +v -54176.019531 -22005.466797 19254.191406 +v -54176.019531 -22005.466797 11552.514648 +v -54490.507812 -21959.056641 19254.191406 +v -54490.507812 -21959.056641 11552.514648 +v -54770.628906 -21945.951172 33527.859375 +v -54490.507812 -21959.056641 3850.838135 +v -54770.628906 -21945.951172 -33527.859375 +v -54490.507812 -21959.056641 -3850.838135 +v -54490.507812 -21959.056641 -11552.514648 +v -54176.019531 -22005.466797 -11552.514648 +v -54176.019531 -22005.466797 -19254.191406 +v -53535.812500 -22211.861328 -19254.191406 +v -53535.812500 -22211.861328 -26955.867188 +v -53113.035156 -22445.462891 -26955.867188 +v -53535.812500 -22211.859375 -33639.964844 +v -53112.792969 -22445.623047 -33736.535156 +v -52012.464844 -23765.898438 34247.960938 +v -52012.464844 -23765.898438 26955.867188 +v -52258.542969 -23306.007812 34076.296875 +v -52258.542969 -23306.007812 26955.867188 +v -52736.710938 -22740.685547 33855.812500 +v -52736.710938 -22740.685547 26955.867188 +v -53112.902344 -22445.550781 33736.503906 +v -53113.035156 -22445.462891 26955.867188 +v -53535.812500 -22211.861328 33639.964844 +v -53535.812500 -22211.861328 26955.867188 +v -54176.019531 -22005.468750 33553.160156 +v -54176.019531 -22005.466797 26955.867188 +v -54490.507812 -21959.056641 26955.867188 +v -54176.019531 -22005.466797 -33553.160156 +v -54490.507812 -21959.056641 -26955.867188 +v -54490.507812 -21959.056641 -19254.191406 +v -54176.019531 -22005.466797 -26955.867188 +v -52736.710938 -22740.685547 -26955.867188 +v -52736.707031 -22740.683594 -33855.812500 +v -52258.542969 -23306.007812 -26955.867188 +v -52258.542969 -23306.007812 -34076.292969 +v -52012.464844 -23765.898438 -26955.867188 +v -52012.464844 -23765.898438 -34247.957031 +v -51831.785156 -24343.306641 -34453.875000 +v -51831.781250 -24343.314453 -26955.867188 +v -51770.628906 -24945.951172 -34657.542969 +v -51831.781250 -24343.314453 -19254.191406 +v -51831.781250 -24343.314453 -11552.514648 +v -52012.464844 -23765.898438 -11552.514648 +v -52012.464844 -23765.898438 -3850.838135 +v -52258.542969 -23306.007812 -3850.838135 +v -52258.542969 -23306.007812 3850.838135 +v -52736.710938 -22740.685547 3850.838135 +v -51831.781250 -24343.314453 -3850.838135 +v -51831.781250 -24343.314453 3850.838135 +v -52012.464844 -23765.898438 -19254.191406 +v -52258.542969 -23306.007812 -19254.191406 +v -52258.542969 -23306.007812 -11552.514648 +v -52736.710938 -22740.685547 -19254.191406 +v -52736.710938 -22740.685547 -11552.514648 +v -52736.710938 -22740.685547 -3850.838135 +v -53113.035156 -22445.462891 -19254.191406 +v -53113.035156 -22445.462891 -11552.514648 +v -53113.035156 -22445.462891 -3850.838135 +v -53113.035156 -22445.462891 3850.838135 +v -53535.812500 -22211.861328 -11552.514648 +v -54176.019531 -22005.466797 -3850.838135 +v -53535.812500 -22211.861328 -3850.838135 +v -53535.812500 -22211.861328 3850.838135 +v -52012.464844 -23765.898438 3850.838135 +v -54176.019531 -22005.466797 3850.838135 +v -51770.628906 -28737.449219 35685.300781 +v -51770.628906 -28737.449219 -35685.300781 +v -54247.921875 -31691.560547 36194.496094 +v -54247.925781 -31691.560547 21720.263672 +v -54770.628906 -31737.449219 36200.437500 +v -54247.925781 -31691.560547 7240.087891 +v -54247.925781 -31691.560547 -7240.087891 +v -53741.714844 -31555.484375 7240.087891 +v -53741.714844 -31555.484375 -7240.087891 +v -53166.128906 -31272.320312 7240.087891 +v -53166.128906 -31272.320312 -7240.087891 +v -52768.441406 -30971.556641 7240.087891 +v -52768.441406 -30971.556641 -7240.087891 +v -52426.808594 -30610.013672 7240.087891 +v -52426.808594 -30610.013672 -7240.087891 +v -52096.179688 -30096.605469 7240.087891 +v -52096.179688 -30096.605469 -7240.087891 +v -51849.042969 -29418.859375 7240.087891 +v -51849.042969 -29418.859375 -7240.087891 +v -51849.042969 -29418.859375 -21720.263672 +v -51849.042969 -29418.859375 -35825.011719 +v -52096.179688 -30096.605469 -21720.263672 +v -52096.179688 -30096.605469 -35950.675781 +v -52426.808594 -30610.013672 -36037.093750 +v -53741.714844 -31555.484375 36176.527344 +v -53741.714844 -31555.484375 21720.263672 +v -53166.128906 -31272.320312 36137.441406 +v -53166.128906 -31272.320312 21720.263672 +v -52768.445312 -30971.560547 36093.425781 +v -52768.441406 -30971.556641 21720.263672 +v -52426.808594 -30610.013672 36037.093750 +v -52426.808594 -30610.013672 21720.263672 +v -52096.179688 -30096.605469 35950.679688 +v -52096.179688 -30096.605469 21720.263672 +v -51849.042969 -29418.859375 35825.011719 +v -51849.042969 -29418.859375 21720.263672 +v -52426.808594 -30610.013672 -21720.263672 +v -52768.113281 -30971.263672 -36093.382812 +v -52768.441406 -30971.556641 -21720.263672 +v -53166.128906 -31272.320312 -36137.441406 +v -53166.128906 -31272.320312 -21720.263672 +v -53741.714844 -31555.484375 -21720.263672 +v -53741.714844 -31555.484375 -36176.531250 +v -54247.925781 -31691.560547 -21720.263672 +v -54247.941406 -31691.562500 -36194.500000 +v -54770.628906 -31737.449219 -36200.437500 +v -55069.125000 -31737.449219 36200.437500 +v -55069.125000 -31737.449219 -36200.437500 +v -58011.582031 -29322.224609 35806.015625 +v -58011.582031 -29322.224609 25857.455078 +v -58069.125000 -28737.449219 35685.300781 +v -58011.582031 -29322.224609 15514.473633 +v -58011.582031 -29322.224609 5171.491211 +v -57847.632812 -29868.781250 15514.473633 +v -57847.632812 -29868.781250 5171.491211 +v -57525.562500 -30459.638672 15514.473633 +v -57525.562500 -30459.638672 5171.491211 +v -57163.175781 -30885.695312 15514.473633 +v -57163.175781 -30885.695312 5171.491211 +v -56726.687500 -31237.945312 15514.473633 +v -56726.687500 -31237.945312 5171.491211 +v -56336.203125 -31456.732422 15514.473633 +v -56336.203125 -31456.732422 5171.491211 +v -55917.023438 -31615.132812 15514.473633 +v -55917.023438 -31615.132812 5171.491211 +v -55455.679688 -31712.439453 15514.473633 +v -55455.679688 -31712.439453 5171.491211 +v -57847.632812 -29868.781250 25857.455078 +v -57847.632812 -29868.781250 35909.910156 +v -57525.562500 -30459.638672 25857.455078 +v -57525.562500 -30459.638672 36012.566406 +v -57163.175781 -30885.695312 25857.455078 +v -57163.195312 -30885.679688 36080.382812 +v -56726.687500 -31237.945312 25857.455078 +v -56726.687500 -31237.945312 36132.542969 +v -56336.203125 -31456.732422 25857.455078 +v -56336.257812 -31456.708984 36163.160156 +v -55917.023438 -31615.132812 25857.455078 +v -55917.023438 -31615.132812 36184.468750 +v -55455.679688 -31712.439453 25857.455078 +v -55455.679688 -31712.439453 36197.207031 +v -55455.679688 -31712.439453 -36197.207031 +v -55455.679688 -31712.439453 -25857.455078 +v -55455.679688 -31712.439453 -15514.473633 +v -55455.679688 -31712.439453 -5171.491211 +v -55917.023438 -31615.132812 -15514.473633 +v -55917.023438 -31615.132812 -5171.491211 +v -56336.203125 -31456.732422 -15514.473633 +v -56336.203125 -31456.732422 -5171.491211 +v -56726.687500 -31237.945312 -15514.473633 +v -56726.687500 -31237.945312 -5171.491211 +v -57163.175781 -30885.695312 -15514.473633 +v -57163.175781 -30885.695312 -5171.491211 +v -57525.562500 -30459.638672 -15514.473633 +v -57525.562500 -30459.638672 -5171.491211 +v -57847.632812 -29868.781250 -15514.473633 +v -57847.632812 -29868.781250 -5171.491211 +v -58011.582031 -29322.224609 -15514.473633 +v -58011.582031 -29322.224609 -5171.491211 +v -58069.125000 -28737.449219 -35685.300781 +v -55917.023438 -31615.132812 -36184.472656 +v -55917.023438 -31615.132812 -25857.455078 +v -56336.253906 -31456.708984 -36163.156250 +v -56336.203125 -31456.732422 -25857.455078 +v -56726.687500 -31237.945312 -36132.542969 +v -56726.687500 -31237.945312 -25857.455078 +v -57162.906250 -30885.957031 -36080.425781 +v -57163.175781 -30885.695312 -25857.455078 +v -57525.562500 -30459.638672 -36012.566406 +v -57525.562500 -30459.638672 -25857.455078 +v -57847.632812 -29868.783203 -35909.906250 +v -57847.632812 -29868.781250 -25857.455078 +v -58011.582031 -29322.226562 -35806.015625 +v -58011.582031 -29322.224609 -25857.455078 +v -58069.125000 -24945.951172 34657.542969 +v -58069.125000 -24945.951172 -34657.542969 +v -55483.644531 -21974.726562 33540.109375 +v -55483.644531 -21974.726562 23105.029297 +v -55069.125000 -21945.951172 33527.859375 +v -55483.644531 -21974.726562 11552.514648 +v -55483.644531 -21974.726562 0.000000 +v -56035.597656 -22105.890625 11552.514648 +v -56035.597656 -22105.890625 0.000000 +v -56422.937500 -22268.785156 11552.514648 +v -56422.937500 -22268.785156 0.000000 +v -56780.855469 -22482.214844 11552.514648 +v -56780.855469 -22482.214844 0.000000 +v -57166.406250 -22800.855469 11552.514648 +v -57166.406250 -22800.855469 0.000000 +v -57490.867188 -23175.310547 11552.514648 +v -57490.867188 -23175.310547 0.000000 +v -57779.964844 -23660.902344 11552.514648 +v -57779.964844 -23660.902344 0.000000 +v -57995.882812 -24287.080078 11552.514648 +v -57995.882812 -24287.080078 0.000000 +v -56035.597656 -22105.890625 23105.029297 +v -56035.597656 -22105.890625 33595.574219 +v -56422.937500 -22268.785156 23105.029297 +v -56422.929688 -22268.777344 33663.652344 +v -56780.855469 -22482.214844 23105.029297 +v -56780.855469 -22482.214844 33751.484375 +v -57166.406250 -22800.855469 23105.029297 +v -57166.453125 -22800.902344 33879.796875 +v -57490.867188 -23175.310547 23105.029297 +v -57490.867188 -23175.310547 34026.253906 +v -57779.964844 -23660.902344 23105.029297 +v -57779.964844 -23660.902344 34209.371094 +v -57995.882812 -24287.080078 23105.029297 +v -57995.878906 -24287.078125 34434.289062 +v -57995.886719 -24287.101562 -34434.296875 +v -57995.882812 -24287.080078 -23105.029297 +v -57995.882812 -24287.080078 -11552.514648 +v -57779.964844 -23660.902344 -11552.514648 +v -57490.867188 -23175.310547 -11552.514648 +v -57166.406250 -22800.855469 -11552.514648 +v -56780.855469 -22482.214844 -11552.514648 +v -56422.937500 -22268.785156 -11552.514648 +v -56035.597656 -22105.890625 -11552.514648 +v -55483.644531 -21974.726562 -11552.514648 +v -55069.125000 -21945.951172 -33527.859375 +v -57779.964844 -23660.904297 -34209.371094 +v -57779.964844 -23660.902344 -23105.029297 +v -57490.867188 -23175.310547 -34026.253906 +v -57490.867188 -23175.310547 -23105.029297 +v -57166.519531 -22800.962891 -33879.824219 +v -57166.406250 -22800.855469 -23105.029297 +v -56780.855469 -22482.212891 -33751.488281 +v -56780.855469 -22482.214844 -23105.029297 +v -56423.222656 -22268.927734 -33663.707031 +v -56422.937500 -22268.785156 -23105.029297 +v -56035.597656 -22105.888672 -33595.578125 +v -56035.597656 -22105.890625 -23105.029297 +v -55483.644531 -21974.726562 -33540.109375 +v -55483.644531 -21974.726562 -23105.029297 +v -59965.750000 -17631.449219 31350.984375 +v -60000.000000 -18000.000000 31565.093750 +v -58328.066406 -18290.033203 31729.648438 +v -60000.000000 -20109.314453 32686.220703 +v -58232.593750 -20676.296875 32958.863281 +v -60000.000000 -22286.621094 33671.046875 +v -58137.121094 -23145.044922 34014.585938 +v -60000.000000 -24522.242188 34515.539062 +v -60000.000000 -26806.492188 35215.656250 +v -60000.000000 -29130.021484 35767.433594 +v -60000.000000 -31484.375000 36166.925781 +v -57000.000000 -33569.925781 36388.738281 +v -54000.000000 -33569.925781 36388.738281 +v -51000.000000 -33569.925781 36388.738281 +v -51000.000000 -30908.716797 36083.902344 +v -48000.000000 -29129.941406 35767.417969 +v -51000.000000 -28275.001953 35582.800781 +v -48000.000000 -26806.197266 35215.578125 +v -51000.000000 -25682.529297 34891.132812 +v -48000.000000 -24522.279297 34515.550781 +v -51000.000000 -23145.044922 34014.585938 +v -51000.000000 -20676.296875 32958.863281 +v -54000.000000 -20676.296875 32958.863281 +v -57000.000000 -20676.296875 32958.863281 +v -60000.000000 -33859.910156 36409.781250 +v -60000.000000 -36244.882812 36491.617188 +v -48000.000000 -33859.777344 36409.773438 +v -48000.000000 -36244.882812 36491.617188 +v -48000.000000 -31484.369141 36166.929688 +v -48000.000000 -22286.822266 33671.128906 +v -48000.000000 -20109.496094 32686.310547 +v -51000.000000 -18290.033203 31729.648438 +v -54000.000000 -18290.033203 31729.648438 +v -57000.000000 -18290.033203 31729.648438 +v -48000.000000 -18000.000000 31565.093750 +v -48034.257812 -17631.412109 31350.964844 +v -48136.152344 -17274.689453 31138.285156 +v -48304.414062 -16939.347656 30933.359375 +v -48537.476562 -16635.802734 30743.601562 +v -48832.437500 -16376.181641 30578.029297 +v -49182.667969 -16174.629883 30447.371094 +v -49578.246094 -16044.973633 30362.326172 +v -50000.000000 -16000.000000 30332.642578 +v -58000.000000 -16000.000000 30332.642578 +v -58421.621094 -16044.946289 30362.306641 +v -59863.882812 -17274.777344 31138.335938 +v -58816.949219 -16174.457031 30447.261719 +v -59167.855469 -16376.384766 30578.158203 +v -59462.632812 -16635.923828 30743.681641 +v -59695.675781 -16939.490234 30933.447266 +v -60000.000000 -38000.000000 36447.230469 +v -59961.503906 -38390.511719 36425.343750 +v -59847.648438 -38765.628906 36400.222656 +v -59662.917969 -39111.167969 36373.542969 +v -59414.957031 -39413.468750 36347.410156 +v -48152.390625 -38765.726562 36400.214844 +v -48038.507812 -38390.566406 36425.339844 +v -48000.000000 -38000.000000 36447.230469 +v -58000.000000 -40000.000000 36289.296875 +v -59112.257812 -39662.191406 36323.964844 +v -58766.898438 -39847.125000 36305.390625 +v -58391.164062 -39961.375000 36293.425781 +v -48336.777344 -39110.714844 36373.578125 +v -50000.000000 -40000.000000 36289.296875 +v -48585.152344 -39413.578125 36347.402344 +v -48887.261719 -39661.871094 36323.996094 +v -49233.109375 -39847.125000 36305.390625 +v -49608.789062 -39961.367188 36293.429688 +v -48000.000000 -35400.433594 -36481.312500 +v -48000.000000 -38000.000000 -36447.230469 +v -54000.000000 -36858.894531 -36486.164062 +v -48038.496094 -38390.511719 -36425.343750 +v -48152.351562 -38765.628906 -36400.222656 +v -50000.000000 -40000.000000 -36289.296875 +v -48337.082031 -39111.167969 -36373.542969 +v -48585.042969 -39413.468750 -36347.410156 +v -48887.742188 -39662.191406 -36323.964844 +v -49233.101562 -39847.125000 -36305.390625 +v -49608.835938 -39961.375000 -36293.425781 +v -58000.000000 -40000.000000 -36289.296875 +v -58302.460938 -36858.894531 -36486.164062 +v -58212.605469 -33713.429688 -36399.449219 +v -60000.000000 -35400.210938 -36481.308594 +v -60000.000000 -32797.109375 -36320.972656 +v -58391.210938 -39961.367188 -36293.429688 +v -58766.890625 -39847.125000 -36305.390625 +v -59112.738281 -39661.871094 -36323.996094 +v -59414.847656 -39413.578125 -36347.402344 +v -59663.222656 -39110.714844 -36373.578125 +v -59847.609375 -38765.726562 -36400.214844 +v -59961.492188 -38390.566406 -36425.339844 +v -60000.000000 -38000.000000 -36447.230469 +v -60000.000000 -30212.634766 -35970.871094 +v -58122.746094 -30585.947266 -36033.210938 +v -60000.000000 -27659.423828 -35436.656250 +v -60000.000000 -25149.875000 -34723.890625 +v -60000.000000 -22695.154297 -33837.597656 +v -60000.000000 -20307.652344 -32782.925781 +v -54000.000000 -21534.736328 -33349.738281 +v -48000.000000 -22695.009766 -33837.539062 +v -48000.000000 -25149.976562 -34723.925781 +v -48000.000000 -27659.761719 -35436.738281 +v -48000.000000 -30212.750000 -35970.890625 +v -48000.000000 -32797.312500 -36320.988281 +v -54000.000000 -33713.429688 -36399.449219 +v -54000.000000 -18702.537109 -31957.833984 +v -60000.000000 -18000.000000 -31565.093750 +v -59965.742188 -17631.410156 -31350.962891 +v -59863.843750 -17274.683594 -31138.281250 +v -59695.578125 -16939.335938 -30933.351562 +v -58000.000000 -16000.000000 -30332.642578 +v -59462.507812 -16635.785156 -30743.589844 +v -59167.523438 -16376.154297 -30578.011719 +v -58817.292969 -16174.612305 -30447.359375 +v -58421.687500 -16044.959961 -30362.316406 +v -50000.000000 -16000.000000 -30332.642578 +v -48304.433594 -16939.316406 -30933.337891 +v -48136.160156 -17274.667969 -31138.271484 +v -49578.289062 -16044.964844 -30362.320312 +v -49182.835938 -16174.547852 -30447.320312 +v -48832.468750 -16376.154297 -30578.013672 +v -48537.503906 -16635.775391 -30743.580078 +v -48034.257812 -17631.402344 -31350.958984 +v -48000.000000 -18000.000000 -31565.093750 +v -48000.000000 -20307.478516 -32782.843750 +v -58517.636719 -39931.851562 26033.734375 +v -58517.636719 -39931.851562 15620.241211 +v -58517.636719 -39931.851562 5206.747070 +v -59000.000000 -39732.050781 5206.747070 +v -59000.000000 -39732.050781 -5206.747070 +v -59414.894531 -39413.531250 -5206.747070 +v -59414.878906 -39413.546875 -15620.241211 +v -59732.050781 -39000.000000 -15620.241211 +v -59732.050781 -39000.000000 -26033.734375 +v -59931.851562 -38517.636719 -26033.734375 +v -59931.851562 -38517.636719 -15620.241211 +v -59931.851562 -38517.636719 -5206.747070 +v -59732.050781 -39000.000000 -5206.747070 +v -59732.050781 -39000.000000 5206.747070 +v -59414.910156 -39413.515625 5206.747070 +v -59414.925781 -39413.500000 15620.241211 +v -59000.000000 -39732.050781 15620.241211 +v -59000.000000 -39732.050781 26033.734375 +v -59414.941406 -39413.484375 26033.734375 +v -59732.050781 -39000.000000 15620.241211 +v -59931.851562 -38517.636719 5206.747070 +v -59732.050781 -39000.000000 26033.734375 +v -59931.851562 -38517.636719 26033.734375 +v -59931.851562 -38517.636719 15620.241211 +v -59414.863281 -39413.562500 -26033.734375 +v -59000.000000 -39732.050781 -15620.241211 +v -58517.636719 -39931.851562 -5206.747070 +v -59000.000000 -39732.050781 -26033.734375 +v -58517.636719 -39931.851562 -26033.734375 +v -58517.636719 -39931.851562 -15620.241211 +v -48068.148438 -38517.636719 26033.734375 +v -48068.148438 -38517.636719 15620.241211 +v -48068.148438 -38517.636719 5206.747070 +v -48267.949219 -39000.000000 5206.747070 +v -48267.949219 -39000.000000 -5206.747070 +v -48585.089844 -39413.515625 -5206.747070 +v -48585.074219 -39413.500000 -15620.241211 +v -49000.000000 -39732.050781 -15620.241211 +v -49000.000000 -39732.050781 -26033.734375 +v -49482.363281 -39931.851562 -26033.734375 +v -49482.363281 -39931.851562 -15620.241211 +v -49482.363281 -39931.851562 -5206.747070 +v -49000.000000 -39732.050781 -5206.747070 +v -49000.000000 -39732.050781 5206.747070 +v -48585.105469 -39413.531250 5206.747070 +v -48585.121094 -39413.546875 15620.241211 +v -48267.949219 -39000.000000 15620.241211 +v -48267.949219 -39000.000000 26033.734375 +v -48585.136719 -39413.562500 26033.734375 +v -49000.000000 -39732.050781 15620.241211 +v -49482.363281 -39931.851562 5206.747070 +v -49000.000000 -39732.050781 26033.734375 +v -49482.363281 -39931.851562 26033.734375 +v -49482.363281 -39931.851562 15620.241211 +v -48585.058594 -39413.484375 -26033.734375 +v -48267.949219 -39000.000000 -15620.241211 +v -48068.148438 -38517.636719 -5206.747070 +v -48267.949219 -39000.000000 -26033.734375 +v -48068.148438 -38517.636719 -26033.734375 +v -48068.148438 -38517.636719 -15620.241211 +v -49482.363281 -16068.148438 21043.396484 +v -49482.363281 -16068.148438 10521.698242 +v -49482.363281 -16068.148438 0.000000 +v -49000.000000 -16267.949219 0.000000 +v -49000.000000 -16267.949219 -10521.698242 +v -48585.785156 -16585.787109 -10521.698242 +v -48585.785156 -16585.787109 -21043.396484 +v -48267.949219 -17000.000000 -21043.396484 +v -48068.148438 -17482.361328 -21043.396484 +v -48068.148438 -17482.361328 -10521.698242 +v -48068.148438 -17482.361328 0.000000 +v -48267.949219 -17000.000000 0.000000 +v -48267.949219 -17000.000000 10521.698242 +v -48585.785156 -16585.787109 10521.698242 +v -48585.785156 -16585.787109 21043.396484 +v -49000.000000 -16267.949219 21043.396484 +v -48267.949219 -17000.000000 21043.396484 +v -48068.148438 -17482.361328 10521.698242 +v -48068.148438 -17482.361328 21043.396484 +v -49000.000000 -16267.949219 -21043.396484 +v -49482.363281 -16068.148438 -10521.698242 +v -49482.363281 -16068.148438 -21043.396484 +v -49000.000000 -16267.949219 10521.698242 +v -48585.785156 -16585.787109 0.000000 +v -48267.949219 -17000.000000 -10521.698242 +v -59931.851562 -17482.361328 21043.396484 +v -59931.851562 -17482.361328 10521.698242 +v -59931.851562 -17482.361328 0.000000 +v -59732.050781 -17000.000000 0.000000 +v -59732.050781 -17000.000000 -10521.698242 +v -59414.214844 -16585.787109 -10521.698242 +v -59414.214844 -16585.787109 -21043.396484 +v -59000.000000 -16267.949219 -21043.396484 +v -58517.636719 -16068.148438 -21043.396484 +v -58517.636719 -16068.148438 -10521.698242 +v -58517.636719 -16068.148438 0.000000 +v -59000.000000 -16267.949219 0.000000 +v -59000.000000 -16267.949219 10521.698242 +v -59414.214844 -16585.787109 10521.698242 +v -59414.214844 -16585.787109 21043.396484 +v -59732.050781 -17000.000000 21043.396484 +v -59000.000000 -16267.949219 21043.396484 +v -58517.636719 -16068.148438 21043.396484 +v -58517.636719 -16068.148438 10521.698242 +v -59732.050781 -17000.000000 -21043.396484 +v -59931.851562 -17482.361328 -21043.396484 +v -59931.851562 -17482.361328 -10521.698242 +v -59732.050781 -17000.000000 10521.698242 +v -59414.214844 -16585.787109 0.000000 +v -59000.000000 -16267.949219 -10521.698242 +v 310578.718750 100000.000000 -2024.733765 +v 307518.718750 92311.179688 -2372.430664 +v 308000.000000 100000.000000 -2406.707764 +v 305552.812500 92311.179688 -2653.759521 +v 305233.500000 93460.992188 -2699.672607 +v 302416.656250 86802.976562 -2993.918213 +v 302957.687500 84622.351562 -2919.374268 +v 299616.656250 80184.796875 -3283.310059 +v 297767.375000 69244.710938 -3450.603760 +v 296895.718750 73753.500000 -3562.223877 +v 295172.437500 69244.710938 -3739.152100 +v 291432.031250 60839.382812 -4117.172363 +v 292377.531250 61555.886719 -4026.978271 +v 289582.625000 53867.062500 -4314.804199 +v 295172.250000 61555.886719 -3716.218506 +v 292577.093750 53867.062500 -3981.833252 +v 297925.218750 61555.886719 -3322.256836 +v 295526.843750 53867.062500 -3559.713379 +v 299282.718750 61555.886719 -3093.142822 +v 296981.375000 53867.062500 -3314.223633 +v 300625.812500 61555.886719 -2842.109863 +v 298420.437500 53867.062500 -3045.248047 +v 303263.375000 61555.886719 -2272.794189 +v 301246.531250 53867.062500 -2435.240967 +v 305827.312500 61555.886719 -1611.326294 +v 303993.718750 53867.062500 -1726.494873 +v 308306.937500 61555.886719 -854.722656 +v 306650.593750 53867.062500 -915.813538 +v 310462.125000 60368.179688 0.000000 +v 307909.125000 47157.574219 0.000000 +v 313134.406250 100000.000000 -1510.351440 +v 309447.218750 92311.179688 -2029.556763 +v 308488.125000 92311.179688 -2208.820068 +v 305120.343750 84622.351562 -2609.887207 +v 315654.750000 100000.000000 -843.858337 +v 313161.625000 92311.179688 -1150.651489 +v 311330.718750 92311.179688 -1623.007202 +v 307241.875000 84622.351562 -2232.695068 +v 306186.781250 84622.351562 -2429.900635 +v 301584.062500 69244.710938 -2872.062256 +v 300323.593750 69244.710938 -3084.800293 +v 314932.343750 92311.179688 -610.359314 +v 318121.187500 100000.000000 0.000000 +v 316844.687500 93394.695312 0.000000 +v 315568.156250 86789.390625 0.000000 +v 313276.000000 84622.351562 -671.450134 +v 311328.031250 84622.351562 -1265.820190 +v 307660.875000 69244.710938 -1496.157593 +v 305280.218750 69244.710938 -2110.347412 +v 314291.656250 80184.093750 0.000000 +v 309963.281250 69244.710938 -793.631836 +v 313015.156250 73578.789062 0.000000 +v 304994.250000 46178.242188 -976.904358 +v 305356.125000 33946.964844 0.000000 +v 303337.906250 38489.417969 -1037.995239 +v 300958.843750 27445.851562 -1125.740845 +v 297692.968750 27445.851562 -2122.250732 +v 295059.375000 16402.283203 -2287.669189 +v 291419.250000 16402.283203 -3226.783447 +v 289970.843750 10880.499023 -3343.445801 +v 286090.781250 10880.499023 -4180.950684 +v 284506.968750 5358.714844 -4326.835938 +v 282462.281250 5358.714844 -4709.009277 +v 280809.531250 -163.069244 -4867.780273 +v 278673.187500 -163.069244 -5228.344238 +v 276865.593750 -4643.280273 -5431.663574 +v 274340.750000 -163.069244 -5848.334473 +v 272587.125000 -4429.356445 -6035.126953 +v 269942.625000 -163.069244 -6337.387695 +v 264000.000000 -4000.000000 -6852.054199 +v 266649.562500 2262.570557 -6589.992188 +v 302803.093750 20736.359375 0.000000 +v 298579.812500 16402.283203 -1213.486572 +v 293742.562500 10880.499023 -2370.378418 +v 288522.437500 5358.714844 -3460.108154 +v 282923.187500 -163.069244 -4472.721191 +v 281107.031250 -4855.351562 -4688.030273 +v 300250.093750 7525.753418 0.000000 +v 297390.312500 10880.499023 -1257.359375 +v 292425.750000 5358.714844 -2453.087646 +v 287074.031250 -163.069244 -3576.770508 +v 285317.750000 -5065.887695 -3790.349121 +v 296200.781250 5358.714844 -1301.232178 +v 297697.062500 -5684.853027 0.000000 +v 295011.250000 -163.069244 -1345.105103 +v 293647.062500 -5482.352539 -1459.278198 +v 291108.968750 -163.069244 -2535.796875 +v 289509.125000 -5275.455566 -2718.427246 +v 271949.781250 5358.714844 -6130.683105 +v 269366.406250 8684.199219 -6320.966309 +v 273956.968750 10880.499023 -5923.978516 +v 274925.875000 21824.796875 -5769.303223 +v 275964.125000 16402.283203 -5717.274414 +v 279978.500000 27445.851562 -5303.865234 +v 283659.343750 27445.851562 -4894.568848 +v 287386.812500 38489.417969 -4513.062500 +v 290730.062500 38489.417969 -4034.626221 +v 293128.468750 46178.242188 -3797.169678 +v 294680.000000 46178.242188 -3535.304443 +v 280526.281250 35062.128906 -5211.620605 +v 283992.843750 38489.417969 -4890.456543 +v 289981.937500 46178.242188 -4247.447754 +v 286015.468750 48036.527344 -4662.475586 +v 286787.750000 46178.242188 -4602.630371 +v 309313.875000 84622.351562 -1785.453857 +v 302831.156250 69244.710938 -2638.971436 +v 302160.156250 46178.242188 -1841.663574 +v 300326.562500 38489.417969 -1956.832275 +v 299229.718750 46178.242188 -2597.687500 +v 297212.875000 38489.417969 -2760.134277 +v 294316.062500 27445.851562 -2993.458984 +v 296215.093750 46178.242188 -3248.386475 +v 294009.750000 38489.417969 -3451.524658 +v 290842.156250 27445.851562 -3743.295166 +v 287674.562500 16402.283203 -4035.065430 +v 292378.656250 38489.417969 -3756.385010 +v 287285.250000 27445.851562 -4375.688477 +v 279931.906250 16402.283203 -5276.075195 +v 289073.187500 27445.851562 -4073.926514 +v 285767.718750 16402.283203 -4391.468262 +v 284115.000000 10880.499023 -4550.238770 +v 283840.437500 16402.283203 -4716.750977 +v 278068.187500 10880.499023 -5466.828125 +v 282118.000000 10880.499023 -4887.281738 +v 280395.593750 5358.714844 -5057.812988 +v 276204.468750 5358.714844 -5657.581543 +v 309963.281250 69244.710938 793.631836 +v 315654.750000 100000.000000 843.858337 +v 307660.875000 69244.710938 1496.157593 +v 313134.406250 100000.000000 1510.351440 +v 305280.218750 69244.710938 2110.347412 +v 304063.625000 69244.710938 2385.182129 +v 301246.531250 53867.062500 2435.240967 +v 299842.656250 53867.062500 2752.386963 +v 297212.875000 38489.417969 2760.134277 +v 295621.687500 38489.417969 3119.592041 +v 294316.062500 27445.851562 2993.458984 +v 292590.343750 27445.851562 3383.302979 +v 292867.656250 21924.066406 3110.121338 +v 291074.687500 21924.066406 3515.158447 +v 291419.250000 16402.283203 3226.783447 +v 289559.031250 16402.283203 3647.013916 +v 289970.843750 10880.499023 3343.445801 +v 288043.375000 10880.499023 3778.869385 +v 288522.437500 5358.714844 3460.108154 +v 286527.718750 5358.714844 3910.724854 +v 287074.031250 -163.069244 3576.770508 +v 285012.062500 -163.069244 4042.580322 +v 285317.750000 -5065.887695 3790.349121 +v 281107.031250 -4855.351562 4688.030762 +v 282923.187500 -163.069244 4472.721191 +v 280809.531250 -163.069244 4867.780273 +v 282462.281250 5358.714844 4709.009277 +v 280395.593750 5358.714844 5057.812988 +v 282118.000000 10880.499023 4887.281738 +v 280101.750000 10880.499023 5192.628906 +v 281894.531250 16402.283203 5011.443359 +v 279931.906250 16402.283203 5276.075195 +v 281795.625000 21924.066406 5085.321777 +v 277971.312500 21924.066406 5510.569824 +v 279978.500000 27445.851562 5303.865234 +v 274787.937500 21498.789062 5783.007324 +v 280172.312500 34225.437500 5246.944336 +v 283992.843750 38489.417969 4890.456543 +v 282860.593750 40579.589844 4978.453125 +v 285622.656250 47108.101562 4701.877930 +v 289582.625000 53867.062500 4314.804199 +v 291243.500000 60393.710938 4136.223633 +v 294038.218750 66999.453125 3853.193359 +v 295172.437500 69244.710938 3739.152100 +v 296779.843750 73479.593750 3574.060059 +v 297767.375000 69244.710938 3450.603760 +v 299531.968750 79984.679688 3292.021484 +v 302364.656250 86680.070312 2999.317383 +v 305210.093750 93405.648438 2702.132568 +v 308000.000000 100000.000000 2406.707764 +v 299050.937500 69244.710938 3277.531982 +v 310578.718750 100000.000000 2024.733765 +v 300323.593750 69244.710938 3084.800293 +v 301584.062500 69244.710938 2872.062256 +v 296981.375000 53867.062500 3314.223633 +v 298420.437500 53867.062500 3045.248047 +v 294009.750000 38489.417969 3451.524658 +v 302831.156250 69244.710938 2638.971436 +v 275964.125000 16402.283203 5717.274414 +v 269353.437500 8653.560547 6322.245605 +v 273956.968750 10880.499023 5923.978516 +v 271949.781250 5358.714844 6130.683105 +v 276204.468750 5358.714844 5657.581543 +v 274340.750000 -163.069244 5848.334473 +v 276516.218750 -163.069244 5555.000000 +v 272587.125000 -4429.356445 6035.126953 +v 276865.593750 -4643.280273 5431.664062 +v 269942.625000 -163.069244 6337.387695 +v 264000.000000 -4000.000000 6852.054199 +v 278673.187500 -163.069244 5228.344238 +v 278309.000000 5358.714844 5373.814453 +v 278068.187500 10880.499023 5466.828125 +v 289509.125000 -5275.455566 2718.427246 +v 291108.968750 -163.069244 2535.796875 +v 292425.750000 5358.714844 2453.087646 +v 293742.562500 10880.499023 2370.378418 +v 295059.375000 16402.283203 2287.669189 +v 296376.156250 21924.066406 2204.959961 +v 297692.968750 27445.851562 2122.250732 +v 300326.562500 38489.417969 1956.832275 +v 303993.718750 53867.062500 1726.494873 +v 293647.062500 -5482.352539 1459.278320 +v 295011.250000 -163.069244 1345.105103 +v 296200.781250 5358.714844 1301.232178 +v 297390.312500 10880.499023 1257.359375 +v 298579.812500 16402.283203 1213.486572 +v 299769.343750 21924.066406 1169.613770 +v 300958.843750 27445.851562 1125.740845 +v 303337.906250 38489.417969 1037.995239 +v 306650.593750 53867.062500 915.813538 +v 292577.093750 53867.062500 3981.833252 +v 287386.812500 38489.417969 4513.062500 +v 283659.343750 27445.851562 4894.568848 +v 294058.281250 53867.062500 3782.116699 +v 289065.593750 38489.417969 4286.701172 +v 285480.062500 27445.851562 4649.072266 +v 283687.281250 21924.066406 4830.257812 +v 295526.843750 53867.062500 3559.713379 +v 290730.062500 38489.417969 4034.626221 +v 287285.250000 27445.851562 4375.688477 +v 285562.843750 21924.066406 4546.219727 +v 283840.437500 16402.283203 4716.750977 +v 292378.656250 38489.417969 3756.385010 +v 290842.156250 27445.851562 3743.295166 +v 289073.187500 27445.851562 4073.926514 +v 287420.468750 21924.066406 4232.697266 +v 285767.718750 16402.283203 4391.468262 +v 284115.000000 10880.499023 4550.238770 +v 289258.343750 21924.066406 3889.180420 +v 287674.562500 16402.283203 4035.065430 +v 286090.781250 10880.499023 4180.950684 +v 284506.968750 5358.714844 4326.835938 +v 318211.281250 100466.187500 0.000000 +v 314905.625000 100466.187500 -1084.277832 +v 311361.031250 100466.187500 -1895.578003 +v 307642.500000 100466.187500 -2452.157471 +v 302828.750000 92719.093750 -2938.997314 +v 303815.156250 100466.187500 -2772.273438 +v 300687.750000 92719.093750 -3085.380127 +v 298828.218750 92719.093750 -3162.839111 +v 295517.656250 84972.000000 -3483.509766 +v 293466.000000 84972.000000 -3520.706055 +v 289966.593750 77224.898438 -3844.800537 +v 285502.031250 77224.898438 -3776.289551 +v 281626.281250 69477.804688 -4094.608887 +v 279230.000000 69477.804688 -3980.552734 +v 277198.968750 65604.257812 -4135.278809 +v 274736.843750 65604.257812 -3966.480957 +v 272613.687500 61730.707031 -4114.891602 +v 267622.906250 61730.707031 -3617.305664 +v 265319.781250 57857.160156 -3747.769775 +v 260368.390625 57857.160156 -3044.582520 +v 257892.875000 53983.609375 -3150.567871 +v 255438.140625 53983.609375 -2720.088135 +v 252880.046875 50110.062500 -2811.592285 +v 250428.703125 50110.062500 -2324.108643 +v 247790.828125 46236.515625 -2399.747314 +v 245357.859375 46236.515625 -1855.127686 +v 242643.312500 42362.964844 -1913.600342 +v 240244.578125 42362.964844 -1311.961548 +v 237456.734375 38489.417969 -1352.050293 +v 235109.031250 38489.417969 -693.758789 +v 230821.078125 32676.722656 -724.626648 +v 231052.375000 36046.828125 0.000000 +v 226533.140625 26864.025391 -755.494568 +v 221329.843750 23162.955078 0.000000 +v 222245.203125 21051.330078 -786.362488 +v 217957.250000 15238.632812 -817.230347 +v 224906.281250 21051.330078 -1532.523560 +v 220722.781250 15238.632812 -1592.681274 +v 227708.265625 21051.330078 -2235.307617 +v 223634.765625 15238.632812 -2323.052246 +v 230639.828125 21051.330078 -2891.538574 +v 226681.421875 15238.632812 -3005.043213 +v 233689.671875 21051.330078 -3498.041260 +v 229850.984375 15238.632812 -3635.353516 +v 236846.468750 21051.330078 -4051.639404 +v 233131.687500 15238.632812 -4210.682617 +v 243435.625000 21051.330078 -4987.420410 +v 239979.484375 15238.632812 -5183.196777 +v 250316.718750 21051.330078 -5673.475098 +v 247130.703125 15238.632812 -5896.182129 +v 253838.453125 21051.330078 -5914.916016 +v 250790.671875 15238.632812 -6147.100586 +v 257399.218750 21051.330078 -6084.398438 +v 254491.218750 15238.632812 -6323.235840 +v 264592.531250 21051.330078 -6194.784180 +v 261966.906250 15238.632812 -6437.954590 +v 268202.468750 21051.330078 -6129.336426 +v 265718.531250 15238.632812 -6369.937500 +v 271806.156250 21051.330078 -5979.227051 +v 269463.656250 15238.632812 -6213.936035 +v 267121.187500 9425.936523 -6448.644531 +v 264778.718750 3613.239746 -6683.353516 +v 260750.656250 3613.239746 -6851.140137 +v 258266.734375 -2199.456543 -7091.741211 +v 254089.984375 -2199.456543 -7167.465332 +v 255691.750000 -5468.644531 -7258.251465 +v 249634.687500 -5089.984863 -7283.343750 +v 299923.781250 84972.000000 -3236.973145 +v 297018.812500 77224.898438 -3534.949219 +v 294113.875000 69477.804688 -3832.925049 +v 292661.375000 65604.257812 -3981.913086 +v 291208.906250 61730.707031 -4130.900879 +v 288199.656250 61730.707031 -4336.648926 +v 286638.625000 57857.160156 -4493.057617 +v 283930.687500 57857.160156 -4605.856445 +v 282275.406250 53983.609375 -4766.191895 +v 279468.312500 53983.609375 -4817.084473 +v 277718.593750 50110.062500 -4979.131836 +v 271936.875000 50110.062500 -4890.407715 +v 269999.000000 46236.515625 -5049.567383 +v 267043.843750 46236.515625 -4908.910645 +v 265012.812500 42362.964844 -5063.636719 +v 261997.937500 42362.964844 -4856.944336 +v 259874.796875 38489.417969 -5005.354980 +v 253804.031250 38489.417969 -4400.091309 +v 250347.890625 32676.722656 -4595.867676 +v 244276.046875 32676.722656 -3733.553223 +v 240561.250000 26864.025391 -3892.596191 +v 237528.375000 26864.025391 -3360.729004 +v 286851.468750 50110.062500 -4577.864746 +v 288303.937500 53983.609375 -4428.876953 +v 289756.406250 57857.160156 -4279.888672 +v 285077.625000 53983.609375 -4649.466309 +v 281955.593750 46236.515625 -4962.283691 +v 283516.625000 50110.062500 -4805.875000 +v 276491.093750 32676.722656 -5509.809570 +v 278833.562500 38489.417969 -5275.100586 +v 280394.593750 42362.964844 -5118.691895 +v 275654.281250 38489.417969 -5407.532715 +v 277309.562500 42362.964844 -5247.197754 +v 272469.468750 38489.417969 -5465.273438 +v 274219.187500 42362.964844 -5303.226074 +v 266123.250000 38489.417969 -5367.887207 +v 268061.125000 42362.964844 -5208.727051 +v 262981.812500 38489.417969 -5218.363281 +v 274148.625000 26864.025391 -5744.518066 +v 270686.406250 26864.025391 -5888.735352 +v 273170.343750 32676.722656 -5648.134277 +v 267218.187500 26864.025391 -5951.614258 +v 269843.812500 32676.722656 -5708.443848 +v 260307.234375 26864.025391 -5845.561523 +v 263215.218750 32676.722656 -5606.724121 +v 256886.234375 26864.025391 -5682.731934 +v 259934.015625 32676.722656 -5450.547363 +v 253502.750000 26864.025391 -5450.768555 +v 256688.765625 32676.722656 -5228.061523 +v 246891.750000 26864.025391 -4791.644043 +v 262436.218750 -2199.456543 -6918.062012 +v 261750.562500 -5849.678711 -7021.406250 +v 267790.312500 -6225.565430 -6559.384277 +v 273805.375000 -6589.882324 -5853.741211 +v 279782.156250 -6937.697754 -4880.657715 +v 285702.875000 -7270.558105 -3609.204346 +v 291539.812500 -7607.345703 -1999.489746 +v 297247.312500 -8012.153320 0.000000 +v 245767.187500 -2199.456543 -7039.747070 +v 243581.359375 -4719.409180 -7106.861328 +v 241647.328125 -2199.456543 -6843.653320 +v 237535.375000 -4360.738770 -6734.410156 +v 237572.625000 -2199.456543 -6564.302246 +v 231504.921875 -4014.021973 -6167.209961 +v 240758.656250 3613.239746 -6341.595703 +v 233067.218750 3613.239746 -5574.749512 +v 243944.671875 9425.936523 -6118.888672 +v 236523.359375 9425.936523 -5378.973145 +v 229611.078125 -2199.456543 -5770.525879 +v 225495.796875 -3679.902832 -5401.353027 +v 225702.109375 3613.239746 -4528.769043 +v 229416.906250 9425.936523 -4369.726074 +v 221987.328125 -2199.456543 -4687.812012 +v 219513.984375 -3361.472168 -4426.571777 +v 218334.875000 -2199.456543 -4047.290039 +v 213573.953125 -3065.888672 -3225.393066 +v 214806.156250 -2199.456543 -3345.556885 +v 211414.265625 -2199.456543 -2586.286865 +v 218764.578125 3613.239746 -3232.052246 +v 215487.765625 3613.239746 -2498.541992 +v 222723.000000 9425.936523 -3118.547852 +v 219561.265625 9425.936523 -2410.797119 +v 207689.406250 -2805.921875 -1767.103882 +v 208172.328125 -2199.456543 -1773.154419 +v 212355.812500 3613.239746 -1712.996704 +v 216539.296875 9425.936523 -1652.838989 +v 205093.421875 -2199.456543 -909.834045 +v 201884.765625 -2604.790527 0.000000 +v 209381.359375 3613.239746 -878.966187 +v 211607.296875 10279.082031 0.000000 +v 213669.312500 9425.936523 -848.098267 +v 235913.640625 42488.761719 0.000000 +v 237966.484375 42362.964844 -673.188599 +v 243032.437500 46236.515625 -1271.872803 +v 248072.421875 50110.062500 -1796.655029 +v 253066.578125 53983.609375 -2248.469727 +v 257996.234375 57857.160156 -2628.583984 +v 262843.906250 61730.707031 -2938.596924 +v 269926.062500 65604.257812 -3486.841309 +v 276859.968750 69477.804688 -3818.070557 +v 283292.031250 77224.898438 -3671.100098 +v 289377.781250 84972.000000 -3457.969971 +v 296965.437500 92719.093750 -3196.611328 +v 299944.093750 100466.187500 -2874.183105 +v 240823.953125 46236.515625 -652.618408 +v 240774.921875 48930.699219 0.000000 +v 243681.421875 50110.062500 -632.048218 +v 246538.875000 53983.609375 -611.477966 +v 248608.140625 53983.609375 -1191.695312 +v 251395.984375 57857.160156 -1151.606445 +v 253501.531250 57857.160156 -1679.709717 +v 256216.078125 61730.707031 -1621.237061 +v 258342.312500 61730.707031 -2097.192139 +v 260980.187500 65604.257812 -2021.553467 +v 263112.406250 65604.257812 -2445.575928 +v 265670.500000 69477.804688 -2354.071777 +v 267794.937500 69477.804688 -2726.625977 +v 272745.937500 77224.898438 -2514.655029 +v 276835.500000 77224.898438 -3095.448486 +v 281441.812500 84972.000000 -2834.520020 +v 285352.562500 84972.000000 -3224.428223 +v 289598.875000 92719.093750 -2927.607178 +v 291416.125000 92719.093750 -3052.194824 +v 296094.343750 100466.187500 -2776.143555 +v 293253.562500 92719.093750 -3139.650391 +v 245636.187500 55372.636719 0.000000 +v 249396.343750 57857.160156 -590.907776 +v 254183.843750 61730.707031 -1111.517700 +v 258930.640625 65604.257812 -1562.764404 +v 263618.062500 69477.804688 -1945.914673 +v 270786.687500 77224.898438 -2171.063477 +v 277696.968750 84972.000000 -2302.684082 +v 286048.093750 92719.093750 -2573.591553 +v 292331.031250 100466.187500 -2496.411621 +v 250497.453125 61814.570312 0.000000 +v 252253.796875 61730.707031 -570.337585 +v 256971.687500 65604.257812 -1071.428955 +v 261645.187500 69477.804688 -1504.291748 +v 268893.781250 77224.898438 -1794.637085 +v 275902.843750 84972.000000 -1988.055420 +v 282648.000000 92719.093750 -2090.713135 +v 288719.218750 100466.187500 -2053.244629 +v 255111.265625 65604.257812 -549.767395 +v 255358.718750 68256.507812 0.000000 +v 257968.718750 69477.804688 -529.197205 +v 260219.984375 74698.445312 0.000000 +v 263683.656250 77224.898438 -488.056824 +v 265081.250000 81140.382812 0.000000 +v 269398.562500 84972.000000 -446.916443 +v 269942.531250 87582.320312 0.000000 +v 275113.500000 92719.093750 -405.776062 +v 274803.812500 94024.250000 0.000000 +v 281668.031250 100466.187500 -604.200928 +v 279665.062500 100466.187500 0.000000 +v 283861.500000 100466.187500 -1152.516602 +v 277932.531250 92719.093750 -1153.455688 +v 276486.656250 92719.093750 -790.807556 +v 279445.281250 92719.093750 -1492.081909 +v 286220.281250 100466.187500 -1637.885010 +v 281019.031250 92719.093750 -1805.047241 +v 297565.750000 84972.000000 -3398.197510 +v 294443.718750 77224.898438 -3711.014648 +v 291321.687500 69477.804688 -4023.831787 +v 289760.656250 65604.257812 -4180.240234 +v 287354.093750 84972.000000 -3361.647461 +v 274169.531250 84972.000000 -1643.359497 +v 272503.406250 84972.000000 -1270.401001 +v 267074.312500 77224.898438 -1387.346313 +v 270910.937500 84972.000000 -870.985107 +v 265335.250000 77224.898438 -951.162659 +v 259759.546875 69477.804688 -1031.340210 +v 292207.093750 77224.898438 -3804.180176 +v 286467.156250 69477.804688 -4168.895020 +v 279688.406250 65604.257812 -4253.768555 +v 275167.937500 61730.707031 -4290.005371 +v 270490.531250 57857.160156 -4263.302246 +v 263016.625000 53983.609375 -3878.234131 +v 255417.359375 50110.062500 -3256.553467 +v 250321.968750 46236.515625 -2903.096436 +v 245152.968750 42362.964844 -2475.386230 +v 239928.750000 38489.417969 -1972.072998 +v 233273.250000 32676.722656 -1412.208130 +v 281106.281250 77224.898438 -3521.249512 +v 288896.531250 69477.804688 -4124.850586 +v 287241.250000 65604.257812 -4285.186035 +v 285585.968750 61730.707031 -4445.521484 +v 272229.218750 69477.804688 -3356.377197 +v 284717.437500 65604.257812 -4330.942383 +v 277750.531250 61730.707031 -4412.928711 +v 273136.937500 57857.160156 -4444.731445 +v 268367.375000 53983.609375 -4411.712891 +v 260713.468750 50110.062500 -4008.698486 +v 252941.843750 46236.515625 -3362.538818 +v 247763.875000 42362.964844 -2994.600342 +v 242515.093750 38489.417969 -2551.024902 +v 235855.250000 32676.722656 -2059.817871 +v 229089.765625 26864.025391 -1472.365845 +v 265319.406250 65604.257812 -2832.611572 +v 260554.328125 61730.707031 -2537.080078 +v 255704.437500 57857.160156 -2172.831055 +v 282967.750000 61730.707031 -4492.989746 +v 275812.625000 57857.160156 -4572.088379 +v 281218.031250 57857.160156 -4655.037109 +v 273874.750000 53983.609375 -4731.248047 +v 271105.906250 53983.609375 -4599.458008 +v 266244.250000 50110.062500 -4560.123047 +v 258410.328125 46236.515625 -4139.162598 +v 250466.343750 42362.964844 -3468.524414 +v 245205.781250 38489.417969 -3086.104492 +v 238556.671875 32676.722656 -2664.529541 +v 231781.750000 26864.025391 -2147.562744 +v 250786.968750 53983.609375 -1738.182373 +v 245820.281250 50110.062500 -1231.784058 +v 269074.875000 50110.062500 -4754.184082 +v 264121.093750 46236.515625 -4708.533691 +v 280620.125000 50110.062500 -4926.527344 +v 275968.875000 46236.515625 -5141.179199 +v 278964.843750 46236.515625 -5086.862305 +v 256107.171875 42362.964844 -4269.626953 +v 247990.828125 38489.417969 -3574.510010 +v 241367.078125 32676.722656 -3223.416748 +v 234598.250000 26864.025391 -2778.034180 +v 226012.281250 9425.936523 -3772.665771 +v 222173.578125 3613.239746 -3909.977783 +v 247742.890625 9425.936523 -6379.284668 +v 244695.109375 3613.239746 -6611.469238 +v 251583.203125 9425.936523 -6562.072754 +v 248675.203125 3613.239746 -6800.910156 +v 259341.265625 9425.936523 -6681.125000 +v 256715.625000 3613.239746 -6924.295410 +v 263234.593750 9425.936523 -6610.539062 +v -64152.351562 -42470.871094 -35936.941406 +v -64152.351562 -39813.839844 -36308.804688 +v -60000.000000 -16728.656250 -30802.083984 +v -64136.160156 -16728.656250 -30802.083984 +v -60000.000000 -14508.689453 -29292.630859 +v -64136.160156 -14508.689453 -29292.630859 +v -76000.000000 -14508.691406 -29292.623047 +v -86298.500000 -14509.168945 -29290.154297 +v -86298.500000 -12408.821289 -27622.183594 +v -94287.843750 -12410.503906 -27613.984375 +v -94287.843750 -10443.577148 -25793.628906 +v -95727.070312 -10444.067383 -25791.394531 +v -95727.070312 -8049.704102 -23139.736328 +v -101982.093750 -8052.670898 -23127.619141 +v -101982.093750 -5933.588379 -20248.562500 +v -105155.640625 -5935.677734 -20241.091797 +v -105155.640625 -4105.428711 -17167.066406 +v -105856.500000 -4105.948242 -17165.490234 +v -105934.820312 -2578.142334 -13928.258789 +v -109817.234375 -4109.304688 -17155.310547 +v -109817.234375 -2581.439453 -13920.145508 +v -114584.210938 -2586.486084 -13907.726562 +v -114584.210938 -1374.556885 -10544.965820 +v -115000.140625 -1375.052124 -10544.041016 +v -115038.132812 -492.656067 -7083.666016 +v -117934.601562 -1378.806885 -10537.035156 +v -117934.601562 -496.365112 -7079.016602 +v -124012.781250 -505.649445 -7067.378418 +v -124012.781250 33.753380 -3549.960205 +v -124077.437500 33.643349 -3549.890869 +v -124012.781250 216.565765 0.000000 +v -124082.429688 216.447220 0.000000 +v -124012.781250 33.753380 3549.960205 +v -124087.421875 33.626331 3549.880127 +v -124012.781250 -505.649445 7067.378418 +v -124092.414062 -505.785004 7067.208496 +v -124012.781250 -1388.091187 10519.711914 +v -124097.414062 -1388.235229 10519.443359 +v -124012.781250 -2600.020264 13874.419922 +v -124102.406250 -2600.172852 13874.043945 +v -124012.781250 -4127.885254 17098.958984 +v -124107.398438 -4128.046387 17098.470703 +v -124012.781250 -5958.134766 20160.787109 +v -124112.390625 -5958.304688 20160.179688 +v -124012.781250 -8077.217285 23027.363281 +v -124117.382812 -8077.395508 23026.634766 +v -124012.781250 -10471.581055 25666.144531 +v -124122.375000 -10471.767578 25665.294922 +v -124012.781250 -13124.480469 28047.765625 +v -124127.375000 -13124.675781 28046.792969 +v -124012.781250 -16006.393555 30155.570312 +v -124132.367188 -16006.597656 30154.480469 +v -124012.781250 -19084.603516 31976.078125 +v -124137.359375 -19084.816406 31974.875000 +v -124012.781250 -22326.396484 33495.812500 +v -124142.351562 -22326.617188 33494.500000 +v -122710.617188 -22735.162109 33675.230469 +v -123160.070312 -23113.468750 33818.914062 +v -126063.867188 -22330.003906 33474.371094 +v -127995.640625 -23113.394531 33763.597656 +v -128444.468750 -22735.548828 33609.960938 +v -128965.617188 -22449.130859 33488.050781 +v -129539.523438 -22269.796875 33407.101562 +v -126063.867188 -19088.212891 31955.611328 +v -130142.859375 -22208.501953 33373.867188 +v -133441.359375 -19103.255859 31870.296875 +v -130441.351562 -22208.501953 33369.941406 +v -133441.359375 -22345.046875 33385.003906 +v -131043.507812 -22269.554688 33387.226562 +v -131617.765625 -22448.781250 33452.992188 +v -132139.406250 -22735.324219 33561.152344 +v -132589.343750 -23114.189453 33703.195312 +v -134403.546875 -22347.251953 33371.906250 +v -134552.203125 -22347.597656 33369.855469 +v -134552.203125 -19105.804688 31855.835938 +v -138968.000000 -22269.814453 33268.730469 +v -142869.921875 -19127.310547 31733.861328 +v -139571.421875 -22208.501953 33233.339844 +v -139869.921875 -22208.501953 33228.324219 +v -140471.937500 -22269.527344 33243.339844 +v -142869.921875 -22369.103516 33242.082031 +v -141046.125000 -22448.693359 33306.808594 +v -141567.234375 -22734.802734 33412.640625 +v -143272.921875 -22370.253906 33235.246094 +v -143335.140625 -22370.431641 33234.183594 +v -143335.140625 -19128.640625 31726.320312 +v -148396.500000 -22269.832031 33095.605469 +v -152298.500000 -19156.880859 31566.160156 +v -149000.000000 -22208.501953 33058.035156 +v -149298.500000 -22208.501953 33051.914062 +v -149900.156250 -22269.453125 33064.605469 +v -152425.562500 -19157.316406 31563.685547 +v -152451.062500 -19157.404297 31563.189453 +v -152451.062500 -16079.193359 29766.187500 +v -161727.062500 -19191.929688 31367.367188 +v -161727.062500 -16113.719727 29581.515625 +v -161896.015625 -16114.397461 29577.892578 +v -161888.953125 -13232.456055 27510.607422 +v -161938.421875 -13232.654297 27509.619141 +v -161938.421875 -10579.754883 25173.693359 +v -171155.640625 -13275.068359 27312.541016 +v -171155.640625 -10622.335938 24993.349609 +v -172451.406250 -10629.734375 24966.074219 +v -172392.156250 -8235.241211 22400.396484 +v -172925.734375 -8238.451172 22390.203125 +v -172925.734375 -6119.592773 19602.943359 +v -180584.203125 -8295.828125 22235.568359 +v -180584.203125 -6177.804688 19467.560547 +v -181268.421875 -6184.249512 19454.787109 +v -181234.015625 -4354.681641 16500.726562 +v -184204.140625 -4385.929688 16452.595703 +v -184204.140625 -2859.348389 13349.948242 +v -190012.781250 -2937.008545 13269.132812 +v -190012.781250 -1727.085205 10060.778320 +v -199441.359375 -3117.432617 13124.572266 +v -199441.359375 -1910.190674 9951.170898 +v -207258.000000 -3331.060303 12990.864258 +v -207258.000000 -2127.328857 9849.791992 +v -208869.921875 -3383.666992 12961.580078 +v -208869.921875 -2180.832520 9827.588867 +v -218298.500000 -3760.614990 12777.290039 +v -218298.500000 -2564.436768 9687.858398 +v -218470.156250 -2572.655518 9685.147461 +v -218459.890625 -1701.289551 6506.808105 +v -218603.625000 -1708.294922 6505.280273 +v -218603.625000 -1176.018188 3267.616943 +v -229622.421875 -2358.516357 6378.499512 +v -229622.421875 -1831.427612 3203.935059 +v -235007.421875 -2771.598633 6308.684082 +v -235007.421875 -2247.886230 3168.866211 +v -240147.796875 -3238.276123 6236.277832 +v -240147.796875 -2718.427490 3132.496582 +v -245173.421875 -3775.718750 6159.160645 +v -245173.421875 -3260.366699 3093.760254 +v -246000.000000 -3872.859619 6145.803711 +v -246000.000000 -3358.324463 3087.051270 +v -246000.000000 -3358.324707 3087.051270 +v -248078.828125 -3616.854980 3069.716064 +v -247948.687500 -3426.442627 0.000000 +v -250013.218750 -3701.195068 0.000000 +v -250013.218750 -3874.114990 -3052.954590 +v -254646.390625 -4393.362793 0.000000 +v -254646.390625 -4564.309570 -3010.036133 +v -259052.109375 -5166.860352 0.000000 +v -259052.109375 -5335.587402 -2964.961426 +v -263209.531250 -6026.339355 0.000000 +v -263209.531250 -6192.585938 -2917.686768 +v -267100.875000 -6975.647461 0.000000 +v -267100.875000 -7139.140625 -2868.182861 +v -270730.375000 -8012.690918 0.000000 +v -270730.375000 -8173.165039 -2816.521240 +v -274112.250000 -9132.713867 0.000000 +v -274112.250000 -9289.916016 -2762.818604 +v -277292.500000 -10497.543945 -2706.600586 +v -277288.531250 -10949.315430 -5388.537598 +v -279620.156250 -11937.719727 -5298.408203 +v -279620.156250 -12665.270508 -7886.620605 +v -279694.187500 -12697.860352 -7882.178711 +v -279686.000000 -13692.874023 -10396.432617 +v -280190.000000 -13913.043945 -10356.141602 +v -280190.000000 -15166.337891 -12763.001953 +v -282914.312500 -15192.665039 -10125.078125 +v -282914.312500 -16413.019531 -12478.236328 +v -285447.937500 -16533.199219 -9887.871094 +v -285447.937500 -17718.988281 -12185.900391 +v -287805.093750 -17930.099609 -9644.980469 +v -287805.093750 -19079.824219 -11886.560547 +v -288000.000000 -18052.701172 -9623.844727 +v -288000.000000 -19199.257812 -11860.511719 +v -290011.843750 -19387.076172 -9395.459961 +v -290011.843750 -20499.142578 -11579.048828 +v -292046.875000 -20874.814453 -9143.981445 +v -292046.875000 -21948.386719 -11269.124023 +v -293399.062500 -22757.419922 -10620.415039 +v -292402.468750 -22798.000000 -12180.916016 +v -290011.843750 -21831.298828 -13652.453125 +v -288000.000000 -20572.732422 -13984.316406 +v -290545.031250 -23014.216797 -14653.735352 +v -288000.000000 -22162.957031 -15972.686523 +v -289956.906250 -23413.449219 -15688.538086 +v -289532.843750 -24020.796875 -16700.667969 +v -287712.718750 -22967.230469 -17055.960938 +v -287878.781250 -23314.298828 -17277.732422 +v -76000.000000 -16728.658203 -30802.076172 +v -86298.500000 -16729.134766 -30799.480469 +v -94287.843750 -14510.851562 -29281.460938 +v -95727.070312 -12410.994141 -27611.593750 +v -101982.093750 -10447.035156 -25777.888672 +v -105155.640625 -8054.760254 -23119.083984 +v -105778.203125 -5936.138184 -20239.445312 +v -109817.234375 -5939.554199 -20227.230469 +v -114584.210938 -4114.351074 -17140.005859 +v -114962.156250 -2586.935547 -13906.620117 +v -117934.601562 -2590.736084 -13897.267578 +v -124012.781250 -1388.091187 -10519.711914 +v -124072.445312 -505.750977 -7067.250977 +v -126063.867188 -509.258270 -7062.854492 +v -126063.867188 30.144550 -3547.687988 +v -133441.359375 15.102141 -3538.216309 +v -133441.359375 197.914520 0.000000 +v -133921.000000 14.010442 -3537.529053 +v -133958.078125 196.737839 0.000000 +v -134552.203125 12.552354 -3536.610840 +v -134552.203125 195.364746 0.000000 +v -142869.921875 173.858490 0.000000 +v -142869.921875 -8.953900 3523.069336 +v -143086.406250 173.241531 0.000000 +v -143101.953125 -9.615255 3522.653076 +v -143335.140625 172.529083 0.000000 +v -143335.140625 -10.283306 3522.232422 +v -152298.500000 -38.522594 3504.451416 +v -152298.500000 -577.925415 6976.777832 +v -152374.593750 -38.783649 3504.286865 +v -152379.687500 -578.203979 6976.428711 +v -152451.062500 -39.046360 3504.121582 +v -152451.062500 -578.449158 6976.121094 +v -161727.062500 -612.975891 6932.840820 +v -161727.062500 -1495.417603 10319.454102 +v -161839.500000 -613.426514 6932.275879 +v -161846.562500 -1495.896606 10318.560547 +v -161938.421875 -613.823547 6931.778320 +v -161938.421875 -1496.265259 10317.873047 +v -171155.640625 -1539.418213 10243.956055 +v -171155.640625 -2751.270996 13510.725586 +v -172155.265625 -1545.287598 10235.349609 +v -172214.484375 -2757.469238 13498.697266 +v -172925.734375 -1550.032227 10228.634766 +v -172925.734375 -2761.833252 13490.518555 +v -180584.203125 -2821.368408 13397.348633 +v -180584.203125 -4348.469727 16511.011719 +v -181199.593750 -2827.322021 13389.446289 +v -86298.500000 -19054.917969 -32144.445312 +v -86298.500000 -21472.714844 -33319.335938 +v -82397.031250 -22269.722656 -33663.082031 +v -81823.007812 -22449.029297 -33737.164062 +v -81301.539062 -22735.595703 -33853.156250 +v -80852.640625 -23113.539062 -34001.894531 +v -80488.304688 -23567.962891 -34174.476562 +v -80220.101562 -24080.597656 -34361.121094 +v -80055.617188 -24633.523438 -34553.019531 +v -80000.000000 -25208.501953 -34742.382812 +v -80000.000000 -29000.000000 -35740.378906 +v -80056.382812 -29578.876953 -35855.511719 +v -80224.304688 -30138.205078 -35957.570312 +v -80498.585938 -30656.179688 -36044.042969 +v -80869.648438 -31112.248047 -36113.808594 +v -81323.820312 -31488.056641 -36166.785156 +v -81844.171875 -31768.402344 -36203.625000 +v -82410.226562 -31941.457031 -36225.144531 +v -94287.843750 -34460.523438 -36431.730469 +v -94287.843750 -37140.562500 -36466.171875 +v -101982.093750 -34463.980469 -36409.500000 +v -101982.093750 -37144.019531 -36443.917969 +v -109817.234375 -34469.945312 -36371.140625 +v -109817.234375 -37149.984375 -36405.523438 +v -117934.671875 -34479.242188 -36311.363281 +v -117932.289062 -37159.277344 -36345.710938 +v -126063.867188 -37172.175781 -36262.710938 +v -126063.867188 -39847.613281 -36092.453125 +v -134552.203125 -37189.765625 -36149.488281 +v -134552.203125 -39865.203125 -35979.757812 +v -143335.140625 -37212.601562 -36002.515625 +v -143335.140625 -39888.039062 -35833.480469 +v -152451.062500 -37241.367188 -35817.398438 +v -152451.062500 -39916.804688 -35649.230469 +v -161938.421875 -37276.742188 -35589.726562 +v -161938.421875 -39952.179688 -35422.628906 +v -172925.734375 -37326.726562 -35281.917969 +v -172925.734375 -40001.878906 -35116.261719 +v -184215.375000 -37398.937500 -34913.890625 +v -184216.250000 -40072.128906 -34749.929688 +v -207258.000000 -37665.781250 -33975.164062 +v -207258.000000 -40323.121094 -33815.644531 +v -218603.625000 -37886.851562 -33399.964844 +v -218603.625000 -40526.945312 -33243.144531 +v -218603.625000 -43148.875000 -32902.679688 +v -218603.625000 -45739.031250 -32383.802734 +v -218603.625000 -48283.781250 -31691.748047 +v -229622.421875 -48480.058594 -31074.113281 +v -218603.625000 -50769.515625 -30831.750000 +v -229622.421875 -50941.562500 -30230.875000 +v -218603.625000 -53182.613281 -29809.042969 +v -229622.421875 -53331.140625 -29228.097656 +v -218603.625000 -55509.449219 -28628.859375 +v -229622.421875 -55635.296875 -28070.916016 +v -218603.625000 -57736.406250 -27296.437500 +v -229622.421875 -57840.550781 -26764.460938 +v -218603.625000 -59849.863281 -25817.007812 +v -229622.421875 -59933.410156 -25313.865234 +v -218603.625000 -61836.203125 -24195.808594 +v -229622.421875 -61900.390625 -23724.259766 +v -218603.625000 -63682.203125 -22438.435547 +v -229622.421875 -63728.394531 -22001.136719 +v -218603.625000 -65379.207031 -20554.740234 +v -229622.421875 -65408.863281 -20154.152344 +v -218603.625000 -66921.531250 -18557.314453 +v -229622.421875 -66936.156250 -18195.654297 +v -218603.625000 -68303.539062 -16458.794922 +v -229622.421875 -68304.687500 -16138.032227 +v -218603.625000 -69519.578125 -14271.816406 +v -229622.421875 -69508.882812 -13993.675781 +v -218603.625000 -70564.015625 -12009.018555 +v -229622.421875 -70543.132812 -11774.976562 +v -218603.625000 -71431.203125 -9683.035156 +v -229622.421875 -71401.875000 -9494.324219 +v -218603.625000 -72115.500000 -7306.505371 +v -229622.421875 -72079.500000 -7164.109863 +v -218603.625000 -72611.273438 -4892.064941 +v -229622.421875 -72570.437500 -4796.724121 +v -218603.625000 -72912.875000 -2452.350830 +v -229622.421875 -72869.101562 -2404.557373 +v -218603.625000 -73014.656250 0.000000 +v -229622.421875 -72969.898438 0.000000 +v -218603.625000 -72834.265625 3267.616943 +v -229622.421875 -72791.257812 3203.935059 +v -218603.625000 -72301.984375 6505.280273 +v -229622.421875 -72264.164062 6378.499512 +v -218603.625000 -71431.203125 9683.035156 +v -229622.421875 -71401.875000 9494.324219 +v -218603.625000 -70235.281250 12770.928711 +v -229622.421875 -70217.609375 12522.038086 +v -218603.625000 -68727.601562 15739.006836 +v -229622.421875 -68724.625000 15432.271484 +v -218603.625000 -66921.531250 18557.314453 +v -229622.421875 -66936.156250 18195.654297 +v -218603.625000 -64830.445312 21195.900391 +v -229622.421875 -64865.449219 20782.816406 +v -218603.625000 -62467.714844 23624.806641 +v -229622.421875 -62525.746094 23164.386719 +v -218603.625000 -59849.863281 25817.007812 +v -229622.421875 -59933.410156 25313.865234 +v -218603.625000 -57006.023438 27757.169922 +v -229622.421875 -57117.289062 27216.214844 +v -218603.625000 -53968.480469 29432.886719 +v -229622.421875 -54109.347656 28859.273438 +v -218603.625000 -50769.515625 30831.750000 +v -229622.421875 -50941.562500 30230.875000 +v -218603.625000 -47441.417969 31941.351562 +v -229622.421875 -47645.902344 31318.851562 +v -94287.843750 -39816.000000 -36294.957031 +v -101982.093750 -39819.457031 -36272.808594 +v -109817.234375 -39825.421875 -36234.593750 +v -117929.914062 -39834.714844 -36175.082031 +v -117927.539062 -42491.746094 -35804.609375 +v -126063.867188 -42504.648438 -35722.804688 +v -126063.867188 -45129.476562 -35159.453125 +v -134552.203125 -42522.238281 -35611.265625 +v -134552.203125 -45147.070312 -35049.675781 +v -143335.140625 -42545.074219 -35466.484375 +v -143335.140625 -45169.906250 -34907.175781 +v -152451.062500 -42573.839844 -35284.121094 +v -152451.062500 -45198.667969 -34727.687500 +v -161938.421875 -42609.210938 -35059.839844 +v -161938.421875 -45234.042969 -34506.945312 +v -172925.734375 -42658.632812 -34756.613281 +v -172925.734375 -45283.187500 -34208.500000 +v -184217.125000 -42726.933594 -34394.003906 +v -184218.000000 -45349.562500 -33851.578125 +v -207258.000000 -42962.183594 -33469.316406 +v -207258.000000 -45569.257812 -32941.503906 +v -76000.000000 -39813.839844 -36308.792969 +v -76000.000000 -42470.875000 -35936.929688 +v -235000.937500 -48597.523438 -30734.417969 +v -235000.937500 -46093.695312 -31405.568359 +v -240147.796875 -46240.949219 -31044.689453 +v -245064.375000 -46402.582031 -30669.490234 +v -246000.000000 -46435.976562 -30594.302734 +v -250013.218750 -46590.019531 -30256.386719 +v -250013.218750 -44107.226562 -30741.177734 +v -246000.000000 -43932.156250 -31084.507812 +v -218603.625000 -35242.218750 -33368.421875 +v -207258.000000 -35003.871094 -33943.074219 +v -184214.500000 -34721.148438 -34880.945312 +v -172925.734375 -34646.968750 -35248.593750 +v -161938.421875 -34596.703125 -35556.113281 +v -152451.062500 -34561.328125 -35783.570312 +v -143335.140625 -34532.566406 -35968.515625 +v -134552.203125 -34509.730469 -36115.347656 +v -126063.867188 -34492.136719 -36228.464844 +v -121012.781250 -32000.000000 -36068.332031 +v -120714.289062 -32000.000000 -36071.285156 +v -218603.625000 -32606.667969 -33149.804688 +v -207258.000000 -32351.099609 -33720.695312 +v -187012.781250 -32000.000000 -34543.832031 +v -196142.859375 -32000.000000 -34182.363281 +v -187603.250000 -31941.316406 -34514.460938 +v -195553.812500 -31941.603516 -34199.691406 +v -188169.562500 -31768.007812 -34470.972656 +v -194988.031250 -31768.824219 -34200.921875 +v -188689.640625 -31487.593750 -34413.605469 +v -194467.437500 -31488.564453 -34184.550781 +v -189142.937500 -31112.453125 -34342.550781 +v -194012.343750 -31112.089844 -34149.046875 +v -189513.812500 -30656.755859 -34257.824219 +v -193641.812500 -30656.738281 -34093.527344 +v -189788.093750 -30139.150391 -34160.281250 +v -193367.203125 -30138.324219 -34017.414062 +v -189956.234375 -29579.759766 -34051.519531 +v -193199.187500 -29578.638672 -33921.726562 +v -190012.781250 -29000.000000 -33934.257812 +v -193142.859375 -29000.000000 -33808.945312 +v -191753.296875 -26876.373047 -33363.167969 +v -193142.859375 -25208.501953 -32821.441406 +v -190012.781250 -25208.501953 -32947.953125 +v -189957.437500 -24634.943359 -32764.513672 +v -193198.890625 -24631.363281 -32632.177734 +v -190012.781250 -24299.982422 -32649.339844 +v -193364.140625 -24077.691406 -32436.517578 +v -189793.265625 -24082.042969 -32582.644531 +v -189524.828125 -23568.488281 -32409.855469 +v -193632.734375 -23565.564453 -32242.302734 +v -189159.734375 -23113.117188 -32254.693359 +v -193996.750000 -23112.265625 -32058.207031 +v -188709.203125 -22734.199219 -32126.222656 +v -194445.234375 -22735.031250 -31893.789062 +v -190012.781250 -21808.103516 -31698.833984 +v -194965.515625 -22449.179688 -31758.335938 +v -195539.109375 -22269.880859 -31661.230469 +v -217429.343750 -31111.748047 -33011.003906 +v -216976.109375 -31487.085938 -33094.039062 +v -218298.500000 -29000.000000 -32566.521484 +v -218603.625000 -29993.816406 -32749.287109 +v -217799.750000 -30656.421875 -32915.062500 +v -218073.828125 -30139.099609 -32807.460938 +v -218241.921875 -29579.876953 -32690.248047 +v -218298.500000 -25208.501953 -31546.791016 +v -218603.625000 -27417.283203 -32172.101562 +v -218303.265625 -27408.185547 -32187.876953 +v -218603.625000 -22427.656250 -30508.667969 +v -217811.921875 -23570.607422 -31006.369141 +v -218079.890625 -24084.277344 -31177.443359 +v -218603.625000 -20041.800781 -29432.886719 +v -218603.625000 -17746.744141 -28201.375000 +v -218603.625000 -15556.105469 -26819.369141 +v -218341.796875 -15545.955078 -26830.835938 +v -218349.500000 -13473.277344 -25302.597656 +v -218603.625000 -13483.505859 -25292.101562 +v -218357.203125 -11532.303711 -23634.314453 +v -218603.625000 -11542.565430 -23624.806641 +v -218367.468750 -9169.600586 -21204.074219 +v -218603.625000 -9179.833984 -21195.900391 +v -218377.734375 -7078.619629 -18564.162109 +v -218603.625000 -7088.746582 -18557.314453 +v -218388.015625 -5272.730957 -15744.549805 +v -218603.625000 -5282.676758 -15739.006836 +v -218398.281250 -3765.301758 -12775.212891 +v -218603.625000 -3774.996826 -12770.928711 +v -218408.546875 -2569.700195 -9686.121094 +v -218603.625000 -2579.078613 -9683.035156 +v -218418.812500 -1699.293823 -6507.244141 +v -218603.625000 -1708.294922 -6505.280273 +v -218429.093750 -1167.449463 -3268.548828 +v -218603.625000 -1176.018188 -3267.616943 +v -218439.359375 -987.533813 0.000000 +v -218603.625000 -995.620972 0.000000 +v -218449.625000 -1168.455078 3268.439209 +v -229622.421875 -9757.234375 -20782.816406 +v -229622.421875 -7686.527832 -18195.654297 +v -235007.421875 -8065.477539 -17996.494141 +v -240147.796875 -8493.101562 -17789.945312 +v -245173.421875 -8985.090820 -17569.955078 +v -246000.000000 -11095.359375 -20024.632812 +v -247033.781250 -11205.822266 -19969.261719 +v -247164.921875 -9203.400391 -17477.160156 +v -250013.218750 -11546.177734 -19803.458984 +v -250013.218750 -9541.764648 -17338.212891 +v -254646.390625 -10167.286133 -17094.472656 +v -254646.390625 -8455.831055 -14498.327148 +v -259052.109375 -9176.583008 -14281.216797 +v -259052.109375 -7766.435547 -11588.050781 +v -263209.531250 -8587.699219 -11403.286133 +v -263209.531250 -7485.589844 -8646.076172 +v -267100.875000 -8410.731445 -8499.378906 +v -267100.875000 -7621.541992 -5710.073242 +v -270730.375000 -8646.655273 -5607.223633 +v -245173.421875 -11009.688477 -20068.152344 +v -250013.218750 -13810.975586 -22072.802734 +v -254646.390625 -12148.826172 -19525.062500 +v -254646.390625 -14387.780273 -21762.503906 +v -259052.109375 -12821.628906 -19232.677734 +v -259052.109375 -15031.512695 -21436.613281 +v -263209.531250 -13568.579102 -18926.023438 +v -263209.531250 -15745.976562 -21094.820312 +v -267100.875000 -14392.979492 -18604.910156 +v -267100.875000 -16534.316406 -20736.906250 +v -270730.375000 -15293.020508 -18269.796875 +v -270730.375000 -17394.806641 -20363.394531 +v -274112.250000 -16264.602539 -17921.449219 +v -274112.250000 -18323.535156 -19975.125000 +v -277264.718750 -19317.927734 -19572.412109 +v -277261.750000 -20970.525391 -20954.142578 +v -279620.156250 -21776.060547 -20599.863281 +v -278402.031250 -21737.150391 -21081.392578 +v -278589.000000 -21828.324219 -21073.625000 +v -246902.515625 -13471.483398 -22265.507812 +v -246000.000000 -13379.336914 -22319.320312 +v -250013.218750 -15671.465820 -23630.566406 +v -246000.000000 -17259.099609 -25337.353516 +v -246000.000000 -15255.583008 -23894.482422 +v -246803.984375 -15334.553711 -23843.208984 +v -246705.359375 -17325.482422 -25289.697266 +v -250013.218750 -17658.158203 -25057.501953 +v -250013.218750 -19757.996094 -26348.718750 +v -254646.390625 -18191.062500 -24705.242188 +v -254646.390625 -20266.939453 -25978.308594 +v -259052.109375 -18785.414062 -24335.285156 +v -259052.109375 -20834.337891 -25589.287109 +v -263209.531250 -19444.693359 -23947.275391 +v -263209.531250 -21463.498047 -25181.281250 +v -267196.125000 -21938.373047 -24607.871094 +v -266902.406250 -22188.990234 -24816.410156 +v -266664.937500 -22487.351562 -25033.902344 +v -266488.812500 -22824.390625 -25253.265625 +v -266379.156250 -23191.183594 -25467.968750 +v -263209.531250 -23578.529297 -26280.910156 +v -266341.406250 -23577.994141 -25671.529297 +v -266341.406250 -26729.695312 -27052.812500 +v -263209.531250 -25777.236328 -27241.484375 +v -263209.531250 -28047.070312 -28058.333984 +v -259052.109375 -27516.134766 -28512.955078 +v -259052.109375 -29879.281250 -29192.234375 +v -254646.390625 -29430.865234 -29636.027344 +v -254646.390625 -31872.419922 -30167.714844 +v -250013.218750 -31497.435547 -30597.859375 +v -250013.218750 -34001.988281 -30972.066406 +v -246111.984375 -31222.960938 -30930.402344 +v -246012.812500 -33742.117188 -31316.912109 +v -246000.000000 -31215.576172 -30939.589844 +v -246000.000000 -19376.718750 -26642.992188 +v -246606.656250 -19431.191406 -26599.931641 +v -250013.218750 -21957.923828 -27499.326172 +v -254646.390625 -22441.763672 -27112.740234 +v -259052.109375 -22980.925781 -26706.732422 +v -246000.000000 -21595.277344 -27806.451172 +v -246507.875000 -21638.591797 -27768.861328 +v -246000.000000 -23901.609375 -28822.785156 +v -246409.015625 -23934.583984 -28791.433594 +v -246310.078125 -26306.058594 -29662.591797 +v -246000.000000 -26282.546875 -29687.048828 +v -246000.000000 -28724.923828 -30394.298828 +v -246211.062500 -28739.894531 -30377.269531 +v -250013.218750 -29027.697266 -30058.591797 +v -250013.218750 -36528.296875 -31176.320312 +v -250013.218750 -39063.312500 -31205.792969 +v -250013.218750 -41593.972656 -31059.275391 +v -246000.000000 -41397.617188 -31406.158203 +v -254646.390625 -41853.746094 -30622.644531 +v -254646.390625 -44338.324219 -30309.017578 +v -259052.109375 -42140.867188 -30164.074219 +v -259052.109375 -44593.183594 -29855.144531 +v -263209.531250 -42456.808594 -29683.126953 +v -263209.531250 -44873.078125 -29379.123047 +v -267100.875000 -42802.789062 -29179.498047 +v -267100.875000 -45179.042969 -28880.650391 +v -270719.812500 -45509.410156 -28362.052734 +v -270718.000000 -47813.480469 -27915.052734 +v -274112.250000 -48123.023438 -27380.986328 +v -274112.250000 -50340.574219 -26795.843750 +v -277260.718750 -48450.777344 -26829.705078 +v -277260.718750 -50618.820312 -26256.343750 +v -280190.000000 -48796.621094 -26260.523438 +v -280190.000000 -50912.007812 -25699.324219 +v -282914.312500 -49159.382812 -25674.603516 +v -282914.312500 -51219.171875 -25125.925781 +v -285447.937500 -49537.886719 -25073.107422 +v -285447.937500 -51539.335938 -24537.285156 +v -287841.406250 -49937.355469 -24447.242188 +v -287840.500000 -51876.796875 -23925.042969 +v -289999.968750 -52214.792969 -23318.826172 +v -289999.968750 -54048.621094 -22686.037109 +v -292046.875000 -52568.144531 -22691.283203 +v -292046.875000 -54338.156250 -22075.523438 +v -293959.968750 -52930.617188 -22053.046875 +v -293959.968750 -54634.937500 -21454.607422 +v -297441.718750 -53679.042969 -20749.046875 +v -297441.718750 -55247.152344 -20185.994141 +v -299959.343750 -54296.046875 -19684.445312 +v -299959.343750 -55751.425781 -19150.281250 +v -302302.062500 -54924.968750 -18605.865234 +v -302302.062500 -56265.164062 -18100.968750 +v -306696.062500 -55827.980469 -16554.775391 +v -306696.062500 -57308.433594 -15979.682617 +v -302302.062500 -57566.199219 -17500.548828 +v -306696.062500 -58731.441406 -15254.670898 +v -302302.062500 -58820.722656 -16807.677734 +v -306696.062500 -60082.648438 -14386.168945 +v -302302.062500 -60021.398438 -16025.427734 +v -302302.062500 -61160.878906 -15156.872070 +v -299959.343750 -61067.898438 -16035.513672 +v -299959.343750 -62230.886719 -15028.550781 +v -297441.718750 -62228.492188 -15841.346680 +v -297441.718750 -63393.027344 -14690.769531 +v -293959.968750 -63488.414062 -15614.028320 +v -293959.968750 -64651.953125 -14303.239258 +v -292046.875000 -64741.265625 -14717.188477 +v -292046.875000 -65839.507812 -13287.032227 +v -289999.968750 -65964.632812 -13654.494141 +v -289999.968750 -66984.195312 -12110.400391 +v -287832.187500 -66082.882812 -14010.774414 +v -287831.250000 -67136.429688 -12426.520508 +v -285447.937500 -67284.859375 -12743.195312 +v -285447.937500 -68241.273438 -11049.931641 +v -282914.312500 -68407.945312 -11315.015625 +v -282914.312500 -69253.335938 -9521.017578 +v -280190.000000 -69432.968750 -9738.296875 +v -280190.000000 -70153.835938 -7852.122070 +v -277260.718750 -70339.617188 -8022.312012 +v -277260.718750 -70922.617188 -6053.377441 +v -274112.250000 -71108.015625 -6177.758789 +v -274112.250000 -71540.039062 -4136.313477 +v -270690.625000 -71279.765625 -6299.175781 +v -270688.812500 -71720.968750 -4217.649414 +v -267100.875000 -71880.742188 -4294.058105 +v -267100.875000 -72154.078125 -2152.574951 +v -263209.531250 -72302.375000 -2189.727783 +v -263209.531250 -72396.179688 0.000000 +v -259052.109375 -72526.921875 0.000000 +v -259052.109375 -72358.195312 2964.961426 +v -254646.390625 -72468.570312 3010.036133 +v -254646.390625 -71964.179688 5992.479492 +v -250013.218750 -72051.960938 6077.923340 +v -250013.218750 -71217.273438 9046.919922 +v -246000.000000 -71271.781250 9147.958984 +v -246000.000000 -70115.726562 12065.218750 +v -245124.109375 -70124.257812 12092.991211 +v -245127.531250 -68664.351562 14903.377930 +v -240147.796875 -68692.773438 15088.177734 +v -240147.796875 -66928.867188 17789.945312 +v -235000.937500 -66935.546875 17996.744141 +v -235000.937500 -64878.085938 20555.623047 +v -289404.875000 -24404.449219 -17180.958984 +v -288000.000000 -23959.761719 -17803.048828 +v -289356.375000 -24842.255859 -17627.582031 +v -288000.000000 -24000.000000 -17839.962891 +v -288000.000000 -25435.802734 -19059.478516 +v -288000.000000 -25928.458984 -19438.455078 +v -289356.375000 -26373.347656 -18915.027344 +v -288561.281250 -27298.857422 -20080.570312 +v -289356.375000 -28000.000000 -20079.888672 +v -289389.031250 -28360.009766 -20294.460938 +v -288000.000000 -28000.000000 -20847.771484 +v -289493.437500 -28727.699219 -20465.224609 +v -289676.500000 -29085.396484 -20578.990234 +v -287961.625000 -28389.882812 -21103.472656 +v -289999.968750 -29686.355469 -20750.605469 +v -287851.500000 -28756.306641 -21373.087891 +v -289999.968750 -31379.513672 -21656.753906 +v -287850.656250 -30355.404297 -22217.230469 +v -289999.968750 -33139.656250 -22448.314453 +v -287849.718750 -32173.246094 -23029.515625 +v -289999.968750 -34956.742188 -23121.437500 +v -287848.812500 -34049.953125 -23720.310547 +v -289999.968750 -36820.710938 -23672.271484 +v -287847.875000 -35975.148438 -24285.664062 +v -289999.968750 -38721.527344 -24096.964844 +v -287846.968750 -37938.453125 -24721.619141 +v -289999.968750 -40649.136719 -24391.666016 +v -287846.031250 -39929.488281 -25024.218750 +v -289999.968750 -42593.492188 -24552.523438 +v -287845.093750 -41937.878906 -25189.507812 +v -289999.968750 -44544.546875 -24575.734375 +v -287844.187500 -43953.238281 -25213.582031 +v -289999.968750 -46492.253906 -24460.345703 +v -287843.250000 -45965.195312 -25095.460938 +v -289999.968750 -48426.558594 -24209.832031 +v -287842.343750 -47963.359375 -24838.697266 +v -289999.968750 -50337.421875 -23828.041016 +v -287971.093750 -23661.148438 -17544.828125 +v -291275.000000 -22843.912109 -13648.629883 +v -293959.968750 -22413.539062 -8886.789062 +v -294254.718750 -22722.578125 -8978.629883 +v -294963.312500 -22693.724609 -7267.025879 +v -293959.968750 -21593.568359 -6738.044922 +v -295519.750000 -22671.066406 -5501.380859 +v -293959.968750 -20996.523438 -4526.769531 +v -295921.500000 -22654.708984 -3694.148193 +v -293959.968750 -20631.572266 -2273.806641 +v -296165.687500 -22644.763672 -1858.129028 +v -293959.968750 -20507.884766 0.000000 +v -296248.531250 -22641.392578 -10.505586 +v -296167.250000 -22644.701172 1840.558105 +v -293959.968750 -20631.572266 2273.806641 +v -295924.125000 -22654.601562 3679.392578 +v -293959.968750 -20996.523438 4526.769531 +v -295522.562500 -22670.953125 5490.869141 +v -293959.968750 -21593.568359 6738.044922 +v -294965.625000 -22693.630859 7260.729004 +v -293959.968750 -22413.539062 8886.789062 +v -294257.250000 -22722.474609 8973.147461 +v -293400.343750 -22757.369141 10618.231445 +v -292403.906250 -22797.943359 12178.874023 +v -292046.875000 -21948.386719 11269.124023 +v -292046.875000 -20874.814453 9143.981445 +v -292046.875000 -20023.238281 6933.050293 +v -292046.875000 -19403.181641 4657.778809 +v -292046.875000 -19024.164062 2339.612793 +v -292046.875000 -18895.707031 0.000000 +v -292046.875000 -19024.164062 -2339.612793 +v -292046.875000 -19403.181641 -4657.778809 +v -292046.875000 -20023.238281 -6933.050293 +v -291275.000000 -22843.912109 13648.629883 +v -290011.843750 -21831.291016 13652.456055 +v -290011.843750 -20499.134766 11579.050781 +v -290011.843750 -19387.070312 9395.460938 +v -290011.843750 -18504.960938 7123.724609 +v -290011.843750 -17862.671875 4785.877930 +v -290011.843750 -17470.066406 2403.957275 +v -290011.843750 -17337.005859 0.000000 +v -290011.843750 -17470.068359 -2403.957275 +v -290011.843750 -17862.675781 -4785.877441 +v -290011.843750 -18504.966797 -7123.724121 +v -290544.968750 -23014.246094 14653.834961 +v -288000.000000 -20572.732422 13984.316406 +v -288000.000000 -19199.257812 11860.511719 +v -287805.093750 -19079.824219 11886.560547 +v -287805.093750 -17930.099609 9644.980469 +v -285447.937500 -16533.199219 9887.871094 +v -285447.937500 -15592.610352 7497.074707 +v -282914.312500 -14224.660156 7676.926758 +v -282914.312500 -13519.826172 5157.531250 +v -280190.000000 -12195.049805 5275.231445 +v -280190.000000 -11752.582031 2649.760742 +v -279735.125000 -11989.119141 5293.770020 +v -279726.937500 -11541.145508 2659.239014 +v -279620.156250 -11492.996094 2661.402588 +v -279620.156250 -11342.271484 0.000000 +v -277300.437500 -10500.767578 2706.452637 +v -277296.468750 -10345.506836 0.000000 +v -288000.000000 -22162.957031 15972.686523 +v -289957.000000 -23413.355469 15688.351562 +v -289532.781250 -24020.923828 16700.843750 +v -289404.843750 -24404.605469 17181.134766 +v -287879.406250 -23315.998047 17278.941406 +v -287714.000000 -22969.369141 17057.150391 +v -287600.375000 -22800.492188 16970.992188 +v -287465.093750 -22638.570312 16906.583984 +v -289356.375000 -24842.255859 17627.582031 +v -288000.000000 -23959.761719 17803.048828 +v -287971.250000 -23662.029297 17545.554688 +v -288000.000000 -24000.000000 17839.962891 +v -289356.375000 -26373.347656 18915.027344 +v -288000.000000 -25928.458984 19438.455078 +v -288000.000000 -25950.578125 19455.035156 +v -288000.000000 -28000.000000 20847.771484 +v -289356.375000 -28000.000000 20079.888672 +v -289390.062500 -28365.544922 20297.396484 +v -289497.468750 -28737.937500 20469.244141 +v -289683.843750 -29096.644531 20581.593750 +v -287961.625000 -28389.900391 21103.482422 +v -289806.812500 -29264.486328 20612.044922 +v -289947.500000 -29419.533203 20623.804688 +v -290103.625000 -29559.060547 20616.628906 +v -289955.187500 -31357.080078 21668.953125 +v -287851.468750 -28756.367188 21373.136719 +v -290271.750000 -29680.371094 20590.982422 +v -290630.000000 -29863.441406 20489.296875 +v -292046.875000 -32457.902344 21073.937500 +v -290997.312500 -29967.513672 20331.593750 +v -292046.875000 -30294.960938 19874.126953 +v -291356.375000 -30000.000000 20131.042969 +v -293832.781250 -30000.000000 18412.845703 +v -296097.437500 -30000.000000 16427.685547 +v -297441.718750 -32152.562500 16902.769531 +v -297441.718750 -33946.578125 18173.021484 +v -293959.968750 -31484.070312 19315.128906 +v -297441.718750 -35862.792969 19270.138672 +v -293959.968750 -33566.738281 20481.193359 +v -297441.718750 -37880.835938 20185.994141 +v -293959.968750 -35760.082031 21454.607422 +v -297441.718750 -39980.343750 20912.466797 +v -293959.968750 -38041.964844 22226.736328 +v -297441.718750 -42140.949219 21441.433594 +v -293959.968750 -40390.253906 22788.947266 +v -297441.718750 -44342.289062 21764.769531 +v -293959.968750 -42782.816406 23132.603516 +v -295995.843750 -45969.640625 22469.808594 +v -293376.562500 -44989.640625 23460.144531 +v -297441.718750 -30501.109375 15467.503906 +v -298089.250000 -30000.000000 14160.959961 +v -299959.343750 -32784.343750 14673.889648 +v -299959.343750 -31400.980469 13165.241211 +v -302302.062500 -35115.765625 13869.855469 +v -302302.062500 -33841.886719 12443.872070 +v -304742.968750 -37712.796875 12978.904297 +v -304496.718750 -36280.671875 11726.778320 +v -306696.062500 -38807.898438 10985.550781 +v -306696.062500 -37877.710938 9618.007812 +v -304249.687500 -34958.941406 10338.945312 +v -306696.062500 -37074.308594 8157.315918 +v -304001.843750 -33758.722656 8829.782227 +v -306696.062500 -36403.640625 6619.000977 +v -303753.062500 -32691.419922 7214.133789 +v -306696.062500 -35871.656250 5018.587402 +v -303503.312500 -31768.708984 5507.314941 +v -306696.062500 -35484.300781 3371.599365 +v -303252.437500 -31002.542969 3725.107910 +v -306696.062500 -35247.523438 1693.562012 +v -303000.437500 -30405.150391 1883.763794 +v -306696.062500 -35167.277344 0.000000 +v -302755.718750 -30000.000000 64.177948 +v -306696.062500 -35247.523438 -1693.562012 +v -302571.093750 -30000.000000 -2968.889893 +v -306696.062500 -35484.300781 -3371.599365 +v -302302.062500 -30283.056641 -5684.799805 +v -306696.062500 -35871.656250 -5018.587402 +v -302302.062500 -30927.841797 -7497.666992 +v -306696.062500 -36403.640625 -6619.000977 +v -302302.062500 -31740.714844 -9240.191406 +v -306696.062500 -37074.308594 -8157.315918 +v -302302.062500 -32714.466797 -10894.788086 +v -306696.062500 -37877.710938 -9618.007812 +v -302302.062500 -33841.886719 -12443.872070 +v -306696.062500 -38807.898438 -10985.550781 +v -302302.062500 -35115.765625 -13869.855469 +v -306696.062500 -39858.925781 -12244.420898 +v -302302.062500 -36162.230469 -14848.705078 +v -306696.062500 -41023.437500 -13380.609375 +v -302302.062500 -37279.683594 -15745.346680 +v -306696.062500 -42288.472656 -14386.168945 +v -302302.062500 -38460.777344 -16556.707031 +v -306696.062500 -43639.679688 -15254.670898 +v -302302.062500 -39698.167969 -17279.712891 +v -302302.062500 -40984.511719 -17911.291016 +v -299959.343750 -39157.480469 -18949.607422 +v -299959.343750 -40599.566406 -19517.820312 +v -297441.718750 -38921.679688 -20573.410156 +v -297441.718750 -40515.562500 -21063.541016 +v -293959.968750 -38623.675781 -22387.306641 +v -293959.968750 -40390.253906 -22788.947266 +v -292046.875000 -39544.425781 -23448.480469 +v -292046.875000 -41404.957031 -23735.250000 +v -299748.875000 -30000.000000 11641.476562 +v -299959.343750 -30176.664062 11526.358398 +v -302302.062500 -32714.466797 10894.788086 +v -301050.156250 -30000.000000 8918.841797 +v -301986.250000 -30000.000000 6048.664551 +v -302302.062500 -30927.841797 7497.666992 +v -302302.062500 -31740.714844 9240.191406 +v -302302.062500 -30283.056641 5684.799805 +v -302556.937500 -30000.000000 3080.850098 +v -302010.218750 -30000.000000 -5954.734375 +v -301079.343750 -30000.000000 -8845.271484 +v -299959.343750 -30176.664062 -11526.358398 +v -299780.125000 -30000.000000 -11585.847656 +v -299959.343750 -31400.980469 -13165.241211 +v -298119.656250 -30000.000000 -14121.047852 +v -299959.343750 -32784.343750 -14673.889648 +v -297441.718750 -30501.109375 -15467.503906 +v -297441.718750 -31725.539062 -16559.105469 +v -296121.500000 -30000.000000 -16403.736328 +v -293845.250000 -30000.000000 -18403.158203 +v -291356.375000 -30000.000000 -20131.042969 +v -293959.968750 -30491.158203 -18662.548828 +v -297441.718750 -33033.023438 -17559.031250 +v -299959.343750 -33920.750000 -15709.483398 +v -290991.062500 -29966.355469 -20334.691406 +v -292046.875000 -30823.664062 -20192.177734 +v -293959.968750 -31993.152344 -19624.232422 +v -290618.812500 -29859.039062 -20493.304688 +v -290258.468750 -29671.720703 -20593.589844 +v -290090.718750 -29548.597656 -20617.886719 +v -289935.906250 -29407.949219 -20623.566406 +v -289797.031250 -29252.384766 -20610.419922 +v -286000.000000 -30000.000000 22874.410156 +v -285447.937500 -31843.015625 23871.433594 +v -282511.343750 -30000.000000 24210.466797 +v -282914.312500 -30948.736328 24444.099609 +v -282126.218750 -29962.568359 24327.289062 +v -281747.343750 -29848.312500 24408.777344 +v -280190.000000 -30094.416016 25001.939453 +v -281393.406250 -29658.365234 24449.482422 +v -281083.718750 -29400.656250 24446.025391 +v -279816.906250 -29985.232422 25074.113281 +v -280833.843750 -29088.998047 24398.132812 +v -279620.156250 -30000.000000 25138.525391 +v -280653.281250 -28739.980469 24308.423828 +v -279808.718750 -27314.535156 23937.978516 +v -280546.125000 -28371.382812 24181.828125 +v -280511.343750 -28000.000000 24024.906250 +v -280190.000000 -27435.203125 23867.580078 +v -280511.343750 -25959.000000 22992.242188 +v -279620.156250 -26695.882812 23696.796875 +v -279800.562500 -24778.107422 22576.519531 +v -279620.156250 -23577.994141 21890.359375 +v -280511.343750 -24000.000000 21811.966797 +v -280552.031250 -23598.667969 21527.410156 +v -279588.656250 -23224.367188 21665.640625 +v -280667.125000 -23226.195312 21221.041016 +v -279491.062500 -22871.056641 21461.000000 +v -279792.375000 -22402.906250 20999.785156 +v -279323.062500 -22529.111328 21287.003906 +v -279620.156250 -22341.626953 21027.388672 +v -279082.406250 -22213.480469 21156.751953 +v -278773.937500 -21944.349609 21084.562500 +v -286417.937500 -29955.849609 22673.792969 +v -287845.875000 -30353.250000 22218.417969 +v -287837.718750 -32787.898438 23276.527344 +v -287829.562500 -35321.554688 24116.431641 +v -285447.937500 -34460.562500 24730.541016 +v -287821.406250 -37929.632812 24728.701172 +v -285447.937500 -37154.285156 25356.082031 +v -287813.250000 -40587.542969 25103.906250 +v -285447.937500 -39898.792969 25738.453125 +v -287310.156250 -43138.773438 25371.064453 +v -283775.906250 -42279.398438 26284.308594 +v -286804.031250 -29831.271484 22442.552734 +v -287147.000000 -29638.408203 22189.662109 +v -287439.312500 -29388.667969 21922.810547 +v -287675.687500 -29091.841797 21648.533203 +v -287805.093750 -22051.710938 16007.766602 +v -287309.875000 -22488.640625 16868.119141 +v -287136.781250 -22354.482422 16858.183594 +v -286951.312500 -22240.740234 16877.544922 +v -286759.343750 -22149.750000 16924.224609 +v -285447.937500 -20784.099609 16410.892578 +v -286565.750000 -22081.683594 16994.570312 +v -286374.250000 -22035.326172 17084.392578 +v -286000.000000 -22000.000000 17311.439453 +v -282914.312500 -19567.472656 16804.583984 +v -282914.312500 -17874.896484 14712.654297 +v -280190.000000 -16667.675781 15048.411133 +v -280190.000000 -15166.337891 12763.001953 +v -279767.875000 -16493.376953 15097.519531 +v -279759.687500 -14982.894531 12805.453125 +v -279620.156250 -14924.162109 12819.077148 +v -279620.156250 -13664.475586 10401.642578 +v -277316.281250 -14004.435547 13034.643555 +v -277312.312500 -12718.955078 10576.845703 +v -274112.250000 -11554.718750 10798.009766 +v -274112.250000 -10512.571289 8187.150391 +v -270730.375000 -9421.267578 8346.288086 +v -270730.375000 -8646.655273 5607.223633 +v -267100.875000 -7621.541992 5710.073242 +v -267100.875000 -7139.140625 2868.182861 +v -263209.531250 -6192.585938 2917.686768 +v -282914.312500 -21479.925781 18730.275391 +v -284288.281250 -22000.000000 18411.978516 +v -282511.343750 -22000.000000 19404.087891 +v -282107.625000 -22041.173828 19645.980469 +v -280190.000000 -20370.015625 19157.718750 +v -280190.000000 -18405.939453 17188.080078 +v -279784.218750 -20215.904297 19217.832031 +v -279776.031250 -18241.451172 17243.091797 +v -279620.156250 -18180.285156 17263.597656 +v -279620.156250 -16433.156250 15114.527344 +v -277324.218750 -17326.046875 17552.943359 +v -277320.250000 -15543.936523 15368.274414 +v -274112.250000 -14442.386719 15690.485352 +v -274112.250000 -12868.541016 13307.564453 +v -270730.375000 -11826.275391 13566.230469 +v -270730.375000 -10485.106445 11007.897461 +v -267100.875000 -9494.588867 11209.808594 +v -267100.875000 -8410.731445 8499.378906 +v -263209.531250 -7485.589844 8646.076172 +v -263209.531250 -6683.110840 5808.627441 +v -259052.109375 -5833.430664 5902.743164 +v -259052.109375 -5335.587402 2964.961426 +v -254646.390625 -4564.309570 3010.036133 +v -281721.812500 -22162.435547 19936.917969 +v -279620.156250 -20154.378906 19241.888672 +v -281379.062500 -22351.382812 20251.585938 +v -278409.968750 -21740.541016 21080.716797 +v -278597.406250 -21833.005859 21073.695312 +v -281086.593750 -22596.417969 20575.777344 +v -280190.000000 -22546.166016 20935.408203 +v -280847.625000 -22890.058594 20901.343750 +v -280190.000000 -24910.173828 22508.714844 +v -282511.343750 -30000.000000 -24210.466797 +v -285447.937500 -31203.505859 -23621.287109 +v -286000.000000 -30000.000000 -22874.410156 +v -282914.312500 -30290.585938 -24187.953125 +v -282126.343750 -29962.591797 -24327.257812 +v -281747.406250 -29848.343750 -24408.763672 +v -280190.000000 -29418.500000 -24739.947266 +v -281393.437500 -29658.386719 -24449.480469 +v -281083.593750 -29400.537109 -24446.013672 +v -280833.906250 -29089.093750 -24398.152344 +v -280653.281250 -28739.960938 -24308.414062 +v -279622.437500 -29249.677734 -24848.214844 +v -280546.187500 -28371.707031 -24181.953125 +v -279628.593750 -27258.220703 -23970.908203 +v -280511.343750 -28000.000000 -24024.906250 +v -280190.000000 -27435.203125 -23867.580078 +v -280511.343750 -25959.000000 -22992.242188 +v -279620.156250 -26695.882812 -23696.796875 +v -279634.750000 -25342.833984 -22966.859375 +v -279620.156250 -23577.994141 -21890.359375 +v -280511.343750 -24000.000000 -21811.966797 +v -280190.000000 -23706.365234 -21748.238281 +v -280552.187500 -23597.880859 -21526.810547 +v -279588.031250 -23220.958984 -21663.564453 +v -279488.875000 -22865.330078 -21457.867188 +v -280667.187500 -23225.990234 -21220.861328 +v -279318.718750 -22522.097656 -21283.751953 +v -280846.750000 -22891.357422 -20902.669922 +v -279076.437500 -22207.119141 -21154.535156 +v -280190.000000 -21983.468750 -20509.753906 +v -279647.062500 -21785.728516 -20595.654297 +v -281708.531250 -22168.201172 -19948.050781 +v -279620.156250 -20154.378906 -19241.888672 +v -277268.687500 -17306.425781 -17559.658203 +v -274112.250000 -14442.386719 -15690.485352 +v -270730.375000 -13432.877930 -15995.470703 +v -267100.875000 -12497.832031 -16288.865234 +v -263209.531250 -11641.517578 -16570.005859 +v -259052.109375 -10865.816406 -16838.486328 +v -280190.000000 -25527.382812 -22868.927734 +v -281083.468750 -22599.601562 -20579.611328 +v -281372.000000 -22356.267578 -20258.744141 +v -282089.968750 -22044.894531 -19657.978516 +v -280190.000000 -20370.015625 -19157.718750 +v -279653.218750 -20166.732422 -19237.056641 +v -279620.156250 -18180.285156 -17263.597656 +v -277272.656250 -15526.458984 -15373.313477 +v -274112.250000 -12868.541016 -13307.564453 +v -270730.375000 -11826.275391 -13566.230469 +v -267100.875000 -10860.996094 -13815.067383 +v -263209.531250 -9977.117188 -14053.511719 +v -282914.312500 -21479.925781 -18730.275391 +v -282511.343750 -22000.000000 -19404.087891 +v -284288.281250 -22000.000000 -18411.978516 +v -286000.000000 -22000.000000 -17311.439453 +v -282914.312500 -19567.472656 -16804.583984 +v -280190.000000 -18405.939453 -17188.080078 +v -279661.406250 -18196.427734 -17258.183594 +v -279669.593750 -16453.269531 -15108.844727 +v -279620.156250 -16433.156250 -15114.527344 +v -279620.156250 -14924.162109 -12819.077148 +v -277276.625000 -13989.396484 -13038.205078 +v -277280.593750 -12706.607422 -10579.158203 +v -274112.250000 -11554.718750 -10798.009766 +v -274112.250000 -10512.571289 -8187.150391 +v -270730.375000 -10485.106445 -11007.897461 +v -270730.375000 -9421.267578 -8346.288086 +v -267100.875000 -9494.588867 -11209.808594 +v -285447.937500 -20784.099609 -16410.892578 +v -286374.375000 -22035.351562 -17084.326172 +v -286565.312500 -22081.556641 -16994.748047 +v -286758.406250 -22149.367188 -16924.511719 +v -287805.093750 -22051.710938 -16007.766602 +v -287805.093750 -20457.093750 -14015.029297 +v -286949.968750 -22240.005859 -16877.787109 +v -287135.156250 -22353.363281 -16858.228516 +v -287308.156250 -22487.148438 -16867.863281 +v -287463.437500 -22636.775391 -16905.990234 +v -287598.750000 -22798.339844 -16970.011719 +v -288000.000000 -27011.968750 -20210.388672 +v -287675.750000 -29091.710938 -21648.416016 +v -287439.437500 -29388.519531 -21922.662109 +v -287147.218750 -29638.255859 -22189.484375 +v -286804.343750 -29831.125000 -22442.330078 +v -286418.250000 -29955.781250 -22673.632812 +v -266378.312500 -30382.476562 28222.857422 +v -263209.531250 -29593.607422 28520.742188 +v -266341.406250 -30000.000000 28125.656250 +v -263209.531250 -26526.564453 27529.968750 +v -266341.406250 -26729.695312 27052.812500 +v -263209.531250 -23578.529297 26280.910156 +v -266341.406250 -23577.994141 25671.529297 +v -266379.156250 -23191.212891 25467.984375 +v -266488.812500 -22824.427734 25253.289062 +v -263209.531250 -20779.250000 24784.646484 +v -267100.875000 -21484.234375 24364.128906 +v -263209.531250 -18158.482422 23052.255859 +v -267100.875000 -18906.869141 22661.132812 +v -263209.531250 -15745.976562 21094.820312 +v -267100.875000 -16534.316406 20736.906250 +v -263209.531250 -13568.579102 18926.023438 +v -267100.875000 -14392.979492 18604.910156 +v -263209.531250 -11641.517578 16570.005859 +v -267100.875000 -12497.832031 16288.865234 +v -263209.531250 -9977.117188 14053.511719 +v -267100.875000 -10860.996094 13815.067383 +v -263209.531250 -8587.699219 11403.286133 +v -266489.312500 -30754.832031 28300.763672 +v -263209.531250 -32749.904297 29242.154297 +v -259052.109375 -29085.748047 28982.857422 +v -259052.109375 -32289.136719 29715.958984 +v -254646.390625 -28626.892578 29423.468750 +v -254646.390625 -31872.419922 30167.714844 +v -250013.218750 -28214.445312 29843.001953 +v -250013.218750 -31497.435547 30597.859375 +v -249757.218750 -31478.347656 30620.458984 +v -250013.218750 -34842.316406 31059.275391 +v -254646.390625 -35179.132812 30622.644531 +v -252911.406250 -38399.390625 30946.160156 +v -259359.937500 -38871.968750 30281.908203 +v -259052.109375 -35552.917969 30164.074219 +v -262390.718750 -39134.832031 29932.058594 +v -263209.531250 -35965.707031 29683.126953 +v -265282.062500 -39416.292969 29570.177734 +v -267100.875000 -36419.183594 29179.498047 +v -268032.218750 -39716.382812 29196.384766 +v -270678.656250 -36904.832031 28661.828125 +v -270646.218750 -40034.421875 28811.119141 +v -274112.250000 -37443.164062 28107.574219 +v -275487.500000 -40721.476562 28008.005859 +v -277260.718750 -38009.351562 27541.664062 +v -279849.562500 -41471.718750 27164.513672 +v -279841.406250 -38533.417969 27030.119141 +v -280190.000000 -38608.792969 26957.376953 +v -280190.000000 -35708.046875 26556.898438 +v -282914.312500 -39239.324219 26355.910156 +v -282914.312500 -36414.820312 25964.367188 +v -267100.875000 -33256.640625 28746.007812 +v -266671.843750 -31101.189453 28356.478516 +v -266920.562500 -31407.562500 28388.476562 +v -267224.562500 -31659.115234 28396.113281 +v -267573.250000 -31846.609375 28379.996094 +v -267950.906250 -31961.509766 28341.511719 +v -268341.406250 -32000.000000 28282.806641 +v -270711.093750 -33805.101562 28231.144531 +v -272997.250000 -32000.000000 27398.810547 +v -274112.250000 -34402.328125 27690.007812 +v -277620.156250 -32000.000000 26340.058594 +v -277260.718750 -32118.462891 26463.138672 +v -277260.718750 -35036.402344 27132.503906 +v -279825.062500 -32763.240234 25974.878906 +v -278021.687500 -31959.281250 26225.958984 +v -278401.562500 -31841.050781 26092.537109 +v -278745.906250 -31653.097656 25944.488281 +v -280190.000000 -32860.976562 25901.732422 +v -279833.218750 -35621.617188 26630.228516 +v -279044.906250 -31403.617188 25785.644531 +v -279288.593750 -31102.865234 25620.804688 +v -279469.625000 -30761.265625 25454.583984 +v -279581.812500 -30389.775391 25291.980469 +v -282914.312500 -33642.582031 25323.818359 +v -277328.187500 -19339.359375 19563.857422 +v -278016.375000 -21617.628906 21146.822266 +v -274112.250000 -18323.535156 19975.125000 +v -274112.250000 -20604.783203 21828.664062 +v -270730.375000 -17394.806641 20363.394531 +v -270730.375000 -19723.537109 22252.960938 +v -277620.156250 -21577.994141 21273.382812 +v -273029.156250 -21577.994141 22851.935547 +v -268341.406250 -21577.994141 24126.080078 +v -267925.718750 -21621.667969 24252.365234 +v -267540.281250 -21745.462891 24416.476562 +v -267196.218750 -21938.316406 24607.820312 +v -266902.437500 -22188.960938 24816.388672 +v -266664.937500 -22487.361328 25033.910156 +v -267951.000000 -31961.525391 -28341.501953 +v -267100.875000 -33256.640625 -28746.007812 +v -268341.406250 -32000.000000 -28282.806641 +v -270728.937500 -33808.023438 -28228.453125 +v -272997.250000 -32000.000000 -27398.810547 +v -274112.250000 -34402.328125 -27690.007812 +v -274112.250000 -32157.083984 -27201.990234 +v -277260.718750 -32841.285156 -26654.312500 +v -277620.156250 -32000.000000 -26340.058594 +v -280190.000000 -33566.246094 -26088.851562 +v -278021.843750 -31959.253906 -26225.910156 +v -278401.000000 -31841.273438 -26092.750000 +v -278746.093750 -31652.972656 -25944.396484 +v -280190.000000 -31465.955078 -25481.785156 +v -279044.687500 -31403.835938 -25785.773438 +v -279288.468750 -31103.070312 -25620.910156 +v -279469.562500 -30761.425781 -25454.658203 +v -279581.812500 -30389.861328 -25292.015625 +v -279620.156250 -30000.000000 -25138.525391 +v -267573.437500 -31846.681641 -28379.982422 +v -267224.875000 -31659.316406 -28396.109375 +v -266920.156250 -31407.152344 -28388.441406 +v -266671.937500 -31101.335938 -28356.498047 +v -266489.312500 -30754.802734 -28300.757812 +v -263209.531250 -32749.904297 -29242.154297 +v -263209.531250 -30375.476562 -28726.781250 +v -259052.109375 -32289.136719 -29715.958984 +v -266378.375000 -30382.837891 -28222.945312 +v -266341.406250 -30000.000000 -28125.656250 +v -267100.875000 -20171.779297 -23540.964844 +v -267539.968750 -21745.582031 -24416.613281 +v -267925.843750 -21621.638672 -24252.320312 +v -268341.406250 -21577.994141 -24126.080078 +v -270730.375000 -20965.083984 -23116.945312 +v -270730.375000 -19121.386719 -21800.517578 +v -273029.218750 -21577.994141 -22851.914062 +v -274112.250000 -20014.910156 -21384.847656 +v -277620.156250 -21577.994141 -21273.382812 +v -278011.437500 -21616.640625 -21148.044922 +v -278765.750000 -21938.585938 -21083.636719 +v -279620.156250 -23507.744141 -21843.791016 +v -279640.906250 -23514.882812 -21840.347656 +v 169229.375000 -31737.449219 36435.328125 +v 168930.875000 -31737.449219 36434.035156 +v 171364.078125 -33282.531250 36490.187500 +v 168544.328125 -31712.439453 36430.644531 +v 156707.890625 -34283.136719 36491.617188 +v 168082.984375 -31615.132812 36421.644531 +v 159570.156250 -31691.580078 36385.746094 +v 160076.468750 -31555.484375 36376.125000 +v 167663.937500 -31456.796875 36407.476562 +v 167273.312500 -31237.945312 36386.902344 +v 160652.046875 -31272.320312 36352.078125 +v 166836.578125 -30885.455078 36350.457031 +v 161049.687500 -30971.607422 36322.703125 +v 165912.031250 -30563.703125 36308.804688 +v 161391.375000 -30610.015625 36282.687500 +v 161722.000000 -30096.605469 36217.300781 +v 166152.375000 -29868.781250 36220.886719 +v 165988.421875 -29322.224609 36136.230469 +v 166474.437500 -30459.638672 36300.632812 +v 161969.140625 -29418.859375 36115.539062 +v 165930.875000 -28737.449219 36034.253906 +v 162047.546875 -28737.449219 35995.250000 +v 165912.671875 -27465.908203 35769.398438 +v 162047.546875 -26825.398438 35564.894531 +v 165930.875000 -26825.320312 35613.253906 +v 165930.875000 -24945.951172 35063.785156 +v 166004.156250 -24286.937500 34839.554688 +v 165930.875000 -24424.675781 34886.957031 +v 165913.312500 -24425.441406 34886.957031 +v 162047.546875 -24945.951172 35008.796875 +v 161986.265625 -24342.681641 34800.738281 +v 166220.031250 -23660.904297 34612.808594 +v 166509.125000 -23175.310547 34428.035156 +v 161559.640625 -23306.007812 34405.050781 +v 161805.718750 -23765.898438 34586.703125 +v 161081.468750 -22740.685547 34167.484375 +v 166833.984375 -22800.476562 34280.523438 +v 167219.140625 -22482.210938 34152.593750 +v 165913.953125 -21470.964844 33675.031250 +v 167576.953125 -22268.841797 34066.187500 +v 165930.875000 -21470.375000 33675.031250 +v 167964.406250 -22105.886719 34000.917969 +v 168516.359375 -21974.724609 33951.777344 +v 168930.875000 -21945.951172 33946.054688 +v 169229.375000 -21945.951172 33951.308594 +v 169823.984375 -22005.466797 33988.609375 +v 175938.062500 -21078.078125 33666.835938 +v 170464.187500 -22211.861328 34091.605469 +v 170887.218750 -22445.628906 34200.593750 +v 171263.296875 -22740.685547 34331.867188 +v 171741.453125 -23306.007812 34568.421875 +v 175938.062500 -23938.888672 34878.468750 +v 171987.531250 -23765.898438 34748.160156 +v 172168.046875 -24342.513672 34958.648438 +v 172229.375000 -24945.951172 35161.992188 +v 175938.062500 -26882.953125 35760.695312 +v 172229.375000 -28737.449219 36100.433594 +v 175938.062500 -29882.517578 36299.968750 +v 172150.953125 -29418.859375 36208.878906 +v 171903.828125 -30096.605469 36297.949219 +v 172229.375000 -26825.251953 35697.964844 +v 171573.187500 -30610.013672 36353.246094 +v 171231.671875 -30971.453125 36385.953125 +v 170833.875000 -31272.320312 36409.226562 +v 170258.281250 -31555.484375 36427.566406 +v 169751.921875 -31691.585938 36434.566406 +v 165988.421875 -29322.224609 -36136.230469 +v 161969.140625 -29418.859375 -36115.539062 +v 165930.875000 -28737.449219 -36034.253906 +v 162047.546875 -28737.449219 -35995.250000 +v 165930.609375 -27464.964844 -35769.398438 +v 162047.546875 -26825.398438 -35564.894531 +v 165930.875000 -26825.320312 -35613.253906 +v 165930.125000 -25177.837891 -35138.988281 +v 165930.875000 -24945.951172 -35063.785156 +v 162047.546875 -24945.951172 -35008.796875 +v 166004.140625 -24286.966797 -34839.566406 +v 161986.265625 -24342.697266 -34800.742188 +v 161805.718750 -23765.900391 -34586.695312 +v 165988.078125 -29780.935547 -36206.851562 +v 166152.375000 -29868.781250 -36220.886719 +v 161722.000000 -30096.605469 -36217.296875 +v 161391.375000 -30610.013672 -36282.691406 +v 166474.437500 -30459.638672 -36300.636719 +v 161049.984375 -30971.343750 -36322.679688 +v 166837.125000 -30885.982422 -36350.519531 +v 160652.046875 -31272.320312 -36352.078125 +v 167273.312500 -31237.945312 -36386.910156 +v 165986.343750 -32120.193359 -36445.628906 +v 167663.625000 -31456.652344 -36407.460938 +v 168082.984375 -31615.132812 -36421.656250 +v 168544.328125 -31712.439453 -36430.644531 +v 168930.875000 -31737.449219 -36434.035156 +v 169229.375000 -31737.449219 -36435.328125 +v 169751.906250 -31691.589844 -36434.566406 +v 175938.062500 -31394.443359 -36436.761719 +v 175938.062500 -33667.750000 -36471.207031 +v 170258.281250 -31555.484375 -36427.562500 +v 170833.875000 -31272.320312 -36409.226562 +v 171231.703125 -30971.429688 -36385.957031 +v 171573.187500 -30610.013672 -36353.250000 +v 171903.828125 -30096.605469 -36297.949219 +v 175938.062500 -29128.941406 -36198.042969 +v 172150.953125 -29418.859375 -36208.878906 +v 172229.375000 -28737.449219 -36100.433594 +v 175938.062500 -26882.953125 -35760.695312 +v 172229.375000 -26825.251953 -35697.964844 +v 175938.062500 -24668.183594 -35130.437500 +v 172229.375000 -24945.951172 -35161.992188 +v 172168.062500 -24342.533203 -34958.652344 +v 171987.531250 -23765.900391 -34748.152344 +v 175938.062500 -22496.341797 -34312.980469 +v 175938.062500 -20379.136719 -33314.046875 +v 175938.062500 -18328.271484 -32139.341797 +v 165930.875000 -18630.707031 -32147.164062 +v 165930.875000 -16593.421875 -30802.083984 +v 165928.203125 -16593.476562 -30802.083984 +v 165927.718750 -14648.875000 -29292.630859 +v 155822.312500 -16766.648438 -30802.083984 +v 155822.312500 -14768.350586 -29292.630859 +v 155749.062500 -14769.009766 -29292.630859 +v 155749.062500 -12878.045898 -27624.519531 +v 145917.875000 -12900.365234 -27624.519531 +v 145915.703125 -11090.117188 -25803.468750 +v 145567.234375 -12900.459961 -27624.519531 +v 145567.234375 -11088.930664 -25803.468750 +v 144854.203125 -11086.390625 -25803.468750 +v 144737.937500 -8877.094727 -23150.568359 +v 135854.781250 -11042.446289 -25803.468750 +v 135854.781250 -8797.456055 -23150.568359 +v 135385.421875 -8792.868164 -23150.568359 +v 135385.421875 -6804.436035 -20268.656250 +v 125781.859375 -6675.556641 -20268.656250 +v 125781.859375 -4933.232910 -17190.445312 +v 125203.601562 -4923.983887 -17190.445312 +v 125203.601562 -3468.385986 -13948.654297 +v 115924.445312 -3305.473389 -13948.654297 +v 115924.445312 -2137.829590 -10575.997070 +v 115021.781250 -2121.302734 -10575.997070 +v 115021.781250 -1270.278564 -7105.191895 +v 105742.617188 -1100.383057 -7105.191895 +v 105742.617188 -575.528076 -3568.954102 +v 104839.960938 -1084.764893 -7105.191895 +v 104839.960938 -559.507080 -3568.954102 +v 94658.148438 -392.332184 -3568.954102 +v 94658.148438 -212.960251 0.000000 +v 85764.601562 -88.954567 0.000000 +v 85764.601562 -269.262390 3568.954102 +v 84476.328125 -253.411057 3568.954102 +v 84476.328125 -785.775574 7105.191895 +v 74294.507812 -680.187744 7105.191895 +v 74294.507812 -1555.033203 10575.997070 +v 64112.691406 -1479.520996 10575.997070 +v 64112.691406 -2685.014404 13948.654297 +v 55833.824219 -2642.579102 13948.654297 +v 55833.824219 -4165.320312 17190.445312 +v 53930.875000 -4157.892090 17190.445312 +v 53930.875000 -5982.678223 20268.656250 +v 43749.054688 -5954.770020 20268.656250 +v 43749.054688 -8070.753906 23150.568359 +v 33567.238281 -8056.327637 23150.568359 +v 33567.238281 -10449.321289 25803.468750 +v 25833.611328 -10444.380859 25803.468750 +v 25833.611328 -13096.710938 28197.832031 +v 23385.417969 -13095.933594 28197.832031 +v 23385.417969 -15977.428711 30316.914062 +v 13203.600586 -15976.317383 30316.914062 +v 13203.600586 -19054.494141 32147.164062 +v 3021.782227 -19054.439453 32147.164062 +v 6320.278809 -21945.951172 33527.859375 +v 6021.782227 -21945.951172 33527.859375 +v 5607.263672 -21974.726562 33540.109375 +v 3021.782227 -22296.230469 33675.031250 +v 5055.312012 -22105.890625 33595.574219 +v 4667.917480 -22268.808594 33663.664062 +v 4310.055176 -22482.214844 33751.484375 +v 3924.442871 -22800.914062 33879.800781 +v 3600.041016 -23175.310547 34026.253906 +v -1349.451294 -23306.007812 34076.296875 +v 3310.942383 -23660.902344 34209.371094 +v -1103.374390 -23765.898438 34247.960938 +v 3095.028564 -24287.078125 34434.289062 +v -922.693298 -24343.304688 34453.875000 +v 3021.782227 -24945.951172 34657.542969 +v -861.539551 -24945.951172 34657.542969 +v -861.539551 -28737.449219 35685.300781 +v 171741.453125 -23306.007812 -34568.417969 +v 171263.296875 -22740.685547 -34331.859375 +v 170887.421875 -22445.767578 -34200.648438 +v 170464.187500 -22211.859375 -34091.605469 +v 169823.984375 -22005.464844 -33988.613281 +v 165930.875000 -20748.591797 -33322.152344 +v 165928.687500 -18630.763672 -32147.164062 +v 155822.312500 -18860.197266 -32147.164062 +v 155749.062500 -16767.666016 -30802.083984 +v 145920.046875 -14833.389648 -29292.630859 +v 145567.234375 -14834.869141 -29292.630859 +v 144941.421875 -12900.518555 -27624.519531 +v 135854.781250 -12886.665039 -27624.519531 +v 135385.421875 -11039.610352 -25803.468750 +v 125781.859375 -8692.836914 -23150.568359 +v 125203.601562 -6667.663574 -20268.656250 +v 115924.445312 -4777.508301 -17190.445312 +v 115021.781250 -3290.083740 -13948.654297 +v 105742.617188 -1959.025146 -10575.997070 +v 104839.960938 -1944.065918 -10575.997070 +v 94658.148438 -921.583618 -7105.191895 +v 85764.601562 -269.262390 -3568.954102 +v 84476.328125 -72.984077 0.000000 +v 74294.507812 -145.428207 3568.954102 +v 64112.691406 -601.765320 7105.191895 +v 55833.824219 -1434.714233 10575.997070 +v 53930.875000 -2634.587891 13948.654297 +v 43749.054688 -4127.197266 17190.445312 +v 33567.238281 -5938.458008 20268.656250 +v 25833.611328 -8050.530762 23150.568359 +v 23385.417969 -10443.418945 25803.468750 +v 13203.600586 -13094.434570 28197.832031 +v 3021.782227 -15976.228516 30316.914062 +v -7160.036133 -19054.439453 32147.164062 +v -3861.539551 -21945.951172 33527.859375 +v -4160.036133 -21945.951172 33527.859375 +v -4574.554688 -21974.726562 33540.109375 +v -7160.036133 -22296.230469 33675.031250 +v -5126.505859 -22105.890625 33595.574219 +v -5513.839844 -22268.777344 33663.652344 +v -5871.763184 -22482.214844 33751.484375 +v -6257.363281 -22800.902344 33879.796875 +v -6581.777344 -23175.310547 34026.253906 +v -11531.269531 -23306.007812 34076.296875 +v -6870.875488 -23660.902344 34209.371094 +v -11285.192383 -23765.898438 34247.960938 +v -7086.789551 -24287.078125 34434.289062 +v -11104.511719 -24343.304688 34453.875000 +v -7160.036133 -24945.951172 34657.542969 +v -11043.357422 -24945.951172 34657.542969 +v -11043.357422 -28737.449219 35685.300781 +v 169229.375000 -21945.951172 -33951.308594 +v 168930.875000 -21945.951172 -33946.054688 +v 168516.359375 -21974.726562 -33951.777344 +v 167964.406250 -22105.886719 -34000.917969 +v 165929.171875 -20748.648438 -33322.152344 +v 155822.312500 -21036.574219 -33322.152344 +v 155749.062500 -18861.591797 -32147.164062 +v 145922.203125 -16876.486328 -30802.083984 +v 145567.234375 -16879.447266 -30802.083984 +v 145028.625000 -14837.025391 -29292.630859 +v 135854.781250 -14855.981445 -29292.630859 +v 135385.421875 -12885.267578 -27624.519531 +v 125781.859375 -10972.174805 -25803.468750 +v 125203.601562 -8686.513672 -23150.568359 +v 115924.445312 -6540.878418 -20268.656250 +v 115021.781250 -4763.552734 -17190.445312 +v 105742.617188 -3138.268311 -13948.654297 +v 104839.960938 -3124.213867 -13948.654297 +v 94658.148438 -1787.418213 -10575.997070 +v 85764.601562 -801.275330 -7105.191895 +v 84476.328125 -253.411057 -3568.954102 +v 74294.507812 35.810490 0.000000 +v 64112.691406 -65.226944 3568.954102 +v 55833.824219 -555.231812 7105.191895 +v 53930.875000 -1426.276245 10575.997070 +v 43749.054688 -2601.566162 13948.654297 +v 33567.238281 -4109.255859 17190.445312 +v 25833.611328 -5931.902832 20268.656250 +v 23385.417969 -8049.402832 23150.568359 +v 13203.600586 -10441.563477 25803.468750 +v 3021.782227 -13094.315430 28197.832031 +v -7160.036133 -15976.228516 30316.914062 +v -17341.853516 -19054.439453 32147.164062 +v -14043.357422 -21945.951172 33527.859375 +v -14341.854492 -21945.951172 33527.859375 +v -14756.373047 -21974.726562 33540.109375 +v -17341.853516 -22296.230469 33675.031250 +v -15308.324219 -22105.890625 33595.574219 +v -15695.658203 -22268.777344 33663.652344 +v -16053.581055 -22482.214844 33751.484375 +v -16439.181641 -22800.902344 33879.796875 +v -16763.595703 -23175.310547 34026.253906 +v -21713.087891 -23306.007812 34076.296875 +v -17052.693359 -23660.902344 34209.371094 +v -21467.011719 -23765.898438 34247.960938 +v -17268.607422 -24287.078125 34434.289062 +v -21286.330078 -24343.304688 34453.875000 +v -17341.853516 -24945.951172 34657.542969 +v -21225.175781 -24945.951172 34657.542969 +v -21225.175781 -28737.449219 35685.300781 +v 167577.046875 -22268.791016 -34066.167969 +v 160282.375000 -22211.857422 -33928.445312 +v 159642.156250 -22005.464844 -33827.539062 +v 160705.609375 -22445.765625 -34036.562500 +v 167219.140625 -22482.210938 -34152.593750 +v 165929.640625 -22935.035156 -34321.332031 +v 166833.640625 -22800.816406 -34280.660156 +v 165930.875000 -22934.988281 -34321.332031 +v 166509.125000 -23175.310547 -34428.035156 +v 161559.640625 -23306.007812 -34405.050781 +v 166220.031250 -23660.904297 -34612.812500 +v 159047.546875 -31737.449219 36387.218750 +v 158749.062500 -31737.449219 36385.796875 +v 158362.500000 -31712.439453 36381.757812 +v 157901.156250 -31615.132812 36370.691406 +v 149388.359375 -31691.576172 36338.496094 +v 157482.312500 -31456.886719 36353.386719 +v 155947.078125 -31115.417969 36308.804688 +v 157091.500000 -31237.945312 36328.687500 +v 156654.703125 -30885.396484 36285.976562 +v 156292.625000 -30459.638672 36229.082031 +v 155970.546875 -29868.781250 36140.203125 +v 151209.562500 -30610.013672 36218.269531 +v 151540.187500 -30096.605469 36145.425781 +v 155806.593750 -29322.224609 36047.691406 +v 151787.328125 -29418.859375 36034.578125 +v 155749.062500 -28737.449219 35937.820312 +v 151865.734375 -28737.449219 35906.101562 +v 155749.062500 -24945.951172 34930.621094 +v 151865.734375 -24945.951172 34888.855469 +v 155749.062500 -24816.646484 34886.957031 +v 151804.484375 -24342.843750 34678.320312 +v 155822.328125 -24286.976562 34702.339844 +v 151623.890625 -23765.898438 34462.816406 +v 151377.828125 -23306.007812 34280.847656 +v 155822.328125 -21778.291016 33675.031250 +v 155749.062500 -21780.208984 33675.031250 +v 155822.328125 -18860.197266 32147.164062 +v 155749.062500 -18861.591797 32147.164062 +v 155822.328125 -16089.352539 30316.914062 +v 155749.062500 -16090.249023 30316.914062 +v 155822.328125 -13495.203125 28197.832031 +v 155749.062500 -13495.633789 28197.832031 +v 155822.328125 -11107.201172 25803.468750 +v 155749.062500 -11107.202148 25803.468750 +v 155822.328125 -8951.918945 23150.568359 +v 155749.062500 -8951.532227 23150.568359 +v 155822.328125 -7044.430664 20268.656250 +v 155749.062500 -7043.701660 20268.656250 +v 155822.328125 -5396.934570 17190.445312 +v 155749.062500 -5395.910156 17190.445312 +v 155822.328125 -4021.629883 13948.654297 +v 155749.062500 -4020.357910 13948.654297 +v 155822.328125 -2930.714111 10575.997070 +v 155749.062500 -2929.246094 10575.997070 +v 155822.328125 -2136.385742 7105.191895 +v 155749.062500 -2134.775146 7105.191895 +v 155822.328125 -1650.843140 3568.954102 +v 155749.062500 -1649.145386 3568.954102 +v 155822.328125 -1486.284912 0.000000 +v 155749.062500 -1484.557617 0.000000 +v 155822.328125 -1650.843140 -3568.954102 +v 155749.062500 -1649.145386 -3568.954102 +v 155822.328125 -2136.385742 -7105.191895 +v 155749.062500 -2134.775146 -7105.191895 +v 155822.312500 -2930.713867 -10575.997070 +v 155749.062500 -2929.246094 -10575.997070 +v 155822.312500 -4021.629883 -13948.654297 +v 155749.062500 -4020.357910 -13948.654297 +v 155822.312500 -5396.934570 -17190.445312 +v 155749.062500 -5395.910156 -17190.445312 +v 155822.312500 -7044.430664 -20268.656250 +v 155749.062500 -7043.701660 -20268.656250 +v 155822.312500 -8951.918945 -23150.568359 +v 155749.062500 -8951.532227 -23150.568359 +v 155822.312500 -11107.201172 -25803.468750 +v 155749.062500 -11107.202148 -25803.468750 +v 155822.312500 -12877.726562 -27624.519531 +v 156038.218750 -23660.904297 34471.824219 +v 156327.312500 -23175.310547 34284.054688 +v 156651.890625 -22800.742188 34134.144531 +v 157037.328125 -22482.214844 34003.656250 +v 157395.468750 -22268.664062 33915.175781 +v 157782.578125 -22105.886719 33847.976562 +v 158334.531250 -21974.726562 33796.203125 +v 158749.062500 -21945.951172 33788.640625 +v 159047.546875 -21945.951172 33792.613281 +v 159642.156250 -22005.466797 33827.539062 +v 160282.375000 -22211.861328 33928.445312 +v 160705.359375 -22445.593750 34036.496094 +v 155806.593750 -29322.224609 -36047.687500 +v 151787.328125 -29418.859375 -36034.578125 +v 155749.062500 -28737.449219 -35937.820312 +v 151865.734375 -28737.449219 -35906.101562 +v 154967.718750 -27973.365234 -35769.398438 +v 152636.968750 -25696.648438 -35138.988281 +v 155749.062500 -24945.951172 -34930.621094 +v 151865.734375 -24945.951172 -34888.855469 +v 155822.312500 -24287.003906 -34702.351562 +v 151804.484375 -24342.855469 -34678.320312 +v 151623.906250 -23765.900391 -34462.808594 +v 151540.187500 -30096.605469 -36145.425781 +v 155970.546875 -29868.781250 -36140.203125 +v 155970.203125 -30314.873047 -36206.851562 +v 156292.625000 -30459.638672 -36229.082031 +v 150868.218750 -30971.285156 -36263.750000 +v 156654.796875 -30885.492188 -36285.988281 +v 150470.234375 -31272.320312 -36297.902344 +v 157091.500000 -31237.945312 -36328.687500 +v 149894.656250 -31555.484375 -36326.550781 +v 155968.328125 -32718.248047 -36445.628906 +v 149388.359375 -31691.574219 -36338.492188 +v 145791.140625 -33199.148438 -36445.628906 +v 148865.734375 -31737.449219 -36340.914062 +v 148567.234375 -31737.449219 -36339.644531 +v 148180.687500 -31712.439453 -36335.445312 +v 147719.343750 -31615.132812 -36323.257812 +v 147300.093750 -31456.699219 -36304.011719 +v 139712.828125 -31555.484375 -36284.281250 +v 146909.671875 -31237.945312 -36276.710938 +v 140288.421875 -31272.320312 -36252.199219 +v 145789.359375 -30740.500000 -36206.851562 +v 140686.453125 -30971.246094 -36214.605469 +v 141027.734375 -30610.013672 -36165.203125 +v 157481.843750 -31456.671875 -36353.363281 +v 157901.156250 -31615.132812 -36370.695312 +v 158362.500000 -31712.439453 -36381.757812 +v 158749.062500 -31737.449219 -36385.796875 +v 159047.546875 -31737.449219 -36387.218750 +v 159570.140625 -31691.582031 -36385.742188 +v 160076.468750 -31555.484375 -36376.121094 +v 161081.468750 -22740.685547 -34167.480469 +v 159047.546875 -21945.951172 -33792.613281 +v 158749.062500 -21945.951172 -33788.640625 +v 158334.531250 -21974.726562 -33796.203125 +v 157782.578125 -22105.890625 -33847.976562 +v 155749.062500 -21038.359375 -33322.152344 +v 157394.578125 -22269.117188 -33915.363281 +v 150100.546875 -22211.859375 -33807.800781 +v 157037.328125 -22482.212891 -34003.664062 +v 156651.937500 -22800.703125 -34134.128906 +v 156327.312500 -23175.310547 -34284.054688 +v 155749.062500 -23285.541016 -34321.332031 +v 150899.656250 -22740.685547 -34044.105469 +v 150523.843750 -22445.806641 -33914.382812 +v 155822.312500 -23283.351562 -34321.332031 +v 156038.218750 -23660.904297 -34471.828125 +v 148865.734375 -31737.449219 36340.914062 +v 148567.234375 -31737.449219 36339.644531 +v 142063.781250 -35003.226562 36491.617188 +v 148180.687500 -31712.439453 36335.445312 +v 145815.843750 -31557.337891 36308.804688 +v 147719.343750 -31615.132812 36323.257812 +v 147300.453125 -31456.871094 36304.031250 +v 146909.671875 -31237.945312 36276.710938 +v 146472.875000 -30885.390625 36229.929688 +v 146110.796875 -30459.638672 36168.375000 +v 145788.734375 -29868.781250 36073.449219 +v 142180.046875 -31689.630859 36308.804688 +v 135906.703125 -31888.355469 36308.804688 +v 127429.890625 -35493.027344 36491.617188 +v 125779.835938 -32138.578125 36308.804688 +v 115901.710938 -32311.765625 36308.804688 +v 118842.921875 -31691.572266 36242.550781 +v 118320.281250 -31737.449219 36247.218750 +v 145624.781250 -29322.224609 35975.730469 +v 141605.500000 -29418.859375 35970.078125 +v 141358.359375 -30096.605469 36087.148438 +v 141027.734375 -30610.013672 36165.203125 +v 145567.234375 -28737.449219 35860.628906 +v 141683.921875 -28737.449219 35836.171875 +v 142296.312500 -28407.806641 35769.398438 +v 141683.921875 -24945.951172 34800.542969 +v 142412.562500 -25188.052734 34886.957031 +v 145567.234375 -24945.951172 34830.792969 +v 141622.687500 -24342.964844 34589.035156 +v 145640.500000 -24286.994141 34600.421875 +v 141442.078125 -23765.898438 34373.355469 +v 145856.390625 -23660.904297 34367.964844 +v 141196.000000 -23306.007812 34191.941406 +v 145567.234375 -22007.154297 33675.031250 +v 140717.828125 -22740.685547 33956.890625 +v 142528.828125 -22060.646484 33675.031250 +v 140341.968750 -22445.761719 33828.628906 +v 139918.734375 -22211.861328 33723.753906 +v 139278.531250 -22005.466797 33627.789062 +v 138683.921875 -21945.951172 33597.250000 +v 135854.781250 -19118.142578 32147.164062 +v 138385.421875 -21945.951172 33595.390625 +v 137970.906250 -21974.726562 33605.796875 +v 135385.421875 -19121.605469 32147.164062 +v 135385.421875 -22163.527344 33675.031250 +v 129096.703125 -22005.468750 33575.816406 +v 129736.914062 -22211.861328 33669.550781 +v 145857.953125 -22001.710938 33675.031250 +v 146145.500000 -23175.310547 34178.617188 +v 146469.953125 -22800.863281 34027.363281 +v 146855.515625 -22482.214844 33895.367188 +v 147213.578125 -22268.701172 33805.609375 +v 147600.765625 -22105.888672 33736.988281 +v 148152.718750 -21974.726562 33683.175781 +v 145860.843750 -19017.761719 32147.164062 +v 145567.234375 -19021.480469 32147.164062 +v 145567.234375 -16186.464844 30316.914062 +v 142761.359375 -16203.844727 30316.914062 +v 142877.625000 -13534.866211 28197.832031 +v 135854.781250 -13529.843750 28197.832031 +v 135854.781250 -11042.446289 25803.468750 +v 135385.421875 -13528.947266 28197.832031 +v 135385.421875 -11039.610352 25803.468750 +v 125781.859375 -13497.627930 28197.832031 +v 125781.859375 -10972.174805 25803.468750 +v 125203.601562 -13495.043945 28197.832031 +v 125203.601562 -10967.625977 25803.468750 +v 115924.453125 -13445.356445 28197.832031 +v 115924.453125 -10889.397461 25803.468750 +v 115021.781250 -13439.842773 28197.832031 +v 115021.781250 -10881.394531 25803.468750 +v 105742.609375 -10797.531250 25803.468750 +v 105742.609375 -8467.744141 23150.568359 +v 104839.960938 -8457.779297 23150.568359 +v 104839.960938 -6394.267090 20268.656250 +v 94658.148438 -8350.657227 23150.568359 +v 94658.148438 -6271.455566 20268.656250 +v 85764.601562 -8269.111328 23150.568359 +v 85764.601562 -6179.061035 20268.656250 +v 84476.328125 -8258.546875 23150.568359 +v 84476.328125 -6167.114746 20268.656250 +v 74294.507812 -8186.578125 23150.568359 +v 74294.507812 -6085.737305 20268.656250 +v 64112.691406 -8133.125000 23150.568359 +v 64112.691406 -6025.295898 20268.656250 +v 55833.824219 -8101.407715 23150.568359 +v 55833.824219 -5989.432129 20268.656250 +v 53930.875000 -8095.435059 23150.568359 +v 148567.234375 -21945.951172 33674.023438 +v 148865.734375 -21945.951172 33676.835938 +v 149460.343750 -22005.466797 33709.410156 +v 150100.546875 -22211.861328 33807.800781 +v 150523.750000 -22445.734375 33914.359375 +v 150899.656250 -22740.685547 34044.113281 +v 150867.765625 -30971.691406 36263.808594 +v 150470.234375 -31272.320312 36297.898438 +v 149894.656250 -31555.482422 36326.554688 +v 145624.781250 -29322.224609 -35975.726562 +v 141605.500000 -29418.859375 -35970.078125 +v 145567.234375 -28737.449219 -35860.628906 +v 141683.921875 -28737.449219 -35836.171875 +v 145551.875000 -28310.429688 -35769.398438 +v 145464.656250 -25907.917969 -35138.988281 +v 145567.234375 -24945.951172 -34830.792969 +v 141683.921875 -24945.951172 -34800.542969 +v 141622.687500 -24342.982422 -34589.039062 +v 145788.734375 -29868.781250 -36073.449219 +v 141358.375000 -30096.605469 -36087.148438 +v 146110.796875 -30459.638672 -36168.375000 +v 146473.218750 -30885.718750 -36229.976562 +v 151209.562500 -30610.013672 -36218.265625 +v 151377.828125 -23306.007812 -34280.847656 +v 149460.343750 -22005.464844 -33709.414062 +v 148865.734375 -21945.951172 -33676.835938 +v 145926.531250 -21242.078125 -33322.152344 +v 148567.234375 -21945.951172 -33674.023438 +v 148152.718750 -21974.726562 -33683.175781 +v 147600.765625 -22105.890625 -33736.988281 +v 145567.234375 -21248.259766 -33322.152344 +v 145924.375000 -19016.949219 -32147.164062 +v 145567.234375 -19021.480469 -32147.164062 +v 145290.250000 -21252.966797 -33322.152344 +v 147212.750000 -22269.125000 -33805.781250 +v 146855.515625 -22482.212891 -33895.375000 +v 140342.015625 -22445.796875 -33828.644531 +v 146470.078125 -22800.732422 -34027.316406 +v 140717.843750 -22740.685547 -33956.886719 +v 141196.000000 -23306.007812 -34191.941406 +v 146145.500000 -23175.310547 -34178.617188 +v 145377.453125 -23551.183594 -34321.332031 +v 145567.234375 -23547.070312 -34321.332031 +v 145856.390625 -23660.904297 -34367.968750 +v 145640.500000 -24287.025391 -34600.433594 +v 141442.078125 -23765.900391 -34373.347656 +v 138683.921875 -31737.449219 36301.355469 +v 138385.421875 -31737.449219 36300.320312 +v 137998.859375 -31712.439453 36296.171875 +v 137537.515625 -31615.132812 36283.406250 +v 137118.484375 -31456.800781 36263.039062 +v 136727.859375 -31237.945312 36234.109375 +v 136291.093750 -30885.425781 36184.765625 +v 135928.984375 -30459.638672 36120.238281 +v 130106.601562 -31272.320312 36216.375000 +v 129531.015625 -31555.484375 36250.941406 +v 135606.921875 -29868.781250 36021.457031 +v 131176.546875 -30096.605469 36042.656250 +v 130845.921875 -30610.013672 36124.242188 +v 130504.132812 -30971.693359 36176.421875 +v 131423.687500 -29418.859375 35921.500000 +v 135442.968750 -29322.224609 35920.429688 +v 135385.421875 -28737.449219 35802.023438 +v 131502.093750 -28737.449219 35784.171875 +v 135385.421875 -24945.951172 34759.656250 +v 131502.093750 -24945.951172 34739.042969 +v 131440.890625 -24343.066406 34527.601562 +v 135458.687500 -24287.005859 34528.582031 +v 131260.265625 -23765.898438 34312.593750 +v 135674.578125 -23660.904297 34295.492188 +v 131014.187500 -23306.007812 34132.285156 +v 135963.671875 -23175.310547 34105.593750 +v 130536.015625 -22740.685547 33899.390625 +v 136288.125000 -22800.871094 33953.781250 +v 136673.687500 -22482.214844 33821.078125 +v 135854.781250 -22157.693359 33675.031250 +v 137031.703125 -22268.732422 33730.601562 +v 137418.953125 -22105.888672 33661.078125 +v 140685.968750 -30971.675781 36214.664062 +v 140288.421875 -31272.320312 36252.199219 +v 139712.828125 -31555.484375 36284.285156 +v 139206.515625 -31691.578125 36298.050781 +v 135442.968750 -29322.226562 -35920.425781 +v 131423.687500 -29418.859375 -35921.500000 +v 135385.421875 -28737.449219 -35802.023438 +v 131502.093750 -28737.449219 -35784.171875 +v 135233.703125 -28588.531250 -35769.398438 +v 132774.250000 -26181.980469 -35138.988281 +v 135385.421875 -24945.951172 -34759.656250 +v 131502.093750 -24945.951172 -34739.042969 +v 131440.890625 -24343.082031 -34527.605469 +v 135606.906250 -29868.783203 -36021.453125 +v 131176.546875 -30096.605469 -36042.656250 +v 135928.984375 -30459.638672 -36120.238281 +v 130845.921875 -30610.013672 -36124.242188 +v 130504.656250 -30971.222656 -36176.351562 +v 135928.593750 -31054.845703 -36206.851562 +v 130106.601562 -31272.320312 -36216.375000 +v 129531.015625 -31555.484375 -36250.941406 +v 137118.296875 -31456.712891 -36263.027344 +v 135926.921875 -33558.804688 -36445.628906 +v 137537.515625 -31615.132812 -36283.406250 +v 137998.859375 -31712.439453 -36296.171875 +v 136291.578125 -30885.902344 -36184.835938 +v 136727.859375 -31237.945312 -36234.109375 +v 138385.421875 -31737.449219 -36300.320312 +v 138683.921875 -31737.449219 -36301.355469 +v 139206.562500 -31691.570312 -36298.050781 +v 139918.734375 -22211.859375 -33723.750000 +v 139278.531250 -22005.464844 -33627.789062 +v 138683.921875 -21945.951172 -33597.250000 +v 135854.781250 -21385.105469 -33322.152344 +v 138385.421875 -21945.951172 -33595.390625 +v 137970.906250 -21974.726562 -33605.796875 +v 137418.953125 -22105.890625 -33661.082031 +v 135385.421875 -21390.335938 -33322.152344 +v 135385.421875 -19121.605469 -32147.164062 +v 125781.859375 -19171.425781 -32147.164062 +v 125781.859375 -16957.373047 -30802.083984 +v 125203.601562 -16957.482422 -30802.083984 +v 125203.601562 -14842.519531 -29292.630859 +v 115924.445312 -14808.048828 -29292.630859 +v 115924.445312 -12784.450195 -27624.519531 +v 115021.781250 -12778.292969 -27624.519531 +v 115021.781250 -10881.394531 -25803.468750 +v 105742.617188 -10797.531250 -25803.468750 +v 105742.617188 -8467.744141 -23150.568359 +v 104839.960938 -10789.354492 -25803.468750 +v 104839.960938 -8457.779297 -23150.568359 +v 94658.148438 -8350.657227 -23150.568359 +v 94658.148438 -6271.455566 -20268.656250 +v 85764.601562 -6179.061035 -20268.656250 +v 85764.601562 -4373.886230 -17190.445312 +v 84476.328125 -4360.747070 -17190.445312 +v 84476.328125 -2852.818359 -13948.654297 +v 74294.507812 -2756.529785 -13948.654297 +v 74294.507812 -1555.033203 -10575.997070 +v 64112.691406 -1479.520996 -10575.997070 +v 64112.691406 -601.765320 -7105.191895 +v 55833.824219 -555.231812 -7105.191895 +v 55833.824219 -17.637909 -3568.954102 +v 53930.875000 -8.676009 -3568.954102 +v 53930.875000 173.590668 0.000000 +v 43749.054688 210.901154 0.000000 +v 43749.054688 28.356102 3568.954102 +v 33567.238281 50.001125 3568.954102 +v 33567.238281 -489.092987 7105.191895 +v 25833.611328 -480.587799 7105.191895 +v 25833.611328 -1362.840210 10575.997070 +v 23385.417969 -1361.247314 10575.997070 +v 23385.417969 -2573.000732 13948.654297 +v 13203.600586 -2570.087646 13948.654297 +v 13203.600586 -4097.936523 17190.445312 +v 3021.782227 -4097.719727 17190.445312 +v 3021.782227 -5927.969238 20268.656250 +v -7160.036133 -5927.969238 20268.656250 +v -7160.036133 -8047.051758 23150.568359 +v -17341.853516 -8047.051758 23150.568359 +v -17341.853516 -10441.415039 25803.468750 +v -27523.671875 -10441.415039 25803.468750 +v -27523.671875 -13094.315430 28197.832031 +v -34166.402344 -13094.315430 28197.832031 +v -34166.402344 -15976.228516 30316.914062 +v -37705.492188 -15976.228516 30316.914062 +v -37705.492188 -19054.439453 32147.164062 +v 137030.921875 -22269.126953 -33730.765625 +v 136673.687500 -22482.212891 -33821.085938 +v 130160.187500 -22445.789062 -33772.753906 +v 136288.250000 -22800.753906 -33953.738281 +v 130536.023438 -22740.685547 -33899.386719 +v 135963.671875 -23175.310547 -34105.593750 +v 131014.187500 -23306.007812 -34132.285156 +v 135385.421875 -23732.457031 -34321.332031 +v 131260.265625 -23765.900391 -34312.585938 +v 135458.671875 -24287.035156 -34528.589844 +v 135674.578125 -23660.904297 -34295.492188 +v 128502.093750 -31737.449219 36270.156250 +v 128203.601562 -31737.449219 36269.371094 +v 127817.046875 -31712.439453 36265.378906 +v 127355.703125 -31615.132812 36252.375000 +v 126936.492188 -31456.716797 36231.378906 +v 126546.039062 -31237.945312 36201.523438 +v 126109.320312 -30885.468750 36150.656250 +v 125747.164062 -30459.638672 36084.347656 +v 119924.781250 -31272.320312 36190.093750 +v 119349.195312 -31555.484375 36226.386719 +v 125425.093750 -29868.781250 35983.269531 +v 120994.734375 -30096.605469 36010.691406 +v 120664.101562 -30610.013672 36094.542969 +v 120322.320312 -30971.691406 36148.507812 +v 121241.867188 -29418.859375 35887.023438 +v 125261.148438 -29322.224609 35880.296875 +v 125203.601562 -28737.449219 35759.976562 +v 121320.281250 -28737.449219 35747.734375 +v 125203.601562 -24945.951172 34712.226562 +v 121320.281250 -24945.951172 34699.332031 +v 121259.093750 -24343.146484 34488.636719 +v 125276.859375 -24287.009766 34481.410156 +v 121078.445312 -23765.898438 34274.832031 +v 125492.757812 -23660.904297 34248.605469 +v 120832.367188 -23306.007812 34095.929688 +v 125781.859375 -23175.310547 34058.886719 +v 125203.601562 -22261.712891 33675.031250 +v 125781.859375 -22257.480469 33675.031250 +v 127789.078125 -21974.726562 33557.246094 +v 127237.132812 -22105.888672 33613.507812 +v 126849.843750 -22268.755859 33683.523438 +v 126491.875000 -22482.214844 33774.277344 +v 126106.304688 -22800.875000 33907.117188 +v 128203.601562 -21945.951172 33545.878906 +v 125781.859375 -19171.425781 32147.164062 +v 125203.601562 -19173.255859 32147.164062 +v 118914.890625 -22005.468750 33546.957031 +v 119555.093750 -22211.861328 33638.734375 +v 128502.093750 -21945.951172 33546.976562 +v 130160.031250 -22445.687500 33772.710938 +v 129024.718750 -31691.574219 36266.097656 +v 125261.148438 -29322.226562 -35880.292969 +v 121320.281250 -28737.449219 -35747.734375 +v 125203.601562 -28737.449219 -35759.976562 +v 122738.726562 -26323.333984 -35138.988281 +v 125203.601562 -24945.951172 -34712.226562 +v 121320.281250 -24945.951172 -34699.332031 +v 121259.093750 -24343.156250 -34488.636719 +v 121241.867188 -29418.859375 -35887.023438 +v 125425.093750 -29868.783203 -35983.265625 +v 120994.734375 -30096.605469 -36010.691406 +v 125747.164062 -30459.638672 -36084.347656 +v 120664.101562 -30610.013672 -36094.542969 +v 120322.851562 -30971.212891 -36148.437500 +v 125747.890625 -31293.478516 -36206.851562 +v 119924.781250 -31272.320312 -36190.097656 +v 119349.195312 -31555.484375 -36226.386719 +v 125750.093750 -33836.074219 -36445.628906 +v 118842.953125 -31691.566406 -36242.546875 +v 115925.546875 -34028.718750 -36445.628906 +v 118320.281250 -31737.449219 -36247.218750 +v 118021.781250 -31737.449219 -36246.660156 +v 117635.234375 -31712.439453 -36242.859375 +v 117173.882812 -31615.132812 -36229.812500 +v 115927.531250 -31455.453125 -36206.851562 +v 116754.656250 -31456.708984 -36208.531250 +v 116364.218750 -31237.945312 -36178.183594 +v 115927.968750 -30885.925781 -36126.574219 +v 109742.960938 -31272.320312 -36172.058594 +v 110141.039062 -30971.208984 -36129.367188 +v 126109.789062 -30885.921875 -36150.730469 +v 126546.039062 -31237.945312 -36201.519531 +v 126936.476562 -31456.710938 -36231.378906 +v 127355.703125 -31615.132812 -36252.375000 +v 127817.046875 -31712.439453 -36265.378906 +v 128203.601562 -31737.449219 -36269.371094 +v 128502.093750 -31737.449219 -36270.156250 +v 129024.757812 -31691.568359 -36266.093750 +v 125752.296875 -36387.414062 -36480.082031 +v 135925.250000 -36071.406250 -36480.082031 +v 125754.500000 -38934.355469 -36308.804688 +v 135923.593750 -38579.707031 -36308.804688 +v 125756.703125 -41463.765625 -35936.941406 +v 135921.921875 -41070.765625 -35936.941406 +v 125758.906250 -43962.503906 -35370.210938 +v 135920.265625 -43531.652344 -35370.210938 +v 125761.109375 -46417.425781 -34614.335938 +v 135918.593750 -45949.414062 -34614.335938 +v 125763.312500 -48815.394531 -33675.031250 +v 135916.937500 -48311.121094 -33675.031250 +v 125765.515625 -51143.273438 -32558.007812 +v 135915.265625 -50603.828125 -32558.007812 +v 125767.718750 -53387.925781 -31268.990234 +v 135913.609375 -52814.593750 -31268.990234 +v 125769.921875 -55536.207031 -29813.693359 +v 135911.937500 -54930.480469 -29813.693359 +v 125772.125000 -57574.980469 -28197.832031 +v 135910.281250 -56938.546875 -28197.832031 +v 125774.328125 -59491.109375 -26427.126953 +v 135908.609375 -58825.851562 -26427.126953 +v 125776.531250 -61271.835938 -24507.691406 +v 135906.937500 -60579.828125 -24507.691406 +v 125778.734375 -62908.820312 -22450.283203 +v 135905.281250 -62192.257812 -22450.283203 +v 125780.937500 -64396.574219 -20268.656250 +v 135903.609375 -63657.738281 -20268.656250 +v 125783.140625 -65729.656250 -17976.611328 +v 135901.953125 -64970.906250 -17976.611328 +v 125785.335938 -66902.625000 -15587.953125 +v 135900.281250 -66126.398438 -15587.953125 +v 125787.539062 -67910.039062 -13116.480469 +v 135898.625000 -67118.859375 -13116.480469 +v 125789.742188 -68746.453125 -10575.997070 +v 135896.953125 -67942.921875 -10575.997070 +v 125791.945312 -69406.437500 -7980.305664 +v 135895.296875 -68593.226562 -7980.305664 +v 125794.148438 -69884.546875 -5343.207031 +v 135893.625000 -69064.414062 -5343.207031 +v 125796.351562 -70175.335938 -2678.504639 +v 135891.968750 -69351.117188 -2678.504639 +v 125798.554688 -70273.367188 0.000000 +v 135890.296875 -69447.976562 0.000000 +v 135888.078125 -69276.781250 3568.954102 +v 145830.296875 -68432.687500 0.000000 +v 145832.671875 -68264.140625 3568.954102 +v 155924.453125 -67003.421875 3568.954102 +v 155921.953125 -66518.343750 7105.191895 +v 165943.671875 -65019.136719 7105.191895 +v 165941.375000 -64246.558594 10575.997070 +v 175938.062500 -62502.226562 10573.423828 +v 175938.062500 -61474.222656 13945.259766 +v 186000.000000 -59508.187500 13921.276367 +v 186000.000000 -58260.203125 17156.705078 +v 195904.484375 -56168.980469 17077.513672 +v 195904.484375 -54736.402344 20135.501953 +v 205790.625000 -52544.425781 19953.029297 +v 205790.625000 -50963.921875 22790.066406 +v 215576.312500 -48739.933594 22446.460938 +v 215576.312500 -47047.625000 25018.673828 +v 225234.750000 -44847.812500 24447.343750 +v 225234.750000 -43081.019531 26715.869141 +v 234739.109375 -40959.214844 25844.529297 +v 234739.109375 -39161.277344 27786.759766 +v 244062.593750 -37167.648438 26540.123047 +v 244062.593750 -35379.613281 28142.365234 +v 253187.203125 -33553.597656 26460.664062 +v 253187.203125 -31811.615234 27718.265625 +v 262130.109375 -30164.210938 25612.503906 +v 262130.109375 -28500.017578 26534.271484 +v 270917.250000 -27034.044922 24047.140625 +v 270917.250000 -25475.017578 24655.396484 +v 279574.593750 -24191.398438 21844.257812 +v 279574.593750 -22760.478516 22173.669922 +v 288128.093750 -21658.162109 19108.113281 +v 288606.218750 -20321.404297 19025.941406 +v 296603.718750 -20573.699219 15883.535156 +v 301057.093750 -18967.021484 14205.668945 +v 313425.187500 -17632.265625 9215.513672 +v 313425.187500 -19229.449219 9033.126953 +v 296603.718750 -21687.419922 15647.569336 +v 296603.718750 -22780.533203 15261.539062 +v 288128.093750 -24179.855469 18359.843750 +v 288128.093750 -25393.607422 17722.044922 +v 279574.593750 -26960.570312 20565.232422 +v 279574.593750 -28272.345703 19632.169922 +v 270917.250000 -30005.140625 22158.634766 +v 270917.250000 -31387.820312 20897.066406 +v 262130.109375 -33282.734375 23058.394531 +v 262130.109375 -34704.777344 21446.666016 +v 253187.203125 -36756.277344 23209.927734 +v 253187.203125 -38181.816406 21239.101562 +v 244062.593750 -40382.644531 22588.949219 +v 244062.593750 -41773.453125 20266.541016 +v 234739.109375 -44108.046875 21218.494141 +v 234739.109375 -45430.074219 18577.097656 +v 225234.750000 -47853.699219 19203.417969 +v 225234.750000 -49072.621094 16286.985352 +v 215576.312500 -51531.269531 16667.609375 +v 215576.312500 -52611.144531 13524.415039 +v 205790.625000 -55049.054688 13731.443359 +v 205790.625000 -55952.964844 10411.306641 +v 195904.484375 -58313.484375 10506.518555 +v 195904.484375 -59004.195312 7058.514160 +v 186000.000000 -61218.906250 7091.246094 +v 186000.000000 -61659.500000 3561.949219 +v 175938.062500 -63708.289062 3568.085693 +v 175938.062500 -63863.355469 0.000000 +v 165948.296875 -65650.976562 0.000000 +v 165950.015625 -65560.343750 -2678.504639 +v 155928.843750 -67074.507812 -2678.504639 +v 155930.718750 -66799.203125 -5343.207031 +v 145826.750000 -68056.796875 -5343.207031 +v 145824.968750 -67594.523438 -7980.305664 +v 129736.914062 -22211.859375 -33669.546875 +v 129096.710938 -22005.466797 -33575.816406 +v 128502.093750 -21945.951172 -33546.976562 +v 125781.859375 -21473.070312 -33322.152344 +v 128203.601562 -21945.951172 -33545.878906 +v 127789.078125 -21974.726562 -33557.246094 +v 127237.132812 -22105.890625 -33613.507812 +v 126849.117188 -22269.121094 -33683.675781 +v 126491.875000 -22482.212891 -33774.285156 +v 126106.406250 -22800.769531 -33907.082031 +v 125781.859375 -23175.310547 -34058.886719 +v 125203.601562 -21476.693359 -33322.152344 +v 120354.203125 -22740.685547 -33865.386719 +v 119978.320312 -22445.757812 -33740.347656 +v 120832.367188 -23306.007812 -34095.929688 +v 125492.757812 -23660.904297 -34248.605469 +v 121078.445312 -23765.900391 -34274.824219 +v 125203.601562 -23854.642578 -34321.332031 +v 125276.859375 -24287.039062 -34481.417969 +v 118021.781250 -31737.449219 36246.660156 +v 117635.234375 -31712.439453 36242.859375 +v 117173.882812 -31615.132812 36229.812500 +v 116754.585938 -31456.677734 36208.523438 +v 116364.218750 -31237.945312 36178.183594 +v 115927.546875 -30885.515625 36126.511719 +v 115565.351562 -30459.638672 36059.234375 +v 110482.281250 -30610.013672 36074.375000 +v 110140.515625 -30971.675781 36129.437500 +v 109742.960938 -31272.320312 36172.058594 +v 110812.914062 -30096.605469 35989.191406 +v 115243.281250 -29868.781250 35956.945312 +v 111060.046875 -29418.859375 35864.148438 +v 115079.328125 -29322.224609 35852.976562 +v 111138.460938 -28737.449219 35723.925781 +v 115021.781250 -28737.449219 35731.714844 +v 115021.781250 -24945.951172 34683.480469 +v 115095.046875 -24287.013672 34453.542969 +v 111077.289062 -24343.205078 34466.851562 +v 111138.460938 -24945.951172 34676.398438 +v 110896.625000 -23765.898438 34254.523438 +v 115310.945312 -23660.904297 34221.628906 +v 110650.546875 -23306.007812 34077.136719 +v 115600.039062 -23175.310547 34032.593750 +v 115924.460938 -22800.898438 33881.296875 +v 116310.054688 -22482.214844 33748.726562 +v 115924.460938 -22311.023438 33675.031250 +v 115021.781250 -22314.144531 33675.031250 +v 110172.382812 -22740.685547 33848.929688 +v 109796.265625 -22445.599609 33725.304688 +v 109373.281250 -22211.859375 33625.160156 +v 108733.070312 -22005.466797 33535.007812 +v 115021.781250 -19187.769531 32147.164062 +v 105742.609375 -19178.259766 32147.164062 +v 105742.609375 -16183.069336 30316.914062 +v 104839.960938 -16179.025391 30316.914062 +v 104839.960938 -13372.685547 28197.832031 +v 94658.148438 -16130.609375 30316.914062 +v 94658.148438 -13302.932617 28197.832031 +v 85764.601562 -16089.657227 30316.914062 +v 85764.601562 -13247.226562 28197.832031 +v 84476.328125 -16084.260742 30316.914062 +v 84476.328125 -13239.951172 28197.832031 +v 74294.507812 -16047.498047 30316.914062 +v 74294.507812 -13190.393555 28197.832031 +v 64112.691406 -16020.194336 30316.914062 +v 64112.691406 -13153.585938 28197.832031 +v 55833.824219 -16003.993164 30316.914062 +v 55833.824219 -13131.745117 28197.832031 +v 53930.875000 -16000.942383 30316.914062 +v 53930.875000 -13127.631836 28197.832031 +v 43749.054688 -15988.334961 30316.914062 +v 43749.054688 -13110.636719 28197.832031 +v 33567.238281 -15980.965820 30316.914062 +v 33567.238281 -13100.702148 28197.832031 +v 25833.611328 -15978.004883 30316.914062 +v 116667.976562 -22268.777344 33658.023438 +v 117055.312500 -22105.890625 33587.839844 +v 117607.265625 -21974.726562 33531.003906 +v 115924.460938 -19187.689453 32147.164062 +v 115924.460938 -16221.960938 30316.914062 +v 125203.601562 -16240.644531 30316.914062 +v 118021.781250 -21945.951172 33518.957031 +v 118320.281250 -21945.951172 33519.480469 +v 119978.226562 -22445.697266 33740.320312 +v 120354.195312 -22740.685547 33865.390625 +v 115079.328125 -29322.226562 -35852.972656 +v 111138.460938 -28737.449219 -35723.925781 +v 115021.781250 -28737.449219 -35731.714844 +v 112649.929688 -26412.937500 -35138.988281 +v 115021.781250 -24945.951172 -34683.480469 +v 111138.460938 -24945.951172 -34676.398438 +v 111077.289062 -24343.208984 -34466.851562 +v 111060.046875 -29418.859375 -35864.148438 +v 115243.273438 -29868.783203 -35956.941406 +v 110812.914062 -30096.605469 -35989.191406 +v 115565.351562 -30459.638672 -36059.234375 +v 110482.281250 -30610.013672 -36074.375000 +v 119555.093750 -22211.859375 -33638.730469 +v 118914.890625 -22005.466797 -33546.957031 +v 118320.281250 -21945.951172 -33519.480469 +v 115924.437500 -21517.138672 -33322.152344 +v 118021.781250 -21945.951172 -33518.957031 +v 117607.265625 -21974.726562 -33531.003906 +v 117055.312500 -22105.886719 -33587.843750 +v 116667.953125 -22268.792969 -33658.023438 +v 116310.054688 -22482.212891 -33748.726562 +v 115924.437500 -22800.917969 -33881.312500 +v 115021.781250 -21519.486328 -33322.152344 +v 115021.781250 -19187.769531 -32147.164062 +v 105742.625000 -19178.259766 -32147.164062 +v 105742.617188 -16915.203125 -30802.083984 +v 104839.960938 -19176.513672 -32147.164062 +v 104839.960938 -16911.720703 -30802.083984 +v 94658.148438 -16868.876953 -30802.083984 +v 94658.148438 -14690.689453 -29292.630859 +v 85764.601562 -14642.223633 -29292.630859 +v 85764.601562 -12570.651367 -27624.519531 +v 84476.328125 -12562.929688 -27624.519531 +v 84476.328125 -10621.667969 -25803.468750 +v 74294.507812 -10560.331055 -25803.468750 +v 74294.507812 -8186.578125 -23150.568359 +v 64112.691406 -8133.125000 -23150.568359 +v 64112.691406 -6025.295898 -20268.656250 +v 55833.824219 -5989.432129 -20268.656250 +v 55833.824219 -4165.320312 -17190.445312 +v 53930.875000 -4157.892090 -17190.445312 +v 53930.875000 -2634.587891 -13948.654297 +v 43749.054688 -2601.566162 -13948.654297 +v 43749.054688 -1391.409302 -10575.997070 +v 33567.238281 -1371.029785 -10575.997070 +v 33567.238281 -489.092987 -7105.191895 +v 25833.611328 -480.587799 -7105.191895 +v 25833.611328 58.699234 -3568.954102 +v 23385.417969 60.390972 -3568.954102 +v 23385.417969 243.176834 0.000000 +v 13203.600586 246.468109 0.000000 +v 13203.600586 63.657681 3568.954102 +v 3021.782227 63.918869 3568.954102 +v 3021.782227 -475.483948 7105.191895 +v -7160.036133 -475.483948 7105.191895 +v -7160.036133 -1357.925659 10575.997070 +v -17341.853516 -1357.925659 10575.997070 +v -17341.853516 -2569.854736 13948.654297 +v -27523.671875 -2569.854736 13948.654297 +v -27523.671875 -4097.719727 17190.445312 +v -34166.402344 -4097.719727 17190.445312 +v -34166.402344 -5927.969238 20268.656250 +v -37705.492188 -5927.969238 20268.656250 +v -37705.492188 -8047.051758 23150.568359 +v -47887.308594 -8047.051758 23150.568359 +v -47887.308594 -10441.415039 25803.468750 +v -60000.000000 -10441.415039 25803.468750 +v -60000.000000 -13094.315430 28197.832031 +v -64136.152344 -13094.315430 28197.832031 +v -64136.152344 -15976.228516 30316.914062 +v 110172.382812 -22740.683594 -33848.925781 +v 115600.039062 -23175.310547 -34032.593750 +v 110650.546875 -23306.007812 -34077.132812 +v 115310.945312 -23660.904297 -34221.628906 +v 110896.625000 -23765.900391 -34254.515625 +v 115021.781250 -23926.630859 -34321.332031 +v 115095.039062 -24287.042969 -34453.550781 +v 108138.460938 -31737.449219 36231.449219 +v 107839.960938 -31737.449219 36231.082031 +v 105773.843750 -32432.080078 36308.804688 +v 107453.414062 -31712.439453 36227.460938 +v 106992.070312 -31615.132812 36214.468750 +v 106572.757812 -31456.671875 36193.089844 +v 106182.398438 -31237.945312 36162.546875 +v 105745.773438 -30885.560547 36110.515625 +v 105383.531250 -30459.638672 36042.812500 +v 100300.460938 -30610.013672 36061.554688 +v 99958.718750 -30971.656250 36117.214844 +v 99561.148438 -31272.320312 36160.429688 +v 100631.093750 -30096.605469 35975.691406 +v 105061.460938 -29868.781250 35940.023438 +v 100878.234375 -29418.859375 35850.046875 +v 104897.507812 -29322.224609 35835.683594 +v 100956.640625 -28737.449219 35709.562500 +v 104839.960938 -28737.449219 35714.132812 +v 104839.960938 -24945.951172 34668.464844 +v 104913.226562 -24287.015625 34439.753906 +v 100895.476562 -24343.244141 34457.109375 +v 100956.640625 -24945.951172 34665.343750 +v 100714.804688 -23765.898438 34246.316406 +v 105129.125000 -23660.902344 34209.085938 +v 100468.734375 -23306.007812 34070.394531 +v 105418.226562 -23175.310547 34021.039062 +v 104839.960938 -22333.294922 33675.031250 +v 105742.609375 -22800.931641 33870.496094 +v 105742.609375 -22332.619141 33675.031250 +v 106128.234375 -22482.214844 33738.476562 +v 106486.125000 -22268.798828 33648.070312 +v 106873.492188 -22105.890625 33577.968750 +v 107425.445312 -21974.726562 33520.910156 +v 104839.960938 -19176.513672 32147.164062 +v 98551.250000 -22005.468750 33534.078125 +v 94658.148438 -19150.888672 32147.164062 +v 97956.640625 -21945.951172 33508.308594 +v 97658.148438 -21945.951172 33508.402344 +v 97243.625000 -21974.726562 33521.093750 +v 94658.148438 -22331.671875 33675.031250 +v 96691.671875 -22105.890625 33578.089844 +v 96304.304688 -22268.794922 33647.906250 +v 95946.421875 -22482.214844 33737.855469 +v 95560.765625 -22800.957031 33869.144531 +v 95236.406250 -23175.310547 34018.789062 +v 90286.914062 -23306.007812 34070.425781 +v 94947.304688 -23660.902344 34205.710938 +v 90532.992188 -23765.898438 34245.070312 +v 94731.406250 -24287.017578 34435.003906 +v 90713.664062 -24343.269531 34454.457031 +v 94658.148438 -24945.951172 34662.371094 +v 90774.820312 -24945.951172 34661.417969 +v 90774.820312 -28737.449219 35701.378906 +v 107839.960938 -21945.951172 33508.425781 +v 108138.460938 -21945.951172 33508.558594 +v 109167.375000 -31555.484375 36209.476562 +v 108661.117188 -31691.568359 36226.328125 +v 98182.304688 -35987.023438 36491.617188 +v 85823.085938 -32560.316406 36308.804688 +v 68944.945312 -36164.031250 36491.617188 +v 55833.824219 -32647.691406 36308.804688 +v 25833.611328 -32674.123047 36308.804688 +v 47047.550781 -31737.449219 36202.250000 +v 46749.054688 -31737.449219 36202.210938 +v 104897.507812 -29322.226562 -35835.683594 +v 100956.640625 -28737.449219 -35709.562500 +v 104839.960938 -28737.449219 -35714.132812 +v 102521.000000 -26463.566406 -35138.988281 +v 104839.960938 -24945.951172 -34668.464844 +v 100956.640625 -24945.951172 -34665.343750 +v 100895.476562 -24343.246094 -34457.105469 +v 100878.234375 -29418.859375 -35850.046875 +v 105061.460938 -29868.783203 -35940.019531 +v 100631.093750 -30096.605469 -35975.687500 +v 105383.531250 -30459.638672 -36042.812500 +v 100300.460938 -30610.013672 -36061.550781 +v 105746.156250 -30885.927734 -36110.574219 +v 99959.218750 -30971.214844 -36117.144531 +v 99561.148438 -31272.320312 -36160.429688 +v 105746.687500 -31567.896484 -36206.851562 +v 98985.554688 -31555.484375 -36198.527344 +v 98479.296875 -31691.570312 -36215.812500 +v 105748.718750 -34166.667969 -36445.628906 +v 97956.640625 -31737.449219 -36221.238281 +v 97658.148438 -31737.449219 -36221.003906 +v 85819.179688 -34318.296875 -36445.628906 +v 97271.593750 -31712.439453 -36217.523438 +v 96810.250000 -31615.132812 -36204.613281 +v 88297.476562 -31691.568359 -36209.097656 +v 96391.015625 -31456.707031 -36183.242188 +v 88803.742188 -31555.484375 -36191.574219 +v 89379.328125 -31272.320312 -36153.121094 +v 106182.398438 -31237.945312 -36162.546875 +v 106572.828125 -31456.707031 -36193.093750 +v 106992.070312 -31615.132812 -36214.468750 +v 107453.414062 -31712.439453 -36227.460938 +v 107839.960938 -31737.449219 -36231.082031 +v 108138.460938 -31737.449219 -36231.449219 +v 108661.109375 -31691.570312 -36226.328125 +v 109167.375000 -31555.484375 -36209.476562 +v 109796.406250 -22445.691406 -33725.343750 +v 109373.281250 -22211.857422 -33625.156250 +v 108733.070312 -22005.466797 -33535.007812 +v 108138.460938 -21945.951172 -33508.558594 +v 105742.625000 -21530.847656 -33322.152344 +v 104839.960938 -21530.908203 -33322.152344 +v 94658.148438 -19150.888672 -32147.164062 +v 85764.601562 -16831.775391 -30802.083984 +v 84476.328125 -14635.871094 -29292.630859 +v 74294.507812 -12510.325195 -27624.519531 +v 64112.691406 -10514.774414 -25803.468750 +v 55833.824219 -8101.407715 -23150.568359 +v 53930.875000 -5982.678223 -20268.656250 +v 43749.054688 -4127.197266 -17190.445312 +v 33567.238281 -2582.265381 -13948.654297 +v 25833.611328 -1362.840210 -10575.997070 +v 23385.417969 -478.933594 -7105.191895 +v 13203.600586 63.657681 -3568.954102 +v 3021.782227 246.731247 0.000000 +v -7160.036133 63.918869 3568.954102 +v -17341.853516 -475.483948 7105.191895 +v -27523.671875 -1357.925659 10575.997070 +v -34166.402344 -2569.854736 13948.654297 +v -37705.492188 -4097.719727 17190.445312 +v -47887.308594 -5927.969238 20268.656250 +v -60000.000000 -8047.051758 23150.568359 +v -64136.152344 -10441.415039 25803.468750 +v -76000.000000 -13094.316406 28197.824219 +v -76000.000000 -15976.229492 30316.906250 +v -86298.500000 -15976.707031 30314.351562 +v -86298.500000 -19054.917969 32144.445312 +v -83000.000000 -22208.501953 33637.382812 +v -82397.125000 -22269.703125 33663.074219 +v 107839.960938 -21945.951172 -33508.425781 +v 107425.445312 -21974.726562 -33520.910156 +v 106873.492188 -22105.886719 -33577.972656 +v 106486.070312 -22268.828125 -33648.078125 +v 106128.234375 -22482.212891 -33738.476562 +v 105742.625000 -22800.917969 -33870.496094 +v 105418.218750 -23175.310547 -34021.039062 +v 99990.562500 -22740.683594 -33844.304688 +v 100468.734375 -23306.007812 -34070.394531 +v 105129.125000 -23660.904297 -34209.085938 +v 100714.804688 -23765.898438 -34246.312500 +v 104839.960938 -23961.462891 -34321.332031 +v 104913.218750 -24287.044922 -34439.765625 +v 97271.593750 -31712.439453 36217.523438 +v 97658.148438 -31737.449219 36221.003906 +v 97956.640625 -31737.449219 36221.238281 +v 98479.320312 -31691.566406 36215.812500 +v 98985.554688 -31555.484375 36198.523438 +v 88297.507812 -31691.564453 36209.097656 +v 96810.250000 -31615.132812 36204.613281 +v 88803.742188 -31555.484375 36191.574219 +v 96390.945312 -31456.675781 36183.238281 +v 89379.328125 -31272.320312 36153.121094 +v 96000.585938 -31237.945312 36152.640625 +v 89776.929688 -30971.634766 36109.605469 +v 95563.992188 -30885.597656 36100.503906 +v 90118.648438 -30610.013672 36053.667969 +v 95201.710938 -30459.638672 36032.679688 +v 90449.273438 -30096.605469 35967.535156 +v 94879.640625 -29868.781250 35929.792969 +v 90696.414062 -29418.859375 35841.753906 +v 94715.695312 -29322.224609 35825.449219 +v 94658.148438 -28737.449219 35703.980469 +v 99191.460938 -22211.861328 33622.980469 +v 99614.445312 -22445.597656 33721.972656 +v 99990.562500 -22740.685547 33844.308594 +v 94715.687500 -29322.226562 -35825.445312 +v 90774.820312 -28737.449219 -35701.378906 +v 94658.148438 -28737.449219 -35703.980469 +v 92365.632812 -26488.554688 -35138.988281 +v 94658.148438 -24945.951172 -34662.371094 +v 90774.820312 -24945.951172 -34661.417969 +v 90713.664062 -24343.279297 -34454.457031 +v 90696.414062 -29418.859375 -35841.753906 +v 94879.640625 -29868.783203 -35929.789062 +v 90449.273438 -30096.605469 -35967.535156 +v 95201.710938 -30459.638672 -36032.679688 +v 90118.648438 -30610.013672 -36053.667969 +v 95564.343750 -30885.939453 -36100.558594 +v 89777.390625 -30971.222656 -36109.542969 +v 96000.585938 -31237.945312 -36152.640625 +v 99614.484375 -22445.626953 -33721.984375 +v 99191.460938 -22211.857422 -33622.976562 +v 98551.250000 -22005.466797 -33534.082031 +v 97956.640625 -21945.951172 -33508.308594 +v 94658.148438 -21523.185547 -33322.152344 +v 85764.601562 -19125.695312 -32147.164062 +v 84476.328125 -16826.871094 -30802.083984 +v 74294.507812 -14592.592773 -29292.630859 +v 64112.691406 -12471.255859 -27624.519531 +v 55833.824219 -10487.742188 -25803.468750 +v 53930.875000 -8095.435059 -23150.568359 +v 43749.054688 -5954.770020 -20268.656250 +v 33567.238281 -4109.255859 -17190.445312 +v 25833.611328 -2574.509277 -13948.654297 +v 23385.417969 -1361.247314 -10575.997070 +v 13203.600586 -475.739349 -7105.191895 +v 3021.782227 63.918869 -3568.954102 +v -7160.036133 246.731247 0.000000 +v -17341.853516 63.918869 3568.954102 +v -27523.671875 -475.483948 7105.191895 +v -34166.402344 -1357.925659 10575.997070 +v -37705.492188 -2569.854736 13948.654297 +v -47887.308594 -4097.719727 17190.445312 +v -60000.000000 -5927.969238 20268.656250 +v -64136.156250 -8047.051758 23150.568359 +v -76000.000000 -10441.416992 25803.460938 +v -86298.500000 -13094.793945 28195.447266 +v -94287.843750 -15978.389648 30305.353516 +v -94287.843750 -19056.599609 32134.904297 +v -95727.070312 -19057.091797 32132.121094 +v -95727.070312 -22298.882812 33659.273438 +v -101254.078125 -22269.740234 33631.015625 +v -100679.953125 -22449.107422 33706.917969 +v 97658.148438 -21945.951172 -33508.402344 +v 97243.625000 -21974.726562 -33521.093750 +v 96691.671875 -22105.886719 -33578.093750 +v 96304.203125 -22268.849609 -33647.921875 +v 95946.414062 -22482.212891 -33737.855469 +v 89432.835938 -22445.734375 -33724.812500 +v 89808.750000 -22740.685547 -33846.089844 +v 95560.796875 -22800.921875 -33869.136719 +v 95236.406250 -23175.310547 -34018.789062 +v 90286.914062 -23306.007812 -34070.421875 +v 94947.304688 -23660.904297 -34205.710938 +v 90532.992188 -23765.900391 -34245.062500 +v 94658.148438 -23972.220703 -34321.332031 +v 94731.398438 -24287.052734 -34435.015625 +v 87774.820312 -31737.449219 36214.699219 +v 87476.328125 -31737.449219 36214.542969 +v 87089.773438 -31712.439453 36211.144531 +v 86628.429688 -31615.132812 36198.285156 +v 86209.140625 -31456.683594 36176.925781 +v 85818.765625 -31237.945312 36146.308594 +v 77593.007812 -31737.449219 36210.007812 +v 78115.695312 -31691.562500 36204.320312 +v 78621.921875 -31555.484375 36186.671875 +v 79197.507812 -31272.320312 36148.035156 +v 79595.132812 -30971.613281 36104.371094 +v 85382.203125 -30885.625000 36094.152344 +v 79936.828125 -30610.013672 36048.312500 +v 85019.890625 -30459.638672 36026.308594 +v 80267.460938 -30096.605469 35962.097656 +v 84697.820312 -29868.781250 35923.468750 +v 80514.593750 -29418.859375 35836.351562 +v 84533.875000 -29322.224609 35819.242188 +v 80593.007812 -28737.449219 35696.183594 +v 84476.328125 -28737.449219 35697.984375 +v 84476.328125 -24945.951172 34660.539062 +v 84549.585938 -24287.041016 34434.421875 +v 80531.843750 -24343.281250 34454.210938 +v 80593.007812 -24945.951172 34660.113281 +v 80351.171875 -23765.898438 34245.949219 +v 84765.484375 -23660.902344 34206.433594 +v 80105.093750 -23306.007812 34072.277344 +v 85054.585938 -23175.310547 34020.628906 +v 84476.328125 -22321.796875 33675.031250 +v 85378.953125 -22800.951172 33871.894531 +v 85764.601562 -22482.214844 33741.425781 +v 85764.601562 -22323.074219 33675.031250 +v 86122.476562 -22268.800781 33652.035156 +v 86509.859375 -22105.890625 33582.640625 +v 87061.812500 -21974.726562 33525.945312 +v 84476.328125 -19122.304688 32147.164062 +v 85764.601562 -19125.695312 32147.164062 +v 87476.328125 -21945.951172 33513.265625 +v 87774.820312 -21945.951172 33513.101562 +v 88369.437500 -22005.468750 33538.542969 +v 89009.640625 -22211.861328 33626.613281 +v 89432.609375 -22445.589844 33724.753906 +v 89808.742188 -22740.685547 33846.089844 +v 84533.875000 -29322.226562 -35819.242188 +v 80593.007812 -28737.449219 -35696.183594 +v 84476.328125 -28737.449219 -35697.984375 +v 82197.742188 -26501.509766 -35138.988281 +v 84476.328125 -24945.951172 -34660.539062 +v 80593.007812 -24945.951172 -34660.113281 +v 80531.851562 -24343.289062 -34454.210938 +v 80514.593750 -29418.859375 -35836.351562 +v 84697.820312 -29868.783203 -35923.464844 +v 80267.460938 -30096.605469 -35962.093750 +v 85019.890625 -30459.638672 -36026.308594 +v 79936.828125 -30610.013672 -36048.312500 +v 85382.531250 -30885.943359 -36094.203125 +v 79595.554688 -30971.234375 -36104.312500 +v 85818.765625 -31237.945312 -36146.308594 +v 79197.507812 -31272.320312 -36148.035156 +v 78621.921875 -31555.484375 -36186.671875 +v 85818.828125 -31684.126953 -36206.851562 +v 78115.664062 -31691.568359 -36204.320312 +v 77593.007812 -31737.449219 -36210.007812 +v 77294.507812 -31737.449219 -36209.890625 +v 55833.824219 -34424.148438 -36445.628906 +v 76907.960938 -31712.439453 -36206.527344 +v 67411.187500 -31737.449219 -36206.480469 +v 76446.617188 -31615.132812 -36193.687500 +v 67933.859375 -31691.566406 -36200.722656 +v 68440.101562 -31555.484375 -36182.980469 +v 86209.195312 -31456.707031 -36176.925781 +v 86628.429688 -31615.132812 -36198.285156 +v 87089.773438 -31712.439453 -36211.144531 +v 87476.328125 -31737.449219 -36214.542969 +v 87774.820312 -31737.449219 -36214.699219 +v 89009.640625 -22211.859375 -33626.609375 +v 88369.437500 -22005.466797 -33538.542969 +v 85764.601562 -21510.369141 -33322.152344 +v 87774.820312 -21945.951172 -33513.101562 +v 87476.328125 -21945.951172 -33513.265625 +v 87061.812500 -21974.726562 -33525.945312 +v 86509.859375 -22105.886719 -33582.644531 +v 86122.429688 -22268.828125 -33652.039062 +v 85764.601562 -22482.212891 -33741.425781 +v 84476.328125 -21508.554688 -33322.152344 +v 84476.328125 -19122.304688 -32147.164062 +v 74294.507812 -19099.210938 -32147.164062 +v 74294.507812 -16793.449219 -30802.083984 +v 64112.691406 -16768.626953 -30802.083984 +v 64112.691406 -14560.449219 -29292.630859 +v 55833.824219 -14541.375977 -29292.630859 +v 55833.824219 -12448.072266 -27624.519531 +v 53930.875000 -12443.707031 -27624.519531 +v 53930.875000 -10482.651367 -25803.468750 +v 43749.054688 -10461.616211 -25803.468750 +v 43749.054688 -8070.753906 -23150.568359 +v 33567.238281 -8056.327637 -23150.568359 +v 33567.238281 -5938.458008 -20268.656250 +v 25833.611328 -5931.902832 -20268.656250 +v 25833.611328 -4102.046387 -17190.445312 +v 23385.417969 -4100.644043 -17190.445312 +v 23385.417969 -2573.000732 -13948.654297 +v 13203.600586 -2570.087646 -13948.654297 +v 13203.600586 -1358.171631 -10575.997070 +v 3021.782227 -1357.925659 -10575.997070 +v 3021.782227 -475.483948 -7105.191895 +v -7160.036133 -475.483948 -7105.191895 +v -7160.036133 63.918869 -3568.954102 +v -17341.853516 63.918869 -3568.954102 +v -17341.853516 246.731247 0.000000 +v -27523.671875 246.731247 0.000000 +v -27523.671875 63.918869 3568.954102 +v -34166.402344 63.918869 3568.954102 +v -34166.402344 -475.483948 7105.191895 +v -37705.492188 -475.483948 7105.191895 +v -37705.492188 -1357.925659 10575.997070 +v -47887.308594 -1357.925659 10575.997070 +v -47887.308594 -2569.854736 13948.654297 +v -60000.000000 -2569.854736 13948.654297 +v -60000.000000 -4097.719727 17190.445312 +v -64136.156250 -4097.719727 17190.445312 +v -64136.156250 -5927.969238 20268.656250 +v -76000.000000 -5927.971191 20268.650391 +v -76000.000000 -8047.053223 23150.562500 +v -86298.500000 -8047.531250 23148.611328 +v -86298.500000 -10441.894531 25801.287109 +v -94287.843750 -10443.577148 25793.628906 +v -94287.843750 -13096.476562 28187.080078 +v -95727.070312 -13096.967773 28184.636719 +v -95727.070312 -15978.880859 30302.728516 +v -101982.093750 -15981.847656 30286.859375 +v -101982.093750 -19060.058594 32115.294922 +v -105155.640625 -19062.146484 32103.445312 +v -102155.640625 -22208.501953 33602.214844 +v -105155.640625 -22303.939453 33629.230469 +v -102758.375000 -22269.673828 33625.312500 +v -103332.531250 -22448.986328 33696.839844 +v -103853.570312 -22735.230469 33810.312500 +v -104303.273438 -23113.828125 33957.148438 +v -107190.117188 -22305.507812 33619.910156 +v -109138.421875 -23113.472656 33932.417969 +v -109587.304688 -22735.562500 33781.328125 +v -109817.234375 -22307.814453 33606.203125 +v -110108.632812 -22449.066406 33662.507812 +v -110682.593750 -22269.753906 33585.160156 +v -111285.710938 -22208.501953 33555.882812 +v -109817.234375 -19066.023438 32081.460938 +v -114584.210938 -19071.070312 32052.839844 +v -109817.234375 -15987.812500 30254.953125 +v -114584.210938 -15992.859375 30227.960938 +v -109817.234375 -13105.899414 28140.201172 +v -114584.210938 -13110.946289 28115.095703 +v -109817.234375 -10453.000000 25750.730469 +v -114584.210938 -10458.046875 25727.757812 +v -109817.234375 -8058.636230 23103.253906 +v -114584.210938 -8063.683105 23082.642578 +v -109817.234375 -5939.554199 20227.230469 +v -114584.210938 -5944.600586 20209.185547 +v -109817.234375 -4109.304688 17155.310547 +v -114584.210938 -4114.351074 17140.005859 +v -109817.234375 -2581.439453 13920.145508 +v -114584.210938 -2586.486084 13907.726562 +v -109817.234375 -1369.510254 10554.381836 +v -114584.210938 -1374.556885 10544.965820 +v -109817.234375 -487.068542 7090.670410 +v -114584.210938 -492.115082 7084.344238 +v -109817.234375 52.334278 3561.659668 +v -114584.210938 47.287724 3558.482178 +v -109817.234375 235.146667 0.000000 +v -114584.210938 230.100113 0.000000 +v -109817.234375 52.334278 -3561.659668 +v -114584.210938 47.287724 -3558.482178 +v -109817.234375 -487.068542 -7090.670410 +v -114584.210938 -492.115082 -7084.344238 +v -109817.234375 -1369.510254 -10554.381836 +v 85378.960938 -22800.941406 -33871.898438 +v 79626.929688 -22740.685547 -33849.214844 +v 79250.968750 -22445.705078 -33728.613281 +v 78827.828125 -22211.859375 -33630.968750 +v 78187.617188 -22005.466797 -33543.355469 +v 85054.585938 -23175.310547 -34020.628906 +v 80105.093750 -23306.007812 -34072.273438 +v 84765.484375 -23660.904297 -34206.433594 +v 80351.171875 -23765.900391 -34245.941406 +v 84476.328125 -23971.994141 -34321.332031 +v 84549.578125 -24287.064453 -34434.429688 +v 76907.960938 -31712.439453 36206.527344 +v 67411.187500 -31737.449219 36206.480469 +v 77294.507812 -31737.449219 36209.890625 +v 76446.617188 -31615.132812 36193.683594 +v 67933.882812 -31691.562500 36200.722656 +v 68440.101562 -31555.484375 36182.976562 +v 76027.335938 -31456.691406 36172.316406 +v 69015.687500 -31272.320312 36144.199219 +v 75636.945312 -31237.945312 36141.679688 +v 69413.328125 -30971.597656 36100.425781 +v 75200.406250 -30885.642578 36089.496094 +v 69755.007812 -30610.013672 36044.285156 +v 74838.078125 -30459.638672 36021.640625 +v 70085.640625 -30096.605469 35958.007812 +v 74516.007812 -29868.781250 35918.843750 +v 70332.773438 -29418.859375 35832.300781 +v 74352.054688 -29322.224609 35814.718750 +v 70411.187500 -28737.449219 35692.296875 +v 74294.507812 -28737.449219 35693.644531 +v 74294.507812 -24945.951172 34659.511719 +v 74367.757812 -24287.054688 34434.375000 +v 70350.031250 -24343.291016 34454.089844 +v 70411.187500 -24945.951172 34659.195312 +v 70169.351562 -23765.898438 34246.671875 +v 74583.671875 -23660.902344 34207.441406 +v 69923.273438 -23306.007812 34073.722656 +v 74872.765625 -23175.310547 34022.550781 +v 74294.507812 -22313.097656 33675.031250 +v 75197.148438 -22800.937500 33874.585938 +v 75582.781250 -22482.214844 33744.835938 +v 75940.671875 -22268.794922 33655.957031 +v 76328.039062 -22105.890625 33586.988281 +v 76879.992188 -21974.726562 33530.679688 +v 74294.507812 -19099.210938 32147.164062 +v 77294.507812 -21945.951172 33518.121094 +v 77593.007812 -21945.951172 33517.996094 +v 78187.617188 -22005.468750 33543.355469 +v 78827.820312 -22211.861328 33630.972656 +v 79250.781250 -22445.583984 33728.566406 +v 79626.929688 -22740.685547 33849.218750 +v 74352.054688 -29322.226562 -35814.718750 +v 70411.187500 -28737.449219 -35692.296875 +v 74294.507812 -28737.449219 -35693.644531 +v 72026.046875 -26510.978516 -35138.988281 +v 74294.507812 -24945.951172 -34659.511719 +v 70411.187500 -24945.951172 -34659.195312 +v 70350.031250 -24343.296875 -34454.089844 +v 70332.773438 -29418.859375 -35832.300781 +v 74516.007812 -29868.783203 -35918.839844 +v 70085.640625 -30096.605469 -35958.003906 +v 74838.078125 -30459.638672 -36021.640625 +v 69755.007812 -30610.013672 -36044.285156 +v 75201.101562 -30886.314453 -36089.605469 +v 69413.726562 -30971.244141 -36100.371094 +v 75636.945312 -31237.945312 -36141.687500 +v 69015.687500 -31272.320312 -36144.203125 +v 76027.109375 -31456.582031 -36172.296875 +v 74294.507812 -21496.195312 -33322.152344 +v 77593.007812 -21945.951172 -33517.996094 +v 77294.507812 -21945.951172 -33518.121094 +v 76879.992188 -21974.726562 -33530.679688 +v 76328.039062 -22105.886719 -33586.992188 +v 75940.523438 -22268.873047 -33655.984375 +v 75582.781250 -22482.212891 -33744.835938 +v 69069.117188 -22445.681641 -33731.496094 +v 68646.007812 -22211.859375 -33634.257812 +v 69445.109375 -22740.685547 -33851.601562 +v 75197.140625 -22800.943359 -33874.589844 +v 74872.765625 -23175.310547 -34022.546875 +v 69923.273438 -23306.007812 -34073.722656 +v 74583.671875 -23660.904297 -34207.441406 +v 70169.351562 -23765.900391 -34246.664062 +v 74294.507812 -23970.718750 -34321.332031 +v 74367.757812 -24287.076172 -34434.382812 +v 67112.687500 -31737.449219 36206.394531 +v 66726.140625 -31712.439453 36203.066406 +v 66264.796875 -31615.132812 36190.242188 +v 65845.531250 -31456.697266 36168.878906 +v 58258.285156 -31555.484375 36180.312500 +v 57752.070312 -31691.560547 36198.132812 +v 57229.371094 -31737.449219 36203.949219 +v 56930.875000 -31737.449219 36203.890625 +v 58833.871094 -31272.320312 36141.429688 +v 65455.128906 -31237.945312 36138.230469 +v 59231.527344 -30971.585938 36097.570312 +v 65018.601562 -30885.656250 36086.035156 +v 59573.191406 -30610.013672 36041.363281 +v 64656.257812 -30459.638672 36018.179688 +v 59903.820312 -30096.605469 35955.039062 +v 64334.187500 -29868.781250 35915.421875 +v 60150.957031 -29418.859375 35829.355469 +v 64170.238281 -29322.224609 35811.378906 +v 60229.371094 -28737.449219 35689.472656 +v 64112.691406 -28737.449219 35690.437500 +v 64112.691406 -24945.951172 34658.753906 +v 64185.941406 -24287.062500 34434.343750 +v 60168.214844 -24343.296875 34454.003906 +v 60229.371094 -24945.951172 34658.527344 +v 59987.535156 -23765.898438 34247.195312 +v 64401.851562 -23660.902344 34208.183594 +v 59741.457031 -23306.007812 34074.769531 +v 64690.949219 -23175.310547 34023.968750 +v 64112.691406 -22306.634766 33675.031250 +v 65015.335938 -22800.927734 33876.570312 +v 65400.964844 -22482.214844 33747.359375 +v 65758.859375 -22268.791016 33658.867188 +v 66146.218750 -22105.890625 33590.218750 +v 66698.171875 -21974.726562 33534.203125 +v 64112.691406 -19082.058594 32147.164062 +v 67112.687500 -21945.951172 33521.742188 +v 67411.187500 -21945.951172 33521.652344 +v 68005.796875 -22005.468750 33546.964844 +v 68646.007812 -22211.861328 33634.257812 +v 69068.960938 -22445.578125 33731.457031 +v 69445.109375 -22740.685547 33851.605469 +v 64170.238281 -29322.226562 -35811.375000 +v 60229.371094 -28737.449219 -35689.472656 +v 64112.691406 -28737.449219 -35690.437500 +v 61851.718750 -26517.945312 -35138.988281 +v 64112.691406 -24945.951172 -34658.753906 +v 60229.371094 -24945.951172 -34658.527344 +v 60168.214844 -24343.300781 -34454.003906 +v 60150.957031 -29418.859375 -35829.355469 +v 64334.187500 -29868.783203 -35915.414062 +v 59903.820312 -30096.605469 -35955.039062 +v 64656.257812 -30459.638672 -36018.175781 +v 59573.191406 -30610.013672 -36041.359375 +v 65019.269531 -30886.304688 -36086.140625 +v 59231.902344 -30971.251953 -36097.519531 +v 65455.128906 -31237.945312 -36138.238281 +v 58833.871094 -31272.320312 -36141.429688 +v 65845.296875 -31456.582031 -36168.855469 +v 58258.285156 -31555.484375 -36180.316406 +v 66264.796875 -31615.132812 -36190.242188 +v 57752.042969 -31691.566406 -36198.132812 +v 57229.371094 -31737.449219 -36203.949219 +v 66726.140625 -31712.439453 -36203.066406 +v 67112.687500 -31737.449219 -36206.394531 +v 55833.824219 -31762.267578 -36206.851562 +v 25833.611328 -31785.908203 -36206.851562 +v 46749.054688 -31737.449219 -36202.210938 +v 36865.734375 -31737.449219 -36201.210938 +v 46362.503906 -31712.439453 -36198.933594 +v 45901.160156 -31615.132812 -36186.152344 +v 37388.417969 -31691.564453 -36195.312500 +v 37894.648438 -31555.484375 -36177.398438 +v 68005.796875 -22005.466797 -33546.964844 +v 67411.187500 -21945.951172 -33521.652344 +v 64112.691406 -21487.015625 -33322.152344 +v 67112.687500 -21945.951172 -33521.742188 +v 66698.171875 -21974.726562 -33534.203125 +v 66146.218750 -22105.888672 -33590.222656 +v 65758.648438 -22268.902344 -33658.906250 +v 65400.960938 -22482.212891 -33747.359375 +v 65015.320312 -22800.945312 -33876.582031 +v 59263.292969 -22740.683594 -33853.324219 +v 58887.269531 -22445.664062 -33733.570312 +v 58464.187500 -22211.859375 -33636.617188 +v 57823.980469 -22005.466797 -33549.550781 +v 64690.949219 -23175.310547 -34023.964844 +v 59741.457031 -23306.007812 -34074.769531 +v 64401.851562 -23660.904297 -34208.179688 +v 59987.535156 -23765.900391 -34247.187500 +v 64112.691406 -23969.771484 -34321.332031 +v 64185.937500 -24287.085938 -34434.351562 +v 56544.320312 -31712.439453 36200.589844 +v 56082.976562 -31615.132812 36187.785156 +v 55663.722656 -31456.701172 36166.429688 +v 55273.312500 -31237.945312 36135.785156 +v 48652.054688 -31272.320312 36139.542969 +v 48076.468750 -31555.484375 36178.507812 +v 47570.253906 -31691.560547 36196.386719 +v 49049.718750 -30971.578125 36095.621094 +v 54836.792969 -30885.666016 36083.589844 +v 49391.375000 -30610.013672 36039.363281 +v 54474.437500 -30459.638672 36015.734375 +v 49722.003906 -30096.605469 35953.007812 +v 54152.367188 -29868.781250 35913.011719 +v 49969.140625 -29418.859375 35827.339844 +v 53988.417969 -29322.224609 35809.027344 +v 50047.550781 -28737.449219 35687.539062 +v 53930.875000 -28737.449219 35688.183594 +v 53930.875000 -24945.951172 34658.222656 +v 54004.121094 -24287.070312 34434.320312 +v 49986.398438 -24343.300781 34453.945312 +v 50047.550781 -24945.951172 34658.070312 +v 49805.714844 -23765.898438 34247.550781 +v 54220.035156 -23660.902344 34208.703125 +v 49559.640625 -23306.007812 34075.484375 +v 54509.132812 -23175.310547 34024.964844 +v 53930.875000 -22302.080078 33675.031250 +v 54833.527344 -22800.919922 33877.972656 +v 55219.144531 -22482.214844 33749.140625 +v 55577.046875 -22268.787109 33660.921875 +v 55964.402344 -22105.890625 33592.507812 +v 56516.355469 -21974.726562 33536.707031 +v 56930.875000 -21945.951172 33524.324219 +v 55833.824219 -19071.880859 32147.164062 +v 53930.875000 -19069.964844 32147.164062 +v 47642.160156 -22005.468750 33551.285156 +v 48282.367188 -22211.861328 33638.214844 +v 57229.371094 -21945.951172 33524.261719 +v 57823.980469 -22005.468750 33549.550781 +v 58464.187500 -22211.861328 33636.617188 +v 58887.132812 -22445.574219 33733.535156 +v 59263.289062 -22740.685547 33853.328125 +v 53988.417969 -29322.226562 -35809.027344 +v 50047.550781 -28737.449219 -35687.539062 +v 53930.875000 -28737.449219 -35688.183594 +v 51675.164062 -26522.791016 -35138.988281 +v 53930.875000 -24945.951172 -34658.222656 +v 50047.550781 -24945.951172 -34658.070312 +v 49986.398438 -24343.304688 -34453.941406 +v 49969.140625 -29418.859375 -35827.339844 +v 54152.367188 -29868.783203 -35913.007812 +v 49722.003906 -30096.605469 -35953.007812 +v 54474.437500 -30459.638672 -36015.734375 +v 49391.371094 -30610.013672 -36039.363281 +v 54837.449219 -30886.302734 -36083.691406 +v 49050.078125 -30971.257812 -36095.574219 +v 55273.308594 -31237.945312 -36135.789062 +v 48652.054688 -31272.320312 -36139.542969 +v 55663.476562 -31456.582031 -36166.410156 +v 48076.468750 -31555.484375 -36178.511719 +v 47570.234375 -31691.564453 -36196.386719 +v 47047.550781 -31737.449219 -36202.250000 +v 56082.976562 -31615.132812 -36187.789062 +v 56544.320312 -31712.439453 -36200.589844 +v 56930.875000 -31737.449219 -36203.890625 +v 55833.824219 -21481.570312 -33322.152344 +v 57229.371094 -21945.951172 -33524.261719 +v 56930.875000 -21945.951172 -33524.324219 +v 56516.355469 -21974.726562 -33536.707031 +v 55964.402344 -22105.888672 -33592.511719 +v 53930.875000 -21480.544922 -33322.152344 +v 55576.800781 -22268.916016 -33660.968750 +v 55219.144531 -22482.212891 -33749.140625 +v 54833.496094 -22800.951172 -33877.988281 +v 49081.476562 -22740.683594 -33854.496094 +v 48705.425781 -22445.646484 -33734.976562 +v 48282.371094 -22211.859375 -33638.210938 +v 47642.160156 -22005.466797 -33551.289062 +v 54509.132812 -23175.310547 -34024.960938 +v 49559.640625 -23306.007812 -34075.480469 +v 54220.035156 -23660.904297 -34208.703125 +v 49805.718750 -23765.900391 -34247.546875 +v 53930.875000 -23969.103516 -34321.332031 +v 54004.117188 -24287.091797 -34434.328125 +v 36865.734375 -31737.449219 36201.210938 +v 46362.503906 -31712.439453 36198.933594 +v 45901.160156 -31615.132812 36186.152344 +v 45481.914062 -31456.705078 36164.804688 +v 37894.648438 -31555.484375 36177.390625 +v 37388.441406 -31691.560547 36195.312500 +v 38470.234375 -31272.320312 36138.371094 +v 45091.492188 -31237.945312 36134.164062 +v 38867.906250 -30971.572266 36094.410156 +v 44654.980469 -30885.671875 36081.976562 +v 39209.554688 -30610.013672 36038.117188 +v 44292.621094 -30459.638672 36014.132812 +v 39540.183594 -30096.605469 35951.734375 +v 43970.550781 -29868.781250 35911.433594 +v 39787.320312 -29418.859375 35826.070312 +v 43806.601562 -29322.224609 35807.492188 +v 39865.734375 -28737.449219 35686.320312 +v 43749.054688 -28737.449219 35686.710938 +v 43749.054688 -24945.951172 34657.875000 +v 43822.300781 -24287.074219 34434.304688 +v 39804.578125 -24343.302734 34453.906250 +v 39865.734375 -24945.951172 34657.785156 +v 39623.898438 -23765.898438 34247.777344 +v 44038.214844 -23660.902344 34209.042969 +v 39377.820312 -23306.007812 34075.929688 +v 44327.312500 -23175.310547 34025.617188 +v 43749.054688 -22299.095703 33675.031250 +v 44651.714844 -22800.914062 33878.890625 +v 45037.328125 -22482.214844 33750.312500 +v 45395.238281 -22268.783203 33662.281250 +v 45782.585938 -22105.890625 33594.027344 +v 46334.535156 -21974.726562 33538.375000 +v 43749.054688 -19062.044922 32147.164062 +v 46749.054688 -21945.951172 33526.046875 +v 47047.550781 -21945.951172 33526.007812 +v 48705.312500 -22445.570312 33734.945312 +v 49081.472656 -22740.685547 33854.500000 +v 43806.601562 -29322.226562 -35807.492188 +v 39865.734375 -28737.449219 -35686.320312 +v 43749.054688 -28737.449219 -35686.710938 +v 41496.773438 -26525.898438 -35138.988281 +v 43749.054688 -24945.951172 -34657.875000 +v 39865.734375 -24945.951172 -34657.785156 +v 39804.578125 -24343.306641 -34453.906250 +v 39787.320312 -29418.859375 -35826.070312 +v 43970.550781 -29868.783203 -35911.429688 +v 39540.187500 -30096.605469 -35951.730469 +v 44292.621094 -30459.638672 -36014.128906 +v 39209.554688 -30610.013672 -36038.113281 +v 44655.640625 -30886.312500 -36082.078125 +v 38868.253906 -30971.259766 -36094.359375 +v 45091.492188 -31237.945312 -36134.171875 +v 38470.234375 -31272.320312 -36138.371094 +v 45481.652344 -31456.580078 -36164.785156 +v 47047.550781 -21945.951172 -33526.007812 +v 43749.054688 -21476.306641 -33322.152344 +v 43749.054688 -19062.044922 -32147.164062 +v 33567.238281 -19057.416016 -32147.164062 +v 33567.238281 -16732.962891 -30802.083984 +v 25833.611328 -16730.271484 -30802.083984 +v 25833.611328 -14510.781250 -29292.630859 +v 23385.417969 -14510.103516 -29292.630859 +v 23385.417969 -12410.060547 -27624.519531 +v 13203.600586 -12408.469727 -27624.519531 +v 13203.600586 -10441.563477 -25803.468750 +v 3021.782227 -10441.415039 -25803.468750 +v 3021.782227 -8047.051758 -23150.568359 +v -7160.036133 -8047.051758 -23150.568359 +v -7160.036133 -5927.969238 -20268.656250 +v -17341.853516 -5927.969238 -20268.656250 +v -17341.853516 -4097.719727 -17190.445312 +v -27523.671875 -4097.719727 -17190.445312 +v -27523.671875 -2569.854736 -13948.654297 +v -34166.402344 -2569.854736 -13948.654297 +v -34166.402344 -1357.925659 -10575.997070 +v -37705.492188 -1357.925659 -10575.997070 +v -37705.492188 -475.483948 -7105.191895 +v -47887.308594 -475.483948 -7105.191895 +v -47887.308594 63.918869 -3568.954102 +v -60000.000000 63.918869 -3568.954102 +v -60000.000000 246.731247 0.000000 +v -64136.156250 246.731247 0.000000 +v -64136.156250 63.918869 3568.954102 +v -76000.000000 63.917202 3568.953125 +v -76000.000000 -475.485626 7105.189941 +v -86298.500000 -475.963226 7104.591309 +v -86298.500000 -1358.405029 10575.102539 +v -94287.843750 -1360.087280 10571.963867 +v -94287.843750 -2572.016357 13943.334961 +v -95727.070312 -2572.507080 13942.126953 +v -95727.070312 -4100.372070 17182.402344 +v -101982.093750 -4103.339355 17173.404297 +v -101982.093750 -5933.588379 20248.562500 +v -105155.640625 -5935.677734 20241.091797 +v -105155.640625 -8054.760254 23119.083984 +v -106718.890625 -5936.866699 20236.839844 +v -106797.390625 -8056.011719 23113.972656 +v 46749.054688 -21945.951172 -33526.046875 +v 46334.535156 -21974.726562 -33538.375000 +v 45782.585938 -22105.888672 -33594.031250 +v 45394.964844 -22268.923828 -33662.335938 +v 45037.328125 -22482.212891 -33750.316406 +v 38523.589844 -22445.634766 -33735.843750 +v 38899.656250 -22740.683594 -33855.222656 +v 44651.671875 -22800.955078 -33878.910156 +v 44327.312500 -23175.310547 -34025.617188 +v 39377.820312 -23306.007812 -34075.929688 +v 44038.214844 -23660.904297 -34209.042969 +v 39623.898438 -23765.898438 -34247.769531 +v 43749.054688 -23968.666016 -34321.332031 +v 43822.296875 -24287.095703 -34434.312500 +v 36567.238281 -31737.449219 36201.187500 +v 36180.683594 -31712.439453 36197.933594 +v 35719.339844 -31615.132812 36185.167969 +v 27712.832031 -31555.484375 36176.800781 +v 35300.101562 -31456.707031 36163.835938 +v 28288.417969 -31272.320312 36137.746094 +v 34909.675781 -31237.945312 36133.199219 +v 28686.093750 -30971.566406 36093.753906 +v 34473.167969 -30885.675781 36081.023438 +v 29027.736328 -30610.013672 36037.437500 +v 34110.804688 -30459.638672 36013.187500 +v 29358.367188 -30096.605469 35951.035156 +v 33788.734375 -29868.781250 35910.511719 +v 29605.503906 -29418.859375 35825.375000 +v 33624.781250 -29322.224609 35806.593750 +v 29683.914062 -28737.449219 35685.652344 +v 33567.238281 -28737.449219 35685.851562 +v 33567.238281 -24945.951172 34657.671875 +v 33640.484375 -24287.076172 34434.296875 +v 29622.761719 -24343.304688 34453.886719 +v 29683.914062 -24945.951172 34657.625000 +v 29442.080078 -23765.898438 34247.898438 +v 33856.398438 -23660.902344 34209.242188 +v 29196.003906 -23306.007812 34076.171875 +v 34145.496094 -23175.310547 34026.000000 +v 33567.238281 -22297.351562 33675.031250 +v 34469.902344 -22800.908203 33879.433594 +v 34855.507812 -22482.214844 33751.011719 +v 35213.425781 -22268.781250 33663.089844 +v 35600.765625 -22105.890625 33594.933594 +v 36152.718750 -21974.726562 33539.382812 +v 33567.238281 -19057.416016 32147.164062 +v 36567.238281 -21945.951172 33527.093750 +v 36865.734375 -21945.951172 33527.070312 +v 37460.343750 -22005.468750 33552.351562 +v 38100.550781 -22211.861328 33639.199219 +v 38523.492188 -22445.570312 33735.816406 +v 38899.652344 -22740.685547 33855.226562 +v 33624.781250 -29322.226562 -35806.593750 +v 29683.914062 -28737.449219 -35685.652344 +v 33567.238281 -28737.449219 -35685.851562 +v 31316.943359 -26527.656250 -35138.988281 +v 33567.238281 -24945.951172 -34657.671875 +v 29683.914062 -24945.951172 -34657.625000 +v 29622.761719 -24343.306641 -34453.882812 +v 29605.503906 -29418.859375 -35825.375000 +v 33788.730469 -29868.783203 -35910.503906 +v 29358.367188 -30096.605469 -35951.035156 +v 34110.800781 -30459.638672 -36013.187500 +v 29027.736328 -30610.013672 -36037.437500 +v 34473.816406 -30886.308594 -36081.125000 +v 28686.433594 -30971.261719 -36093.703125 +v 34909.675781 -31237.945312 -36133.207031 +v 28288.417969 -31272.320312 -36137.746094 +v 35299.832031 -31456.580078 -36163.812500 +v 27712.832031 -31555.484375 -36176.804688 +v 35719.339844 -31615.132812 -36185.167969 +v 27206.601562 -31691.562500 -36194.750000 +v 26683.914062 -31737.449219 -36200.671875 +v 36180.683594 -31712.439453 -36197.933594 +v 36567.238281 -31737.449219 -36201.187500 +v 38100.550781 -22211.859375 -33639.195312 +v 37460.343750 -22005.466797 -33552.351562 +v 36865.734375 -21945.951172 -33527.070312 +v 33567.238281 -21473.828125 -33322.152344 +v 36567.238281 -21945.951172 -33527.093750 +v 36152.718750 -21974.726562 -33539.382812 +v 35600.765625 -22105.888672 -33594.937500 +v 35213.140625 -22268.927734 -33663.148438 +v 34855.507812 -22482.212891 -33751.011719 +v 34469.851562 -22800.958984 -33879.457031 +v 28717.837891 -22740.683594 -33855.617188 +v 28341.761719 -22445.628906 -33736.308594 +v 27918.734375 -22211.859375 -33639.718750 +v 27278.525391 -22005.466797 -33552.910156 +v 34145.496094 -23175.310547 -34026.000000 +v 29196.003906 -23306.007812 -34076.171875 +v 33856.398438 -23660.904297 -34209.242188 +v 29442.082031 -23765.898438 -34247.890625 +v 33567.238281 -23968.410156 -34321.332031 +v 33640.476562 -24287.099609 -34434.304688 +v 26683.914062 -31737.449219 36200.671875 +v 26385.417969 -31737.449219 36200.664062 +v 25998.867188 -31712.439453 36197.421875 +v 25537.523438 -31615.132812 36184.667969 +v 25118.285156 -31456.708984 36163.347656 +v 17531.013672 -31555.484375 36176.570312 +v 17024.804688 -31691.558594 36194.535156 +v 16502.097656 -31737.449219 36200.468750 +v 18106.599609 -31272.320312 36137.492188 +v 24727.857422 -31237.945312 36132.722656 +v 18504.279297 -30971.562500 36093.484375 +v 24291.349609 -30885.677734 36080.554688 +v 18845.917969 -30610.013672 36037.156250 +v 23928.984375 -30459.638672 36012.730469 +v 19176.548828 -30096.605469 35950.742188 +v 23606.914062 -29868.781250 35910.066406 +v 19423.685547 -29418.859375 35825.082031 +v 23442.964844 -29322.224609 35806.164062 +v 19502.097656 -28737.449219 35685.367188 +v 23385.417969 -28737.449219 35685.441406 +v 23385.417969 -24945.951172 34657.578125 +v 23458.664062 -24287.078125 34434.292969 +v 19440.943359 -24343.304688 34453.875000 +v 19502.097656 -24945.951172 34657.558594 +v 19260.261719 -23765.898438 34247.949219 +v 23674.578125 -23660.902344 34209.339844 +v 19014.185547 -23306.007812 34076.273438 +v 23963.677734 -23175.310547 34026.187500 +v 23385.417969 -22296.513672 33675.031250 +v 24288.076172 -22800.916016 33879.703125 +v 24673.691406 -22482.214844 33751.355469 +v 25031.550781 -22268.810547 33663.507812 +v 25418.949219 -22105.890625 33595.394531 +v 25970.900391 -21974.726562 33539.894531 +v 26385.417969 -21945.951172 33527.632812 +v 25833.611328 -19055.554688 32147.164062 +v 23385.417969 -19055.193359 32147.164062 +v 17096.707031 -22005.468750 33553.125000 +v 17736.914062 -22211.861328 33639.925781 +v 26683.914062 -21945.951172 33527.621094 +v 27278.525391 -22005.468750 33552.910156 +v 27918.732422 -22211.861328 33639.718750 +v 28341.644531 -22445.550781 33736.277344 +v 28717.835938 -22740.685547 33855.621094 +v 27206.623047 -31691.560547 36194.750000 +v 23442.964844 -29322.226562 -35806.164062 +v 19502.097656 -28737.449219 -35685.367188 +v 23385.417969 -28737.449219 -35685.441406 +v 21136.062500 -26528.447266 -35138.988281 +v 23385.417969 -24945.951172 -34657.578125 +v 19502.097656 -24945.951172 -34657.558594 +v 19440.943359 -24343.306641 -34453.875000 +v 19423.685547 -29418.859375 -35825.082031 +v 23606.914062 -29868.783203 -35910.058594 +v 19176.548828 -30096.605469 -35950.742188 +v 23928.984375 -30459.638672 -36012.726562 +v 18845.917969 -30610.013672 -36037.156250 +v 24291.636719 -30885.955078 -36080.597656 +v 18504.615234 -30971.263672 -36093.437500 +v 24727.857422 -31237.945312 -36132.722656 +v 18106.599609 -31272.320312 -36137.492188 +v 25118.291016 -31456.708984 -36163.343750 +v 17531.013672 -31555.484375 -36176.574219 +v 25537.523438 -31615.132812 -36184.671875 +v 17024.783203 -31691.562500 -36194.535156 +v 16502.097656 -31737.449219 -36200.468750 +v 16203.600586 -31737.449219 -36200.468750 +v -34166.402344 -31787.525391 -36206.851562 +v 6320.278809 -31737.449219 -36200.437500 +v 6021.782227 -31737.449219 -36200.437500 +v -3861.539551 -31737.449219 -36200.437500 +v 5635.230469 -31712.439453 -36197.207031 +v -3338.852295 -31691.562500 -36194.500000 +v 5173.886230 -31615.132812 -36184.472656 +v -2832.623291 -31555.484375 -36176.531250 +v 4754.655762 -31456.708984 -36163.156250 +v -2257.037109 -31272.320312 -36137.441406 +v 4364.220215 -31237.945312 -36132.542969 +v -1859.022095 -30971.263672 -36093.382812 +v 3928.003174 -30885.957031 -36080.425781 +v -1517.717896 -30610.013672 -36037.093750 +v 3565.348389 -30459.638672 -36012.566406 +v -1187.087158 -30096.605469 -35950.675781 +v 3243.277344 -29868.783203 -35909.906250 +v -939.950989 -29418.859375 -35825.011719 +v 3079.327881 -29322.226562 -35806.015625 +v -861.539551 -28737.449219 -35685.300781 +v 3021.782227 -28737.449219 -35685.300781 +v 772.731323 -26528.664062 -35138.988281 +v 3021.782227 -24945.951172 -34657.542969 +v -861.539551 -24945.951172 -34657.542969 +v -922.692749 -24343.306641 -34453.875000 +v 25998.867188 -31712.439453 -36197.421875 +v 26385.417969 -31737.449219 -36200.664062 +v 25833.611328 -21472.833984 -33322.152344 +v 26683.914062 -21945.951172 -33527.621094 +v 26385.417969 -21945.951172 -33527.632812 +v 25970.900391 -21974.726562 -33539.894531 +v 25418.949219 -22105.888672 -33595.398438 +v 23385.417969 -21472.638672 -33322.152344 +v 25031.322266 -22268.927734 -33663.550781 +v 24673.689453 -22482.212891 -33751.355469 +v 24288.029297 -22800.960938 -33879.726562 +v 18536.019531 -22740.683594 -33855.777344 +v 18159.937500 -22445.625000 -33736.496094 +v 17736.916016 -22211.859375 -33639.925781 +v 17096.707031 -22005.466797 -33553.125000 +v 23963.677734 -23175.310547 -34026.187500 +v 19014.185547 -23306.007812 -34076.273438 +v 23674.578125 -23660.904297 -34209.335938 +v 19260.263672 -23765.898438 -34247.945312 +v 23385.417969 -23968.287109 -34321.332031 +v 23458.660156 -24287.101562 -34434.296875 +v 15817.048828 -31712.439453 36197.234375 +v 6320.278809 -31737.449219 36200.437500 +v 16203.600586 -31737.449219 36200.468750 +v 6842.987305 -31691.560547 36194.496094 +v 15355.704102 -31615.132812 36184.492188 +v 7349.194824 -31555.484375 36176.527344 +v 14936.467773 -31456.708984 36163.179688 +v 7924.781250 -31272.320312 36137.441406 +v 14546.038086 -31237.945312 36132.558594 +v 8322.462891 -30971.560547 36093.429688 +v 14109.532227 -30885.677734 36080.398438 +v 8664.100586 -30610.013672 36037.093750 +v 13747.166992 -30459.638672 36012.578125 +v 8994.730469 -30096.605469 35950.679688 +v 13425.095703 -29868.781250 35909.921875 +v 9241.867188 -29418.859375 35825.015625 +v 13261.146484 -29322.224609 35806.027344 +v 9320.278320 -28737.449219 35685.304688 +v 13203.600586 -28737.449219 35685.312500 +v 13203.600586 -24945.951172 34657.546875 +v 13276.846680 -24287.078125 34434.289062 +v 9259.125000 -24343.304688 34453.875000 +v 9320.278320 -24945.951172 34657.542969 +v 9078.443359 -23765.898438 34247.960938 +v 13492.760742 -23660.902344 34209.367188 +v 8832.367188 -23306.007812 34076.296875 +v 13781.859375 -23175.310547 34026.250000 +v 13203.600586 -22296.251953 33675.031250 +v 14106.260742 -22800.914062 33879.792969 +v 14491.873047 -22482.214844 33751.472656 +v 14849.735352 -22268.808594 33663.648438 +v 15237.129883 -22105.890625 33595.554688 +v 15789.082031 -21974.726562 33540.082031 +v 16203.600586 -21945.951172 33527.832031 +v 16502.097656 -21945.951172 33527.828125 +v 18159.826172 -22445.550781 33736.468750 +v 18536.017578 -22740.685547 33855.781250 +v 13261.145508 -29322.226562 -35806.027344 +v 9320.278320 -28737.449219 -35685.304688 +v 13203.600586 -28737.449219 -35685.312500 +v 10954.528320 -26528.656250 -35138.988281 +v 13203.600586 -24945.951172 -34657.546875 +v 9320.278320 -24945.951172 -34657.542969 +v 9259.125000 -24343.306641 -34453.875000 +v 9241.867188 -29418.859375 -35825.011719 +v 13425.095703 -29868.783203 -35909.917969 +v 8994.731445 -30096.605469 -35950.675781 +v 13747.166992 -30459.638672 -36012.578125 +v 8664.100586 -30610.013672 -36037.093750 +v 14109.820312 -30885.957031 -36080.441406 +v 8322.795898 -30971.263672 -36093.382812 +v 14546.038086 -31237.945312 -36132.558594 +v 7924.781250 -31272.320312 -36137.441406 +v 14936.473633 -31456.708984 -36163.175781 +v 7349.194824 -31555.484375 -36176.531250 +v 15355.704102 -31615.132812 -36184.492188 +v 6842.965820 -31691.562500 -36194.500000 +v 15817.048828 -31712.439453 -36197.234375 +v 16502.097656 -21945.951172 -33527.828125 +v 13203.600586 -21472.265625 -33322.152344 +v 13203.600586 -19054.494141 -32147.164062 +v 3021.782227 -19054.439453 -32147.164062 +v 3021.782227 -16728.656250 -30802.083984 +v -7160.036133 -16728.656250 -30802.083984 +v -7160.036133 -14508.689453 -29292.630859 +v -17341.853516 -14508.689453 -29292.630859 +v -17341.853516 -12408.341797 -27624.519531 +v -27523.671875 -12408.341797 -27624.519531 +v -27523.671875 -10441.415039 -25803.468750 +v -34166.402344 -10441.415039 -25803.468750 +v -34166.402344 -8047.051758 -23150.568359 +v -37705.492188 -8047.051758 -23150.568359 +v -37705.492188 -5927.969238 -20268.656250 +v -47887.308594 -5927.969238 -20268.656250 +v -47887.308594 -4097.719727 -17190.445312 +v -60000.000000 -4097.719727 -17190.445312 +v -60000.000000 -2569.854736 -13948.654297 +v -64136.160156 -2569.854736 -13948.654297 +v -64136.160156 -1357.925659 -10575.997070 +v -76000.000000 -1357.927368 -10575.994141 +v -76000.000000 -475.485626 -7105.189941 +v -86298.500000 -475.963226 -7104.591309 +v -86298.500000 63.439587 -3568.652344 +v -94287.843750 61.757313 -3567.593018 +v -94287.843750 244.569702 0.000000 +v -95727.070312 244.078918 0.000000 +v -95727.070312 61.266541 3567.283936 +v -101982.093750 58.299667 3565.416016 +v -101982.093750 -481.103149 7098.147949 +v -105155.640625 -483.192505 7095.528809 +v -105155.640625 -1365.634277 10561.614258 +v -106405.070312 -484.134003 7094.348633 +v -106483.500000 -1366.637207 10559.743164 +v 16203.600586 -21945.951172 -33527.832031 +v 15789.082031 -21974.726562 -33540.082031 +v 15237.129883 -22105.888672 -33595.558594 +v 14849.503906 -22268.927734 -33663.691406 +v 14491.872070 -22482.212891 -33751.472656 +v 7978.117188 -22445.623047 -33736.535156 +v 8354.202148 -22740.683594 -33855.808594 +v 14106.209961 -22800.962891 -33879.812500 +v 13781.858398 -23175.310547 -34026.246094 +v 8832.367188 -23306.007812 -34076.292969 +v 13492.760742 -23660.904297 -34209.367188 +v 9078.444336 -23765.898438 -34247.957031 +v 13203.600586 -23968.248047 -34321.332031 +v 13276.841797 -24287.101562 -34434.296875 +v 5635.230469 -31712.439453 36197.207031 +v -3861.539551 -31737.449219 36200.437500 +v 6021.782227 -31737.449219 36200.437500 +v -3338.830811 -31691.560547 36194.496094 +v 5173.886230 -31615.132812 36184.468750 +v -2832.623291 -31555.484375 36176.527344 +v 4754.649902 -31456.708984 36163.160156 +v -2257.037109 -31272.320312 36137.441406 +v 4364.220215 -31237.945312 36132.542969 +v -1859.355225 -30971.560547 36093.425781 +v 3927.714600 -30885.679688 36080.382812 +v -1517.717773 -30610.013672 36037.093750 +v 3565.348633 -30459.638672 36012.566406 +v -1187.087524 -30096.605469 35950.679688 +v 3243.277832 -29868.781250 35909.910156 +v -939.951050 -29418.859375 35825.011719 +v 3079.327881 -29322.224609 35806.015625 +v 3021.782227 -28737.449219 35685.300781 +v 6914.888672 -22005.468750 33553.160156 +v 7555.095215 -22211.861328 33639.964844 +v 7978.007812 -22445.550781 33736.503906 +v 8354.199219 -22740.685547 33855.812500 +v 7555.097168 -22211.859375 -33639.964844 +v 6914.889160 -22005.466797 -33553.160156 +v 6320.278809 -21945.951172 -33527.859375 +v 3021.782227 -21472.236328 -33322.152344 +v 6021.782227 -21945.951172 -33527.859375 +v 5607.263672 -21974.726562 -33540.109375 +v 5055.312012 -22105.888672 -33595.578125 +v 4667.686035 -22268.927734 -33663.707031 +v 4310.054199 -22482.212891 -33751.488281 +v 3924.391113 -22800.962891 -33879.824219 +v -1827.615967 -22740.683594 -33855.812500 +v -2203.700928 -22445.623047 -33736.535156 +v -2626.720947 -22211.859375 -33639.964844 +v -3266.928955 -22005.466797 -33553.160156 +v 3600.040527 -23175.310547 -34026.253906 +v -1349.451050 -23306.007812 -34076.292969 +v 3310.942383 -23660.904297 -34209.371094 +v -1103.373413 -23765.898438 -34247.957031 +v 3021.782227 -23968.246094 -34321.332031 +v 3095.023438 -24287.101562 -34434.296875 +v -4546.587402 -31712.439453 36197.207031 +v -14043.357422 -31737.449219 36200.437500 +v -4160.036133 -31737.449219 36200.437500 +v -34166.402344 -32675.929688 36308.804688 +v -13520.649414 -31691.560547 36194.496094 +v -5007.931641 -31615.132812 36184.468750 +v -13014.441406 -31555.484375 36176.527344 +v -5427.168457 -31456.708984 36163.160156 +v -12438.855469 -31272.320312 36137.441406 +v -5817.598145 -31237.945312 36132.542969 +v -12041.173828 -30971.560547 36093.425781 +v -6254.103516 -30885.679688 36080.382812 +v -11699.536133 -30610.013672 36037.093750 +v -6616.469727 -30459.638672 36012.566406 +v -11368.905273 -30096.605469 35950.679688 +v -6938.540039 -29868.781250 35909.910156 +v -11121.769531 -29418.859375 35825.011719 +v -7102.490234 -29322.224609 35806.015625 +v -7160.036133 -28737.449219 35685.300781 +v -3266.929443 -22005.468750 33553.160156 +v -2626.722656 -22211.861328 33639.964844 +v -2203.810303 -22445.550781 33736.503906 +v -1827.618774 -22740.685547 33855.812500 +v -7102.490234 -29322.226562 -35806.015625 +v -11043.357422 -28737.449219 -35685.300781 +v -7160.036133 -28737.449219 -35685.300781 +v -9409.086914 -26528.664062 -35138.988281 +v -7160.036133 -24945.951172 -34657.542969 +v -11043.357422 -24945.951172 -34657.542969 +v -11104.510742 -24343.306641 -34453.875000 +v -11121.769531 -29418.859375 -35825.011719 +v -6938.541016 -29868.783203 -35909.906250 +v -11368.905273 -30096.605469 -35950.675781 +v -6616.469727 -30459.638672 -36012.566406 +v -11699.536133 -30610.013672 -36037.093750 +v -6253.814941 -30885.957031 -36080.425781 +v -12040.839844 -30971.263672 -36093.382812 +v -5817.598145 -31237.945312 -36132.542969 +v -12438.855469 -31272.320312 -36137.441406 +v -5427.162598 -31456.708984 -36163.156250 +v -13014.441406 -31555.484375 -36176.531250 +v -5007.931641 -31615.132812 -36184.472656 +v -13520.670898 -31691.562500 -36194.500000 +v -4546.587402 -31712.439453 -36197.207031 +v -14043.357422 -31737.449219 -36200.437500 +v -4160.036133 -31737.449219 -36200.437500 +v -3861.539551 -21945.951172 -33527.859375 +v -7160.036133 -21472.236328 -33322.152344 +v -7160.036133 -19054.439453 -32147.164062 +v -17341.853516 -19054.439453 -32147.164062 +v -17341.853516 -16728.656250 -30802.083984 +v -27523.671875 -16728.656250 -30802.083984 +v -27523.671875 -14508.689453 -29292.630859 +v -34166.402344 -14508.689453 -29292.630859 +v -34166.402344 -12408.341797 -27624.519531 +v -37705.492188 -12408.341797 -27624.519531 +v -37705.492188 -10441.415039 -25803.468750 +v -47887.308594 -10441.415039 -25803.468750 +v -47887.308594 -8047.051758 -23150.568359 +v -60000.000000 -8047.051758 -23150.568359 +v -60000.000000 -5927.969238 -20268.656250 +v -64136.160156 -5927.969238 -20268.656250 +v -64136.160156 -4097.719727 -17190.445312 +v -76000.000000 -4097.721680 -17190.441406 +v -76000.000000 -2569.856445 -13948.649414 +v -86298.500000 -2570.334229 -13947.474609 +v -86298.500000 -1358.405029 -10575.102539 +v -94287.843750 -1360.087280 -10571.963867 +v -94287.843750 -477.645508 -7102.482422 +v -95727.070312 -478.136292 -7101.867188 +v -95727.070312 61.266541 -3567.283936 +v -101982.093750 58.299667 -3565.416016 +v -101982.093750 241.112045 0.000000 +v -105155.640625 239.022690 0.000000 +v -105155.640625 56.210312 3564.100342 +v -106248.257812 238.203186 0.000000 +v -106326.656250 55.329952 3563.545898 +v -4160.036133 -21945.951172 -33527.859375 +v -4574.554688 -21974.726562 -33540.109375 +v -5126.506348 -22105.888672 -33595.578125 +v -5514.132324 -22268.927734 -33663.707031 +v -5871.764160 -22482.212891 -33751.488281 +v -12385.518555 -22445.623047 -33736.535156 +v -12009.434570 -22740.683594 -33855.812500 +v -6257.427246 -22800.962891 -33879.824219 +v -6581.777832 -23175.310547 -34026.253906 +v -11531.269531 -23306.007812 -34076.292969 +v -6870.875977 -23660.904297 -34209.371094 +v -11285.191406 -23765.898438 -34247.957031 +v -7160.036133 -23968.246094 -34321.332031 +v -7086.794922 -24287.101562 -34434.296875 +v -14728.405273 -31712.439453 36197.207031 +v -24225.175781 -31737.449219 36200.437500 +v -14341.854492 -31737.449219 36200.437500 +v -23702.466797 -31691.560547 36194.496094 +v -15189.750000 -31615.132812 36184.468750 +v -23196.259766 -31555.484375 36176.527344 +v -15608.986328 -31456.708984 36163.160156 +v -22620.673828 -31272.320312 36137.441406 +v -15999.416016 -31237.945312 36132.542969 +v -22222.992188 -30971.560547 36093.425781 +v -16435.921875 -30885.679688 36080.382812 +v -21881.353516 -30610.013672 36037.093750 +v -16798.287109 -30459.638672 36012.566406 +v -21550.724609 -30096.605469 35950.679688 +v -17120.359375 -29868.781250 35909.910156 +v -21303.587891 -29418.859375 35825.011719 +v -17284.308594 -29322.224609 35806.015625 +v -17341.853516 -28737.449219 35685.300781 +v -13448.747070 -22005.468750 33553.160156 +v -12808.541016 -22211.861328 33639.964844 +v -12385.628906 -22445.550781 33736.503906 +v -12009.436523 -22740.685547 33855.812500 +v -17284.308594 -29322.226562 -35806.015625 +v -21225.175781 -28737.449219 -35685.300781 +v -17341.853516 -28737.449219 -35685.300781 +v -19590.904297 -26528.664062 -35138.988281 +v -17341.853516 -24945.951172 -34657.542969 +v -21225.175781 -24945.951172 -34657.542969 +v -21286.330078 -24343.306641 -34453.875000 +v -21303.587891 -29418.859375 -35825.011719 +v -17120.359375 -29868.783203 -35909.906250 +v -21550.722656 -30096.605469 -35950.675781 +v -16798.287109 -30459.638672 -36012.566406 +v -21881.353516 -30610.013672 -36037.093750 +v -16435.632812 -30885.957031 -36080.425781 +v -22222.658203 -30971.263672 -36093.382812 +v -15999.416016 -31237.945312 -36132.542969 +v -22620.673828 -31272.320312 -36137.441406 +v -15608.980469 -31456.708984 -36163.156250 +v -23196.259766 -31555.484375 -36176.531250 +v -15189.750000 -31615.132812 -36184.472656 +v -23702.488281 -31691.562500 -36194.500000 +v -14728.405273 -31712.439453 -36197.207031 +v -24225.175781 -31737.449219 -36200.437500 +v -14341.854492 -31737.449219 -36200.437500 +v -12808.539062 -22211.859375 -33639.964844 +v -13448.747070 -22005.466797 -33553.160156 +v -14043.357422 -21945.951172 -33527.859375 +v -17341.853516 -21472.236328 -33322.152344 +v -14341.854492 -21945.951172 -33527.859375 +v -14756.373047 -21974.726562 -33540.109375 +v -15308.324219 -22105.888672 -33595.578125 +v -15695.950195 -22268.927734 -33663.707031 +v -16053.582031 -22482.212891 -33751.488281 +v -16439.246094 -22800.962891 -33879.824219 +v -22191.251953 -22740.683594 -33855.812500 +v -22567.337891 -22445.623047 -33736.535156 +v -22990.357422 -22211.859375 -33639.964844 +v -23630.564453 -22005.466797 -33553.160156 +v -16763.595703 -23175.310547 -34026.253906 +v -21713.087891 -23306.007812 -34076.292969 +v -17052.693359 -23660.904297 -34209.371094 +v -21467.009766 -23765.898438 -34247.957031 +v -17341.853516 -23968.246094 -34321.332031 +v -17268.613281 -24287.101562 -34434.296875 +v -24523.671875 -31737.449219 36200.437500 +v -24910.224609 -31712.439453 36197.207031 +v -25371.568359 -31615.132812 36184.468750 +v -25790.804688 -31456.708984 36163.160156 +v -33378.078125 -31555.484375 36176.527344 +v -33884.285156 -31691.560547 36194.496094 +v -32802.492188 -31272.320312 36137.441406 +v -26181.234375 -31237.945312 36132.542969 +v -32404.810547 -30971.560547 36093.425781 +v -26617.740234 -30885.679688 36080.382812 +v -32063.171875 -30610.013672 36037.093750 +v -26980.105469 -30459.638672 36012.566406 +v -31732.542969 -30096.605469 35950.679688 +v -27302.175781 -29868.781250 35909.910156 +v -31485.406250 -29418.859375 35825.011719 +v -27466.126953 -29322.224609 35806.015625 +v -31406.994141 -28737.449219 35685.300781 +v -27523.671875 -28737.449219 35685.300781 +v -27523.671875 -24945.951172 34657.542969 +v -27450.425781 -24287.078125 34434.289062 +v -31468.148438 -24343.304688 34453.875000 +v -31406.994141 -24945.951172 34657.542969 +v -31648.828125 -23765.898438 34247.960938 +v -27234.511719 -23660.902344 34209.371094 +v -31894.906250 -23306.007812 34076.296875 +v -26945.414062 -23175.310547 34026.253906 +v -27523.671875 -22296.230469 33675.031250 +v -26621.000000 -22800.902344 33879.796875 +v -26235.400391 -22482.214844 33751.484375 +v -25877.476562 -22268.777344 33663.652344 +v -25490.142578 -22105.890625 33595.574219 +v -24938.191406 -21974.726562 33540.109375 +v -27523.671875 -19054.439453 32147.164062 +v -24523.671875 -21945.951172 33527.859375 +v -24225.175781 -21945.951172 33527.859375 +v -23630.566406 -22005.468750 33553.160156 +v -22990.359375 -22211.861328 33639.964844 +v -22567.447266 -22445.550781 33736.503906 +v -22191.255859 -22740.685547 33855.812500 +v -27466.126953 -29322.226562 -35806.015625 +v -31406.994141 -28737.449219 -35685.300781 +v -27523.671875 -28737.449219 -35685.300781 +v -29772.722656 -26528.664062 -35138.988281 +v -27523.671875 -24945.951172 -34657.542969 +v -31406.994141 -24945.951172 -34657.542969 +v -31468.146484 -24343.306641 -34453.875000 +v -31485.406250 -29418.859375 -35825.011719 +v -27302.177734 -29868.783203 -35909.906250 +v -31732.541016 -30096.605469 -35950.675781 +v -26980.105469 -30459.638672 -36012.566406 +v -32063.171875 -30610.013672 -36037.093750 +v -26617.451172 -30885.957031 -36080.425781 +v -32404.476562 -30971.263672 -36093.382812 +v -26181.234375 -31237.945312 -36132.542969 +v -32802.492188 -31272.320312 -36137.441406 +v -25790.798828 -31456.708984 -36163.156250 +v -33378.078125 -31555.484375 -36176.531250 +v -25371.568359 -31615.132812 -36184.472656 +v -24910.224609 -31712.439453 -36197.207031 +v -24523.671875 -31737.449219 -36200.437500 +v -24225.175781 -21945.951172 -33527.859375 +v -27523.671875 -21472.236328 -33322.152344 +v -27523.671875 -19054.439453 -32147.164062 +v -34166.402344 -19054.439453 -32147.164062 +v -34166.402344 -16728.656250 -30802.083984 +v -37705.492188 -16728.656250 -30802.083984 +v -37705.492188 -14508.689453 -29292.630859 +v -47887.308594 -14508.689453 -29292.630859 +v -47887.308594 -12408.341797 -27624.519531 +v -60000.000000 -12408.341797 -27624.519531 +v -60000.000000 -10441.415039 -25803.468750 +v -64136.160156 -10441.415039 -25803.468750 +v -64136.160156 -8047.051758 -23150.568359 +v -76000.000000 -8047.053223 -23150.562500 +v -76000.000000 -5927.971191 -20268.650391 +v -86298.500000 -5928.448730 -20266.941406 +v -86298.500000 -4098.199219 -17188.992188 +v -94287.843750 -4099.881348 -17183.890625 +v -94287.843750 -2572.016357 -13943.334961 +v -95727.070312 -2572.507080 -13942.126953 +v -95727.070312 -1360.578003 -10571.047852 +v -101982.093750 -1363.544922 -10565.512695 +v -101982.093750 -481.103149 -7098.147949 +v -105155.640625 -483.192505 -7095.528809 +v -105155.640625 56.210312 -3564.100342 +v -106169.875000 55.451355 -3563.622559 +v -24523.671875 -21945.951172 -33527.859375 +v -24938.191406 -21974.726562 -33540.109375 +v -25490.142578 -22105.888672 -33595.578125 +v -25877.767578 -22268.927734 -33663.707031 +v -26235.400391 -22482.212891 -33751.488281 +v -32749.156250 -22445.623047 -33736.535156 +v -32373.070312 -22740.683594 -33855.812500 +v -26621.062500 -22800.962891 -33879.824219 +v -26945.414062 -23175.310547 -34026.253906 +v -31894.906250 -23306.007812 -34076.292969 +v -27234.511719 -23660.904297 -34209.371094 +v -31648.828125 -23765.898438 -34247.957031 +v -27523.671875 -23968.246094 -34321.332031 +v -27450.431641 -24287.101562 -34434.296875 +v -34406.992188 -31737.449219 36200.437500 +v -34705.492188 -31737.449219 36200.437500 +v -35092.042969 -31712.439453 36197.207031 +v -44066.105469 -31691.560547 36194.496094 +v -35553.386719 -31615.132812 36184.468750 +v -43559.894531 -31555.484375 36176.527344 +v -35972.621094 -31456.708984 36163.160156 +v -42984.308594 -31272.320312 36137.441406 +v -36363.050781 -31237.945312 36132.542969 +v -42586.628906 -30971.560547 36093.425781 +v -36799.558594 -30885.679688 36080.382812 +v -42244.992188 -30610.013672 36037.093750 +v -37161.925781 -30459.638672 36012.566406 +v -41914.359375 -30096.605469 35950.679688 +v -37483.996094 -29868.781250 35909.910156 +v -41667.222656 -29418.859375 35825.011719 +v -37647.945312 -29322.224609 35806.015625 +v -41588.812500 -28737.449219 35685.300781 +v -37705.492188 -28737.449219 35685.300781 +v -37705.492188 -24945.951172 34657.542969 +v -37632.242188 -24287.078125 34434.289062 +v -41649.964844 -24343.304688 34453.875000 +v -41588.812500 -24945.951172 34657.542969 +v -41830.648438 -23765.898438 34247.960938 +v -37416.332031 -23660.902344 34209.371094 +v -42076.722656 -23306.007812 34076.296875 +v -37127.230469 -23175.310547 34026.253906 +v -37705.492188 -22296.230469 33675.031250 +v -36802.816406 -22800.902344 33879.796875 +v -36417.218750 -22482.214844 33751.484375 +v -36059.292969 -22268.777344 33663.652344 +v -35671.960938 -22105.890625 33595.574219 +v -35120.007812 -21974.726562 33540.109375 +v -34705.492188 -21945.951172 33527.859375 +v -34166.402344 -19054.439453 32147.164062 +v -34406.992188 -21945.951172 33527.859375 +v -33812.382812 -22005.468750 33553.160156 +v -33172.175781 -22211.861328 33639.964844 +v -27523.671875 -15976.228516 30316.914062 +v -32749.265625 -22445.550781 33736.503906 +v -32373.074219 -22740.685547 33855.812500 +v -37647.945312 -29322.226562 -35806.015625 +v -41588.812500 -28737.449219 -35685.300781 +v -37705.492188 -28737.449219 -35685.300781 +v -39954.542969 -26528.664062 -35138.988281 +v -37705.492188 -24945.951172 -34657.542969 +v -41588.812500 -24945.951172 -34657.542969 +v -41649.964844 -24343.306641 -34453.875000 +v -41667.222656 -29418.859375 -35825.011719 +v -37483.996094 -29868.783203 -35909.906250 +v -41914.359375 -30096.605469 -35950.675781 +v -37161.925781 -30459.638672 -36012.566406 +v -42244.992188 -30610.013672 -36037.093750 +v -36799.269531 -30885.957031 -36080.425781 +v -42586.292969 -30971.263672 -36093.382812 +v -36363.050781 -31237.945312 -36132.542969 +v -42984.308594 -31272.320312 -36137.441406 +v -35972.617188 -31456.708984 -36163.156250 +v -43559.894531 -31555.484375 -36176.531250 +v -35553.386719 -31615.132812 -36184.472656 +v -44066.125000 -31691.562500 -36194.500000 +v -35092.042969 -31712.439453 -36197.207031 +v -44588.812500 -31737.449219 -36200.437500 +v -34705.492188 -31737.449219 -36200.437500 +v -34166.402344 -34458.363281 -36445.628906 +v -34166.402344 -37138.402344 -36480.082031 +v -34166.402344 -39813.839844 -36308.804688 +v -34166.402344 -42470.871094 -35936.941406 +v -60000.000000 -42470.871094 -35936.941406 +v -60000.000000 -39813.839844 -36308.804688 +v -34406.992188 -31737.449219 -36200.437500 +v -33884.308594 -31691.562500 -36194.500000 +v -33172.175781 -22211.859375 -33639.964844 +v -34166.402344 -21472.236328 -33322.152344 +v -37705.492188 -19054.439453 -32147.164062 +v -33812.382812 -22005.466797 -33553.160156 +v -34406.992188 -21945.951172 -33527.859375 +v -34705.492188 -21945.951172 -33527.859375 +v -37705.492188 -21472.236328 -33322.152344 +v -35120.007812 -21974.726562 -33540.109375 +v -35671.960938 -22105.888672 -33595.578125 +v -36059.585938 -22268.927734 -33663.707031 +v -36417.218750 -22482.212891 -33751.488281 +v -42930.972656 -22445.623047 -33736.535156 +v -42554.886719 -22740.683594 -33855.812500 +v -36802.882812 -22800.962891 -33879.824219 +v -37127.230469 -23175.310547 -34026.253906 +v -42076.722656 -23306.007812 -34076.292969 +v -37416.332031 -23660.904297 -34209.371094 +v -41830.644531 -23765.898438 -34247.957031 +v -37705.492188 -23968.246094 -34321.332031 +v -37632.250000 -24287.101562 -34434.296875 +v -44588.812500 -31737.449219 36200.437500 +v -44887.308594 -31737.449219 36200.437500 +v -45273.859375 -31712.439453 36197.207031 +v -45735.203125 -31615.132812 36184.468750 +v -46154.441406 -31456.708984 36163.160156 +v -46544.871094 -31237.945312 36132.542969 +v -46981.375000 -30885.679688 36080.382812 +v -47343.742188 -30459.638672 36012.566406 +v -47665.812500 -29868.781250 35909.910156 +v -47829.761719 -29322.224609 35806.015625 +v -47887.308594 -28737.449219 35685.300781 +v -47887.308594 -24945.951172 34657.542969 +v -47814.062500 -24287.078125 34434.289062 +v -47598.148438 -23660.902344 34209.371094 +v -47309.050781 -23175.310547 34026.253906 +v -46984.636719 -22800.902344 33879.796875 +v -47887.308594 -22296.230469 33675.031250 +v -46599.035156 -22482.214844 33751.484375 +v -46241.113281 -22268.777344 33663.652344 +v -45853.777344 -22105.890625 33595.574219 +v -45301.828125 -21974.726562 33540.109375 +v -44887.308594 -21945.951172 33527.859375 +v -44588.812500 -21945.951172 33527.859375 +v -43994.203125 -22005.468750 33553.160156 +v -47887.308594 -19054.439453 32147.164062 +v -43353.996094 -22211.861328 33639.964844 +v -42931.082031 -22445.550781 33736.503906 +v -42554.890625 -22740.685547 33855.812500 +v -47829.761719 -29322.226562 -35806.015625 +v -47887.308594 -28737.449219 -35685.300781 +v -47909.531250 -26528.664062 -35138.988281 +v -47887.308594 -24945.951172 -34657.542969 +v -47935.769531 -23968.246094 -34321.332031 +v -47814.066406 -24287.101562 -34434.296875 +v -47887.308594 -23968.246094 -34321.332031 +v -47598.148438 -23660.904297 -34209.371094 +v -47665.812500 -29868.783203 -35909.906250 +v -47343.742188 -30459.638672 -36012.566406 +v -46981.085938 -30885.957031 -36080.425781 +v -46544.871094 -31237.945312 -36132.542969 +v -46154.433594 -31456.708984 -36163.156250 +v -45735.203125 -31615.132812 -36184.472656 +v -45273.859375 -31712.439453 -36197.207031 +v -44887.308594 -31737.449219 -36200.437500 +v -43353.992188 -22211.859375 -33639.964844 +v -43994.203125 -22005.466797 -33553.160156 +v -44588.812500 -21945.951172 -33527.859375 +v -47887.308594 -21472.236328 -33322.152344 +v -44887.308594 -21945.951172 -33527.859375 +v -45301.828125 -21974.726562 -33540.109375 +v -45853.777344 -22105.888672 -33595.578125 +v -46241.406250 -22268.927734 -33663.707031 +v -47962.003906 -21472.236328 -33322.152344 +v -46599.035156 -22482.212891 -33751.488281 +v -46984.699219 -22800.962891 -33879.824219 +v -47309.050781 -23175.310547 -34026.253906 +v -80056.414062 -29579.052734 35855.546875 +v -80000.000000 -29000.000000 35740.378906 +v -80000.000000 -25208.501953 34742.382812 +v -80055.601562 -24633.578125 34553.039062 +v -80220.054688 -24080.708984 34361.160156 +v -80488.203125 -23568.117188 34174.535156 +v -80852.453125 -23113.732422 34001.968750 +v -81301.531250 -22735.605469 33853.160156 +v -81823.039062 -22449.013672 33737.160156 +v -80224.437500 -30138.537109 35957.628906 +v -80499.039062 -30656.863281 36044.156250 +v -80870.437500 -31113.041016 36113.925781 +v -81323.570312 -31487.888672 36166.765625 +v -81843.937500 -31768.304688 36203.613281 +v -82410.062500 -31941.423828 36225.140625 +v -83000.000000 -32000.000000 36232.070312 +v -91563.210938 -36246.289062 36482.582031 +v -94287.843750 -32678.091797 36294.957031 +v -83298.500000 -32000.000000 36231.941406 +v -83888.398438 -31941.429688 36224.511719 +v -91838.648438 -31941.425781 36216.542969 +v -84454.484375 -31768.335938 36202.500000 +v -91272.531250 -31768.312500 36195.710938 +v -84974.828125 -31487.951172 36165.207031 +v -90752.187500 -31487.919922 36159.480469 +v -90299.039062 -31113.078125 36107.152344 +v -85428.406250 -31112.691406 36111.902344 +v -85799.718750 -30656.470703 36041.781250 +v -89927.593750 -30656.837891 36037.781250 +v -86074.109375 -30138.414062 35955.042969 +v -89653.000000 -30138.519531 35951.542969 +v -86242.093750 -29578.992188 35852.816406 +v -89484.984375 -29579.033203 35849.640625 +v -86298.500000 -29000.000000 35737.605469 +v -89428.570312 -29000.000000 35734.535156 +v -86298.500000 -25208.501953 34739.636719 +v -89428.570312 -25208.501953 34736.597656 +v -89484.187500 -24633.527344 34547.195312 +v -86242.937500 -24633.796875 34550.429688 +v -89648.656250 -24080.642578 34355.152344 +v -86078.601562 -24081.101562 34358.773438 +v -85810.632812 -23568.632812 34172.449219 +v -89916.804688 -23568.062500 34168.269531 +v -85446.757812 -23114.466797 34000.300781 +v -90281.046875 -23113.714844 33995.339844 +v -86298.500000 -22296.708984 33672.183594 +v -90730.093750 -22735.609375 33846.058594 +v -91251.570312 -22449.031250 33729.476562 +v -91825.648438 -22269.712891 33654.710938 +v -92428.570312 -22208.501953 33628.265625 +v -92727.070312 -22208.501953 33627.757812 +v -94287.843750 -22298.392578 33662.187500 +v -93329.828125 -22269.679688 33652.136719 +v -93903.937500 -22448.976562 33724.917969 +v -94425.710938 -22735.728516 33839.781250 +v -94875.335938 -23114.476562 33987.734375 +v -99709.500000 -23113.830078 33974.582031 +v -99345.468750 -23567.925781 34148.058594 +v -84997.171875 -22735.751953 33851.667969 +v -84475.429688 -22449.003906 33736.042969 +v -83901.320312 -22269.693359 33662.449219 +v -83298.500000 -22208.501953 33637.257812 +v -83298.500000 -32000.000000 -36231.941406 +v -83000.000000 -32000.000000 -36232.070312 +v -83000.000000 -22208.501953 -33637.382812 +v -83298.500000 -22208.501953 -33637.257812 +v -83901.304688 -22269.689453 -33662.449219 +v -84475.421875 -22448.998047 -33736.046875 +v -84996.953125 -22735.593750 -33851.605469 +v -90730.109375 -22735.595703 -33846.054688 +v -90281.242188 -23113.513672 -33995.261719 +v -85446.062500 -23113.755859 -34000.027344 +v -89916.914062 -23567.904297 -34168.210938 +v -85810.312500 -23568.138672 -34172.265625 +v -86298.500000 -23968.724609 -34318.429688 +v -86078.460938 -24080.753906 -34358.648438 +v -89648.703125 -24080.527344 -34355.113281 +v -89484.195312 -24633.470703 -34547.175781 +v -86242.898438 -24633.619141 -34550.367188 +v -86298.500000 -25208.501953 -34739.636719 +v -86298.500000 -29000.000000 -35737.605469 +v -88326.929688 -26529.425781 -35134.273438 +v -89428.570312 -25208.501953 -34736.597656 +v -89428.570312 -29000.000000 -35734.535156 +v -86242.109375 -29578.914062 -35852.800781 +v -89484.953125 -29578.882812 -35849.613281 +v -89652.882812 -30138.232422 -35951.492188 +v -86074.171875 -30138.251953 -35955.011719 +v -89927.195312 -30656.236328 -36037.679688 +v -85799.742188 -30656.437500 -36041.781250 +v -90298.320312 -31112.355469 -36107.046875 +v -85428.429688 -31112.675781 -36111.898438 +v -90752.398438 -31488.060547 -36159.496094 +v -84974.679688 -31488.050781 -36165.214844 +v -91272.781250 -31768.419922 -36195.726562 +v -84454.414062 -31768.365234 -36202.507812 +v -83888.281250 -31941.455078 -36224.515625 +v -91838.796875 -31941.455078 -36216.546875 +v -92428.570312 -32000.000000 36222.718750 +v -92727.070312 -32000.000000 36222.199219 +v -93316.890625 -31941.447266 36213.964844 +v -93882.968750 -31768.373047 36191.156250 +v -94403.265625 -31488.042969 36153.097656 +v -100180.929688 -31488.035156 36137.351562 +v -99727.601562 -31113.068359 36085.886719 +v -94857.554688 -31112.115234 36099.011719 +v -95228.500000 -30656.154297 36028.351562 +v -99356.093750 -30656.734375 36017.214844 +v -95502.757812 -30138.216797 35941.199219 +v -99081.554688 -30138.468750 35931.507812 +v -95670.679688 -29578.904297 35838.726562 +v -98913.546875 -29578.994141 35829.929688 +v -95727.070312 -29000.000000 35723.453125 +v -98857.140625 -29000.000000 35714.949219 +v -95727.070312 -25208.501953 34725.621094 +v -98857.140625 -25208.501953 34717.199219 +v -98912.773438 -24633.431641 34527.710938 +v -95671.515625 -24633.865234 34536.558594 +v -99077.281250 -24080.500000 34335.394531 +v -95507.203125 -24081.181641 34345.199219 +v -95239.234375 -23568.685547 34159.316406 +v -92727.070312 -32000.000000 -36222.199219 +v -92428.570312 -32000.000000 -36222.718750 +v -91251.539062 -22449.042969 -33729.480469 +v -91825.554688 -22269.732422 -33654.718750 +v -94287.843750 -21474.396484 -33309.445312 +v -92428.570312 -22208.501953 -33628.265625 +v -92727.070312 -22208.501953 -33627.757812 +v -93329.804688 -22269.673828 -33652.132812 +v -95727.070312 -21474.888672 -33306.558594 +v -95727.070312 -19057.091797 -32132.121094 +v -101982.093750 -19060.058594 -32115.294922 +v -101982.093750 -16734.275391 -30771.548828 +v -105155.640625 -16736.365234 -30760.193359 +v -105155.640625 -14516.398438 -29252.792969 +v -105504.265625 -14516.654297 -29251.470703 +v -105562.953125 -12416.349609 -27585.492188 +v -109817.234375 -14520.274414 -29232.761719 +v -109817.234375 -12419.926758 -27568.060547 +v -114584.210938 -12424.973633 -27543.464844 +v -114584.210938 -10458.046875 -25727.757812 +v -114810.242188 -10458.314453 -25726.537109 +v -114848.218750 -8063.996094 -23081.361328 +v -117934.617188 -10462.296875 -25708.410156 +v -117934.609375 -8067.933105 -23065.283203 +v -124012.781250 -8077.217285 -23027.363281 +v -124012.781250 -5958.134766 -20160.787109 +v -124052.476562 -5958.202148 -20160.544922 +v -124057.468750 -4127.961426 -17098.728516 +v -126063.867188 -5961.743652 -20147.882812 +v -126063.867188 -4131.494141 -17088.013672 +v -133441.359375 -4146.536621 -17042.392578 +v -133441.359375 -2618.671631 -13828.520508 +v -133809.765625 -2619.508789 -13826.459961 +v -133846.843750 -1407.664429 -10483.191406 +v -134552.203125 -2621.221436 -13822.246094 +v -134552.203125 -1409.292236 -10480.153320 +v -142869.921875 -1430.798462 -10440.025391 +v -142869.921875 -548.356689 -7013.843262 +v -143055.328125 -548.884949 -7013.181152 +v -143070.875000 -9.526485 -3522.708984 +v -143335.140625 -549.686096 -7012.176758 +v -143335.140625 -10.283306 -3522.232422 +v -152298.500000 -38.522594 -3504.451416 +v -152298.500000 144.289795 0.000000 +v -152364.390625 -38.748657 -3504.309082 +v -152369.500000 144.046234 0.000000 +v -152451.062500 -39.046360 -3504.121582 +v -152451.062500 143.766022 0.000000 +v -161727.062500 109.239296 0.000000 +v -161727.062500 -73.573090 3482.381592 +v -161825.375000 108.845360 0.000000 +v -161832.437500 -73.995354 3482.115723 +v -161938.421875 108.391647 0.000000 +v -161938.421875 -74.420738 3481.847900 +v -171155.640625 -117.663170 3456.904297 +v -171155.640625 -657.032043 6882.119141 +v -172036.890625 -122.848534 3454.345703 +v -172096.078125 -662.563354 6876.681641 +v -172925.734375 -128.337982 3451.733887 +v -172925.734375 -667.683777 6871.826172 +v -180584.203125 -728.044434 6824.367188 +v -180584.203125 -1610.045044 10157.992188 +v -181130.781250 -733.414795 6820.793457 +v -181165.187500 -1615.717529 10152.337891 +v -184204.125000 -766.736877 6800.222168 +v -184204.125000 -1648.437256 10122.053711 +v -190012.781250 -846.104065 6759.056152 +v -93903.898438 -22448.957031 -33724.917969 +v -94425.476562 -22735.562500 -33839.710938 +v -100158.671875 -22735.599609 -33824.445312 +v -94874.609375 -23113.734375 -33987.453125 +v -99709.851562 -23113.472656 -33974.449219 +v -95238.937500 -23568.222656 -34159.144531 +v -99345.539062 -23567.814453 -34148.015625 +v -95727.070312 -23970.898438 -34305.273438 +v -99077.320312 -24080.412109 -34335.363281 +v -95507.070312 -24080.853516 -34345.082031 +v -98912.789062 -24633.382812 -34527.691406 +v -95671.484375 -24633.695312 -34536.496094 +v -95727.070312 -25208.501953 -34725.621094 +v -95727.070312 -29000.000000 -35723.453125 +v -97752.390625 -26532.123047 -35117.546875 +v -98857.140625 -25208.501953 -34717.199219 +v -98857.140625 -29000.000000 -35714.949219 +v -95670.671875 -29578.951172 -35838.738281 +v -98913.523438 -29578.875000 -35829.906250 +v -99081.460938 -30138.248047 -35931.468750 +v -95502.726562 -30138.296875 -35941.214844 +v -99355.796875 -30656.285156 -36017.140625 +v -95228.289062 -30656.472656 -36028.410156 +v -99727.007812 -31112.468750 -36085.800781 +v -94856.984375 -31112.689453 -36099.097656 +v -100180.953125 -31488.048828 -36137.347656 +v -94403.226562 -31488.068359 -36153.101562 +v -94287.843750 -31789.687500 -36193.046875 +v -93883.000000 -31768.357422 -36191.156250 +v -93316.898438 -31941.445312 -36213.964844 +v -100701.140625 -31768.332031 36172.527344 +v -101982.093750 -32681.548828 36272.808594 +v -99465.500000 -36249.136719 36464.238281 +v -107504.601562 -36254.421875 36430.218750 +v -107425.960938 -32685.402344 36248.132812 +v -109817.234375 -32687.515625 36234.593750 +v -110129.828125 -31768.380859 36127.003906 +v -110695.921875 -31941.453125 36145.156250 +v -101267.250000 -31941.433594 36192.210938 +v -101857.140625 -32000.000000 36197.156250 +v -102155.640625 -32000.000000 36196.003906 +v -102745.656250 -31941.408203 36186.492188 +v -103311.781250 -31768.271484 36162.421875 +v -103832.054688 -31487.898438 36123.191406 +v -109609.554688 -31488.070312 36093.207031 +v -104285.492188 -31112.750000 36068.175781 +v -109155.101562 -31111.986328 36042.777344 +v -104656.796875 -30656.564453 35996.628906 +v -108784.531250 -30656.523438 35975.199219 +v -108510.031250 -30138.236328 35890.203125 +v -104931.203125 -30138.535156 35908.828125 +v -105099.218750 -29579.091797 35805.949219 +v -105155.640625 -29000.000000 35690.523438 +v -107347.328125 -29149.099609 35710.039062 +v -108342.085938 -29578.847656 35789.082031 +v -105155.640625 -25208.501953 34693.011719 +v -107268.718750 -25678.228516 34829.460938 +v -108285.710938 -29000.000000 35674.296875 +v -105100.085938 -24633.853516 34504.152344 +v -108341.375000 -24633.300781 34487.363281 +v -108285.710938 -25208.501953 34676.941406 +v -108505.921875 -24080.332031 34294.714844 +v -104935.734375 -24081.080078 34313.226562 +v -104667.656250 -23568.447266 34127.988281 +v -108774.125000 -23567.796875 34106.812500 +v -101857.140625 -22208.501953 33603.339844 +v -100158.914062 -22735.443359 33824.378906 +v -102155.640625 -32000.000000 -36196.003906 +v -101857.140625 -32000.000000 -36197.156250 +v -101267.375000 -31941.458984 -36192.214844 +v -100701.367188 -31768.423828 -36172.542969 +v -100680.054688 -22449.070312 -33706.898438 +v -101254.046875 -22269.748047 -33631.019531 +v -101982.093750 -21477.855469 -33289.117188 +v -101857.140625 -22208.501953 -33603.339844 +v -102155.640625 -22208.501953 -33602.214844 +v -105155.640625 -21479.945312 -33276.835938 +v -102758.289062 -22269.656250 -33625.308594 +v -103332.367188 -22448.916016 -33696.816406 +v -105328.273438 -21480.070312 -33276.093750 +v -103854.007812 -22735.533203 -33810.425781 +v -109587.265625 -22735.587891 -33781.335938 +v -104303.210938 -23113.757812 -33957.121094 +v -109138.500000 -23113.392578 -33932.386719 +v -104667.570312 -23568.324219 -34127.941406 +v -108774.203125 -23567.669922 -34106.765625 +v -105269.625000 -23976.037109 -34274.152344 +v -108505.960938 -24080.236328 -34294.679688 +v -108341.382812 -24633.250000 -34487.343750 +v -105100.078125 -24633.806641 -34504.132812 +v -105155.640625 -25208.501953 -34693.011719 +v -105155.640625 -23975.953125 -34274.656250 +v -104935.695312 -24080.994141 -34313.191406 +v -105155.640625 -29000.000000 -35690.523438 +v -105210.984375 -26536.414062 -35090.949219 +v -108285.710938 -25208.501953 -34676.941406 +v -108285.710938 -29000.000000 -35674.296875 +v -105099.234375 -29579.003906 -35805.933594 +v -108342.093750 -29578.865234 -35789.085938 +v -108510.046875 -30138.271484 -35890.207031 +v -104931.273438 -30138.355469 -35908.792969 +v -108784.414062 -30656.353516 -35975.167969 +v -104656.835938 -30656.505859 -35996.621094 +v -109155.703125 -31112.595703 -36042.867188 +v -104285.531250 -31112.710938 -36068.171875 +v -103831.796875 -31488.070312 -36123.210938 +v -103311.593750 -31768.351562 -36162.437500 +v -109817.234375 -31799.109375 -36132.851562 +v -109609.539062 -31488.058594 -36093.203125 +v -102745.531250 -31941.433594 -36186.496094 +v -110695.968750 -31941.462891 -36145.156250 +v -111285.710938 -32000.000000 -36148.480469 +v -111584.210938 -32000.000000 -36146.500000 +v -112174.156250 -31941.421875 -36135.335938 +v -117937.046875 -31808.410156 -36073.445312 +v -120124.656250 -31941.486328 -36069.871094 +v -119558.656250 -31768.484375 -36053.542969 +v -111285.710938 -32000.000000 36148.480469 +v -111584.210938 -32000.000000 36146.500000 +v -115684.718750 -32693.890625 36193.746094 +v -112174.328125 -31941.386719 36135.328125 +v -112740.687500 -31768.132812 36109.628906 +v -113260.804688 -31487.777344 36068.890625 +v -117893.695312 -32696.755859 36175.398438 +v -115722.789062 -36262.894531 36375.675781 +v -124162.328125 -36275.304688 36295.769531 +v -124157.335938 -32706.341797 36113.992188 +v -126063.867188 -32709.705078 36092.453125 +v -122689.429688 -31487.742188 35985.144531 +v -128466.609375 -31488.009766 35917.738281 +v -123142.671875 -31112.718750 35927.292969 +v -128012.742188 -31112.486328 35870.402344 +v -123513.796875 -30656.779297 35853.441406 +v -127641.445312 -30656.181641 35805.156250 +v -123788.265625 -30138.718750 35763.914062 +v -127367.039062 -30137.914062 35721.996094 +v -123956.328125 -29579.242188 35660.015625 +v -127199.187500 -29578.626953 35622.054688 +v -126063.867188 -29173.466797 35556.261719 +v -127142.859375 -29000.000000 35507.777344 +v -124012.781250 -29000.000000 35544.281250 +v -126063.867188 -25702.662109 34679.078125 +v -124147.343750 -25699.281250 34699.878906 +v -124012.781250 -25208.501953 34548.203125 +v -113714.429688 -31112.388672 36012.515625 +v -117938.484375 -30137.957031 35821.777344 +v -118212.921875 -30656.251953 35905.914062 +v -114085.164062 -30656.869141 35939.988281 +v -114359.726562 -30138.644531 35851.351562 +v -114527.773438 -29579.166016 35747.992188 +v -114584.210938 -29000.000000 35632.414062 +v -115646.648438 -29157.607422 35656.351562 +v -117770.625000 -29578.675781 35721.218750 +v -114584.210938 -25208.501953 34635.468750 +v -115608.578125 -25686.753906 34776.988281 +v -117714.289062 -29000.000000 35606.679688 +v -114528.656250 -24633.847656 34446.906250 +v -117769.968750 -24633.167969 34420.351562 +v -117714.289062 -25208.501953 34609.984375 +v -117934.562500 -24080.173828 34227.359375 +v -114364.257812 -24080.976562 34256.570312 +v -114096.062500 -23568.199219 34072.199219 +v -113731.515625 -23113.490234 33902.503906 +v -115570.515625 -22314.050781 33569.156250 +v -117934.562500 -22317.111328 33550.972656 +v -117934.562500 -19075.320312 32028.736328 +v -120714.289062 -22208.501953 33480.628906 +v -121012.781250 -22208.501953 33477.746094 +v -121615.250000 -22269.619141 33497.203125 +v -122189.328125 -22448.839844 33565.109375 +v -114584.210938 -22312.861328 33576.222656 +v -113282.390625 -22735.400391 33757.250000 +v -112760.796875 -22448.855469 33645.214844 +v -112186.781250 -22269.640625 33575.371094 +v -111584.210938 -22208.501953 33553.949219 +v -110129.960938 -31768.433594 -36127.015625 +v -110108.554688 -22449.099609 -33662.519531 +v -109817.234375 -21483.820312 -33254.046875 +v -105386.929688 -19062.316406 -32102.486328 +v -109817.234375 -19066.023438 -32081.460938 +v -105445.593750 -16736.576172 -30759.041016 +v -109817.234375 -16740.240234 -30739.130859 +v -110682.507812 -22269.771484 -33585.167969 +v -111285.710938 -22208.501953 -33555.882812 +v -111584.210938 -22208.501953 -33553.949219 +v -114584.210938 -21488.867188 -33224.378906 +v -112186.851562 -22269.654297 -33575.375000 +v -112760.976562 -22448.931641 -33645.242188 +v -114667.898438 -21488.966797 -33223.796875 +v -113282.171875 -22735.251953 -33757.195312 +v -119015.890625 -22735.548828 -33711.167969 +v -113731.742188 -23113.720703 -33902.589844 +v -118567.187500 -23113.271484 -33863.429688 +v -114096.234375 -23568.464844 -34072.296875 +v -118202.898438 -23567.484375 -34038.742188 +v -114639.437500 -23984.941406 -34220.234375 +v -117934.625000 -23989.126953 -34194.894531 +v -117934.625000 -24080.013672 -34227.300781 +v -114584.210938 -23984.876953 -34220.628906 +v -114364.367188 -24081.236328 -34256.664062 +v -114528.679688 -24633.957031 -34446.941406 +v -117769.984375 -24633.083984 -34420.324219 +v -114584.210938 -25208.501953 -34635.468750 +v -117714.289062 -25208.501953 -34609.984375 +v -114610.976562 -26545.328125 -35035.687500 +v -117714.289062 -29000.000000 -35606.679688 +v -114584.210938 -29000.000000 -35632.414062 +v -114527.796875 -29579.060547 -35747.968750 +v -117770.640625 -29578.746094 -35721.230469 +v -114359.820312 -30138.410156 -35851.308594 +v -117938.539062 -30138.089844 -35821.800781 +v -114085.429688 -30656.478516 -35939.921875 +v -113714.140625 -31112.677734 -36012.562500 +v -113260.484375 -31487.994141 -36068.925781 +v -112740.203125 -31768.335938 -36109.660156 +v -118584.046875 -31112.363281 35972.429688 +v -119038.078125 -31488.037109 36021.367188 +v -119558.484375 -31768.416016 36053.527344 +v -120124.632812 -31941.480469 36069.871094 +v -120714.289062 -32000.000000 36071.285156 +v -121012.781250 -32000.000000 36068.332031 +v -121602.929688 -31941.380859 36055.218750 +v -122169.132812 -31768.185547 36027.644531 +v -124152.343750 -29170.095703 35577.535156 +v -123957.265625 -24634.031250 34360.101562 +v -127198.578125 -24632.978516 34322.406250 +v -127142.859375 -25208.501953 34512.058594 +v -127363.234375 -24079.912109 34129.066406 +v -123792.929688 -24081.220703 34170.554688 +v -123524.765625 -23568.398438 33987.281250 +v -127631.484375 -23567.466797 33939.867188 +v -120111.062500 -22269.775391 33511.792969 +v -119537.085938 -22449.113281 33590.871094 +v -119015.828125 -22735.593750 33711.187500 +v -118566.945312 -23113.525391 33863.527344 +v -118202.765625 -23567.695312 34038.820312 +v -119038.328125 -31488.205078 -36021.386719 +v -118583.765625 -31112.080078 -35972.386719 +v -118212.843750 -30656.136719 -35905.890625 +v -119537.070312 -22449.123047 -33590.875000 +v -117934.625000 -21493.117188 -33199.394531 +v -114696.359375 -19071.203125 -32052.087891 +v -117934.625000 -19075.320312 -32028.734375 +v -114724.828125 -16745.453125 -30710.802734 +v -117934.617188 -16749.537109 -30688.611328 +v -114753.296875 -14525.520508 -29205.646484 +v -117934.617188 -14529.570312 -29184.716797 +v -114781.773438 -12425.207031 -27542.324219 +v -117934.617188 -12429.223633 -27522.751953 +v -120110.976562 -22269.792969 -33511.800781 +v -120714.289062 -22208.501953 -33480.628906 +v -124012.781250 -21502.400391 -33144.812500 +v -121012.781250 -22208.501953 -33477.746094 +v -121615.210938 -22269.611328 -33497.199219 +v -122189.218750 -22448.792969 -33565.093750 +v -124023.773438 -21502.419922 -33144.703125 +v -124027.515625 -19084.628906 -31975.935547 +v -126063.867188 -21506.009766 -33123.597656 +v -126063.867188 -19088.212891 -31955.611328 +v -133441.359375 -19103.255859 -31870.296875 +v -133441.359375 -16777.472656 -30536.800781 +v -133578.203125 -16777.783203 -30535.117188 +v -133605.984375 -14557.879883 -29038.419922 +v -134552.203125 -16780.021484 -30522.945312 +v -134552.203125 -14560.055664 -29027.169922 +v -142869.921875 -14581.562500 -28916.027344 +v -142869.921875 -12481.214844 -27269.361328 +v -142950.500000 -12481.444336 -27268.244141 +v -142962.140625 -10514.550781 -25470.529297 +v -143335.140625 -12482.543945 -27262.882812 +v -143335.140625 -10515.617188 -25465.671875 +v -152298.500000 -10543.857422 -25337.115234 +v -152298.500000 -8149.493164 -22732.162109 +v -152333.812500 -8149.614258 -22731.667969 +v -152338.906250 -6030.549316 -19901.839844 +v -152451.062500 -8150.017090 -22730.023438 +v -152451.062500 -6030.934570 -19900.462891 +v -161727.062500 -6065.461426 -19776.998047 +v -161727.062500 -4235.211914 -16773.455078 +v -161790.062500 -4235.464355 -16772.689453 +v -161797.125000 -2707.627441 -13609.609375 +v -161938.421875 -4236.059570 -16770.884766 +v -161938.421875 -2708.194336 -13608.213867 +v -171155.640625 -2751.270996 -13510.725586 +v -171155.640625 -1539.418213 -10243.956055 +v -171800.234375 -1543.166870 -10238.419922 +v -171859.375000 -661.144653 -6878.056641 +v -172925.734375 -1550.032227 -10228.634766 +v -172925.734375 -667.683777 -6871.826172 +v -180584.203125 -728.044434 -6824.367188 +v -180584.203125 -188.911194 -3427.895020 +v -181027.562500 -193.274338 -3426.440186 +v -180584.203125 -6.190180 0.000000 +v -181061.968750 -10.903365 0.000000 +v -180584.203125 -188.911194 3427.895020 +v -181096.375000 -193.961029 3426.213623 +v -122710.867188 -22735.335938 -33675.292969 +v -128444.554688 -22735.486328 -33609.937500 +v -123160.273438 -23113.679688 -33818.992188 +v -127995.914062 -23113.121094 -33763.492188 +v -123524.867188 -23568.550781 -33987.335938 +v -127631.609375 -23567.273438 -33939.796875 +v -126063.867188 -24002.019531 -34116.824219 +v -127363.296875 -24079.765625 -34129.015625 +v -127198.593750 -24632.900391 -34322.378906 +v -123957.281250 -24634.095703 -34360.117188 +v -124012.781250 -25208.501953 -34548.203125 +v -123792.992188 -24081.369141 -34170.605469 +v -124012.781250 -23998.410156 -34138.675781 +v -124020.031250 -23998.423828 -34138.601562 +v -124012.781250 -29000.000000 -35544.281250 +v -124016.281250 -26558.835938 -34951.941406 +v -126063.867188 -26562.439453 -34929.605469 +v -127142.859375 -25208.501953 -34512.058594 +v -127142.859375 -29000.000000 -35507.777344 +v -126063.867188 -29173.466797 -35556.261719 +v -123956.328125 -29579.261719 -35660.015625 +v -127199.234375 -29578.867188 -35622.101562 +v -123788.257812 -30138.740234 -35763.917969 +v -127367.226562 -30138.375000 -35722.074219 +v -123513.750000 -30656.853516 -35853.453125 +v -127641.734375 -30656.619141 -35805.222656 +v -123142.367188 -31113.021484 -35927.343750 +v -128013.242188 -31112.992188 -35870.472656 +v -126063.867188 -31821.300781 -35991.109375 +v -128466.703125 -31488.072266 -35917.750000 +v -128987.140625 -31768.447266 -35948.093750 +v -129553.156250 -31941.472656 -35962.429688 +v -130142.859375 -32000.000000 -35961.746094 +v -130441.351562 -32000.000000 -35957.718750 +v -131031.609375 -31941.359375 -35942.476562 +v -134552.203125 -31838.892578 -35878.734375 +v -131597.781250 -31768.154297 -35912.835938 +v -132117.843750 -31487.843750 -35868.457031 +v -132570.890625 -31113.074219 -35808.972656 +v -137441.140625 -31112.318359 -35734.039062 +v -132942.250000 -30656.960938 -35733.730469 +v -137070.406250 -30656.767578 -35670.281250 +v -136795.765625 -30138.279297 -35588.132812 +v -122689.234375 -31487.873047 -35985.171875 +v -122169.125000 -31768.187500 -36027.640625 +v -121602.960938 -31941.375000 -36055.214844 +v -128987.125000 -31768.445312 35948.085938 +v -129553.281250 -31941.496094 35962.433594 +v -130142.859375 -32000.000000 35961.746094 +v -134515.031250 -32727.210938 35980.312500 +v -130441.351562 -32000.000000 35957.718750 +v -131031.460938 -31941.390625 35942.480469 +v -131597.562500 -31768.244141 35912.855469 +v -132117.703125 -31487.937500 35868.464844 +v -134552.203125 -32727.296875 35979.757812 +v -137895.265625 -31488.066406 35779.738281 +v -138415.796875 -31768.486328 35808.164062 +v -132572.125000 -31111.828125 35808.769531 +v -137441.406250 -31112.580078 35734.078125 +v -132942.703125 -30656.283203 35733.613281 +v -137070.015625 -30656.187500 35670.195312 +v -133216.937500 -30138.484375 35643.140625 +v -136795.609375 -30137.910156 35588.066406 +v -133384.921875 -29579.158203 35538.691406 +v -136627.750000 -29578.597656 35488.789062 +v -134552.203125 -29191.058594 35445.246094 +v -136571.421875 -29000.000000 35374.804688 +v -133441.359375 -29000.000000 35422.843750 +v -134552.203125 -25720.253906 34570.800781 +v -134440.703125 -25719.994141 34572.398438 +v -133441.359375 -25208.501953 34427.964844 +v -134477.875000 -29190.886719 35446.335938 +v -133385.890625 -24634.304688 34240.445312 +v -136627.187500 -24632.769531 34190.800781 +v -136571.421875 -25208.501953 34380.406250 +v -136791.921875 -24079.621094 33997.167969 +v -133221.671875 -24081.648438 34051.859375 +v -132953.656250 -23568.884766 33869.878906 +v -137060.218750 -23567.207031 33807.339844 +v -137424.375000 -23113.226562 33630.101562 +v -137873.140625 -22735.478516 33475.160156 +v -138394.187500 -22449.132812 33351.613281 +v -128965.593750 -22449.144531 -33488.050781 +v -129539.445312 -22269.814453 -33407.109375 +v -130142.859375 -22208.501953 -33373.867188 +v -133441.359375 -21521.052734 -33035.164062 +v -130441.351562 -22208.501953 -33369.941406 +v -131043.515625 -22269.556641 -33387.226562 +v -131617.500000 -22448.662109 -33452.953125 +v -133522.656250 -21521.236328 -33034.082031 +v -133550.421875 -19103.501953 -31868.894531 +v -134552.203125 -21523.601562 -33020.175781 +v -134552.203125 -19105.804688 -31855.835938 +v -142869.921875 -19127.310547 -31733.861328 +v -142869.921875 -16801.529297 -30406.074219 +v -142927.203125 -16801.691406 -30405.189453 +v -142938.843750 -14581.758789 -28915.013672 +v -143335.140625 -16802.857422 -30398.849609 +v -143335.140625 -14582.891602 -28909.156250 +v -152298.500000 -14611.130859 -28763.216797 +v -152298.500000 -12510.783203 -27125.253906 +v -152324.890625 -12510.874023 -27124.812500 +v -152328.718750 -10543.960938 -25336.642578 +v -152451.062500 -12511.307617 -27122.701172 +v -152451.062500 -10544.380859 -25334.730469 +v -161727.062500 -10578.907227 -25177.552734 +v -161727.062500 -8184.543457 -22589.003906 +v -161775.937500 -8184.739258 -22588.205078 +v -161783.000000 -6065.685547 -19776.197266 +v -161938.421875 -8185.391113 -22585.541016 +v -161938.421875 -6066.309082 -19773.966797 +v -171155.640625 -6109.174316 -19632.306641 +v -171155.640625 -4279.040039 -16650.740234 +v -171681.968750 -4282.060547 -16643.396484 +v -171741.093750 -2754.655273 -13504.096680 +v -172925.734375 -4289.537109 -16625.835938 +v -172925.734375 -2761.833252 -13490.518555 +v -180584.203125 -2821.368408 -13397.348633 +v -180584.203125 -1610.045044 -10157.992188 +v -180958.765625 -1613.681519 -10154.351562 +v -180993.156250 -732.047485 -6821.695801 +v -184204.093750 -1648.436768 -10122.053711 +v -184204.093750 -766.736511 -6800.222656 +v -190012.781250 -1727.085205 -10060.778320 +v -190012.781250 -846.104065 -6759.056152 +v -199441.359375 -1031.161987 -6685.419434 +v -199441.359375 -493.845367 -3358.101318 +v -207258.000000 -715.101807 -3323.890381 +v -207258.000000 -533.526001 0.000000 +v -208869.921875 -588.217285 0.000000 +v -208869.921875 -769.657776 3316.397705 +v -218298.500000 -1161.071411 3269.244629 +v -218298.500000 -1693.463867 6508.520508 +v -132139.359375 -22735.281250 -33561.132812 +v -137873.296875 -22735.371094 -33475.117188 +v -132588.859375 -23113.699219 -33703.015625 +v -137424.671875 -23112.919922 -33629.984375 +v -132953.437500 -23568.550781 -33869.761719 +v -137060.343750 -23567.015625 -33807.269531 +v -134552.203125 -24019.611328 -34010.300781 +v -136791.984375 -24079.474609 -33997.117188 +v -136627.203125 -24632.693359 -34190.777344 +v -133385.875000 -24634.193359 -34240.406250 +v -133441.359375 -25208.501953 -34427.964844 +v -133221.593750 -24081.427734 -34051.781250 +v -133441.359375 -24017.062500 -34025.738281 +v -133494.890625 -24017.183594 -34025.007812 +v -133441.359375 -29000.000000 -35422.843750 +v -133467.125000 -26577.539062 -34835.992188 +v -134552.203125 -26580.031250 -34820.546875 +v -136571.421875 -25208.501953 -34380.406250 +v -136571.421875 -29000.000000 -35374.804688 +v -134552.203125 -29191.058594 -35445.246094 +v -133384.875000 -29579.367188 -35538.730469 +v -136627.796875 -29578.781250 -35488.824219 +v -133216.781250 -30138.871094 -35643.210938 +v -138981.937500 -31941.513672 35820.406250 +v -139571.421875 -32000.000000 35817.515625 +v -143319.578125 -32750.087891 35833.765625 +v -139869.921875 -32000.000000 35812.371094 +v -140460.093750 -31941.376953 35794.898438 +v -141026.171875 -31768.228516 35763.113281 +v -143335.140625 -32750.132812 35833.480469 +v -141874.531250 -36314.957031 36040.480469 +v -151231.734375 -36343.703125 35855.410156 +v -152445.968750 -32778.878906 35649.339844 +v -152451.062500 -32778.894531 35649.230469 +v -150455.234375 -31768.023438 35577.492188 +v -157273.000000 -31768.513672 35421.035156 +v -150975.437500 -31487.541016 35529.070312 +v -156752.750000 -31488.298828 35396.519531 +v -151428.968750 -31112.125000 35465.988281 +v -156298.187500 -31112.216797 35354.175781 +v -151799.390625 -30656.968750 35388.070312 +v -155927.375000 -30656.513672 35293.195312 +v -152073.906250 -30138.910156 35295.511719 +v -155652.796875 -30138.017578 35213.175781 +v -152242.000000 -29579.449219 35189.894531 +v -155484.890625 -29578.597656 35115.292969 +v -152451.062500 -29242.658203 35119.625000 +v -155428.578125 -29000.000000 35001.972656 +v -152298.500000 -29000.000000 35073.773438 +v -152451.062500 -25771.851562 34253.214844 +v -152435.765625 -25771.798828 34253.535156 +v -152298.500000 -25208.501953 34082.425781 +v -141546.406250 -31487.853516 35716.722656 +v -147323.937500 -31488.136719 35606.074219 +v -147844.484375 -31768.533203 35632.546875 +v -142000.468750 -31112.064453 35655.335938 +v -146870.062500 -31112.662109 35562.117188 +v -142371.218750 -30656.357422 35578.738281 +v -146498.609375 -30656.214844 35499.628906 +v -142645.468750 -30138.595703 35487.253906 +v -146224.187500 -30137.929688 35418.570312 +v -142813.468750 -29579.253906 35382.218750 +v -146056.328125 -29578.582031 35319.984375 +v -143335.140625 -29213.894531 35301.136719 +v -146000.000000 -29000.000000 35206.320312 +v -142869.921875 -29000.000000 35266.234375 +v -143335.140625 -25743.089844 34430.246094 +v -143288.484375 -25742.955078 34431.074219 +v -142869.921875 -25208.501953 34272.925781 +v -143304.031250 -29213.804688 35301.699219 +v -142814.468750 -24634.367188 34086.019531 +v -146055.812500 -24632.542969 34024.140625 +v -146000.000000 -25208.501953 34213.621094 +v -146220.625000 -24079.300781 33830.289062 +v -142650.250000 -24081.636719 33898.417969 +v -142382.109375 -23568.710938 33717.777344 +v -146488.984375 -23566.910156 33639.898438 +v -142017.609375 -23113.873047 33552.765625 +v -146853.140625 -23113.027344 33461.753906 +v -147301.843750 -22735.384766 33305.554688 +v -147822.781250 -22449.125000 33180.406250 +v -138981.781250 -31941.482422 -35820.406250 +v -139571.421875 -32000.000000 -35817.515625 +v -139869.921875 -32000.000000 -35812.371094 +v -140460.093750 -31941.376953 -35794.898438 +v -143335.140625 -31861.728516 -35732.863281 +v -141026.125000 -31768.248047 -35763.117188 +v -141546.328125 -31487.904297 -35716.730469 +v -141999.890625 -31112.632812 -35655.429688 +v -146869.328125 -31111.927734 -35562.019531 +v -142371.062500 -30656.589844 -35578.781250 +v -146498.953125 -30656.732422 -35499.707031 +v -146224.343750 -30138.287109 -35418.628906 +v -138415.562500 -31768.386719 -35808.156250 +v -137895.140625 -31487.986328 -35779.730469 +v -138394.140625 -22449.154297 -33351.617188 +v -138967.937500 -22269.830078 -33268.738281 +v -142869.921875 -21545.109375 -32893.742188 +v -139571.421875 -22208.501953 -33233.339844 +v -139869.921875 -22208.501953 -33228.324219 +v -140471.875000 -22269.515625 -33243.335938 +v -141045.796875 -22448.546875 -33306.765625 +v -142903.906250 -21545.205078 -32893.175781 +v -143335.140625 -21546.437500 -32885.925781 +v -142915.562500 -19127.441406 -31733.125000 +v -143335.140625 -19128.640625 -31726.320312 +v -141567.640625 -22735.091797 -33412.738281 +v -147302.078125 -22735.218750 -33305.488281 +v -147822.718750 -22449.152344 -33180.414062 +v -142017.328125 -23113.587891 -33552.660156 +v -146853.343750 -23112.818359 -33461.671875 +v -142381.906250 -23568.398438 -33717.664062 +v -146489.015625 -23566.865234 -33639.882812 +v -143335.140625 -24042.447266 -33872.027344 +v -146220.640625 -24079.263672 -33830.277344 +v -146055.812500 -24632.529297 -34024.136719 +v -142814.437500 -24634.173828 -34085.953125 +v -142869.921875 -25208.501953 -34272.925781 +v -142650.125000 -24081.355469 -33898.320312 +v -142869.921875 -24041.117188 -33880.078125 +v -142892.265625 -24041.181641 -33879.691406 +v -142869.921875 -29000.000000 -35266.234375 +v -142880.625000 -26601.568359 -34687.031250 +v -143335.140625 -26602.867188 -34678.976562 +v -146000.000000 -25208.501953 -34213.621094 +v -146000.000000 -29000.000000 -35206.320312 +v -143335.140625 -29213.894531 -35301.136719 +v -142813.468750 -29579.302734 -35382.230469 +v -146056.359375 -29578.765625 -35320.019531 +v -142645.421875 -30138.675781 -35487.265625 +v -148410.609375 -31941.531250 35642.652344 +v -149000.000000 -32000.000000 35637.523438 +v -149298.500000 -32000.000000 35631.238281 +v -149888.859375 -31941.337891 35611.500000 +v -152440.859375 -29242.623047 35119.847656 +v -152243.078125 -24634.554688 33896.261719 +v -155484.421875 -24632.304688 33822.101562 +v -155428.578125 -25208.501953 34011.363281 +v -155649.343750 -24078.955078 33628.121094 +v -152078.921875 -24081.884766 33709.796875 +v -151810.828125 -23568.923828 33530.648438 +v -155917.781250 -23566.583984 33437.269531 +v -151446.062500 -23113.755859 33367.347656 +v -156281.953125 -23112.785156 33258.316406 +v -152451.062500 -22399.195312 33063.300781 +v -156730.609375 -22735.255859 33100.953125 +v -157251.421875 -22449.091797 32974.285156 +v -157825.015625 -22269.841797 32887.628906 +v -150995.906250 -22734.882812 33229.367188 +v -152430.671875 -22399.125000 33063.714844 +v -152298.500000 -22398.671875 33066.410156 +v -150473.859375 -22448.333984 33125.648438 +v -148410.484375 -31941.509766 -35642.652344 +v -149000.000000 -32000.000000 -35637.523438 +v -149298.500000 -32000.000000 -35631.238281 +v -149888.703125 -31941.369141 -35611.507812 +v -152451.062500 -31890.490234 -35549.132812 +v -150455.046875 -31768.103516 -35577.507812 +v -150975.281250 -31487.644531 -35529.093750 +v -151428.750000 -31112.353516 -35466.027344 +v -156297.843750 -31111.871094 -35354.132812 +v -151799.734375 -30656.447266 -35387.976562 +v -155927.421875 -30656.576172 -35293.199219 +v -155652.906250 -30138.296875 -35213.218750 +v -147844.562500 -31768.562500 -35632.550781 +v -147323.781250 -31488.031250 -35606.062500 +v -148396.468750 -22269.837891 -33095.605469 +v -152298.500000 -21574.677734 -32719.912109 +v -152298.500000 -19156.880859 -31566.160156 +v -152313.437500 -19156.931641 -31565.869141 +v -152317.250000 -16831.162109 -30245.041016 +v -152451.062500 -19157.404297 -31563.189453 +v -152451.062500 -16831.621094 -30242.542969 +v -161727.062500 -16866.148438 -30054.916016 +v -161727.062500 -14646.181641 -28582.076172 +v -161758.281250 -14646.306641 -28581.431641 +v -161763.578125 -12545.980469 -26953.716797 +v -161938.421875 -14647.029297 -28577.697266 +v -161938.421875 -12546.681641 -26950.298828 +v -171155.640625 -12589.138672 -26757.228516 +v -171155.640625 -10622.335938 -24993.349609 +v -171504.640625 -10624.283203 -24986.050781 +v -171563.734375 -8230.423828 -22416.080078 +v -172925.734375 -10632.562500 -24955.968750 +v -172925.734375 -8238.451172 -22390.203125 +v -180584.203125 -8295.828125 -22235.568359 +v -180584.203125 -6177.804688 -19467.560547 +v -180855.578125 -6180.333008 -19462.507812 +v -180889.968750 -4351.366211 -16506.183594 +v -184204.062500 -6214.640625 -19398.683594 +v -184204.078125 -4385.929199 -16452.597656 +v -190012.781250 -6289.564941 -19281.250000 +v -190012.781250 -4462.344727 -16352.998047 +v -199441.359375 -4639.388184 -16174.839844 +v -199441.359375 -3117.432617 -13124.572266 +v -207258.000000 -3331.060303 -12990.864258 +v -207258.000000 -2127.328857 -9849.791992 +v -208869.921875 -2180.832520 -9827.588867 +v -208869.921875 -1305.012817 -6602.394531 +v -218298.500000 -1693.463867 -6508.520508 +v -218298.500000 -1161.071411 -3269.244629 +v -218298.500000 -980.635010 0.000000 +v -149000.000000 -22208.501953 -33058.035156 +v -149298.500000 -22208.501953 -33051.914062 +v -149900.343750 -22269.492188 -33064.617188 +v -150474.218750 -22448.486328 -33125.703125 +v -152309.609375 -21574.714844 -32719.687500 +v -152451.062500 -21575.201172 -32716.832031 +v -161727.062500 -19191.929688 -31367.367188 +v -161752.984375 -16866.251953 -30054.351562 +v -161938.421875 -16866.996094 -30050.310547 +v -171155.640625 -14689.354492 -28372.968750 +v -171460.312500 -12590.825195 -26750.408203 +v -172925.734375 -12599.281250 -26717.208984 +v -180584.203125 -10688.995117 -24783.615234 +v -180821.187500 -8297.994141 -22230.531250 +v -184204.062500 -8331.942383 -22156.900391 +v -190012.781250 -8405.139648 -22022.769531 +v -199441.359375 -6462.559082 -19071.191406 +v -207258.000000 -4848.590820 -16010.056641 +v -208869.921875 -3383.666992 -12961.580078 +v -218298.500000 -2564.436768 -9687.858398 +v -150995.937500 -22734.902344 -33229.375000 +v -156730.281250 -22735.486328 -33101.050781 +v -151445.906250 -23113.595703 -33367.281250 +v -156281.171875 -23113.585938 -33258.636719 +v -151810.468750 -23568.373047 -33530.449219 +v -155917.453125 -23567.072266 -33437.457031 +v -152451.062500 -24071.210938 -33697.863281 +v -155649.187500 -24079.314453 -33628.253906 +v -155484.390625 -24632.505859 -33822.171875 +v -152243.046875 -24634.349609 -33896.191406 +v -152298.500000 -25208.501953 -34082.425781 +v -152078.750000 -24081.490234 -33709.660156 +v -152298.500000 -24070.687500 -33701.035156 +v -152305.781250 -24070.710938 -33700.882812 +v -152298.500000 -29000.000000 -35073.773438 +v -152301.968750 -26631.119141 -34503.835938 +v -152451.062500 -26631.630859 -34500.664062 +v -155428.578125 -25208.501953 -34011.363281 +v -155428.578125 -29000.000000 -35001.972656 +v -152451.062500 -29242.658203 -35119.625000 +v -152242.031250 -29579.335938 -35189.871094 +v -155484.921875 -29578.748047 -35115.320312 +v -152074.000000 -30138.669922 -35295.468750 +v -157839.265625 -31941.550781 35429.035156 +v -161931.359375 -32814.242188 35422.808594 +v -160979.343750 -36379.398438 35625.601562 +v -161938.421875 -32814.269531 35422.628906 +v -171138.015625 -36424.093750 35346.453125 +v -172866.421875 -32864.406250 35118.046875 +v -172925.734375 -32864.726562 35116.261719 +v -176130.578125 -31768.691406 34890.945312 +v -176696.562500 -31941.582031 34894.636719 +v -158428.578125 -32000.000000 35421.687500 +v -158727.062500 -32000.000000 35414.277344 +v -159317.468750 -31941.332031 35392.296875 +v -159883.593750 -31768.113281 35356.152344 +v -166701.812500 -31768.611328 35174.160156 +v -160403.937500 -31487.589844 35305.718750 +v -166181.265625 -31488.263672 35151.535156 +v -160858.078125 -31111.585938 35240.792969 +v -165727.171875 -31112.638672 35110.917969 +v -161227.984375 -30656.935547 35161.566406 +v -165355.828125 -30656.322266 35051.230469 +v -161502.390625 -30139.115234 35068.062500 +v -165081.406250 -30138.117188 34972.324219 +v -161670.546875 -29579.605469 34961.894531 +v -164913.468750 -29578.632812 34875.156250 +v -161938.421875 -29278.031250 34896.390625 +v -164857.140625 -29000.000000 34762.199219 +v -161727.062500 -29000.000000 34845.683594 +v -161938.421875 -25807.226562 34035.484375 +v -161917.218750 -25807.140625 34036.007812 +v -161727.062500 -25208.501953 33856.703125 +v -161924.281250 -29277.974609 34896.746094 +v -161671.687500 -24634.699219 33671.355469 +v -164913.031250 -24632.164062 33585.171875 +v -164857.140625 -25208.501953 33774.089844 +v -165077.984375 -24078.775391 33391.195312 +v -161507.546875 -24082.048828 33486.101562 +v -161239.468750 -23569.031250 33308.515625 +v -165346.421875 -23566.464844 33200.011719 +v -160874.750000 -23113.875000 33147.117188 +v -165710.468750 -23112.843750 33020.390625 +v -161938.421875 -22434.570312 32853.136719 +v -166159.468750 -22735.052734 32861.800781 +v -166679.671875 -22449.232422 32733.775391 +v -167253.562500 -22269.847656 32645.212891 +v -161938.421875 -19192.777344 31362.560547 +v -171155.640625 -19234.816406 31137.880859 +v -161938.421875 -16114.567383 29576.980469 +v -171155.640625 -16156.800781 29365.093750 +v -160424.609375 -22734.970703 33011.269531 +v -161910.156250 -22434.457031 32853.808594 +v -159328.453125 -22269.398438 32851.097656 +v -161727.062500 -22433.722656 32858.171875 +v -159902.531250 -22448.376953 32909.824219 +v -158727.062500 -22208.501953 32840.707031 +v -161903.093750 -19192.636719 31363.365234 +v -158428.578125 -22208.501953 32847.921875 +v -157839.156250 -31941.527344 -35429.035156 +v -158428.578125 -32000.000000 -35421.687500 +v -158727.062500 -32000.000000 -35414.277344 +v -161938.421875 -31925.865234 -35323.167969 +v -159317.312500 -31941.361328 -35392.304688 +v -159883.625000 -31768.101562 -35356.144531 +v -160403.828125 -31487.660156 -35305.730469 +v -160857.218750 -31112.457031 -35240.949219 +v -165726.609375 -31112.072266 -35110.847656 +v -165355.890625 -30656.429688 -35051.246094 +v -157273.250000 -31768.611328 -35421.050781 +v -156752.718750 -31488.281250 -35396.515625 +v -157251.312500 -22449.146484 -32974.300781 +v -157825.000000 -22269.847656 -32887.628906 +v -161727.062500 -21609.728516 -32513.855469 +v -158428.578125 -22208.501953 -32847.921875 +v -158727.062500 -22208.501953 -32840.707031 +v -159328.484375 -22269.404297 -32851.097656 +v -159902.187500 -22448.228516 -32909.773438 +v -161742.390625 -21609.789062 -32513.494141 +v -161938.421875 -21610.576172 -32508.871094 +v -161747.687500 -19192.013672 -31366.900391 +v -161938.421875 -19192.777344 -31362.560547 +v -160424.515625 -22734.910156 -33011.246094 +v -166159.640625 -22734.943359 -32861.753906 +v -166679.750000 -22449.199219 -32733.759766 +v -167253.515625 -22269.857422 -32645.218750 +v -171155.640625 -21652.462891 -32275.980469 +v -167857.140625 -22208.501953 -32603.351562 +v -168155.640625 -22208.501953 -32595.021484 +v -160875.265625 -23114.408203 -33147.304688 +v -165710.390625 -23112.923828 -33020.421875 +v -161239.640625 -23569.314453 -33308.613281 +v -165346.437500 -23566.443359 -33200.003906 +v -161938.421875 -24106.583984 -33483.664062 +v -165078.000000 -24078.753906 -33391.187500 +v -164913.031250 -24632.154297 -33585.167969 +v -161671.734375 -24634.990234 -33671.453125 +v -161727.062500 -25208.501953 -33856.703125 +v -161507.671875 -24082.357422 -33486.207031 +v -161737.093750 -24105.777344 -33488.554688 +v -161727.062500 -24105.736328 -33488.796875 +v -161727.062500 -29000.000000 -34845.683594 +v -161731.812500 -26666.175781 -34286.500000 +v -161938.421875 -26667.003906 -34281.363281 +v -164857.140625 -25208.501953 -33774.089844 +v -164857.140625 -29000.000000 -34762.199219 +v -161938.421875 -29278.031250 -34896.390625 +v -161670.578125 -29579.417969 -34961.859375 +v -164913.484375 -29578.660156 -34875.160156 +v -161502.546875 -30138.746094 -35067.992188 +v -165081.437500 -30138.171875 -34972.332031 +v -161228.234375 -30656.542969 -35161.500000 +v -167267.890625 -31941.562500 35180.062500 +v -167857.140625 -32000.000000 35170.519531 +v -168155.640625 -32000.000000 35161.984375 +v -168745.984375 -31941.339844 35137.769531 +v -169312.000000 -31768.183594 35099.464844 +v -169832.109375 -31487.857422 35047.039062 +v -175610.031250 -31488.388672 34870.324219 +v -170286.234375 -31112.003906 34980.371094 +v -175155.890625 -31112.775391 34831.433594 +v -170656.718750 -30656.675781 34899.582031 +v -174784.453125 -30656.404297 34773.156250 +v -170931.000000 -30139.027344 34805.074219 +v -174510.000000 -30138.162109 34695.324219 +v -171099.109375 -29579.603516 34698.355469 +v -174342.046875 -29578.630859 34598.859375 +v -172807.093750 -29328.210938 34598.085938 +v -172925.734375 -29328.863281 34594.574219 +v -174285.718750 -29000.000000 34486.238281 +v -171155.640625 -29000.000000 34582.074219 +v -172747.796875 -25857.431641 33746.253906 +v -171155.640625 -25208.501953 33595.609375 +v -174285.718750 -25208.501953 33500.425781 +v -174341.671875 -24631.750000 33311.722656 +v -171100.281250 -24634.837891 33411.140625 +v -174506.828125 -24078.115234 33117.589844 +v -170936.171875 -24082.181641 33227.179688 +v -170668.062500 -23569.064453 33051.261719 +v -174775.468750 -23565.730469 32925.863281 +v -170303.203125 -23113.746094 32891.851562 +v -175139.640625 -23112.228516 32745.326172 +v -172688.500000 -22484.779297 32575.599609 +v -172925.734375 -22486.123047 32568.992188 +v -176682.109375 -22269.851562 32364.935547 +v -176108.734375 -22449.019531 32455.646484 +v -171155.640625 -22476.404297 32617.777344 +v -169852.937500 -22734.800781 32758.273438 +v -169330.734375 -22448.220703 32659.265625 +v -168756.750000 -22269.339844 32603.035156 +v -168155.640625 -22208.501953 32595.021484 +v -172629.218750 -19242.970703 31099.189453 +v -167857.140625 -22208.501953 32603.351562 +v -167267.828125 -31941.548828 -35180.062500 +v -167857.140625 -32000.000000 -35170.519531 +v -168155.640625 -32000.000000 -35161.984375 +v -172925.734375 -31976.416016 -35017.660156 +v -168745.984375 -31941.341797 -35137.769531 +v -169312.343750 -31768.041016 -35099.429688 +v -169832.484375 -31487.613281 -35047.000000 +v -170285.968750 -31112.279297 -34980.417969 +v -175155.250000 -31112.142578 -34831.355469 +v -170656.750000 -30656.632812 -34899.574219 +v -174784.531250 -30656.519531 -34773.171875 +v -170931.000000 -30139.019531 -34805.074219 +v -174510.031250 -30138.218750 -34695.332031 +v -171099.125000 -29579.601562 -34698.355469 +v -174342.046875 -29578.660156 -34598.867188 +v -172925.734375 -29328.863281 -34594.574219 +v -174285.718750 -29000.000000 -34486.238281 +v -171155.640625 -29000.000000 -34582.074219 +v -172925.734375 -26718.111328 -33984.867188 +v -171194.531250 -26708.775391 -34034.667969 +v -171155.640625 -25208.501953 -33595.609375 +v -166701.984375 -31768.679688 -35174.171875 +v -166181.609375 -31488.492188 -35151.554688 +v -168756.828125 -22269.357422 -32603.039062 +v -169330.828125 -22448.263672 -32659.277344 +v -171283.109375 -21653.140625 -32272.542969 +v -172925.734375 -21662.216797 -32227.705078 +v -171327.406250 -19235.742188 -31133.412109 +v -172925.734375 -19244.675781 -31091.308594 +v -171371.703125 -16910.355469 -29829.642578 +v -172925.734375 -16919.138672 -29790.408203 +v -171416.015625 -14690.782227 -28366.789062 +v -172925.734375 -14699.406250 -28330.531250 +v -169852.562500 -22734.539062 -32758.185547 +v -175588.234375 -22734.925781 -32585.539062 +v -176108.328125 -22449.199219 -32455.722656 +v -170302.859375 -23113.406250 -32891.730469 +v -175139.046875 -23112.830078 -32745.570312 +v -170667.828125 -23568.708984 -33051.140625 +v -174775.296875 -23566.003906 -32925.968750 +v -172925.734375 -24157.962891 -33194.070312 +v -174506.734375 -24078.320312 -33117.664062 +v -174341.656250 -24631.867188 -33311.765625 +v -171100.265625 -24634.767578 -33411.117188 +v -170936.093750 -24081.960938 -33227.105469 +v -171238.812500 -24148.753906 -33241.480469 +v -171155.640625 -24148.314453 -33243.789062 +v -177285.718750 -32000.000000 34882.742188 +v -181578.250000 -32919.640625 34840.429688 +v -181612.687500 -36486.761719 35014.683594 +v -184228.546875 -32940.328125 34749.500000 +v -202975.765625 -36711.167969 34181.859375 +v -207258.000000 -33233.496094 33815.644531 +v -213597.015625 -36895.476562 33675.109375 +v -218593.359375 -33483.070312 33243.703125 +v -218603.625000 -33483.335938 33243.144531 +v -216455.953125 -31767.724609 33163.593750 +v -216976.015625 -31487.150391 33094.050781 +v -177584.203125 -32000.000000 34872.996094 +v -178174.640625 -31941.324219 34846.347656 +v -178740.625000 -31768.158203 34805.640625 +v -179260.718750 -31487.830078 34750.945312 +v -184213.125000 -30656.556641 34455.488281 +v -179714.828125 -31111.984375 34682.234375 +v -180085.234375 -30656.765625 34599.753906 +v -180359.515625 -30139.154297 34503.960938 +v -183938.625000 -30138.308594 34378.636719 +v -180527.671875 -29579.712891 34396.433594 +v -183770.625000 -29578.675781 34282.710938 +v -181543.812500 -29385.193359 34323.984375 +v -183714.281250 -29000.000000 34170.199219 +v -180584.203125 -29000.000000 34279.851562 +v -181509.390625 -25916.123047 33478.316406 +v -180584.203125 -25208.501953 33294.750000 +v -183714.281250 -25208.501953 33185.046875 +v -183770.296875 -24631.515625 32996.324219 +v -180528.875000 -24634.955078 33111.007812 +v -183935.515625 -24077.806641 32801.718750 +v -180364.781250 -24082.273438 32928.269531 +v -180096.609375 -23569.044922 32754.046875 +v -184204.203125 -23565.498047 32609.076172 +v -179731.828125 -23113.812500 32596.828125 +v -181474.953125 -22545.123047 32316.398438 +v -180584.203125 -22537.884766 32344.060547 +v -178185.000000 -22269.275391 32316.060547 +v -178758.515625 -22447.884766 32369.363281 +v -179281.265625 -22734.640625 32465.683594 +v -177584.203125 -22208.501953 32310.841797 +v -180584.203125 -19297.712891 30876.583984 +v -181440.531250 -19304.894531 30851.201172 +v -186110.546875 -22269.880859 32039.656250 +v -184204.187500 -19330.082031 30767.339844 +v -186714.281250 -22208.501953 31992.103516 +v -190012.781250 -19394.308594 30581.085938 +v -187012.781250 -22208.501953 31980.876953 +v -187613.437500 -22269.250000 31982.867188 +v -195538.968750 -22269.910156 31661.246094 +v -190012.781250 -22630.734375 32034.521484 +v -194965.859375 -22449.031250 31758.263672 +v -194445.625000 -22734.750000 31893.664062 +v -177285.718750 -22208.501953 32320.500000 +v -172925.734375 -19244.675781 31091.308594 +v -172925.734375 -16166.790039 29321.173828 +v -172569.937500 -16164.716797 29330.087891 +v -172925.734375 -13285.180664 27271.691406 +v -172510.671875 -13282.733398 27281.359375 +v -172925.734375 -10632.562500 24955.968750 +v -175588.234375 -22734.925781 32585.537109 +v -172925.734375 -25858.423828 33741.117188 +v -176696.515625 -31941.570312 -34894.636719 +v -177285.718750 -32000.000000 -34882.742188 +v -176130.703125 -31768.742188 -34890.957031 +v -175610.312500 -31488.576172 -34870.335938 +v -174285.718750 -25208.501953 -33500.425781 +v -176682.078125 -22269.859375 -32364.939453 +v -180584.203125 -21714.302734 -32005.130859 +v -180584.203125 -19297.712891 -30876.583984 +v -180683.640625 -19298.533203 -30873.650391 +v -180709.421875 -16974.148438 -29581.126953 +v -184204.031250 -19330.082031 -30767.343750 +v -184204.031250 -17006.251953 -29479.998047 +v -190012.781250 -19394.308594 -30581.085938 +v -190012.781250 -17072.375000 -29301.533203 +v -199441.359375 -17221.472656 -28982.308594 +v -199441.359375 -15010.091797 -27562.031250 +v -207258.000000 -15189.139648 -27281.240234 +v -207258.000000 -13102.999023 -25727.669922 +v -208869.921875 -13148.323242 -25669.675781 +v -208869.921875 -11196.157227 -23977.492188 +v -218298.500000 -11529.872070 -23636.574219 +v -218298.500000 -9166.626953 -21206.457031 +v -177285.718750 -22208.501953 -32320.500000 +v -177584.203125 -22208.501953 -32310.841797 +v -178185.125000 -22269.300781 -32316.066406 +v -178758.750000 -22447.980469 -32369.396484 +v -180657.859375 -21714.894531 -32002.880859 +v -184204.031250 -21745.847656 -31891.900391 +v -199441.359375 -19538.259766 -30247.919922 +v -207258.000000 -17394.089844 -28687.046875 +v -208869.921875 -15232.909180 -27219.744141 +v -218298.500000 -13471.234375 -25304.699219 +v -179280.859375 -22734.355469 -32465.587891 +v -184204.015625 -23565.767578 -32609.179688 +v -179731.109375 -23113.070312 -32596.576172 +v -180096.296875 -23568.546875 -32753.875000 +v -183935.437500 -24077.998047 -32801.789062 +v -180364.640625 -24081.908203 -32928.148438 +v -180632.062500 -24209.439453 -32963.312500 +v -180584.203125 -24209.064453 -32964.820312 +v -180528.843750 -24634.763672 -33110.945312 +v -183770.281250 -24631.615234 -32996.359375 +v -180584.203125 -25208.501953 -33294.750000 +v -183714.281250 -25208.501953 -33185.046875 +v -180606.281250 -26768.373047 -33749.445312 +v -183714.281250 -29000.000000 -34170.199219 +v -180584.203125 -29000.000000 -34279.851562 +v -183770.625000 -29578.652344 -34282.707031 +v -180527.656250 -29579.730469 -34396.437500 +v -183938.609375 -30138.265625 -34378.628906 +v -180359.500000 -30139.181641 -34503.968750 +v -184213.156250 -30656.611328 -34455.496094 +v -180085.265625 -30656.720703 -34599.746094 +v -179714.562500 -31112.250000 -34682.281250 +v -184213.625000 -32052.550781 -34652.449219 +v -179261.078125 -31487.591797 -34750.906250 +v -178740.984375 -31768.007812 -34805.601562 +v -178174.640625 -31941.326172 -34846.351562 +v -177584.203125 -32000.000000 -34872.996094 +v -184584.609375 -31112.935547 34512.382812 +v -185038.906250 -31488.599609 34549.527344 +v -185559.468750 -31768.826172 34568.058594 +v -186125.187500 -31941.591797 34569.378906 +v -186714.281250 -32000.000000 34554.910156 +v -187012.781250 -32000.000000 34543.832031 +v -187603.375000 -31941.291016 34514.453125 +v -195553.828125 -31941.605469 34199.687500 +v -196142.859375 -32000.000000 34182.363281 +v -188169.453125 -31768.052734 34470.984375 +v -194988.078125 -31768.839844 34200.921875 +v -188689.828125 -31487.474609 34413.578125 +v -194467.453125 -31488.580078 34184.554688 +v -189143.546875 -31111.832031 34342.429688 +v -194013.046875 -31112.794922 34149.125000 +v -189513.500000 -30657.236328 34257.917969 +v -193641.640625 -30656.476562 34093.492188 +v -189787.984375 -30139.390625 34160.328125 +v -193367.218750 -30138.341797 34017.417969 +v -189956.203125 -29579.875000 34051.542969 +v -193199.187500 -29578.648438 33921.730469 +v -190012.781250 -29000.000000 33934.257812 +v -193142.859375 -29000.000000 33808.945312 +v -190012.781250 -25208.501953 32947.953125 +v -193142.859375 -25208.501953 32821.441406 +v -189957.453125 -24634.994141 32764.531250 +v -193198.921875 -24631.222656 32632.128906 +v -189793.312500 -24082.167969 32582.687500 +v -193364.250000 -24077.417969 32436.417969 +v -189524.953125 -23568.681641 32409.921875 +v -193632.968750 -23565.183594 32242.152344 +v -189160.015625 -23113.414062 32254.798828 +v -193997.187500 -23111.812500 32058.017578 +v -188708.859375 -22733.968750 32126.152344 +v -188187.343750 -22447.996094 32033.037109 +v -185537.359375 -22449.001953 32133.144531 +v -184204.203125 -22569.150391 32229.625000 +v -185016.921875 -22734.839844 32265.416016 +v -184568.453125 -23111.986328 32427.087891 +v -186714.281250 -32000.000000 -34554.910156 +v -186125.187500 -31941.591797 -34569.378906 +v -185559.375000 -31768.785156 -34568.058594 +v -185038.953125 -31488.630859 -34549.527344 +v -184583.843750 -31112.154297 -34512.292969 +v -184567.953125 -23112.482422 -32427.289062 +v -185016.812500 -22734.925781 -32265.455078 +v -185537.000000 -22449.154297 -32133.212891 +v -186110.671875 -22269.855469 -32039.642578 +v -186714.281250 -22208.501953 -31992.103516 +v -187012.781250 -22208.501953 -31980.876953 +v -187613.421875 -22269.246094 -31982.867188 +v -188187.015625 -22447.853516 -32033.001953 +v -196441.359375 -32000.000000 34169.773438 +v -197032.109375 -31941.257812 34137.277344 +v -204982.515625 -31941.628906 33779.414062 +v -197598.203125 -31767.976562 34090.582031 +v -204416.781250 -31768.894531 33783.445312 +v -198118.421875 -31487.455078 34029.968750 +v -203896.125000 -31488.644531 33769.347656 +v -198572.359375 -31111.591797 33955.703125 +v -203441.734375 -31112.908203 33735.617188 +v -198942.125000 -30657.144531 33868.417969 +v -203070.125000 -30656.339844 33681.027344 +v -199216.515625 -30139.513672 33768.476562 +v -202795.687500 -30138.083984 33605.363281 +v -199384.750000 -29579.992188 33657.812500 +v -202627.718750 -29578.451172 33509.476562 +v -199441.359375 -29000.000000 33539.246094 +v -202571.421875 -29000.000000 33395.890625 +v -199441.359375 -25208.501953 32547.812500 +v -202571.421875 -25208.501953 32401.642578 +v -199386.125000 -24635.529297 32364.261719 +v -202627.562500 -24630.886719 32210.927734 +v -199222.203125 -24082.951172 32182.943359 +v -202793.000000 -24076.980469 32013.201172 +v -198954.140625 -23569.630859 32011.429688 +v -203061.781250 -23564.830078 31816.333984 +v -199441.359375 -22767.513672 31685.519531 +v -203425.937500 -23111.630859 31629.027344 +v -203874.156250 -22734.773438 31460.994141 +v -204394.062500 -22449.187500 31321.451172 +v -197041.703125 -22269.187500 31595.109375 +v -199441.359375 -19538.259766 30247.919922 +v -196441.359375 -22208.501953 31596.857422 +v -196142.859375 -22208.501953 31609.939453 +v -198589.015625 -23113.857422 31858.039062 +v -198137.921875 -22734.298828 31731.898438 +v -197615.250000 -22447.710938 31641.701172 +v -190012.781250 -16321.192383 28840.000000 +v -184204.187500 -16254.458008 29015.648438 +v -181406.109375 -16228.134766 29095.703125 +v -180584.203125 -16221.041016 29118.671875 +v -196142.859375 -22208.501953 -31609.939453 +v -199441.359375 -21946.705078 -31353.490234 +v -207258.000000 -19704.140625 -29939.765625 +v -208869.921875 -17436.216797 -28622.380859 +v -218298.500000 -15544.285156 -26832.728516 +v -196441.359375 -22208.501953 -31596.857422 +v -197041.609375 -22269.167969 -31595.105469 +v -197615.562500 -22447.845703 -31641.736328 +v -198138.250000 -22734.533203 -31731.974609 +v -203873.718750 -22735.085938 -31461.136719 +v -204393.812500 -22449.296875 -31321.507812 +v -203425.312500 -23112.269531 -31629.300781 +v -198589.296875 -23114.132812 -31858.123047 +v -203061.406250 -23565.402344 -31816.564453 +v -198954.000000 -23569.410156 -32011.357422 +v -202792.828125 -24077.400391 -32013.357422 +v -199222.187500 -24082.900391 -32182.935547 +v -199441.359375 -24433.060547 -32293.640625 +v -199386.125000 -24635.486328 -32364.253906 +v -202627.515625 -24631.113281 -32211.007812 +v -202571.421875 -25208.501953 -32401.642578 +v -199441.359375 -25208.501953 -32547.812500 +v -201071.546875 -27010.480469 -32995.488281 +v -199441.359375 -29000.000000 -33539.246094 +v -202571.421875 -29000.000000 -33395.890625 +v -202627.734375 -29578.474609 -33509.480469 +v -199384.781250 -29579.845703 -33657.785156 +v -202795.703125 -30138.128906 -33605.371094 +v -199216.625000 -30139.238281 -33768.421875 +v -203070.312500 -30656.640625 -33681.066406 +v -198942.203125 -30657.025391 -33868.402344 +v -203440.890625 -31112.058594 -33735.523438 +v -198571.843750 -31112.111328 -33955.804688 +v -203896.015625 -31488.572266 -33769.339844 +v -198118.062500 -31487.703125 -34030.023438 +v -204416.687500 -31768.859375 -33783.445312 +v -197598.296875 -31767.941406 -34090.566406 +v -204982.484375 -31941.623047 -33779.414062 +v -197032.015625 -31941.277344 -34137.285156 +v -196441.359375 -32000.000000 -34169.773438 +v -205571.421875 -32000.000000 33758.839844 +v -205869.921875 -32000.000000 33744.511719 +v -206460.890625 -31941.216797 33708.367188 +v -213845.218750 -31768.837891 33307.363281 +v -207027.078125 -31767.851562 33657.785156 +v -207546.984375 -31487.466797 33593.253906 +v -213324.421875 -31488.460938 33295.683594 +v -207999.890625 -31112.632812 33515.300781 +v -212870.046875 -31112.656250 33263.582031 +v -208370.796875 -30657.000000 33424.117188 +v -212498.421875 -30655.925781 33209.796875 +v -208645.109375 -30139.457031 33320.914062 +v -212224.078125 -30137.666016 33134.132812 +v -208813.328125 -29580.011719 33207.531250 +v -212056.234375 -29578.146484 33037.449219 +v -208869.921875 -29000.000000 33086.902344 +v -212000.000000 -29000.000000 32922.320312 +v -208869.921875 -25208.501953 32084.933594 +v -212000.000000 -25208.501953 31915.363281 +v -208814.750000 -24635.820312 31900.337891 +v -212056.187500 -24630.595703 31722.171875 +v -208651.000000 -24083.500000 31718.832031 +v -212221.687500 -24076.685547 31521.240234 +v -208383.015625 -23570.097656 31547.937500 +v -212490.421875 -23564.728516 31320.484375 +v -208869.921875 -22962.009766 31292.023438 +v -212854.375000 -23111.771484 31128.644531 +v -213302.375000 -22735.027344 30955.482422 +v -213822.203125 -22449.369141 30810.337891 +v -207044.062500 -22447.810547 31185.345703 +v -206470.000000 -22269.128906 31142.619141 +v -208017.828125 -23114.103516 31396.035156 +v -207566.875000 -22734.560547 31272.347656 +v -205869.921875 -22208.501953 31148.722656 +v -208869.921875 -19744.544922 29872.277344 +v -214395.265625 -22270.085938 30703.027344 +v -207258.000000 -19704.140625 29939.765625 +v -205571.421875 -22208.501953 31164.013672 +v -204967.203125 -22269.982422 31219.921875 +v -199441.359375 -16471.955078 28525.800781 +v -190012.781250 -13444.048828 26824.150391 +v -184204.171875 -13374.966797 26987.521484 +v -181371.687500 -13347.544922 27062.880859 +v -180584.203125 -13340.568359 27083.343750 +v -205869.921875 -32000.000000 -33744.511719 +v -205571.421875 -32000.000000 -33758.839844 +v -204967.390625 -22269.939453 -31219.894531 +v -205571.421875 -22208.501953 -31164.013672 +v -207258.000000 -22105.583984 -31034.074219 +v -205869.921875 -22208.501953 -31148.722656 +v -206470.156250 -22269.162109 -31142.623047 +v -207044.187500 -22447.869141 -31185.359375 +v -208869.921875 -22144.199219 -30964.117188 +v -208869.921875 -19744.544922 -29872.277344 +v -214395.406250 -22270.056641 -30703.007812 +v -218298.500000 -20030.955078 -29447.546875 +v -215000.000000 -22208.501953 -30641.408203 +v -215298.500000 -22208.501953 -30623.431641 +v -207566.234375 -22734.125000 -31272.216797 +v -213302.296875 -22735.083984 -30955.509766 +v -213822.203125 -22449.369141 -30810.337891 +v -212854.046875 -23112.099609 -31128.789062 +v -208017.437500 -23113.703125 -31395.904297 +v -212490.218750 -23565.037109 -31320.611328 +v -208382.671875 -23569.576172 -31547.761719 +v -212221.593750 -24076.910156 -31521.326172 +v -208650.890625 -24083.244141 -31718.753906 +v -212056.171875 -24630.720703 -31722.216797 +v -208869.921875 -24621.478516 -31892.591797 +v -212000.000000 -25208.501953 -31915.363281 +v -208869.921875 -25208.501953 -32084.933594 +v -210347.031250 -27196.330078 -32583.414062 +v -208869.921875 -29000.000000 -33086.902344 +v -212000.000000 -29000.000000 -32922.320312 +v -212056.250000 -29578.185547 -33037.457031 +v -208813.343750 -29579.917969 -33207.511719 +v -212224.109375 -30137.738281 -33134.144531 +v -208645.187500 -30139.275391 -33320.878906 +v -212498.812500 -30656.511719 -33209.878906 +v -208371.031250 -30656.642578 -33424.042969 +v -212869.453125 -31112.058594 -33263.515625 +v -208000.578125 -31111.941406 -33515.160156 +v -213324.406250 -31488.451172 -33295.679688 +v -207547.218750 -31487.300781 -33593.214844 +v -213845.375000 -31768.902344 -33307.367188 +v -214411.187500 -31941.650391 -33300.187500 +v -208814.750000 -24635.789062 -31900.328125 +v -207027.250000 -31767.781250 -33657.765625 +v -206460.781250 -31941.240234 -33708.375000 +v -214411.218750 -31941.656250 33300.187500 +v -215000.000000 -32000.000000 33275.835938 +v -215298.500000 -32000.000000 33259.453125 +v -215889.750000 -31941.158203 33218.925781 +v -217429.906250 -31111.187500 33010.878906 +v -217799.625000 -30656.619141 32915.105469 +v -218603.625000 -29993.816406 32749.287109 +v -218073.781250 -30139.212891 32807.484375 +v -218583.093750 -29993.228516 32750.386719 +v -218241.906250 -29579.937500 32690.261719 +v -218298.500000 -29000.000000 32566.521484 +v -218603.625000 -26568.863281 31941.351562 +v -218298.500000 -25208.501953 31546.791016 +v -218243.484375 -24636.617188 31360.169922 +v -218572.828125 -26567.908203 31942.960938 +v -218603.625000 -23240.763672 30831.750000 +v -218080.015625 -24084.603516 31177.552734 +v -217812.156250 -23570.970703 31006.492188 +v -217446.968750 -23114.689453 30855.603516 +v -218298.500000 -23230.613281 30847.107422 +v -218562.562500 -23239.392578 30833.820312 +v -216995.625000 -22734.689453 30734.070312 +v -216472.421875 -22447.724609 30650.445312 +v -215898.500000 -22269.117188 30612.158203 +v -218603.625000 -20041.800781 29432.886719 +v -218552.296875 -20039.968750 29435.357422 +v -218603.625000 -17004.255859 27757.169922 +v -218542.031250 -17001.923828 27759.966797 +v -218298.500000 -16992.750000 27770.996094 +v -218298.500000 -14148.291992 25829.867188 +v -208869.921875 -13829.148438 26202.417969 +v -208869.921875 -11196.157227 23977.492188 +v -207258.000000 -11149.376953 24031.662109 +v -207258.000000 -8771.208984 21560.925781 +v -199441.359375 -8573.445312 21782.841797 +v -199441.359375 -6462.559082 19071.191406 +v -190012.781250 -6289.564941 19281.250000 +v -190012.781250 -4462.344727 16352.998047 +v -184204.156250 -6214.641602 19398.683594 +v -218298.500000 -20030.955078 29447.546875 +v -215298.500000 -22208.501953 30623.431641 +v -215000.000000 -22208.501953 30641.408203 +v -208869.921875 -16689.435547 28171.544922 +v -207258.000000 -16646.751953 28235.191406 +v -207258.000000 -13784.332031 26261.617188 +v -199441.359375 -13601.187500 26531.914062 +v -199441.359375 -10958.548828 24279.007812 +v -190012.781250 -10795.541016 24546.429688 +v -190012.781250 -8405.139648 22022.769531 +v -184204.171875 -10724.295898 24695.929688 +v -184204.156250 -8331.943359 22156.898438 +v -181337.265625 -10695.823242 24765.710938 +v -181302.843750 -8302.479492 22220.242188 +v -180584.203125 -10688.995117 24783.615234 +v -215298.500000 -32000.000000 -33259.453125 +v -215000.000000 -32000.000000 -33275.835938 +v -215898.578125 -22269.130859 -30612.158203 +v -218298.500000 -22417.328125 -30523.863281 +v -218326.390625 -20031.941406 -29446.208984 +v -218318.671875 -22418.007812 -30522.861328 +v -216995.734375 -22734.755859 -30734.089844 +v -217446.625000 -23114.332031 -30855.486328 +v -216472.593750 -22447.796875 -30650.464844 +v -218603.625000 -24890.689453 -31423.484375 +v -218243.453125 -24636.480469 -31360.126953 +v -218310.968750 -24881.296875 -31438.496094 +v -218298.500000 -24880.898438 -31439.136719 +v -216456.140625 -31767.642578 -33163.566406 +v -215889.640625 -31941.181641 -33218.933594 +v -60000.000000 -15976.228516 30316.914062 +v -47887.308594 -13094.315430 28197.832031 +v -47887.308594 -15976.228516 30316.914062 +v -37705.492188 -13094.315430 28197.832031 +v 186000.000000 -23363.195312 34818.484375 +v 175938.062500 -18328.271484 32139.341797 +v 186000.000000 -17960.400391 32084.068359 +v 175938.062500 -15717.221680 30309.539062 +v 175938.062500 -13272.677734 28190.970703 +v 186000.000000 -13092.070312 28142.488281 +v 175938.062500 -11022.391602 25797.191406 +v 165930.875000 -13409.897461 28197.832031 +v 165930.875000 -11086.072266 25803.468750 +v 165916.515625 -11086.133789 25803.468750 +v 165917.156250 -8988.688477 23150.568359 +v 186000.000000 -10925.136719 25752.824219 +v 186000.000000 -8969.379883 23105.130859 +v 195904.484375 -8935.475586 22998.482422 +v 196364.968750 -8933.802734 22991.316406 +v 205790.625000 -8901.565430 22790.066406 +v 205790.625000 -10687.386719 25401.654297 +v 215576.312500 -8880.190430 22446.460938 +v 215576.312500 -10572.496094 25018.673828 +v 225234.750000 -8883.722656 21933.869141 +v 225234.750000 -10478.334961 24447.343750 +v 234739.109375 -8924.537109 21218.494141 +v 234739.109375 -10418.305664 23649.992188 +v 244062.593750 -9015.005859 20266.541016 +v 244062.593750 -10405.815430 22588.949219 +v 253187.203125 -9164.147461 19055.472656 +v 253187.203125 -10450.761719 21239.101562 +v 262130.109375 -9367.565430 17607.826172 +v 262130.109375 -10549.033203 19625.564453 +v 270917.250000 -9617.502930 15957.395508 +v 270917.250000 -10693.010742 17786.005859 +v 279574.593750 -9906.208984 14137.978516 +v 279574.593750 -10875.076172 15758.095703 +v 288128.093750 -10225.929688 12183.373047 +v 288128.093750 -11087.613281 13579.504883 +v 296603.718750 -10568.910156 10127.375000 +v 296603.718750 -11323.002930 11287.904297 +v 313425.187500 -10817.288086 5118.602539 +v 313425.187500 -11831.871094 6516.352051 +v 296603.718750 -12158.520508 12335.334961 +v 296603.718750 -13066.164062 13262.342773 +v 288128.093750 -13079.481445 15954.781250 +v 288128.093750 -14187.268555 16917.980469 +v 279574.593750 -14360.291992 19632.169922 +v 279574.593750 -15672.066406 20565.232422 +v 270917.250000 -16017.990234 23211.773438 +v 270917.250000 -17532.929688 24047.140625 +v 262130.109375 -18062.833984 26534.271484 +v 262130.109375 -19775.458984 27205.437500 +v 253187.203125 -20498.304688 29442.164062 +v 253187.203125 -22398.505859 29886.152344 +v 244062.593750 -23321.136719 31785.560547 +v 249929.093750 -24698.539062 30768.634766 +v 243181.109375 -25499.603516 32106.402344 +v 236324.343750 -26324.724609 33220.753906 +v 234739.109375 -24289.730469 33278.582031 +v 229367.156250 -27165.470703 34128.265625 +v 225234.750000 -25286.201172 34400.558594 +v 222320.250000 -28012.074219 34850.164062 +v 215576.312500 -26287.570312 35204.496094 +v 215194.312500 -28854.761719 35407.691406 +v 215576.312500 -12447.532227 27340.214844 +v 225234.750000 -12245.126953 26715.869141 +v 234739.109375 -12073.368164 25844.529297 +v 244062.593750 -11946.799805 24685.031250 +v 253187.203125 -11876.300781 23209.927734 +v 262130.109375 -11858.072266 21446.666016 +v 270917.250000 -11884.647461 19436.410156 +v 279574.593750 -11948.558594 17220.326172 +v 288128.093750 -12042.338867 14839.579102 +v 215576.312500 -14484.431641 29394.847656 +v 215576.312500 -16660.072266 31169.429688 +v 215576.312500 -18951.330078 32650.826172 +v 215576.312500 -21335.080078 33825.894531 +v 215576.312500 -23788.201172 34681.500000 +v 256573.609375 -23922.000000 29218.529297 +v 262130.109375 -21520.371094 27615.695312 +v 270917.250000 -19091.957031 24655.396484 +v 279574.593750 -17036.794922 21305.353516 +v 288128.093750 -15353.923828 17722.044922 +v 296603.718750 -14035.630859 14062.997070 +v 313425.187500 -13076.048828 7656.167969 +v 263125.000000 -23167.537109 27477.306641 +v 269593.593750 -22432.701172 25566.201172 +v 270917.250000 -20680.375000 25027.199219 +v 275989.781250 -21715.035156 23506.447266 +v 279574.593750 -19872.160156 22173.669922 +v 288128.093750 -19089.371094 19108.113281 +v 296603.718750 -18325.652344 15883.535156 +v 296603.718750 -17211.931641 15647.569336 +v 313425.187500 -16035.080078 9033.126953 +v 313425.187500 -14496.729492 8504.218750 +v 296603.718750 -15056.617188 14731.373047 +v 296603.718750 -16118.818359 15261.539062 +v 288128.093750 -17816.750000 18824.242188 +v 296603.718750 -9901.515625 8866.663086 +v 313425.187500 -10062.413086 3522.562744 +v 296603.718750 -9325.087891 7520.078125 +v 296603.718750 -8843.894531 6101.934082 +v 288128.093750 -8804.643555 9046.757812 +v 288128.093750 -8254.795898 7340.711426 +v 279574.593750 -8308.131836 10498.150391 +v 279574.593750 -7689.889648 8518.398438 +v 270917.250000 -7843.531250 11849.157227 +v 270917.250000 -7157.240234 9614.630859 +v 262130.109375 -7418.817383 13074.683594 +v 262130.109375 -6664.912109 10609.046875 +v 253187.203125 -7041.969238 14149.633789 +v 253187.203125 -6220.969238 11481.281250 +v 244062.593750 -6720.964355 15048.911133 +v 244062.593750 -5833.476074 12210.971680 +v 234739.109375 -6460.670898 15755.785156 +v 234739.109375 -5507.483398 12784.542969 +v 225234.750000 -6253.524902 16286.985352 +v 225234.750000 -5235.988770 13215.569336 +v 215576.312500 -6088.852539 16667.609375 +v 215576.312500 -5008.977051 13524.415039 +v 205790.625000 -5955.980957 16922.753906 +v 205790.625000 -4816.432129 13731.443359 +v 198733.718750 -4694.387695 13828.309570 +v 199522.281250 -3774.848877 10477.953125 +v 195904.484375 -3699.732666 10506.518555 +v 195904.484375 -3009.023926 7058.514160 +v 186000.000000 -3505.587402 10555.239258 +v 186000.000000 -2784.793945 7091.246094 +v 175938.062500 -3317.443604 10573.423828 +v 175938.062500 -2568.924316 7103.462891 +v 165930.875000 -3129.330566 10575.997070 +v 165930.875000 -2356.350098 7105.191895 +v 165919.718750 -3129.116699 10575.997070 +v 165920.359375 -2356.124512 7105.191895 +v 313425.187500 -9591.617188 1794.329712 +v 296603.718750 -8462.203125 4626.542480 +v 288128.093750 -7818.646484 5565.794434 +v 279574.593750 -7199.488770 6458.727539 +v 270917.250000 -6612.862305 7289.901367 +v 262130.109375 -6066.900879 8043.876465 +v 253187.203125 -5569.737793 8705.212891 +v 244062.593750 -5129.504883 9258.470703 +v 234739.109375 -4751.397949 9693.357422 +v 225234.750000 -4428.861328 10020.166016 +v 215576.312500 -4152.400879 10254.335938 +v 205790.625000 -3912.522461 10411.306641 +v 200310.328125 -3115.095947 7034.535645 +v 195904.484375 -2586.820068 3545.507812 +v 186000.000000 -2344.200684 3561.949219 +v 175938.062500 -2111.383301 3568.085693 +v 165930.875000 -1883.856689 3568.954102 +v 165921.000000 -1883.630981 3568.954102 +v 313425.187500 -9429.269531 0.000000 +v 296603.718750 -8014.400879 1561.263428 +v 296603.718750 -8184.282715 3108.214844 +v 313425.187500 -9591.617188 -1794.329712 +v 296603.718750 -8014.400879 -1561.263428 +v 291539.218750 -7607.314453 1999.681030 +v 288128.093750 -7501.073242 3739.225586 +v 279779.968750 -6937.573242 4881.068359 +v 273802.406250 -6589.707031 5854.152832 +v 267787.312500 -6225.385254 6559.673340 +v 261747.953125 -5849.510254 7021.555176 +v 255694.546875 -5468.826660 7258.192383 +v 313425.187500 -10062.413086 -3522.562744 +v 296603.718750 -8462.203125 -4626.542480 +v 296603.718750 -8184.282715 -3108.214844 +v 313425.187500 -10817.288086 -5118.602539 +v 296603.718750 -9325.087891 -7520.078125 +v 296603.718750 -8843.894531 -6101.934082 +v 288128.093750 -7818.646484 -5565.794434 +v 288128.093750 -7501.073242 -3739.225586 +v 313425.187500 -11831.871094 -6516.352051 +v 296603.718750 -10568.910156 -10127.375000 +v 296603.718750 -9901.515625 -8866.663086 +v 288128.093750 -8804.643555 -9046.757812 +v 288128.093750 -8254.795898 -7340.711426 +v 279574.593750 -7689.889648 -8518.398438 +v 279574.593750 -7199.488770 -6458.727539 +v 270917.250000 -6612.862305 -7289.901367 +v 262130.109375 -6066.900879 -8043.876465 +v 253187.203125 -5569.737793 -8705.212891 +v 244062.593750 -5129.504883 -9258.470703 +v 234739.109375 -4751.397949 -9693.357422 +v 234739.109375 -4200.870117 -6512.214844 +v 225234.750000 -3841.167969 -6731.771973 +v 215576.312500 -3528.702148 -6889.092285 +v 205790.625000 -3254.358643 -6994.548828 +v 205790.625000 -2852.048584 -3513.377930 +v 195904.484375 -2586.820068 -3545.507812 +v 195904.484375 -2443.728516 0.000000 +v 201097.828125 -2722.637451 3530.944336 +v 313425.187500 -13076.048828 -7656.167969 +v 296603.718750 -11942.476562 -12084.536133 +v 296603.718750 -11323.002930 -11287.904297 +v 288128.093750 -10225.929688 -12183.373047 +v 288128.093750 -9463.314453 -10666.717773 +v 279574.593750 -9048.733398 -12378.002930 +v 279574.593750 -8308.131836 -10498.150391 +v 270917.250000 -7843.531250 -11849.157227 +v 270917.250000 -7157.240234 -9614.630859 +v 262130.109375 -6664.912109 -10609.046875 +v 313425.187500 -14496.729492 -8504.218750 +v 296603.718750 -14035.630859 -14062.997070 +v 296603.718750 -13303.137695 -13474.583008 +v 296603.718750 -12603.970703 -12814.262695 +v 288128.093750 -12551.343750 -15415.734375 +v 288128.093750 -11795.470703 -14537.863281 +v 279574.593750 -11670.983398 -16870.205078 +v 279574.593750 -10875.076172 -15758.095703 +v 270917.250000 -10693.010742 -17786.005859 +v 270917.250000 -9617.502930 -15957.395508 +v 262130.109375 -9367.565430 -17607.826172 +v 262130.109375 -8321.930664 -15415.904297 +v 253187.203125 -8025.456055 -16683.339844 +v 253187.203125 -7041.969238 -14149.633789 +v 244062.593750 -6720.964355 -15048.911133 +v 244062.593750 -5833.476074 -12210.971680 +v 234739.109375 -5507.483398 -12784.542969 +v 225234.750000 -4428.861328 -10020.166016 +v 313425.187500 -16035.080078 -9033.126953 +v 296603.718750 -16389.601562 -15371.791016 +v 296603.718750 -15583.209961 -15014.102539 +v 296603.718750 -14797.104492 -14577.003906 +v 288128.093750 -15057.384766 -17536.337891 +v 288128.093750 -14187.268555 -16917.980469 +v 279574.593750 -14360.291992 -19632.169922 +v 279574.593750 -13419.175781 -18810.734375 +v 270917.250000 -13517.130859 -21231.488281 +v 270917.250000 -12519.960938 -20191.041016 +v 262130.109375 -12555.977539 -22279.345703 +v 262130.109375 -11519.587891 -21010.617188 +v 253187.203125 -11507.692383 -22738.027344 +v 253187.203125 -10450.761719 -21239.101562 +v 244062.593750 -10405.815430 -22588.949219 +v 244062.593750 -9015.005859 -20266.541016 +v 234739.109375 -8924.537109 -21218.494141 +v 234739.109375 -7602.506836 -18577.097656 +v 225234.750000 -7472.444336 -19203.417969 +v 225234.750000 -6253.524902 -16286.985352 +v 215576.312500 -6088.852539 -16667.609375 +v 215576.312500 -5008.977051 -13524.415039 +v 205790.625000 -4816.432129 -13731.443359 +v 205790.625000 -3912.522461 -10411.306641 +v 195904.484375 -3699.732666 -10506.518555 +v 195904.484375 -3009.023926 -7058.514160 +v 186000.000000 -2784.793945 -7091.246094 +v 186000.000000 -2344.200684 -3561.949219 +v 175938.062500 -2111.383301 -3568.085693 +v 175938.062500 -1956.315063 0.000000 +v 165930.875000 -1723.720947 0.000000 +v 313425.187500 -17632.265625 -9215.513672 +v 296603.718750 -18045.853516 -15838.936523 +v 296603.718750 -17211.931641 -15647.569336 +v 288128.093750 -16877.093750 -18492.476562 +v 288128.093750 -15955.649414 -18062.173828 +v 279574.593750 -16348.639648 -20959.927734 +v 279574.593750 -15338.641602 -20349.732422 +v 270917.250000 -15647.866211 -22968.539062 +v 270917.250000 -14561.833008 -22158.634766 +v 262130.109375 -14799.019531 -24450.443359 +v 262130.109375 -13651.391602 -23427.404297 +v 253187.203125 -13829.218750 -25353.515625 +v 253187.203125 -12636.317383 -24111.068359 +v 244062.593750 -12768.365234 -25643.441406 +v 244062.593750 -11548.339844 -24183.138672 +v 234739.109375 -11645.411133 -25319.064453 +v 234739.109375 -10418.305664 -23649.992188 +v 225234.750000 -10478.334961 -24447.343750 +v 225234.750000 -8883.722656 -21933.869141 +v 215576.312500 -8880.190430 -22446.460938 +v 215576.312500 -7382.449707 -19652.199219 +v 205790.625000 -7321.061035 -19953.029297 +v 205790.625000 -5955.980957 -16922.753906 +v 195904.484375 -5844.236816 -17077.513672 +v 195904.484375 -4648.339355 -13857.018555 +v 186000.000000 -4495.511719 -13921.276367 +v 186000.000000 -3505.587402 -10555.239258 +v 175938.062500 -3317.443604 -10573.423828 +v 175938.062500 -2568.924316 -7103.462891 +v 165930.875000 -2356.350098 -7105.191895 +v 165930.875000 -1883.856689 -3568.954102 +v 165922.281250 -1883.660278 -3568.954102 +v 165921.640625 -1723.505615 0.000000 +v 313425.187500 -19229.449219 -9033.126953 +v 296603.718750 -20573.699219 -15883.535156 +v 296603.718750 -19731.083984 -15958.462891 +v 296603.718750 -18887.019531 -15943.390625 +v 288128.093750 -19730.832031 -19180.119141 +v 288128.093750 -18769.652344 -19054.458984 +v 279574.593750 -19512.671875 -22111.408203 +v 279574.593750 -18441.238281 -21844.257812 +v 270917.250000 -19091.957031 -24655.396484 +v 270917.250000 -17919.126953 -24220.861328 +v 262130.109375 -18487.082031 -26725.958984 +v 262130.109375 -17223.675781 -26104.068359 +v 253187.203125 -17719.421875 -28250.244141 +v 253187.203125 -16378.187500 -27427.808594 +v 244062.593750 -16813.267578 -29170.978516 +v 244062.593750 -15408.846680 -28142.365234 +v 234739.109375 -15791.704102 -29464.261719 +v 234739.109375 -14340.720703 -28231.439453 +v 225234.750000 -14665.545898 -29183.251953 +v 225234.750000 -13187.080078 -27753.128906 +v 215576.312500 -13447.194336 -28401.714844 +v 215576.312500 -11962.695312 -26784.339844 +v 313425.187500 -20767.800781 -8504.218750 +v 296603.718750 -22237.197266 -15472.942383 +v 296603.718750 -21410.519531 -15720.861328 +v 288128.093750 -21658.162109 -19108.113281 +v 288128.093750 -20695.324219 -19198.251953 +v 279574.593750 -21677.875000 -22278.269531 +v 279574.593750 -20593.412109 -22257.228516 +v 270917.250000 -21481.011719 -25121.511719 +v 270917.250000 -20281.318359 -24956.927734 +v 262130.109375 -21081.998047 -27538.154297 +v 262130.109375 -19775.458984 -27205.437500 +v 253187.203125 -20498.304688 -29442.164062 +v 253187.203125 -19095.265625 -28923.265625 +v 244062.593750 -19750.386719 -30761.476562 +v 244062.593750 -18263.121094 -30045.683594 +v 234739.109375 -18857.275391 -31456.982422 +v 234739.109375 -17300.093750 -30541.189453 +v 225234.750000 -17824.701172 -31570.875000 +v 225234.750000 -16214.483398 -30457.640625 +v 215576.312500 -16660.072266 -31169.429688 +v 215576.312500 -15016.238281 -29865.259766 +v 313425.187500 -22188.480469 -7656.167969 +v 296603.718750 -23842.734375 -14731.373047 +v 296603.718750 -23049.382812 -15142.279297 +v 288128.093750 -23558.998047 -18614.164062 +v 288128.093750 -22614.375000 -18912.414062 +v 279574.593750 -23835.632812 -21946.574219 +v 279574.593750 -22760.478516 -22173.669922 +v 270917.250000 -23886.599609 -25027.199219 +v 270917.250000 -22684.839844 -25145.261719 +v 262130.109375 -23722.320312 -27745.968750 +v 262130.109375 -22399.888672 -27719.763672 +v 253187.203125 -23356.298828 -29998.775391 +v 253187.203125 -21921.121094 -29802.236328 +v 244062.593750 -22805.091797 -31696.310547 +v 244062.593750 -21267.048828 -31313.355469 +v 234739.109375 -22083.582031 -32784.199219 +v 234739.109375 -20454.642578 -32206.398438 +v 225234.750000 -21192.210938 -33292.226562 +v 225234.750000 -19487.007812 -32517.542969 +v 215576.312500 -20133.087891 -33277.472656 +v 215576.312500 -18368.939453 -32308.681641 +v 313425.187500 -23432.658203 -6516.352051 +v 296603.718750 -26066.296875 -13042.204102 +v 296603.718750 -25355.537109 -13678.833984 +v 296603.718750 -24612.900391 -14242.723633 +v 288128.093750 -26273.658203 -17134.193359 +v 288128.093750 -25393.607422 -17722.044922 +v 279574.593750 -26960.570312 -20565.232422 +v 279574.593750 -25941.263672 -21138.863281 +v 270917.250000 -27417.486328 -23859.224609 +v 270917.250000 -26259.123047 -24380.240234 +v 262130.109375 -27648.750000 -26901.824219 +v 262130.109375 -26353.560547 -27332.865234 +v 253187.203125 -27661.832031 -29580.068359 +v 253187.203125 -26234.070312 -29886.152344 +v 244062.593750 -27467.320312 -31785.560547 +v 244062.593750 -25913.244141 -31935.503906 +v 234739.109375 -27073.728516 -33435.570312 +v 234739.109375 -25401.736328 -33403.992188 +v 225234.750000 -26473.275391 -34530.195312 +v 225234.750000 -24694.535156 -34303.968750 +v 215576.312500 -25659.656250 -35105.648438 +v 215576.312500 -23788.201172 -34681.500000 +v 313425.187500 -24447.242188 -5118.602539 +v 296603.718750 -27374.794922 -11560.727539 +v 296603.718750 -26740.830078 -12335.334961 +v 288128.093750 -27934.419922 -15689.952148 +v 288128.093750 -27122.251953 -16455.826172 +v 279574.593750 -28904.238281 -19095.873047 +v 279574.593750 -27950.089844 -19883.070312 +v 270917.250000 -29647.416016 -22441.824219 +v 270917.250000 -28548.984375 -23211.773438 +v 262130.109375 -30164.210938 -25612.503906 +v 262130.109375 -28921.236328 -26326.919922 +v 253187.203125 -30458.019531 -28491.417969 +v 253187.203125 -29072.287109 -29113.587891 +v 244062.593750 -30535.388672 -30963.896484 +v 244062.593750 -29010.708984 -31460.023438 +v 234739.109375 -30400.492188 -32937.753906 +v 234739.109375 -28742.851562 -33278.582031 +v 225234.750000 -30039.945312 -34400.558594 +v 225234.750000 -28258.142578 -34562.839844 +v 215576.312500 -29441.587891 -35370.566406 +v 215576.312500 -27547.371094 -35337.160156 +v 313425.187500 -25202.117188 -3522.562744 +v 296603.718750 -28997.835938 -8866.663086 +v 296603.718750 -28505.583984 -9821.030273 +v 296603.718750 -27963.964844 -10721.057617 +v 288128.093750 -30102.839844 -12897.580078 +v 288128.093750 -29429.607422 -13907.714844 +v 279574.593750 -31498.601562 -16138.960938 +v 279574.593750 -30684.078125 -17220.326172 +v 270917.250000 -32682.326172 -19436.410156 +v 270917.250000 -31720.287109 -20550.203125 +v 262130.109375 -33647.957031 -22675.654297 +v 262130.109375 -32534.382812 -23782.523438 +v 253187.203125 -34392.722656 -25737.830078 +v 253187.203125 -33125.656250 -26798.833984 +v 244062.593750 -34917.015625 -28502.029297 +v 244062.593750 -33496.558594 -29479.894531 +v 234739.109375 -35218.425781 -30864.617188 +v 234739.109375 -33646.890625 -31725.531250 +v 225234.750000 -35275.046875 -32795.148438 +v 225234.750000 -33557.589844 -33511.296875 +v 215576.312500 -35065.707031 -34294.453125 +v 215576.312500 -33210.511719 -34843.941406 +v 313425.187500 -25672.912109 -1794.329712 +v 296603.718750 -30160.375000 -5737.894043 +v 296603.718750 -29827.031250 -6819.056641 +v 296603.718750 -29438.917969 -7863.992188 +v 288128.093750 -31788.232422 -9460.491211 +v 288128.093750 -31284.218750 -10666.717773 +v 279574.593750 -33583.902344 -12378.002930 +v 279574.593750 -32951.453125 -13710.315430 +v 270917.250000 -35199.265625 -15474.696289 +v 270917.250000 -34426.792969 -16892.841797 +v 262130.109375 -36621.113281 -18640.023438 +v 262130.109375 -35698.035156 -20099.904297 +v 253187.203125 -37837.929688 -21752.441406 +v 253187.203125 -36756.277344 -23209.927734 +v 244062.593750 -38841.660156 -24685.031250 +v 244062.593750 -37597.582031 -26099.591797 +v 234739.109375 -39623.039062 -27325.535156 +v 234739.109375 -38215.109375 -28659.378906 +v 225234.750000 -40151.664062 -29625.619141 +v 225234.750000 -38581.277344 -30846.892578 +v 215576.312500 -40397.171875 -31567.779297 +v 215576.312500 -38668.792969 -32650.826172 +v 313425.187500 -25835.259766 0.000000 +v 296603.718750 -30813.781250 -2337.422607 +v 296603.718750 -30655.550781 -3491.039307 +v 296603.718750 -30437.148438 -4626.542480 +v 288128.093750 -32928.886719 -5565.794434 +v 288128.093750 -32612.623047 -6902.766113 +v 279574.593750 -35077.546875 -8010.192383 +v 279574.593750 -34649.265625 -9519.512695 +v 270917.250000 -37083.945312 -10744.579102 +v 270917.250000 -36530.410156 -12391.051758 +v 262130.109375 -38931.984375 -13672.625000 +v 262130.109375 -38240.921875 -15415.904297 +v 253187.203125 -40607.121094 -16683.339844 +v 253187.203125 -39767.253906 -18479.060547 +v 244062.593750 -42096.476562 -19653.494141 +v 244062.593750 -41097.542969 -21454.595703 +v 234739.109375 -43382.101562 -22462.355469 +v 234739.109375 -42215.019531 -24221.601562 +v 225234.750000 -44421.601562 -25038.224609 +v 225234.750000 -43081.019531 -26715.869141 +v 215576.312500 -45172.589844 -27340.214844 +v 215576.312500 -43658.824219 -28906.929688 +v 205790.625000 -45602.039062 -29349.429688 +v 195904.484375 -47450.722656 -29617.832031 +v 186000.000000 -49162.210938 -29755.177734 +v 186000.000000 -47318.839844 -31207.619141 +v 175938.062500 -48816.003906 -31261.382812 +v 175938.062500 -46815.871094 -32550.085938 +v 165974.234375 -48044.355469 -32558.007812 +v 165975.968750 -45902.378906 -33675.031250 +v 155957.046875 -46878.152344 -33675.031250 +v 155958.921875 -44611.261719 -34614.335938 +v 145800.046875 -45365.050781 -34614.335938 +v 145798.265625 -42991.199219 -35370.210938 +v 313425.187500 -25672.912109 1794.329712 +v 296603.718750 -30884.951172 1561.263428 +v 296603.718750 -30942.527344 0.000000 +v 296603.718750 -30910.039062 -1171.730225 +v 288128.093750 -33469.250000 -1409.607666 +v 288128.093750 -33359.253906 -2811.951904 +v 279574.593750 -35917.050781 -3263.079590 +v 279574.593750 -35713.753906 -4873.546875 +v 270917.250000 -38265.601562 -5500.723633 +v 270917.250000 -37954.113281 -7289.901367 +v 262130.109375 -40495.949219 -8043.876465 +v 262130.109375 -40062.320312 -9976.113281 +v 253187.203125 -42590.617188 -10796.310547 +v 253187.203125 -42021.875000 -12830.605469 +v 244062.593750 -44533.687500 -13646.051758 +v 244062.593750 -43817.871094 -15737.138672 +v 234739.109375 -46303.808594 -16476.339844 +v 234739.109375 -45430.074219 -18577.097656 +v 225234.750000 -47853.699219 -19203.417969 +v 225234.750000 -46812.781250 -21270.386719 +v 215576.312500 -49132.980469 -21767.472656 +v 215576.312500 -47917.500000 -23762.306641 +v 205790.625000 -50096.046875 -24126.052734 +v 205790.625000 -48700.785156 -26015.599609 +v 195904.484375 -50702.699219 -26253.513672 +v 195904.484375 -49127.125000 -28012.587891 +v 186000.000000 -50911.628906 -28142.488281 +v 175938.062500 -50730.281250 -29806.439453 +v 165972.515625 -50109.792969 -31268.990234 +v 155955.156250 -49078.824219 -32558.007812 +v 145801.828125 -47683.828125 -33675.031250 +v 313425.187500 -25202.117188 3522.562744 +v 296603.718750 -30437.148438 4626.542480 +v 296603.718750 -30715.068359 3108.214844 +v 288128.093750 -33440.578125 1878.221558 +v 288128.093750 -33506.371094 0.000000 +v 279574.593750 -36082.464844 0.000000 +v 279574.593750 -36040.726562 -1635.754272 +v 270917.250000 -38628.562500 -1846.259521 +v 270917.250000 -38491.277344 -3683.005371 +v 262130.109375 -41086.039062 -4063.928711 +v 262130.109375 -40838.128906 -6069.648926 +v 253187.203125 -43435.472656 -6568.671875 +v 253187.203125 -43062.839844 -8705.212891 +v 244062.593750 -45658.953125 -9258.470703 +v 244062.593750 -45148.488281 -11482.467773 +v 234739.109375 -47732.929688 -12021.820312 +v 234739.109375 -47072.613281 -14287.031250 +v 225234.750000 -49607.125000 -14768.712891 +v 225234.750000 -48786.417969 -17031.833984 +v 215576.312500 -51227.531250 -17429.865234 +v 215576.312500 -50237.671875 -19652.199219 +v 205790.625000 -52544.425781 -19953.029297 +v 205790.625000 -51378.691406 -22100.683594 +v 195904.484375 -53513.023438 -22302.796875 +v 195904.484375 -52166.949219 -24346.687500 +v 186000.000000 -54083.859375 -24459.587891 +v 186000.000000 -52555.828125 -26375.257812 +v 175938.062500 -54254.437500 -26420.695312 +v 175938.062500 -52546.992188 -28190.970703 +v 165969.046875 -53962.687500 -28197.832031 +v 165970.781250 -52086.601562 -29813.693359 +v 155951.406250 -53231.824219 -29813.693359 +v 155953.281250 -51200.855469 -31268.990234 +v 145805.390625 -52105.339844 -31268.990234 +v 145803.609375 -49934.828125 -32558.007812 +v 313425.187500 -24447.242188 5118.602539 +v 296603.718750 -29574.263672 7520.078125 +v 296603.718750 -30055.457031 6101.934082 +v 288128.093750 -32928.886719 5565.794434 +v 288128.093750 -33246.457031 3739.225586 +v 279574.593750 -35790.222656 4339.117676 +v 279574.593750 -36008.492188 2179.548828 +v 270917.250000 -38592.781250 2460.034912 +v 270917.250000 -38674.894531 0.000000 +v 262130.109375 -41287.746094 0.000000 +v 262130.109375 -41236.851562 -2037.213135 +v 253187.203125 -43869.675781 -2204.705078 +v 253187.203125 -43705.441406 -4398.049316 +v 244062.593750 -46353.597656 -4677.566406 +v 244062.593750 -46061.761719 -6986.142578 +v 234739.109375 -48713.812500 -7314.293945 +v 234739.109375 -48281.183594 -9693.357422 +v 225234.750000 -50897.285156 -10020.166016 +v 225234.750000 -50312.015625 -12427.131836 +v 215576.312500 -52846.597656 -12717.551758 +v 215576.312500 -52098.519531 -15113.855469 +v 205790.625000 -54508.105469 -15345.214844 +v 205790.625000 -53588.984375 -17696.677734 +v 195904.484375 -55832.613281 -17858.515625 +v 195904.484375 -54736.402344 -20135.501953 +v 186000.000000 -56765.222656 -20228.875000 +v 186000.000000 -55488.558594 -22406.218750 +v 175938.062500 -57299.976562 -22444.820312 +v 175938.062500 -55841.242188 -24501.726562 +v 165965.593750 -57364.695312 -24507.691406 +v 165967.312500 -55725.968750 -26427.126953 +v 155947.640625 -56970.898438 -26427.126953 +v 155949.515625 -55159.312500 -28197.832031 +v 145808.953125 -56154.089844 -28197.832031 +v 145807.171875 -54182.660156 -29813.693359 +v 313425.187500 -23432.658203 6516.352051 +v 296603.718750 -28330.441406 10127.375000 +v 296603.718750 -28997.835938 8866.663086 +v 288128.093750 -31942.888672 9046.757812 +v 288128.093750 -32492.736328 7340.711426 +v 279574.593750 -34942.746094 8518.398438 +v 279574.593750 -35433.148438 6458.727539 +v 270917.250000 -37954.113281 7289.901367 +v 270917.250000 -38350.488281 4897.519043 +v 262130.109375 -40931.378906 5404.056152 +v 262130.109375 -41197.542969 2714.469727 +v 253187.203125 -43826.871094 2937.643066 +v 253187.203125 -43925.105469 0.000000 +v 244062.593750 -46591.046875 0.000000 +v 244062.593750 -46531.132812 -2344.824463 +v 234739.109375 -49217.929688 -2454.965088 +v 234739.109375 -49027.250000 -4897.279785 +v 225234.750000 -51693.714844 -5062.390137 +v 225234.750000 -51359.121094 -7560.893066 +v 215576.312500 -53957.851562 -7737.589844 +v 215576.312500 -53467.722656 -10254.335938 +v 205790.625000 -55952.964844 -10411.306641 +v 205790.625000 -55297.519531 -12912.228516 +v 195904.484375 -57625.628906 -13030.311523 +v 195904.484375 -56797.179688 -15485.547852 +v 186000.000000 -58915.761719 -15557.357422 +v 186000.000000 -57909.179688 -17941.328125 +v 175938.062500 -59813.710938 -17972.238281 +v 175938.062500 -58625.750000 -20263.724609 +v 165962.125000 -60240.421875 -20268.656250 +v 165963.859375 -58871.199219 -22450.283203 +v 155943.890625 -60202.281250 -22450.283203 +v 155945.765625 -58654.515625 -24507.691406 +v 145812.500000 -59728.816406 -24507.691406 +v 145810.718750 -58006.921875 -26427.126953 +v 313425.187500 -22188.480469 7656.167969 +v 296603.718750 -26740.830078 12335.334961 +v 296603.718750 -27576.347656 11287.904297 +v 288128.093750 -30521.603516 12183.373047 +v 288128.093750 -31284.218750 10666.717773 +v 279574.593750 -33583.902344 12378.002930 +v 279574.593750 -34324.503906 10498.150391 +v 270917.250000 -36723.441406 11849.157227 +v 270917.250000 -37409.734375 9614.630859 +v 262130.109375 -39897.937500 10609.046875 +v 262130.109375 -40495.949219 8043.876465 +v 253187.203125 -43062.839844 8705.212891 +v 253187.203125 -43537.019531 5848.356934 +v 244062.593750 -46171.535156 6220.048340 +v 244062.593750 -46484.859375 3124.344482 +v 234739.109375 -49168.230469 3271.100342 +v 234739.109375 -49282.281250 0.000000 +v 225234.750000 -51965.960938 0.000000 +v 225234.750000 -51897.265625 -2537.733398 +v 215576.312500 -54528.968750 -2597.039795 +v 215576.312500 -54312.949219 -5180.697266 +v 205790.625000 -56844.898438 -5260.001953 +v 205790.625000 -56470.179688 -7856.035156 +v 195904.484375 -58856.277344 -7927.878906 +v 195904.484375 -58313.484375 -10506.518555 +v 186000.000000 -60498.113281 -10555.239258 +v 186000.000000 -59780.296875 -13090.736328 +v 175938.062500 -61756.796875 -13113.289062 +v 175938.062500 -60859.007812 -15584.160156 +v 165958.671875 -62546.992188 -15587.953125 +v 165960.406250 -61467.355469 -17976.611328 +v 155940.125000 -62869.539062 -17976.611328 +v 155942.000000 -61609.003906 -20268.656250 +v 145816.062500 -62750.300781 -20268.656250 +v 145814.281250 -61311.710938 -22450.283203 +v 313425.187500 -20767.800781 8504.218750 +v 296603.718750 -24863.720703 14062.997070 +v 296603.718750 -25833.187500 13262.342773 +v 288128.093750 -28705.193359 14839.579102 +v 288128.093750 -29659.919922 13579.504883 +v 279574.593750 -31757.560547 15758.095703 +v 279574.593750 -32726.427734 14137.978516 +v 270917.250000 -34949.472656 15957.395508 +v 270917.250000 -35901.328125 13970.928711 +v 262130.109375 -38240.921875 15415.904297 +v 262130.109375 -39144.035156 13074.683594 +v 253187.203125 -41590.609375 14149.633789 +v 253187.203125 -42411.609375 11481.281250 +v 244062.593750 -44954.984375 12210.971680 +v 244062.593750 -45658.953125 9258.470703 +v 234739.109375 -48281.183594 9693.357422 +v 234739.109375 -48831.710938 6512.214844 +v 225234.750000 -51484.976562 6731.771973 +v 225234.750000 -51844.210938 3381.384277 +v 215576.312500 -54472.664062 3460.406738 +v 215576.312500 -54601.871094 0.000000 +v 205790.625000 -57149.789062 0.000000 +v 205790.625000 -57072.855469 -2636.794678 +v 195904.484375 -59488.753906 -2660.908203 +v 195904.484375 -59249.523438 -5308.104980 +v 186000.000000 -61474.921875 -5332.720215 +v 186000.000000 -61064.546875 -7964.642090 +v 175938.062500 -63090.445312 -7978.363770 +v 175938.062500 -62502.226562 -10573.423828 +v 165955.203125 -64244.328125 -10575.997070 +v 165956.937500 -63474.320312 -13116.480469 +v 155936.359375 -64931.441406 -13116.480469 +v 155938.250000 -63978.730469 -15587.953125 +v 145819.625000 -65173.519531 -15587.953125 +v 145817.843750 -64039.324219 -17976.611328 +v 296603.718750 -23842.734375 14731.373047 +v 288128.093750 -26560.263672 16917.980469 +v 288128.093750 -27668.050781 15954.781250 +v 279574.593750 -29517.927734 18514.443359 +v 279574.593750 -30684.078125 17220.326172 +v 270917.250000 -32682.326172 19436.410156 +v 270917.250000 -33873.964844 17786.005859 +v 262130.109375 -36013.816406 19625.564453 +v 262130.109375 -37195.285156 17607.826172 +v 253187.203125 -39468.429688 19055.472656 +v 253187.203125 -40607.121094 16683.339844 +v 244062.593750 -43004.359375 17743.646484 +v 244062.593750 -44067.496094 15048.911133 +v 234739.109375 -46571.910156 15755.785156 +v 234739.109375 -47525.097656 12784.542969 +v 225234.750000 -50090.156250 13215.569336 +v 225234.750000 -50897.285156 10020.166016 +v 215576.312500 -53467.722656 10254.335938 +v 215576.312500 -54091.421875 6889.092285 +v 205790.625000 -56611.128906 6994.548828 +v 205790.625000 -57013.441406 3513.377930 +v 195904.484375 -59426.398438 3545.507812 +v 195904.484375 -59569.488281 0.000000 +v 186000.000000 -61808.824219 0.000000 +v 186000.000000 -61724.570312 -2673.247559 +v 175938.062500 -63775.859375 -2677.853027 +v 175938.062500 -63516.609375 -5341.907227 +v 165951.750000 -65292.351562 -5343.207031 +v 165953.484375 -64852.007812 -7980.305664 +v 155932.609375 -66346.828125 -7980.305664 +v 155934.484375 -65722.523438 -10575.997070 +v 145823.187500 -66956.382812 -10575.997070 +v 145821.406250 -66147.625000 -13116.480469 +v 270917.250000 -23886.599609 25027.199219 +v 262130.109375 -26787.392578 27205.437500 +v 253187.203125 -29999.314453 28715.816406 +v 244062.593750 -33496.558594 29479.894531 +v 234739.109375 -37240.878906 29464.261719 +v 225234.750000 -41161.707031 28723.582031 +v 215576.312500 -45172.589844 27340.214844 +v 205790.625000 -49178.101562 25401.654297 +v 195904.484375 -53077.742188 22998.482422 +v 186000.000000 -56765.222656 20228.875000 +v 175938.062500 -60178.234375 17186.263672 +v 165939.062500 -63185.355469 13948.654297 +v 155919.453125 -65724.546875 10575.997070 +v 145835.046875 -67767.359375 7105.191895 +v 135885.859375 -68771.257812 7105.191895 +v 125801.492188 -70099.132812 3568.954102 +v 115879.343750 -70734.554688 3568.954102 +v 115881.984375 -70910.546875 0.000000 +v 105793.296875 -71410.320312 0.000000 +v 115883.968750 -70811.046875 -2678.504639 +v 105791.273438 -71310.046875 -2678.504639 +v 115885.945312 -70516.453125 -5343.207031 +v 105789.242188 -71012.750000 -5343.207031 +v 115887.929688 -70032.273438 -7980.305664 +v 105787.218750 -70524.000000 -7980.305664 +v 115889.906250 -69364.015625 -10575.997070 +v 105785.187500 -69849.351562 -10575.997070 +v 115891.890625 -68517.195312 -13116.480469 +v 105783.164062 -68994.367188 -13116.480469 +v 115893.867188 -67497.312500 -15587.953125 +v 105781.140625 -67964.609375 -15587.953125 +v 115895.851562 -66309.875000 -17976.611328 +v 105779.109375 -66765.648438 -17976.611328 +v 115897.828125 -64960.406250 -20268.656250 +v 105777.085938 -65403.031250 -20268.656250 +v 115899.804688 -63454.406250 -22450.283203 +v 105775.062500 -63882.328125 -22450.283203 +v 115901.789062 -61797.382812 -24507.691406 +v 105773.031250 -62209.101562 -24507.691406 +v 115903.765625 -59994.898438 -26427.126953 +v 105771.007812 -60388.960938 -26427.126953 +v 115905.750000 -58055.390625 -28197.832031 +v 105768.976562 -58430.429688 -28197.832031 +v 115907.726562 -55991.777344 -29813.693359 +v 105766.953125 -56346.546875 -29813.693359 +v 115909.710938 -53817.355469 -31268.990234 +v 105764.929688 -54150.742188 -31268.990234 +v 115911.687500 -51545.425781 -32558.007812 +v 105762.898438 -51856.449219 -32558.007812 +v 115913.671875 -49189.285156 -33675.031250 +v 105760.875000 -49477.089844 -33675.031250 +v 115915.648438 -46762.230469 -34614.335938 +v 105758.843750 -47026.097656 -34614.335938 +v 115917.632812 -44277.562500 -35370.210938 +v 105756.820312 -44516.902344 -35370.210938 +v 115919.609375 -41748.578125 -35936.941406 +v 105754.796875 -41962.933594 -35936.941406 +v 115921.593750 -39188.578125 -36308.804688 +v 105752.765625 -39377.617188 -36308.804688 +v 115923.570312 -36610.859375 -36480.082031 +v 105750.742188 -36774.386719 -36480.082031 +v 262130.109375 -25042.480469 27615.695312 +v 253187.203125 -28134.271484 29442.164062 +v 244062.593750 -31537.490234 30540.845703 +v 234739.109375 -35218.425781 30864.617188 +v 225234.750000 -39111.660156 30457.640625 +v 215576.312500 -43135.691406 29394.847656 +v 205790.625000 -47199.453125 27758.732422 +v 195904.484375 -51203.617188 25633.953125 +v 186000.000000 -55034.320312 23105.130859 +v 175938.062500 -58625.750000 20263.724609 +v 165936.750000 -61847.402344 17190.445312 +v 155916.937500 -64634.218750 13948.654297 +v 145837.421875 -66954.812500 10575.997070 +v 135883.640625 -67944.109375 10575.997070 +v 125804.429688 -69585.445312 7105.191895 +v 115876.703125 -70214.984375 7105.191895 +v 105796.000000 -71232.335938 3568.954102 +v 85827.445312 -71890.437500 3568.954102 +v 85826.976562 -72070.750000 0.000000 +v 55833.824219 -72391.718750 3568.954102 +v 55833.824219 -72573.914062 0.000000 +v 25833.611328 -72726.093750 0.000000 +v 25833.611328 -72622.968750 -2678.504639 +v -34166.402344 -72633.351562 -2678.504639 +v -34166.402344 -72327.710938 -5343.207031 +v -60000.000000 -72327.710938 -5343.207031 +v -60000.000000 -71825.304688 -7980.305664 +v -64152.378906 -71825.304688 -7980.305664 +v -64152.375000 -71131.843750 -10575.997070 +v -76000.000000 -71131.843750 -10575.994141 +v -76000.000000 -70253.046875 -13116.476562 +v -94287.843750 -70255.203125 -13111.478516 +v -94287.843750 -69196.789062 -15582.007812 +v -101982.093750 -69200.242188 -15572.499023 +v -101982.093750 -67967.921875 -17958.791016 +v -109817.234375 -67973.890625 -17939.871094 +v -109817.234375 -66573.382812 -20227.230469 +v -117899.015625 -67983.140625 -17910.539062 +v -117901.390625 -66582.632812 -20194.148438 +v -126063.867188 -67996.078125 -17869.496094 +v -126063.867188 -66595.570312 -20147.882812 +v -134552.203125 -66613.164062 -20084.974609 +v -134552.203125 -65050.191406 -22246.830078 +v -143335.140625 -65073.027344 -22156.382812 +v -143335.140625 -63353.300781 -24186.857422 +v -152451.062500 -63382.062500 -24062.492188 +v -152451.062500 -61511.351562 -25947.058594 +v -161938.421875 -61546.726562 -25782.128906 +v -161938.421875 -59533.792969 -27509.619141 +v -172925.734375 -59581.425781 -27271.691406 +v -172925.734375 -57439.898438 -28834.480469 +v -184222.390625 -57497.351562 -28533.503906 +v -184221.515625 -55242.472656 -29926.337891 +v -207258.000000 -55403.511719 -29121.892578 +v -207258.000000 -53061.472656 -30322.400391 +v 253187.203125 -26234.070312 29886.152344 +v 244062.593750 -27467.320312 31785.560547 +v 234739.109375 -28742.851562 33278.582031 +v 225234.750000 -30039.945312 34400.558594 +v 215576.312500 -31332.552734 35204.496094 +v 215576.312500 -33831.921875 34681.500000 +v 225234.750000 -32395.027344 33889.507812 +v 234739.109375 -30949.000000 32784.199219 +v 244062.593750 -29521.410156 31313.355469 +v 215576.312500 -36285.042969 33825.894531 +v 225234.750000 -34706.535156 33053.441406 +v 234739.109375 -33114.328125 31975.402344 +v 215576.312500 -38668.792969 32650.826172 +v 225234.750000 -36952.675781 31905.207031 +v 215576.312500 -40960.050781 31169.429688 +v 195904.484375 -49127.125000 28012.587891 +v 195904.484375 -46871.382812 30117.748047 +v 186000.000000 -48557.636719 30257.410156 +v 186000.000000 -46043.300781 32084.068359 +v 175938.062500 -47491.398438 32139.341797 +v 175938.062500 -44741.593750 33666.835938 +v 165922.921875 -48747.789062 32147.164062 +v 165920.609375 -45908.300781 33675.031250 +v 155899.390625 -49800.765625 32147.164062 +v 155896.890625 -46883.445312 33675.031250 +v 145856.406250 -50663.878906 32147.164062 +v 145858.781250 -47679.785156 33675.031250 +v 135863.656250 -48314.117188 33675.031250 +v 135861.437500 -45152.027344 34886.957031 +v 125833.804688 -48812.335938 33675.031250 +v 125836.734375 -45601.812500 34886.957031 +v 115847.664062 -45941.765625 34886.957031 +v 115845.023438 -42597.574219 35769.398438 +v 105828.421875 -46194.000000 34886.957031 +v 105831.125000 -42817.003906 35769.398438 +v 85833.593750 -43087.800781 35769.398438 +v 85834.062500 -39600.132812 36308.804688 +v 55833.824219 -39761.664062 36308.804688 +v 186000.000000 -43395.347656 33608.933594 +v 175938.062500 -41880.781250 34878.468750 +v 186000.000000 -40640.503906 34818.484375 +v 175938.062500 -38936.718750 35760.695312 +v 165918.296875 -42954.136719 34886.957031 +v 165916.000000 -39913.957031 35769.398438 +v 155894.390625 -43848.312500 34886.957031 +v 155891.875000 -40724.808594 35769.398438 +v 145861.156250 -44575.269531 34886.957031 +v 145863.531250 -41380.441406 35769.398438 +v 135859.218750 -41897.886719 35769.398438 +v 135857.000000 -38582.371094 36308.804688 +v 125839.671875 -42297.890625 35769.398438 +v 125842.609375 -38931.710938 36308.804688 +v 115842.382812 -39190.320312 36308.804688 +v 186000.000000 -37805.492188 35699.195312 +v 175938.062500 -35937.152344 36299.968750 +v 165913.687500 -36816.414062 36308.804688 +v 155889.375000 -37542.378906 36308.804688 +v 145865.906250 -38125.417969 36308.804688 +v 105833.828125 -39376.359375 36308.804688 +v 25833.611328 -39810.500000 36308.804688 +v -34166.402344 -39813.839844 36308.804688 +v -34166.402344 -43350.074219 35769.398438 +v -60000.000000 -43350.074219 35769.398438 +v -60000.000000 -46820.882812 34886.957031 +v -64152.410156 -46820.882812 34886.957031 +v -64152.406250 -50193.539062 33675.031250 +v -76000.000000 -50193.539062 33675.019531 +v -76000.000000 -53435.332031 32147.154297 +v -94287.843750 -53437.492188 32134.904297 +v -94287.843750 -56515.703125 30305.353516 +v -101982.093750 -56519.160156 30286.859375 +v -101982.093750 -59401.074219 28169.878906 +v -109817.234375 -59407.039062 28140.201172 +v -109817.234375 -62059.937500 25750.730469 +v -117857.031250 -62069.128906 25708.888672 +v -117860.203125 -64463.496094 23065.695312 +v -126063.867188 -62082.128906 25649.714844 +v -126063.867188 -64476.492188 23012.623047 +v -134552.203125 -64494.082031 22940.769531 +v -134552.203125 -66613.164062 20084.974609 +v -143335.140625 -66636.000000 20003.316406 +v -143335.140625 -68466.250000 16965.402344 +v -152451.062500 -68495.015625 16878.169922 +v -152451.062500 -70022.882812 13695.266602 +v -161938.421875 -70058.250000 13608.213867 +v -161938.421875 -71270.179688 10317.873047 +v -172925.734375 -71316.578125 10228.634766 +v -172925.734375 -72198.921875 6871.826172 +v -184236.125000 -72245.554688 6800.003906 +v -184234.953125 -72784.500000 3415.661377 +v -207258.000000 -72841.515625 3323.890381 +v -207258.000000 -73023.093750 0.000000 +v -60000.000000 -39813.839844 36308.804688 +v -64152.414062 -39813.839844 36308.804688 +v -64152.410156 -43350.074219 35769.398438 +v -76000.000000 -43350.078125 35769.390625 +v -76000.000000 -39813.839844 36308.792969 +v -94287.843750 -39816.000000 36294.957031 +v -101982.093750 -39819.457031 36272.808594 +v -109817.234375 -39825.421875 36234.593750 +v -117834.851562 -39834.585938 36175.910156 +v -126063.867188 -39847.613281 36092.453125 +v -132865.484375 -36292.410156 36185.648438 +v -134552.203125 -39865.203125 35979.757812 +v -143335.140625 -39888.039062 35833.480469 +v -152451.062500 -39916.804688 35649.230469 +v -161938.421875 -39952.179688 35422.628906 +v -172925.734375 -40001.878906 35116.261719 +v -184251.312500 -40072.390625 34748.707031 +v -207258.000000 -40323.121094 33815.644531 +v -218603.625000 -40526.945312 33243.144531 +v -218603.625000 -44016.464844 32749.287109 +v -207258.000000 -43835.441406 33313.281250 +v -184250.156250 -43605.628906 34232.519531 +v -172925.734375 -43537.746094 34594.574219 +v -161938.421875 -43488.414062 34896.390625 +v -152451.062500 -43453.042969 35119.625000 +v -143335.140625 -43424.277344 35301.136719 +v -134552.203125 -43401.441406 35445.246094 +v -126063.867188 -43383.851562 35556.261719 +v -117838.023438 -43370.828125 35638.453125 +v -117841.187500 -46841.636719 34759.214844 +v -109817.234375 -43361.660156 35696.292969 +v -109817.234375 -46832.464844 34815.656250 +v -101982.093750 -43355.695312 35733.941406 +v -101982.093750 -46826.500000 34852.371094 +v -94287.843750 -43352.238281 35755.757812 +v -94287.843750 -46823.042969 34873.656250 +v -76000.000000 -46820.882812 34886.949219 +v -207258.000000 -47282.769531 32491.431641 +v -184248.984375 -47073.496094 33388.035156 +v -172925.734375 -47008.183594 33741.117188 +v -161938.421875 -46959.222656 34035.484375 +v -152451.062500 -46923.847656 34253.214844 +v -143335.140625 -46895.082031 34430.246094 +v -134552.203125 -46872.246094 34570.800781 +v -126063.867188 -46854.656250 34679.078125 +v -117844.359375 -50214.296875 33551.699219 +v -109817.234375 -50205.121094 33606.203125 +v -101982.093750 -50199.156250 33641.644531 +v -94287.843750 -50195.699219 33662.187500 +v -235000.937500 -47768.703125 30976.482422 +v -240147.796875 -47903.589844 30620.535156 +v -240147.796875 -51153.980469 29556.816406 +v -245151.406250 -51276.390625 29192.990234 +v -245148.000000 -54373.695312 27868.726562 +v -246000.000000 -54391.125000 27806.451172 +v -246000.000000 -57327.421875 26223.333984 +v -250013.218750 -57390.007812 25933.695312 +v -250013.218750 -60115.972656 24120.990234 +v -254646.390625 -60164.390625 23781.896484 +v -254646.390625 -62645.101562 21762.503906 +v -259052.109375 -62662.269531 21436.613281 +v -259052.109375 -64872.152344 19232.677734 +v -263209.531250 -64853.937500 18926.023438 +v -263209.531250 -66781.000000 16570.005859 +v -267100.875000 -66724.140625 16288.865234 +v -267100.875000 -68360.976562 13815.067383 +v -270670.562500 -66658.812500 16000.577148 +v -270673.000000 -68265.882812 13570.385742 +v -274112.250000 -66581.882812 15690.485352 +v -274112.250000 -68155.734375 13307.564453 +v -277260.718750 -68036.242188 13039.632812 +v -277260.718750 -69320.734375 10580.605469 +v -280190.000000 -69159.703125 10356.141602 +v -280190.000000 -70153.835938 7852.122070 +v -282914.312500 -69955.257812 7676.926758 +v -282914.312500 -70660.093750 5157.531250 +v -285447.937500 -70429.640625 5036.702637 +v -285447.937500 -70848.273438 2529.947266 +v -287822.343750 -70185.414062 4912.029297 +v -287823.562500 -70591.078125 2467.289551 +v -289999.968750 -69934.015625 4786.592773 +v -289999.968750 -70326.695312 2404.316406 +v -292046.875000 -70049.781250 2339.612793 +v -292046.875000 -70178.234375 0.000000 +v -293959.968750 -69887.132812 0.000000 +v -293959.968750 -69817.343750 -1706.494873 +v -297441.718750 -69216.132812 -1605.589722 +v -297441.718750 -69025.867188 -3202.905762 +v -299959.343750 -68539.609375 -3038.569580 +v -299959.343750 -68249.335938 -4538.231934 +v -302302.062500 -67773.960938 -4289.565918 +v -302302.062500 -67405.015625 -5684.799805 +v -306696.062500 -66499.468750 -5018.587402 +v -306696.062500 -65967.484375 -6619.000977 +v -245154.828125 -48054.085938 30243.345703 +v -246000.000000 -51298.789062 29128.013672 +v -250013.218750 -54478.367188 27499.326172 +v -254646.390625 -57469.531250 25569.119141 +v -259052.109375 -60213.769531 23425.765625 +v -263209.531250 -62676.539062 21094.820312 +v -267100.875000 -64828.996094 18604.910156 +v -270668.125000 -64798.070312 18275.867188 +v -274112.250000 -64759.671875 17921.449219 +v -277260.718750 -66497.539062 15374.577148 +v -280190.000000 -67906.414062 12763.001953 +v -282914.312500 -68987.257812 10125.078125 +v -285447.937500 -69744.765625 7497.074707 +v -287821.093750 -69521.656250 7311.601074 +v -289999.968750 -69291.601562 7124.789062 +v -292046.875000 -69670.765625 4657.778809 +v -293959.968750 -69763.445312 2273.806641 +v -297441.718750 -69280.343750 0.000000 +v -299959.343750 -68716.187500 -1523.209229 +v -302302.062500 -68041.257812 -2872.075684 +v -306696.062500 -66886.820312 -3371.599365 +v -246000.000000 -48081.617188 30176.300781 +v -250013.218750 -51411.996094 28806.292969 +v -254646.390625 -54591.117188 27112.740234 +v -259052.109375 -57553.898438 25186.224609 +v -263209.531250 -60264.031250 23052.255859 +v -267100.875000 -62687.660156 20736.906250 +v -270665.687500 -62695.546875 20370.423828 +v -274112.250000 -62700.738281 19975.125000 +v -277260.718750 -64716.003906 17560.623047 +v -280190.000000 -66405.070312 15048.411133 +v -282914.312500 -67766.898438 12478.236328 +v -285447.937500 -68804.179688 9887.871094 +v -287819.875000 -68609.984375 9643.383789 +v -289999.968750 -68409.320312 9396.864258 +v -292046.875000 -69050.703125 6933.050293 +v -293959.968750 -69398.500000 4526.769531 +v -297441.718750 -69166.539062 2139.356201 +v -299959.343750 -68775.789062 0.000000 +v -302302.062500 -68203.867188 -1439.747314 +v -306696.062500 -67123.593750 -1693.562012 +v -250013.218750 -48221.843750 29843.001953 +v -254646.390625 -51559.738281 28401.333984 +v -259052.109375 -54712.859375 26706.732422 +v -263209.531250 -57643.265625 24784.646484 +v -267100.875000 -60315.105469 22661.132812 +v -270663.250000 -60365.937500 22260.931641 +v -274112.250000 -60419.488281 21828.664062 +v -277260.718750 -62703.039062 19572.951172 +v -280190.000000 -64666.808594 17188.080078 +v -282914.312500 -66305.023438 14712.654297 +v -285447.937500 -67618.390625 12185.900391 +v -287818.656250 -67460.585938 11884.755859 +v -289999.968750 -67297.046875 11580.780273 +v -292046.875000 -68199.125000 9143.981445 +v -293959.968750 -68801.453125 6738.044922 +v -297441.718750 -68830.757812 4259.101074 +v -299959.343750 -68670.164062 2029.589111 +v -302302.062500 -68258.742188 0.000000 +v -306696.062500 -67203.843750 0.000000 +v -246000.000000 -44770.824219 30939.589844 +v -250013.218750 -44938.855469 30597.859375 +v -254646.390625 -48405.988281 29423.468750 +v -259052.109375 -51720.835938 27976.029297 +v -263209.531250 -54843.988281 26280.910156 +v -267100.875000 -57737.742188 24364.128906 +v -270660.812500 -57835.160156 23934.162109 +v -274112.250000 -57941.312500 23469.099609 +v -277260.718750 -60472.718750 21389.171875 +v -280190.000000 -62702.734375 19157.718750 +v -282914.312500 -64612.445312 16804.583984 +v -285447.937500 -66197.914062 14367.971680 +v -287817.406250 -66083.648438 14013.095703 +v -289999.968750 -65964.632812 13654.494141 +v -292046.875000 -67125.554688 11269.124023 +v -293959.968750 -67981.476562 8886.789062 +v -297441.718750 -68281.429688 6339.623535 +v -299959.343750 -68358.523438 4040.573242 +v -302302.062500 -68161.484375 1918.380737 +v -306696.062500 -67194.632812 572.259521 +v -245158.234375 -44738.050781 31008.056641 +v -250013.218750 -41593.972656 31059.275391 +v -246000.000000 -41397.617188 31406.158203 +v -254646.390625 -41853.746094 30622.644531 +v -259052.109375 -42140.867188 30164.074219 +v -263209.531250 -42456.808594 29683.126953 +v -267100.875000 -42802.789062 29179.498047 +v -270648.656250 -43169.015625 28666.412109 +v -274112.250000 -43581.109375 28107.574219 +v -277260.718750 -44010.261719 27541.664062 +v -280190.000000 -44463.957031 26957.376953 +v -282914.312500 -44940.593750 26355.910156 +v -282914.312500 -47765.097656 25964.367188 +v -285447.937500 -48183.093750 25356.082031 +v -285447.937500 -50876.816406 24730.541016 +v -287807.562500 -48617.847656 24732.541016 +v -287808.781250 -51229.746094 24122.048828 +v -289999.968750 -49066.617188 24096.964844 +v -289999.968750 -51593.343750 23502.484375 +v -292046.875000 -51968.320312 22869.998047 +v -292046.875000 -54338.156250 22075.523438 +v -293959.968750 -54634.937500 21454.607422 +v -293959.968750 -56828.281250 20481.193359 +v -297441.718750 -57265.195312 19270.138672 +v -297441.718750 -59181.410156 18173.021484 +v -299959.343750 -59402.851562 17240.591797 +v -299959.343750 -61067.898438 16035.513672 +v -302302.062500 -61160.878906 15156.872070 +v -302302.062500 -62572.308594 13869.855469 +v -306696.062500 -62323.382812 12445.007812 +v -306696.062500 -63372.835938 11233.331055 +v -285447.937500 -45438.585938 25738.453125 +v -287806.312500 -45956.621094 25105.853516 +v -289999.968750 -46492.253906 24460.345703 +v -292046.875000 -49529.519531 23448.480469 +v -293959.968750 -52353.054688 22226.736328 +v -297441.718750 -55247.152344 20185.994141 +v -299959.343750 -57624.394531 18281.416016 +v -302302.062500 -59627.609375 16295.918945 +v -306696.062500 -61166.906250 13537.436523 +v -290495.843750 -44044.101562 24428.453125 +v -292046.875000 -47044.738281 23802.083984 +v -293959.968750 -47612.207031 23132.603516 +v -297441.718750 -48785.699219 21764.769531 +v -298397.312500 -46978.359375 21461.119141 +v -299959.343750 -49754.476562 20648.052734 +v -300624.500000 -48010.054688 20437.744141 +v -302302.062500 -50742.832031 19516.671875 +v -302720.968750 -49058.984375 19403.357422 +v -306696.062500 -52719.238281 17233.076172 +v -306696.062500 -51185.562500 17316.226562 +v -306696.062500 -54239.445312 16987.646484 +v -302302.062500 -52624.226562 19226.734375 +v -299959.343750 -51797.562500 20341.304688 +v -297441.718750 -50987.039062 21441.433594 +v -293959.968750 -50004.765625 22788.947266 +v -306696.062500 -55732.707031 16585.968750 +v -302302.062500 -54470.804688 18752.404297 +v -299959.343750 -53802.847656 19839.478516 +v -297441.718750 -53147.644531 20912.466797 +v -306696.062500 -57185.558594 16034.078125 +v -302302.062500 -56265.164062 18100.968750 +v -299959.343750 -55751.425781 19150.281250 +v -306696.062500 -58584.519531 15338.003906 +v -302302.062500 -57989.902344 17279.712891 +v -306696.062500 -59916.128906 14503.779297 +v -302302.062500 -63846.183594 12443.872070 +v -306696.062500 -64307.582031 9914.700195 +v -302302.062500 -64973.605469 10894.788086 +v -306696.062500 -65122.035156 8503.670898 +v -302302.062500 -65947.359375 9240.191406 +v -306696.062500 -65810.617188 7014.807129 +v -302302.062500 -66760.226562 7497.666992 +v -306696.062500 -66367.750000 5462.670898 +v -302302.062500 -67405.015625 5684.799805 +v -306696.062500 -66787.851562 3861.825684 +v -302302.062500 -67874.500000 3819.175781 +v -306696.062500 -67065.335938 2226.834229 +v -306696.062500 -65296.812500 -8157.315918 +v -302302.062500 -66374.351562 -8378.821289 +v -302302.062500 -66937.468750 -7050.357910 +v -299959.343750 -67848.687500 -6014.347168 +v -297441.718750 -68713.117188 -4783.675293 +v -293959.968750 -69610.554688 -3404.196289 +v -292046.875000 -70105.757812 -1755.882446 +v -289999.968750 -70459.781250 0.000000 +v -287824.812500 -70728.460938 0.000000 +v -285447.937500 -70990.156250 0.000000 +v -282914.312500 -71090.929688 2590.639893 +v -280190.000000 -70877.695312 5275.231445 +v -277260.718750 -70339.617188 8022.312012 +v -274112.250000 -69469.554688 10798.009766 +v -270675.437500 -69607.390625 11011.125977 +v -267100.875000 -69727.390625 11209.808594 +v -263209.531250 -68445.398438 14053.511719 +v -259052.109375 -66827.968750 16838.486328 +v -254646.390625 -64884.054688 19525.062500 +v -250013.218750 -62625.312500 22072.802734 +v -246000.000000 -60076.472656 24390.382812 +v -245144.593750 -57314.750000 26282.296875 +v -240147.796875 -54278.253906 28215.796875 +v -235000.937500 -51043.281250 29900.398438 +v -302302.062500 -65718.718750 -9662.771484 +v -306696.062500 -64493.410156 -9618.007812 +v -302302.062500 -64973.605469 -10894.788086 +v -306696.062500 -63563.222656 -10985.550781 +v -302302.062500 -64142.050781 -12067.454102 +v -302302.062500 -63227.101562 -13173.349609 +v -299959.343750 -64305.289062 -12767.003906 +v -299959.343750 -63311.703125 -13937.007812 +v -297441.718750 -64463.570312 -13457.487305 +v -306696.062500 -62512.199219 -12244.420898 +v -302302.062500 -62231.824219 -14205.083008 +v -306696.062500 -61347.687500 -13380.609375 +v -302302.062500 -53552.953125 -19012.162109 +v -306696.062500 -54304.441406 -16973.515625 +v -302302.062500 -52156.460938 -19316.789062 +v -306696.062500 -52752.183594 -17229.476562 +v -302302.062500 -50742.832031 -19516.671875 +v -302302.062500 -49319.414062 -19608.740234 +v -299959.343750 -49754.476562 -20648.052734 +v -299959.343750 -48208.722656 -20745.457031 +v -297441.718750 -48785.699219 -21764.769531 +v -297441.718750 -47120.214844 -21867.441406 +v -293959.968750 -47612.207031 -23132.603516 +v -293959.968750 -45802.046875 -23241.728516 +v -292046.875000 -47044.738281 -23802.083984 +v -292046.875000 -45164.812500 -23914.365234 +v -306696.062500 -51185.562500 -17316.226562 +v -302302.062500 -47893.546875 -19590.220703 +v -299959.343750 -46660.308594 -20725.863281 +v -297441.718750 -45451.867188 -21846.789062 +v -293959.968750 -43988.777344 -23219.777344 +v -292046.875000 -43281.652344 -23891.779297 +v -306696.062500 -49618.941406 -17229.476562 +v -302302.062500 -46472.578125 -19461.873047 +v -299959.343750 -45117.214844 -20590.076172 +v -297441.718750 -43789.250000 -21703.658203 +v -293959.968750 -42181.734375 -23067.650391 +v -306696.062500 -48066.679688 -16973.515625 +v -302302.062500 -45063.847656 -19226.734375 +v -299959.343750 -43587.410156 -20341.304688 +v -297441.718750 -42140.949219 -21441.433594 +v -302302.062500 -43674.695312 -18887.875000 +v -306696.062500 -46543.144531 -16554.775391 +v -302302.062500 -42312.468750 -18448.369141 +v -306696.062500 -45062.687500 -15979.682617 +v -306696.062500 -39858.925781 12244.420898 +v -304988.562500 -39242.960938 14083.012695 +v -302302.062500 -36527.191406 15156.872070 +v -299959.343750 -34317.074219 16035.513672 +v -306696.062500 -41023.437500 13380.609375 +v -305233.593750 -40853.140625 15033.550781 +v -302302.062500 -38060.460938 16295.918945 +v -299959.343750 -35982.121094 17240.591797 +v -306696.062500 -42288.472656 14386.168945 +v -305478.093750 -42524.457031 15826.780273 +v -302302.062500 -39698.167969 17279.712891 +v -299959.343750 -37760.578125 18281.416016 +v -306696.062500 -43639.679688 15254.670898 +v -305722.187500 -44238.714844 16459.162109 +v -302302.062500 -41422.906250 18100.968750 +v -299959.343750 -39633.546875 19150.281250 +v -306696.062500 -45062.687500 15979.682617 +v -305965.937500 -45978.414062 16927.349609 +v -302302.062500 -43217.265625 18752.404297 +v -299959.343750 -41582.125000 19839.478516 +v -306696.062500 -46543.144531 16554.775391 +v -306209.468750 -47726.746094 17228.193359 +v -302302.062500 -45063.847656 19226.734375 +v -299959.343750 -43587.410156 20341.304688 +v -306696.062500 -48066.679688 16973.515625 +v -306452.812500 -49467.601562 17358.740234 +v -302302.062500 -46945.238281 19516.671875 +v -299959.343750 -45630.496094 20648.052734 +v -306696.062500 -49618.941406 17229.476562 +v -292046.875000 -42029.203125 23802.083984 +v -289991.031250 -41292.839844 24463.103516 +v -249885.296875 -34833.726562 31070.753906 +v -249629.000000 -28183.021484 29876.041016 +v -250013.218750 -25024.292969 28806.292969 +v -254646.390625 -25473.142578 28401.333984 +v -259052.109375 -25972.945312 27976.029297 +v -246000.000000 -24687.615234 29128.013672 +v -249500.625000 -24978.791016 28848.785156 +v -250013.218750 -21957.923828 27499.326172 +v -249372.109375 -21896.734375 27549.998047 +v -246000.000000 -21595.277344 27806.451172 +v -246000.000000 -18658.980469 26223.333984 +v -249243.437500 -18967.966797 25991.000000 +v -250013.218750 -19046.283203 25933.695312 +v -250013.218750 -16320.319336 24120.990234 +v -254646.390625 -19563.349609 25569.119141 +v -254646.390625 -16868.490234 23781.896484 +v -259052.109375 -20139.882812 25186.224609 +v -259052.109375 -17480.013672 23425.765625 +v -246000.000000 -15909.930664 24390.382812 +v -249114.625000 -16223.636719 24183.128906 +v -250013.218750 -13810.975586 22072.802734 +v -254646.390625 -14387.780273 21762.503906 +v -259052.109375 -15031.512695 21436.613281 +v -248985.656250 -13694.923828 22137.744141 +v -246000.000000 -13379.336914 22319.320312 +v -250013.218750 -11546.177734 19803.458984 +v -248856.546875 -11410.015625 19868.962891 +v -246000.000000 -11095.359375 20024.632812 +v -245173.421875 -11009.688477 20068.152344 +v -245173.421875 -8985.090820 17569.955078 +v -246000.000000 -9073.971680 17531.853516 +v -240147.796875 -8493.101562 17789.945312 +v -240147.796875 -6729.201172 15088.177734 +v -235007.421875 -6288.467773 15263.358398 +v -235007.421875 -4805.046875 12384.978516 +v -229622.421875 -4405.075195 12522.038086 +v -229622.421875 -3220.812988 9494.324219 +v -218603.625000 -2579.078613 9683.035156 +v -235007.421875 -8065.477539 17996.494141 +v -229622.421875 -5898.061035 15432.271484 +v -218603.625000 -3774.996826 12770.928711 +v -218480.437500 -3769.172119 12773.500000 +v -229622.421875 -7686.527832 18195.654297 +v -218603.625000 -5282.676758 15739.006836 +v -218490.703125 -5277.458496 15741.912109 +v -218298.500000 -5268.623047 15746.846680 +v -229622.421875 -9757.234375 20782.816406 +v -218603.625000 -9179.833984 21195.900391 +v -218603.625000 -7088.746582 18557.314453 +v -218511.234375 -9175.820312 21199.101562 +v -218500.968750 -7084.134766 18560.429688 +v -218298.500000 -9166.626953 21206.457031 +v -218298.500000 -7075.085449 18566.558594 +v -208869.921875 -6716.581055 18834.349609 +v -208869.921875 -4900.066406 15973.967773 +v -207258.000000 -4848.590820 16010.056641 +v -218521.500000 -11539.135742 23627.980469 +v -218298.500000 -11529.872070 23636.574219 +v -218531.765625 -14157.550781 25820.041016 +v -218603.625000 -14160.416992 25817.007812 +v -218603.625000 -11542.565430 23624.806641 +v 285701.468750 -7270.479004 3609.546143 +v 249635.562500 -5090.034668 7283.354980 +v 243581.109375 -4719.399902 7106.849121 +v 237526.750000 -4360.228516 6733.738281 +v 234739.109375 -4200.870117 6512.214844 +v 231494.921875 -4013.454834 6166.104492 +v 225234.750000 -3841.167969 6731.771973 +v 225486.265625 -3679.385986 5399.973145 +v 215576.312500 -3528.702148 6889.092285 +v 219506.796875 -3361.104980 4425.264648 +v 213567.843750 -3065.598145 3224.023438 +v 207684.671875 -2805.738281 1765.810059 +v 205790.625000 -2852.048584 3513.377930 +v 205790.625000 -3254.358643 6994.548828 +v 215576.312500 -42063.769531 -30317.966797 +v 215576.312500 -36888.386719 -33561.566406 +v 225234.750000 -36952.675781 -31905.207031 +v 234739.109375 -36744.035156 -29840.818359 +v 244062.593750 -36286.695312 -27373.593750 +v 253187.203125 -35605.402344 -24539.958984 +v 262130.109375 -34704.777344 -21446.666016 +v 270917.250000 -33586.503906 -18215.884766 +v 279574.593750 -32255.576172 -14966.767578 +v 288128.093750 -30721.734375 -11814.834961 +v 215576.312500 -31332.552734 -35204.496094 +v 215576.312500 -21942.759766 -34070.257812 +v 205790.625000 -10687.386719 -25401.654297 +v 215576.312500 -10572.496094 -25018.673828 +v 225234.750000 -11788.279297 -26172.687500 +v 234739.109375 -12955.752930 -26847.958984 +v 244062.593750 -14057.873047 -26964.851562 +v 253187.203125 -15078.981445 -26460.664062 +v 262130.109375 -15992.050781 -25344.113281 +v 270917.250000 -16769.031250 -23657.261719 +v 279574.593750 -17384.699219 -21459.267578 +v 288128.093750 -17816.750000 -18824.242188 +v 205790.625000 -8901.565430 -22790.066406 +v 195904.484375 -8935.475586 -22998.482422 +v 186000.000000 -8969.379883 -23105.130859 +v 186000.000000 -10925.136719 -25752.824219 +v 175938.062500 -8991.404297 -23144.935547 +v 175938.062500 -11022.391602 -25797.191406 +v 165930.875000 -8988.713867 -23150.568359 +v 165930.875000 -11086.072266 -25803.468750 +v 165926.125000 -8988.705078 -23150.568359 +v 165926.765625 -11086.089844 -25803.468750 +v 186000.000000 -12531.755859 -27570.300781 +v 175938.062500 -12690.810547 -27617.798828 +v 175938.062500 -14472.401367 -29285.503906 +v 165930.875000 -12809.014648 -27624.519531 +v 165930.875000 -14648.828125 -29292.630859 +v 165927.250000 -12809.048828 -27624.519531 +v 186000.000000 -14247.355469 -29235.136719 +v 175938.062500 -16355.458008 -30794.589844 +v 175938.062500 -35937.152344 -36299.968750 +v 165984.625000 -34467.531250 -36480.082031 +v 165982.890625 -36810.867188 -36308.804688 +v 155966.437500 -35129.925781 -36480.082031 +v 155964.562500 -37537.488281 -36308.804688 +v 145792.921875 -35666.246094 -36480.082031 +v 145794.703125 -38129.089844 -36308.804688 +v 175938.062500 -38190.945312 -35928.195312 +v 165981.156250 -39138.105469 -35936.941406 +v 155962.687500 -39928.507812 -35936.941406 +v 145796.484375 -40574.976562 -35936.941406 +v 186000.000000 -39231.351562 -35300.789062 +v 175938.062500 -40417.421875 -35361.605469 +v 186000.000000 -41337.777344 -34546.398438 +v 175938.062500 -42604.875000 -34605.914062 +v 175938.062500 -44741.593750 -33666.835938 +v 165977.703125 -43695.953125 -34614.335938 +v 186000.000000 -43395.347656 -33608.933594 +v 186000.000000 -45392.792969 -32494.105469 +v -47988.242188 -19054.439453 -32147.164062 +v -47887.308594 -19054.439453 -32147.164062 +v -47887.308594 -16728.656250 -30802.083984 +v -64136.160156 -12408.341797 -27624.519531 +v -76000.000000 -10441.416992 -25803.460938 +v -86298.500000 -8047.531250 -23148.611328 +v -94287.843750 -5930.130859 -20260.925781 +v -95727.070312 -4100.372070 -17182.402344 +v -101982.093750 -2575.474121 -13934.825195 +v -105155.640625 -1365.634277 -10561.614258 +v -106091.507812 -483.891205 -7094.653320 +v -64152.351562 -45095.703125 -35370.210938 +v -76000.000000 -45095.703125 -35370.203125 +v -94287.843750 -42473.035156 -35923.234375 +v -94287.843750 -45097.863281 -35356.722656 +v -101982.093750 -42476.492188 -35901.312500 +v -101982.093750 -45101.320312 -35335.148438 +v -109817.234375 -42482.457031 -35863.492188 +v -109817.234375 -45107.289062 -35297.921875 +v -117925.164062 -45116.570312 -35239.988281 +v -117922.781250 -47695.390625 -34486.917969 +v -126063.867188 -47708.300781 -34408.082031 +v -126063.867188 -50227.312500 -33474.371094 +v -134552.203125 -47725.890625 -34300.648438 +v -134552.203125 -50244.906250 -33369.855469 +v -143335.140625 -47748.726562 -34161.195312 +v -143335.140625 -50267.742188 -33234.183594 +v -152451.062500 -47777.492188 -33985.542969 +v -152451.062500 -50296.503906 -33063.300781 +v -161938.421875 -47812.863281 -33769.515625 +v -161938.421875 -50331.878906 -32853.136719 +v -172925.734375 -47861.738281 -33477.449219 +v -172925.734375 -50380.484375 -32568.992188 +v -184218.875000 -47926.218750 -33128.125000 +v -184219.750000 -50443.117188 -32229.121094 +v -207258.000000 -48130.636719 -32237.529297 +v -207258.000000 -50632.613281 -31362.718750 +v -64152.355469 -47674.523438 -34614.335938 +v -76000.000000 -47674.527344 -34614.328125 +v -94287.843750 -47676.687500 -34601.136719 +v -101982.093750 -47680.144531 -34580.019531 +v -109817.234375 -47686.109375 -34543.589844 +v -117920.406250 -50214.398438 -33551.085938 +v -126063.867188 -52672.714844 -32364.005859 +v -134552.203125 -52690.304688 -32262.957031 +v -143335.140625 -52713.140625 -32131.787109 +v -152451.062500 -52741.906250 -31966.570312 +v -161938.421875 -52777.281250 -31763.376953 +v -172925.734375 -52825.625000 -31488.660156 +v -184220.625000 -52886.464844 -31160.035156 +v -60000.000000 -45095.703125 -35370.210938 +v -34166.402344 -45095.703125 -35370.210938 +v 25833.611328 -45091.230469 -35370.210938 +v 25833.611328 -42466.964844 -35936.941406 +v 55833.824219 -45025.812500 -35370.210938 +v 55833.824219 -42409.789062 -35936.941406 +v 85820.242188 -42220.800781 -35936.941406 +v 85819.890625 -39600.246094 -36308.804688 +v -64152.355469 -50193.539062 -33675.031250 +v -76000.000000 -50193.539062 -33675.019531 +v -94287.843750 -50195.699219 -33662.187500 +v -101982.093750 -50199.156250 -33641.644531 +v -109817.234375 -50205.121094 -33606.203125 +v -117918.031250 -52659.796875 -32438.195312 +v -126063.867188 -55030.703125 -31082.669922 +v -134552.203125 -55048.292969 -30985.619141 +v -143335.140625 -55071.128906 -30859.642578 +v -152451.062500 -55099.894531 -30700.968750 +v -161938.421875 -55135.265625 -30505.820312 +v -172925.734375 -55183.363281 -30241.978516 +v -60000.000000 -47674.523438 -34614.335938 +v -34166.402344 -47674.523438 -34614.335938 +v 25833.611328 -47669.500000 -34614.335938 +v 55833.824219 -47595.988281 -34614.335938 +v 85820.593750 -44809.589844 -35370.210938 +v -64152.359375 -52638.941406 -32558.007812 +v -76000.000000 -52638.941406 -32557.998047 +v -94287.843750 -52641.101562 -32545.591797 +v -101982.093750 -52644.558594 -32525.732422 +v -109817.234375 -52650.523438 -32491.466797 +v -117915.656250 -55017.781250 -31153.939453 +v -126063.867188 -57287.472656 -29636.042969 +v -134552.203125 -57305.066406 -29543.509766 +v -143335.140625 -57327.902344 -29423.396484 +v -152451.062500 -57356.664062 -29272.107422 +v -161938.421875 -57392.039062 -29086.041016 +v -60000.000000 -50193.539062 -33675.031250 +v -34166.402344 -50193.539062 -33675.031250 +v 25833.611328 -50187.972656 -33675.031250 +v 55833.824219 -50106.554688 -33675.031250 +v 85820.953125 -47353.003906 -34614.335938 +v -64152.359375 -54996.925781 -31268.990234 +v -76000.000000 -54996.929688 -31268.982422 +v -94287.843750 -54999.089844 -31257.066406 +v -101982.093750 -55002.546875 -31237.992188 +v -109817.234375 -55008.511719 -31205.082031 +v -117913.273438 -57274.550781 -29704.011719 +v -126063.867188 -59429.226562 -28029.810547 +v -134552.203125 -59446.820312 -27942.292969 +v -143335.140625 -59469.656250 -27828.689453 +v -152451.062500 -59498.417969 -27685.599609 +v -60000.000000 -52638.941406 -32558.007812 +v -34166.402344 -52638.941406 -32558.007812 +v 25833.611328 -52632.847656 -32558.007812 +v 55833.824219 -52543.753906 -32558.007812 +v 85821.304688 -49837.425781 -33675.031250 +v -64152.363281 -57253.699219 -29813.693359 +v -76000.000000 -57253.703125 -29813.683594 +v -94287.843750 -57255.859375 -29802.324219 +v -101982.093750 -57259.320312 -29784.136719 +v -109817.234375 -57265.285156 -29752.759766 +v -117910.898438 -59416.300781 -28094.113281 +v -126063.867188 -61442.160156 -26269.656250 +v -134552.203125 -61459.753906 -26187.634766 +v -143335.140625 -61482.589844 -26081.164062 +v -60000.000000 -54996.925781 -31268.990234 +v -34166.402344 -54996.925781 -31268.990234 +v 25833.611328 -54990.328125 -31268.990234 +v 55833.824219 -54893.835938 -31268.990234 +v 85821.664062 -52249.250000 -32558.007812 +v -64152.363281 -59395.453125 -28197.832031 +v -76000.000000 -59395.457031 -28197.824219 +v -94287.843750 -59397.613281 -28187.080078 +v -101982.093750 -59401.074219 -28169.878906 +v -109817.234375 -59407.039062 -28140.201172 +v -117908.523438 -61429.234375 -26329.935547 +v -126063.867188 -63312.871094 -24361.658203 +v -134552.203125 -63330.464844 -24285.593750 +v -60000.000000 -57253.699219 -29813.693359 +v -34166.402344 -57253.699219 -29813.693359 +v 25833.611328 -57246.617188 -29813.693359 +v 55833.824219 -57143.039062 -29813.693359 +v 85822.015625 -54574.859375 -31268.990234 +v -64152.363281 -61408.386719 -26427.126953 +v -76000.000000 -61408.390625 -26427.119141 +v -94287.843750 -61410.550781 -26417.048828 +v -101982.093750 -61414.007812 -26400.927734 +v -109817.234375 -61419.972656 -26373.113281 +v -117906.148438 -63299.941406 -24417.572266 +v -126063.867188 -65032.597656 -22316.509766 +v -60000.000000 -59395.453125 -28197.832031 +v -34166.402344 -59395.453125 -28197.832031 +v 25833.611328 -59387.910156 -28197.832031 +v 55833.824219 -59277.609375 -28197.832031 +v 85822.367188 -56800.640625 -29813.693359 +v -64152.367188 -63279.097656 -24507.691406 +v -76000.000000 -63279.101562 -24507.683594 +v -94287.843750 -63281.257812 -24498.343750 +v -101982.093750 -63284.718750 -24483.394531 +v -109817.234375 -63290.683594 -24457.601562 +v -117903.773438 -65019.664062 -22367.742188 +v -60000.000000 -61408.386719 -26427.126953 +v -34166.402344 -61408.386719 -26427.126953 +v 25833.611328 -61400.414062 -26427.126953 +v 55833.824219 -61283.792969 -26427.126953 +v 85822.726562 -58912.980469 -28197.832031 +v -64152.367188 -64998.824219 -22450.283203 +v -76000.000000 -64998.824219 -22450.277344 +v -94287.843750 -65000.984375 -22441.720703 +v -101982.093750 -65004.445312 -22428.027344 +v -109817.234375 -65010.410156 -22404.398438 +v -60000.000000 -63279.097656 -24507.691406 +v -34166.402344 -63279.097656 -24507.691406 +v 25833.611328 -63270.722656 -24507.691406 +v 55833.824219 -63148.230469 -24507.691406 +v 85823.078125 -60898.269531 -26427.126953 +v -64152.371094 -66561.796875 -20268.656250 +v -76000.000000 -66561.804688 -20268.650391 +v -94287.843750 -66563.960938 -20260.925781 +v -101982.093750 -66567.421875 -20248.562500 +v -60000.000000 -64998.824219 -22450.283203 +v -34166.402344 -64998.824219 -22450.283203 +v 25833.611328 -64990.078125 -22450.283203 +v 55833.824219 -64862.191406 -22450.283203 +v 85823.429688 -62743.289062 -24507.691406 +v -64152.371094 -67962.304688 -17976.611328 +v -76000.000000 -67962.304688 -17976.607422 +v -94287.843750 -67964.468750 -17969.755859 +v -60000.000000 -66561.796875 -20268.656250 +v -34166.402344 -66561.796875 -20268.656250 +v 25833.611328 -66552.718750 -20268.656250 +v 55833.824219 -66419.921875 -20268.656250 +v 85823.789062 -64439.394531 -22450.283203 +v -64152.371094 -69194.625000 -15587.953125 +v -76000.000000 -69194.625000 -15587.948242 +v -60000.000000 -67962.304688 -17976.611328 +v -34166.402344 -67962.304688 -17976.611328 +v 25833.611328 -67952.921875 -17976.611328 +v 55833.824219 -67815.734375 -17976.611328 +v 85824.140625 -65980.898438 -20268.656250 +v -64152.375000 -70253.046875 -13116.480469 +v -60000.000000 -69194.625000 -15587.953125 +v -34166.402344 -69194.625000 -15587.953125 +v 25833.611328 -69184.984375 -15587.953125 +v 55833.824219 -69043.921875 -15587.953125 +v 85824.492188 -67362.171875 -17976.611328 +v -60000.000000 -71131.843750 -10575.997070 +v -34166.402344 -71825.304688 -7980.305664 +v 25833.611328 -72317.398438 -5343.207031 +v 55833.824219 -72471.109375 -2678.504639 +v 85826.625000 -71969.023438 -2678.504639 +v -60000.000000 -70253.046875 -13116.480469 +v -34166.402344 -70253.046875 -13116.480469 +v 25833.611328 -70243.171875 -13116.480469 +v 55833.824219 -70098.789062 -13116.480469 +v 85824.851562 -68577.562500 -15587.953125 +v -64152.378906 -72327.710938 -5343.207031 +v -76000.000000 -71825.304688 -7980.303223 +v -76000.000000 -72327.710938 -5343.205566 +v -94287.843750 -71827.468750 -7977.262207 +v -94287.843750 -72329.875000 -5341.169434 +v -101982.093750 -71830.921875 -7972.394043 +v -101982.093750 -72333.335938 -5337.910156 +v -109817.234375 -71836.890625 -7963.995117 +v -109817.234375 -72339.296875 -5332.286621 +v -117887.132812 -72348.531250 -5323.583984 +v -117884.757812 -72654.164062 -2668.669189 +v -126063.867188 -72667.125000 -2662.544434 +v -126063.867188 -72770.273438 0.000000 +v -134552.203125 -72684.718750 -2654.231201 +v -134552.203125 -72787.867188 0.000000 +v -143335.140625 -72707.554688 -2643.439941 +v -143335.140625 -72810.703125 0.000000 +v -152451.062500 -72736.312500 -2629.847900 +v -152451.062500 -72839.468750 0.000000 +v -161938.421875 -72771.687500 -2613.131348 +v -161938.421875 -72874.835938 0.000000 +v -172925.734375 -72817.921875 -2590.530762 +v -172925.734375 -72921.062500 0.000000 +v -184232.906250 -72864.085938 -2563.463623 +v -184233.781250 -72967.156250 0.000000 +v -207258.000000 -72920.640625 -2494.583984 +v -64152.378906 -72633.351562 -2678.504639 +v -76000.000000 -72633.351562 -2678.503906 +v -94287.843750 -72635.515625 -2677.483154 +v -101982.093750 -72638.968750 -2675.849365 +v -109817.234375 -72644.937500 -2673.030273 +v -117882.382812 -72757.312500 0.000000 +v -126063.867188 -72587.460938 3547.687988 +v -134552.203125 -72605.054688 3536.610840 +v -143335.140625 -72627.890625 3522.232422 +v -152451.062500 -72656.656250 3504.121582 +v -161938.421875 -72692.023438 3481.847900 +v -172925.734375 -72738.265625 3451.733887 +v -60000.000000 -72633.351562 -2678.504639 +v -60000.000000 -72736.500000 0.000000 +v -64152.382812 -72736.500000 0.000000 +v -60000.000000 -72553.687500 3568.954102 +v -64152.382812 -72553.687500 3568.954102 +v -60000.000000 -72014.281250 7105.191895 +v -64152.386719 -72014.281250 7105.191895 +v -60000.000000 -71131.843750 10575.997070 +v -64152.386719 -71131.843750 10575.997070 +v -60000.000000 -69919.914062 13948.654297 +v -64152.390625 -69919.914062 13948.654297 +v -60000.000000 -68392.046875 17190.445312 +v -64152.390625 -68392.046875 17190.445312 +v -60000.000000 -66561.796875 20268.656250 +v -64152.394531 -66561.796875 20268.656250 +v -60000.000000 -64442.718750 23150.568359 +v -64152.398438 -64442.718750 23150.568359 +v -60000.000000 -62048.351562 25803.468750 +v -64152.398438 -62048.351562 25803.468750 +v -60000.000000 -59395.453125 28197.832031 +v -64152.402344 -59395.453125 28197.832031 +v -60000.000000 -56513.539062 30316.914062 +v -64152.402344 -56513.539062 30316.914062 +v -60000.000000 -53435.328125 32147.164062 +v -64152.406250 -53435.328125 32147.164062 +v -60000.000000 -50193.539062 33675.031250 +v -76000.000000 -72736.500000 0.000000 +v -94287.843750 -72738.664062 0.000000 +v -101982.093750 -72742.117188 0.000000 +v -109817.234375 -72748.085938 0.000000 +v -109817.234375 -72565.273438 3561.659668 +v -117879.210938 -72574.492188 3555.853516 +v -109817.234375 -72025.867188 7090.670410 +v -117876.039062 -72035.085938 7079.116211 +v -109817.234375 -71143.429688 10554.381836 +v -117872.875000 -71152.640625 10537.191406 +v -109817.234375 -69931.500000 13920.145508 +v -117869.703125 -69940.703125 13897.484375 +v -109817.234375 -68403.632812 17155.310547 +v -117866.539062 -68412.835938 17127.396484 +v -109817.234375 -66573.382812 20227.230469 +v -117863.367188 -66582.585938 20194.332031 +v -109817.234375 -64454.300781 23103.253906 +v -76000.000000 -72553.687500 3568.953125 +v -94287.843750 -72555.851562 3567.593018 +v -101982.093750 -72559.304688 3565.416016 +v -76000.000000 -72014.289062 7105.189941 +v -94287.843750 -72016.445312 7102.482422 +v -101982.093750 -72019.906250 7098.147949 +v -76000.000000 -71131.843750 10575.994141 +v -94287.843750 -71134.007812 10571.963867 +v -101982.093750 -71137.460938 10565.512695 +v -76000.000000 -69919.914062 13948.649414 +v -94287.843750 -69922.078125 13943.334961 +v -101982.093750 -69925.531250 13934.825195 +v -76000.000000 -68392.046875 17190.441406 +v -94287.843750 -68394.210938 17183.890625 +v -101982.093750 -68397.664062 17173.404297 +v -76000.000000 -66561.804688 20268.650391 +v -94287.843750 -66563.960938 20260.925781 +v -101982.093750 -66567.421875 20248.562500 +v -76000.000000 -64442.718750 23150.562500 +v -94287.843750 -64444.878906 23141.740234 +v -101982.093750 -64448.335938 23127.619141 +v -76000.000000 -62048.355469 25803.460938 +v -94287.843750 -62050.515625 25793.628906 +v -101982.093750 -62053.972656 25777.888672 +v -76000.000000 -59395.457031 28197.824219 +v -94287.843750 -59397.613281 28187.080078 +v -76000.000000 -56513.542969 30316.906250 +v -94287.843750 -71134.007812 -10571.963867 +v -101982.093750 -70258.664062 -13103.477539 +v -109817.234375 -69206.210938 -15556.093750 +v -117896.640625 -69215.453125 -15530.668945 +v -126063.867188 -69228.398438 -15495.069336 +v -134552.203125 -68013.671875 -17813.701172 +v -143335.140625 -66636.000000 -20003.316406 +v -152451.062500 -65101.789062 -22042.458984 +v -161938.421875 -63417.437500 -23909.541016 +v -172925.734375 -61594.148438 -25559.142578 +v -184223.265625 -59637.304688 -26987.003906 +v -207258.000000 -57645.019531 -27766.523438 +v -60000.000000 -1357.925659 10575.997070 +v -64136.156250 -2569.854736 13948.654297 +v -64136.156250 -1357.925659 10575.997070 +v -76000.000000 -2569.856445 13948.649414 +v -76000.000000 -1357.927368 10575.994141 +v -86298.500000 -2570.334229 13947.474609 +v -60000.000000 -475.483948 7105.191895 +v -64136.156250 -475.483948 7105.191895 +v -47887.308594 -475.483948 7105.191895 +v -47887.308594 63.918869 3568.954102 +v -60000.000000 63.918869 3568.954102 +v -47887.308594 246.731247 0.000000 +v -60000.000000 -475.483948 -7105.191895 +v -64136.156250 63.918869 -3568.954102 +v -64136.156250 -475.483948 -7105.191895 +v -76000.000000 63.917202 -3568.953125 +v -60000.000000 -1357.925659 -10575.997070 +v -47887.308594 -1357.925659 -10575.997070 +v -47887.308594 -2569.854736 -13948.654297 +v -34166.402344 -71131.843750 -10575.997070 +v 25833.611328 -71815.093750 -7980.305664 +v 55833.824219 -72166.500000 -5343.207031 +v 85826.265625 -71667.593750 -5343.207031 +v -34166.402344 -72736.500000 0.000000 +v -34166.402344 -72553.687500 3568.954102 +v -34166.402344 -72014.281250 7105.191895 +v -34166.402344 -71131.843750 10575.997070 +v -34166.402344 -69919.914062 13948.654297 +v -34166.402344 -68392.046875 17190.445312 +v -34166.402344 -66561.796875 20268.656250 +v -34166.402344 -64442.718750 23150.568359 +v -34166.402344 -62048.351562 25803.468750 +v -34166.402344 -59395.453125 28197.832031 +v -34166.402344 -56513.539062 30316.914062 +v -34166.402344 -53435.328125 32147.164062 +v -34166.402344 -50193.539062 33675.031250 +v -34166.402344 -46820.882812 34886.957031 +v -76000.000000 -12408.343750 -27624.511719 +v -86298.500000 -10441.894531 -25801.287109 +v -94287.843750 -8049.213379 -23141.740234 +v -95727.070312 -5930.621582 -20259.171875 +v -101982.093750 -4103.339355 -17173.404297 +v -105155.640625 -2577.563477 -13929.683594 +v -106013.156250 -1366.272949 -10560.421875 +v -76000.000000 246.729584 0.000000 +v -86298.500000 63.439587 3568.652344 +v -94287.843750 -477.645508 7102.482422 +v -95727.070312 -1360.578003 10571.047852 +v -101982.093750 -2575.474121 13934.825195 +v -105155.640625 -4105.428711 17167.066406 +v -106640.414062 -4106.555176 17163.650391 +v -76000.000000 -4097.721680 17190.441406 +v -86298.500000 -5928.448730 20266.941406 +v -94287.843750 -8049.213379 23141.740234 +v -95727.070312 -10444.067383 25791.394531 +v -101982.093750 -13099.934570 28169.878906 +v -105155.640625 -15983.936523 30275.683594 +v -107032.976562 -15985.377930 30267.976562 +v -107111.539062 -19063.652344 32094.910156 +v -86298.500000 246.251968 0.000000 +v -86298.500000 -4098.199219 17188.992188 +v -94287.843750 -4099.881348 17183.890625 +v -101982.093750 -53440.949219 32115.294922 +v -109817.234375 -53446.914062 32081.460938 +v -117847.523438 -53456.093750 32029.404297 +v -126063.867188 -50227.312500 33474.371094 +v -134552.203125 -50244.906250 33369.855469 +v -143335.140625 -50267.742188 33234.183594 +v -152451.062500 -50296.503906 33063.300781 +v -161938.421875 -50331.878906 32853.136719 +v -172925.734375 -50380.484375 32568.992188 +v -184247.812500 -50443.292969 32228.212891 +v -207258.000000 -50632.613281 31362.718750 +v -101982.093750 -71137.460938 -10565.512695 +v -109817.234375 -71143.429688 -10554.381836 +v -117889.507812 -71846.125000 -7950.992676 +v -126063.867188 -72361.484375 -5311.369141 +v -134552.203125 -72379.078125 -5294.785156 +v -143335.140625 -72401.914062 -5273.258301 +v -152451.062500 -72430.679688 -5246.144043 +v -161938.421875 -72466.054688 -5212.797363 +v -172925.734375 -72512.320312 -5167.712891 +v -184232.031250 -72558.703125 -5113.722656 +v -207258.000000 -72617.070312 -4976.313965 +v -94287.843750 -19056.599609 -32134.904297 +v -94287.843750 -16730.818359 -30790.337891 +v -95727.070312 -16731.308594 -30787.671875 +v -94287.843750 61.757313 3567.593018 +v -95727.070312 -478.136292 7101.867188 +v -101982.093750 -1363.544922 10565.512695 +v -105155.640625 -2577.563477 13929.683594 +v -106561.945312 -2578.627930 13927.064453 +v -94287.843750 -5930.130859 20260.925781 +v -95727.070312 -8049.704102 23139.736328 +v -101982.093750 -10447.035156 25777.888672 +v -105155.640625 -13102.023438 28159.484375 +v -106954.429688 -13103.401367 28152.630859 +v -95727.070312 -14511.341797 -29278.923828 +v -101982.093750 -12413.960938 -27597.132812 +v -105155.640625 -10449.124023 -25768.376953 +v -105699.914062 -8055.162109 -23117.445312 +v -109817.234375 -8058.636230 -23103.253906 +v -114584.210938 -5944.600586 -20209.185547 +v -114924.171875 -4114.755371 -17138.781250 +v -117934.609375 -4118.601074 -17127.117188 +v -124012.781250 -2600.020264 -13874.419922 +v -124067.453125 -1388.184204 -10519.539062 +v -126063.867188 -1391.699951 -10512.978516 +v -133441.359375 -524.300659 -7043.998535 +v -95727.070312 -5930.621582 20259.171875 +v -229622.421875 -1652.788574 0.000000 +v -235007.421875 -2070.391846 0.000000 +v -240147.796875 -2542.242188 0.000000 +v -245173.421875 -3085.705322 0.000000 +v -246000.000000 -3183.940186 0.000000 +v -246000.000000 -3183.940430 0.000000 +v -247818.421875 -3583.482666 -3071.925049 +v -250013.218750 -4384.329102 -6077.923340 +v -254646.390625 -5068.701660 -5992.479492 +v -259052.109375 -5833.430664 -5902.743164 +v -263209.531250 -6683.110840 -5808.627441 +v -229622.421875 -1831.427612 -3203.935059 +v -235007.421875 -2247.886230 -3168.866211 +v -240147.796875 -2718.427490 -3132.496582 +v -245173.421875 -3260.366699 -3093.760254 +v -246000.000000 -3358.324463 -3087.051270 +v -246000.000000 -3358.324707 -3087.051270 +v -247688.000000 -4079.668945 -6117.884277 +v -250013.218750 -5219.019531 -9046.919922 +v -254646.390625 -5893.867188 -8919.737305 +v -259052.109375 -6647.882324 -8786.166016 +v -229622.421875 -2358.516357 -6378.499512 +v -235007.421875 -2771.598633 -6308.684082 +v -240147.796875 -3238.276123 -6236.277832 +v -245173.421875 -3775.718750 -6159.160645 +v -246000.000000 -3872.859619 -6145.803711 +v -246000.000000 -4714.618652 -9147.958984 +v -247557.453125 -4902.389648 -9109.662109 +v -246000.000000 -5870.674805 -12065.218750 +v -247426.750000 -6039.017090 -12019.004883 +v -246000.000000 -7328.101562 -14869.283203 +v -247295.906250 -7476.906738 -14817.615234 +v -246000.000000 -9073.971680 -17531.853516 +v -229622.421875 -3220.812988 -9494.324219 +v -235007.421875 -3628.371094 -9390.404297 +v -240147.796875 -4088.728027 -9282.628906 +v -245173.421875 -4618.814453 -9167.840820 +v -229622.421875 -4405.075195 -12522.038086 +v -235007.421875 -4805.046875 -12384.978516 +v -240147.796875 -5256.723145 -12242.833984 +v -245173.421875 -5776.706543 -12091.439453 +v -229622.421875 -5898.061035 -15432.271484 +v -235007.421875 -6288.467773 -15263.358398 +v -240147.796875 -6729.201172 -15088.177734 +v -245173.421875 -7236.447754 -14901.597656 +v -218334.093750 -17736.716797 -28213.787109 +v -218298.500000 -17735.398438 -28215.423828 +v -207258.000000 -59772.285156 -26261.617188 +v -207258.000000 -61771.601562 -24612.496094 +v -207258.000000 -63629.660156 -22824.859375 +v -207258.000000 -65337.753906 -20908.724609 +v -207258.000000 -66890.156250 -18876.900391 +v -207258.000000 -68281.187500 -16742.240234 +v -207258.000000 -69505.171875 -14517.599609 +v -207258.000000 -70556.429688 -12215.832031 +v -207258.000000 -71429.289062 -9849.791992 +v -207258.000000 -72118.062500 -7432.334473 +v -207258.000000 -72305.757812 6617.311035 +v -207258.000000 -71429.289062 9849.791992 +v -207258.000000 -70225.554688 12990.864258 +v -207258.000000 -68708.023438 16010.056641 +v -207258.000000 -66890.156250 18876.900391 +v -207258.000000 -64785.406250 21560.925781 +v -207258.000000 -62407.238281 24031.662109 +v -207258.000000 -59772.285156 26261.617188 +v -207258.000000 -56909.863281 28235.191406 +v -207258.000000 -53852.476562 29939.765625 +v -235000.937500 -54190.800781 28543.791016 +v -235000.937500 -57179.496094 26918.693359 +v -235000.937500 -59977.601562 25037.138672 +v -235000.937500 -62553.351562 22911.160156 +v -235000.937500 -68712.570312 15263.570312 +v -235000.937500 -70196.000000 12385.150391 +v -235000.937500 -71372.687500 9390.534180 +v -235000.937500 -72229.468750 6308.771484 +v -235000.937500 -72753.187500 3168.910156 +v -235000.937500 -72930.679688 0.000000 +v -235000.937500 -72830.531250 -2378.271240 +v -235000.937500 -72533.781250 -4744.287598 +v -235000.937500 -72045.984375 -7085.793457 +v -235000.937500 -71372.687500 -9390.534180 +v -235000.937500 -70519.445312 -11646.254883 +v -235000.937500 -69491.804688 -13840.700195 +v -235000.937500 -68295.320312 -15961.615234 +v -235000.937500 -66935.546875 -17996.744141 +v -235000.937500 -65418.023438 -19933.832031 +v -235000.937500 -63748.304688 -21760.625000 +v -235000.937500 -61931.996094 -23464.912109 +v -235000.937500 -59977.601562 -25037.138672 +v -235000.937500 -57898.128906 -26471.878906 +v -235000.937500 -55706.984375 -27764.052734 +v -235000.937500 -53417.570312 -28908.583984 +v -235000.937500 -51043.281250 -29900.398438 +v -235007.421875 -3628.371094 9390.404297 +v -240147.796875 -4088.728027 9282.628906 +v -245173.421875 -4618.814453 9167.840820 +v -246000.000000 -4714.618652 9147.958984 +v -240147.796875 -5256.723145 12242.833984 +v -245173.421875 -5776.706543 12091.439453 +v -246000.000000 -5870.674805 12065.218750 +v -245173.421875 -7236.447754 14901.597656 +v -246000.000000 -7328.101562 14869.283203 +v -250013.218750 -26605.830078 -29359.154297 +v -254646.390625 -27036.632812 -28946.421875 +v -248208.812500 -4145.854980 6109.088867 +v -250013.218750 -3874.114990 3052.954590 +v -248338.640625 -5000.297363 9090.025391 +v -250013.218750 -4384.329102 6077.923340 +v -254646.390625 -5068.701660 5992.479492 +v -248468.343750 -6167.048828 11984.472656 +v -250013.218750 -5219.019531 9046.919922 +v -254646.390625 -5893.867188 8919.737305 +v -259052.109375 -6647.882324 8786.166016 +v -248727.296875 -9385.009766 17401.890625 +v -250013.218750 -9541.764648 17338.212891 +v -254646.390625 -12148.826172 19525.062500 +v -248597.890625 -7632.989258 14764.417969 +v -250013.218750 -6365.367676 11931.957031 +v -254646.390625 -7027.134277 11764.217773 +v -259052.109375 -7766.435547 11588.050781 +v -250013.218750 -7810.555664 14705.050781 +v -254646.390625 -8455.831055 14498.327148 +v -259052.109375 -9176.583008 14281.216797 +v -254646.390625 -45160.460938 30167.714844 +v -259052.109375 -45404.648438 29715.958984 +v -263209.531250 -45672.609375 29242.154297 +v -267100.875000 -45965.332031 28746.007812 +v -270651.062500 -46274.789062 28240.177734 +v -250013.218750 -64890.113281 19803.458984 +v -246000.000000 -62607.066406 22319.320312 +v -246000.000000 -64891.042969 20024.632812 +v -245137.765625 -62603.031250 22369.904297 +v -245134.343750 -64890.789062 20070.193359 +v -240147.796875 -62579.042969 22647.890625 +v -240147.796875 -64886.609375 20319.421875 +v -250013.218750 -66894.523438 17338.212891 +v -246000.000000 -66912.429688 17531.853516 +v -245130.937500 -66915.546875 17571.898438 +v -254646.390625 -66865.593750 17094.472656 +v -254646.390625 -68577.046875 14498.327148 +v -250013.218750 -68625.734375 14705.050781 +v -254646.390625 -70005.742188 11764.217773 +v -250013.218750 -70070.921875 11931.957031 +v -254646.390625 -71139.015625 8919.737305 +v -246000.000000 -68658.304688 14869.283203 +v -250013.218750 -72562.171875 3052.954590 +v -246000.000000 -72113.539062 6145.803711 +v -246000.000000 -72628.078125 3087.051270 +v -245117.281250 -72125.523438 6160.060547 +v -245113.875000 -72640.976562 3094.239746 +v -240147.796875 -72183.695312 6236.277832 +v -240147.796875 -72703.546875 3132.496582 +v -250013.218750 -72735.093750 0.000000 +v -246000.000000 -72802.460938 0.000000 +v -245110.453125 -72815.703125 0.000000 +v -240147.796875 -72879.726562 0.000000 +v -254646.390625 -72639.515625 0.000000 +v -254646.390625 -72543.062500 -2259.036133 +v -250013.218750 -72637.523438 -2291.246582 +v -254646.390625 -72257.265625 -4506.431641 +v -250013.218750 -72348.429688 -4570.686523 +v -254646.390625 -71787.468750 -6730.545410 +v -250013.218750 -71873.210938 -6826.512695 +v -254646.390625 -71139.015625 -8919.737305 +v -250013.218750 -71217.273438 -9046.919922 +v -254646.390625 -70317.257812 -11062.367188 +v -250013.218750 -70386.023438 -11220.099609 +v -254646.390625 -69327.531250 -13146.792969 +v -250013.218750 -69384.882812 -13334.246094 +v -254646.390625 -68175.195312 -15161.375000 +v -250013.218750 -68219.242188 -15377.553711 +v -254646.390625 -66865.593750 -17094.472656 +v -250013.218750 -66894.523438 -17338.212891 +v -254646.390625 -65404.066406 -18934.445312 +v -250013.218750 -65416.128906 -19204.421875 +v -254646.390625 -63795.960938 -20669.650391 +v -250013.218750 -63789.460938 -20964.369141 +v -254646.390625 -62046.671875 -22288.492188 +v -250013.218750 -62019.980469 -22606.292969 +v -254646.390625 -60164.390625 -23781.896484 +v -250013.218750 -60115.972656 -24120.990234 +v -254646.390625 -58161.648438 -25144.703125 +v -250013.218750 -58090.113281 -25503.228516 +v -254646.390625 -56051.355469 -26372.093750 +v -250013.218750 -55955.460938 -26748.119141 +v -254646.390625 -53846.417969 -27459.244141 +v -250013.218750 -53725.070312 -27850.771484 +v -254646.390625 -51559.738281 -28401.333984 +v -250013.218750 -51411.996094 -28806.292969 +v -254646.390625 -49204.226562 -29193.539062 +v -250013.218750 -49029.296875 -29609.794922 +v -254646.390625 -46792.785156 -29831.041016 +v -246000.000000 -72704.070312 -2316.835938 +v -245107.906250 -72717.179688 -2322.267090 +v -240147.796875 -72780.320312 -2350.942871 +v -246000.000000 -72412.523438 -4621.733398 +v -245105.343750 -72425.171875 -4632.598633 +v -240147.796875 -72485.765625 -4689.771484 +v -246000.000000 -71933.273438 -6902.753906 +v -245102.781250 -71945.132812 -6919.027344 +v -240147.796875 -72001.570312 -7004.371582 +v -246000.000000 -71271.781250 -9147.958984 +v -245100.218750 -71282.531250 -9169.586914 +v -240147.796875 -71333.242188 -9282.628906 +v -246000.000000 -70433.500000 -11345.410156 +v -245097.656250 -70442.828125 -11372.308594 +v -240147.796875 -70486.304688 -11512.429688 +v -246000.000000 -69423.875000 -13483.168945 +v -245095.093750 -69431.476562 -13515.225586 +v -240147.796875 -69466.257812 -13681.658203 +v -246000.000000 -68248.367188 -15549.295898 +v -245092.531250 -68253.945312 -15586.368164 +v -240147.796875 -68278.609375 -15778.202148 +v -246000.000000 -66912.429688 -17531.853516 +v -245089.984375 -66915.687500 -17573.769531 +v -240147.796875 -66928.867188 -17789.945312 +v -246000.000000 -65421.511719 -19418.904297 +v -245087.421875 -65422.171875 -19465.460938 +v -240147.796875 -65422.554688 -19704.775391 +v -246000.000000 -63781.070312 -21198.507812 +v -245084.859375 -63778.851562 -21249.472656 +v -240147.796875 -63765.171875 -21510.576172 +v -246000.000000 -61996.605469 -22858.767578 +v -245082.296875 -61991.234375 -22913.878906 +v -240147.796875 -61962.277344 -23195.279297 +v -246000.000000 -60076.472656 -24390.382812 +v -245079.734375 -60067.699219 -24449.347656 +v -240147.796875 -60022.316406 -24749.441406 +v -246000.000000 -58033.457031 -25788.058594 +v -245077.171875 -58021.042969 -25850.576172 +v -240147.796875 -57958.203125 -26167.693359 +v -246000.000000 -55880.726562 -27046.853516 +v -245074.609375 -55864.460938 -27112.601562 +v -240147.796875 -55783.242188 -27445.017578 +v -246000.000000 -53631.449219 -28161.820312 +v -245072.046875 -53611.132812 -28230.466797 +v -240147.796875 -53510.734375 -28576.398438 +v -246000.000000 -51298.789062 -29128.013672 +v -245069.500000 -51274.253906 -29199.208984 +v -240147.796875 -51153.980469 -29556.816406 +v -246000.000000 -48895.906250 -29940.490234 +v -245066.937500 -48867.007812 -30013.871094 +v -240147.796875 -48726.285156 -30381.251953 +v -254646.390625 -39351.960938 -30767.101562 +v -259052.109375 -39671.566406 -30306.369141 +v -263209.531250 -40023.808594 -29823.152344 +v -267100.875000 -40410.082031 -29317.148438 +v -270721.656250 -43177.113281 -28655.253906 +v -274112.250000 -45865.914062 -27819.705078 +v -277260.718750 -46244.058594 -27259.589844 +v -280190.000000 -46643.496094 -26681.289062 +v -282914.312500 -47062.851562 -26085.980469 +v -285447.937500 -47500.734375 -25474.847656 +v -254646.390625 -36845.875000 -30738.042969 +v -259052.109375 -37198.015625 -30277.746094 +v -263209.531250 -37586.621094 -29794.986328 +v -267100.875000 -38013.257812 -29289.458984 +v -270723.468750 -40828.710938 -28790.150391 +v -274112.250000 -43581.109375 -28107.574219 +v -277260.718750 -44010.261719 -27541.664062 +v -280190.000000 -44463.957031 -26957.376953 +v -282914.312500 -44940.593750 -26355.910156 +v -285447.937500 -45438.585938 -25738.453125 +v -254646.390625 -34348.390625 -30536.660156 +v -259052.109375 -34732.960938 -30079.378906 +v -263209.531250 -35157.804688 -29599.781250 +v -267100.875000 -35624.664062 -29097.566406 +v -270725.281250 -38476.320312 -28762.679688 +v -274112.250000 -41280.476562 -28240.166016 +v -277260.718750 -41760.996094 -27671.585938 +v -280190.000000 -42269.316406 -27084.544922 +v -282914.312500 -42803.640625 -26480.238281 +v -285447.937500 -43362.156250 -25859.869141 +v -250013.218750 -24244.886719 -28504.435547 +v -254646.390625 -24702.630859 -28103.718750 +v -259052.109375 -25212.437500 -27682.871094 +v -254646.390625 -16227.041016 -23298.367188 +v -250013.218750 -7810.555664 -14705.050781 +v -250013.218750 -6365.367676 -11931.957031 +v -254646.390625 -7027.134277 -11764.217773 +v -254646.390625 -10167.286133 17094.472656 +v -259052.109375 -12821.628906 19232.677734 +v -254646.390625 -22441.763672 27112.740234 +v -259052.109375 -22980.925781 26706.732422 +v -245120.703125 -71282.296875 9169.098633 +v -240147.796875 -70165.250000 12242.833984 +v -245141.171875 -60068.281250 24445.441406 +v -240147.796875 -57244.875000 26609.375000 +v -240147.796875 -71333.242188 9282.628906 +v -240147.796875 -60022.316406 24749.441406 +v -289982.062500 -38714.675781 24102.394531 +v -292046.875000 -39544.425781 23448.480469 +v -292046.875000 -37105.621094 22869.998047 +v -289973.125000 -36183.425781 23510.429688 +v -292046.875000 -34735.785156 22075.523438 +v -289964.156250 -33722.937500 22696.261719 +v -287805.093750 -20457.093750 14015.029297 +v -285447.937500 -19139.460938 14367.971680 +v -288000.000000 -18052.701172 9623.844727 +v -288000.000000 -17143.232422 7296.887207 +v -287805.093750 -17018.117188 7312.912598 +v -288000.000000 -16481.021484 4902.212402 +v -287805.093750 -16354.077148 4912.978516 +v -285447.937500 -14907.739258 5036.702637 +v -288000.000000 -16076.236328 2462.392334 +v -287805.093750 -15948.174805 2467.800293 +v -285447.937500 -14489.103516 2529.947266 +v -282914.312500 -13088.988281 2590.639893 +v -288000.000000 -15939.048828 0.000000 +v -287805.093750 -15810.607422 0.000000 +v -285447.937500 -14347.221680 0.000000 +v -282914.312500 -12942.970703 0.000000 +v -280190.000000 -11602.623047 0.000000 +v -288000.000000 -16076.236328 -2462.392334 +v -287805.093750 -15948.174805 -2467.800293 +v -285447.937500 -14489.103516 -2529.947266 +v -282914.312500 -13088.988281 -2590.639893 +v -280190.000000 -11752.582031 -2649.760742 +v -279718.750000 -11386.852539 0.000000 +v -288000.000000 -16481.021484 -4902.212402 +v -287805.093750 -16354.077148 -4912.978516 +v -285447.937500 -14907.739258 -5036.702637 +v -282914.312500 -13519.826172 -5157.531250 +v -280190.000000 -12195.049805 -5275.231445 +v -279710.562500 -11533.747070 -2659.571289 +v -288000.000000 -17143.232422 -7296.887207 +v -287805.093750 -17018.117188 -7312.912598 +v -285447.937500 -15592.610352 -7497.074707 +v -282914.312500 -14224.660156 -7676.926758 +v -280190.000000 -12918.909180 -7852.122070 +v -279702.375000 -11974.450195 -5295.093262 +v -279620.156250 -11492.996094 -2661.402588 +v -299959.343750 -35134.238281 -16658.103516 +v -299959.343750 -36416.839844 -17516.498047 +v -299959.343750 -37760.578125 -18281.416016 +v -299959.343750 -42078.867188 -19982.802734 +v -299959.343750 -51289.597656 -20436.582031 +v -297441.718750 -50439.726562 -21541.863281 +v -293959.968750 -49409.910156 -22895.687500 +v -292046.875000 -48911.738281 -23558.310547 +v -299959.343750 -52806.113281 -20114.294922 +v -297441.718750 -52073.707031 -21202.146484 +v -293959.968750 -51185.828125 -22534.621094 +v -292046.875000 -50756.105469 -23186.792969 +v -299959.343750 -57164.273438 -18515.054688 +v -297441.718750 -56769.437500 -19516.412109 +v -293959.968750 -56289.457031 -20742.945312 +v -292046.875000 -56056.449219 -21343.265625 +v -289999.968750 -55828.863281 -21933.529297 +v -287839.562500 -53771.308594 -23276.044922 +v -285447.937500 -53494.363281 -23871.433594 +v -282914.312500 -53231.183594 -24444.099609 +v -280190.000000 -52978.332031 -25001.939453 +v -277260.718750 -52736.578125 -25543.841797 +v -274112.250000 -52506.691406 -26068.703125 +v -270716.187500 -50077.210938 -27318.763672 +v -267100.875000 -47526.492188 -28425.201172 +v -263209.531250 -47260.058594 -28915.812500 +v -259052.109375 -47015.777344 -29384.326172 +v -299959.343750 -58526.617188 -17782.017578 +v -297441.718750 -58237.304688 -18743.730469 +v -293959.968750 -57884.832031 -19921.703125 +v -292046.875000 -57713.316406 -20498.255859 +v -289999.968750 -57545.464844 -21065.148438 +v -287838.656250 -55610.500000 -22504.199219 +v -285447.937500 -55392.261719 -23079.603516 +v -282914.312500 -55184.402344 -23633.275391 +v -280190.000000 -54984.273438 -24172.609375 +v -277260.718750 -54792.449219 -24696.537109 +v -274112.250000 -54609.511719 -25203.988281 +v -270714.343750 -52288.480469 -26577.691406 +v -267100.875000 -49832.792969 -27817.744141 +v -263209.531250 -49605.199219 -28297.869141 +v -259052.109375 -49395.906250 -28756.371094 +v -299959.343750 -59830.484375 -16954.419922 +v -297441.718750 -59642.164062 -17871.373047 +v -293959.968750 -59411.726562 -18994.521484 +v -292046.875000 -59299.062500 -19544.240234 +v -289999.968750 -59188.382812 -20084.750000 +v -287837.718750 -57383.988281 -21613.449219 +v -285447.937500 -57222.316406 -22165.849609 +v -282914.312500 -57067.800781 -22697.599609 +v -280190.000000 -56918.511719 -23215.582031 +v -277260.718750 -56774.835938 -23718.765625 +v -274112.250000 -56637.164062 -24206.126953 +v -270712.531250 -54435.171875 -25696.341797 +v -267100.875000 -54272.589844 -26165.179688 +v -267100.875000 -52085.609375 -27062.871094 +v -263209.531250 -54119.761719 -26616.783203 +v -263209.531250 -51895.949219 -27529.968750 +v -259052.109375 -53977.828125 -27048.046875 +v -259052.109375 -51720.835938 -27976.029297 +v -299959.343750 -65208.308594 -11526.358398 +v -297441.718750 -65436.539062 -12149.743164 +v -293959.968750 -65709.437500 -12913.308594 +v -299959.343750 -66017.460938 -10222.920898 +v -297441.718750 -66308.367188 -10775.811523 +v -293959.968750 -66656.992188 -11453.031250 +v -292046.875000 -66823.593750 -11784.492188 +v -299959.343750 -66729.445312 -8864.541016 +v -297441.718750 -67075.492188 -9343.965820 +v -293959.968750 -67490.765625 -9931.198242 +v -292046.875000 -67689.500000 -10218.617188 +v -289999.968750 -67881.320312 -10501.219727 +v -299959.343750 -67340.953125 -7459.066406 +v -297441.718750 -67734.367188 -7862.478516 +v -293959.968750 -68206.867188 -8356.605469 +v -292046.875000 -68433.203125 -8598.453125 +v -289999.968750 -68651.843750 -8836.250000 +v -287830.343750 -68063.492188 -10775.446289 +v -299959.343750 -67848.687500 6014.347168 +v -299959.343750 -67148.484375 7932.306152 +v -299959.343750 -66265.750000 9775.844727 +v -299959.343750 -65208.308594 11526.358398 +v -299959.343750 -63983.992188 13165.241211 +v -299959.343750 -62600.632812 14673.889648 +v -297441.718750 -34414.972656 -18463.849609 +v -297441.718750 -35862.792969 -19270.138672 +v -297441.718750 -37367.890625 -19974.466797 +v -297441.718750 -60975.425781 -16902.769531 +v -293959.968750 -62222.722656 -16836.916016 +v -292046.875000 -63532.882812 -16065.913086 +v -289999.968750 -64826.796875 -15124.203125 +v -287833.093750 -64907.156250 -15518.670898 +v -285447.937500 -66197.914062 -14367.971680 +v -282914.312500 -67423.648438 -13048.900391 +v -280190.000000 -68564.757812 -11573.235352 +v -277260.718750 -69600.804688 -9949.369141 +v -274112.250000 -70511.703125 -8187.150391 +v -270692.468750 -70670.828125 -8347.978516 +v -267100.875000 -71431.421875 -6413.356934 +v -263209.531250 -72024.429688 -4368.171875 +v -259052.109375 -72431.718750 -2225.207275 +v -297441.718750 -68281.429688 -6339.623535 +v -293959.968750 -69270.632812 -5084.311035 +v -292046.875000 -69891.000000 -3502.717041 +v -289999.968750 -70384.695312 -1804.442627 +v -287825.718750 -70650.757812 -1851.659302 +v -297441.718750 -67526.992188 8361.312500 +v -297441.718750 -66575.882812 10304.555664 +v -297441.718750 -65436.539062 12149.743164 +v -297441.718750 -64117.390625 13877.263672 +v -297441.718750 -62626.878906 15467.503906 +v -297441.718750 -60975.425781 16902.769531 +v -293959.968750 -33566.738281 -20481.193359 +v -293959.968750 -35202.578125 -21229.787109 +v -293959.968750 -36891.339844 -21866.373047 +v -293959.968750 -60860.804688 -17965.044922 +v -292046.875000 -60803.992188 -18484.970703 +v -289999.968750 -60747.570312 -18996.185547 +v -287836.812500 -59081.394531 -20607.746094 +v -285447.937500 -58973.816406 -21134.222656 +v -282914.312500 -58870.355469 -21641.224609 +v -280190.000000 -58769.718750 -22135.099609 +v -277260.718750 -58672.125000 -22614.865234 +v -274112.250000 -58577.781250 -23079.542969 +v -270710.687500 -56505.167969 -24679.228516 +v -267100.875000 -56381.398438 -25129.263672 +v -263209.531250 -56264.078125 -25562.986328 +v -259052.109375 -56154.136719 -25977.175781 +v -293959.968750 -68801.453125 -6738.044922 +v -292046.875000 -69050.703125 -6933.050293 +v -289999.968750 -69291.601562 -7124.789062 +v -287829.406250 -68859.750000 -9067.091797 +v -285447.937500 -69062.726562 -9297.962891 +v -293959.968750 -66947.750000 10952.158203 +v -293959.968750 -65709.437500 12913.308594 +v -293959.968750 -64275.699219 14749.396484 +v -293959.968750 -62655.710938 16439.578125 +v -293959.968750 -60860.804688 17965.044922 +v -293959.968750 -58910.949219 19315.128906 +v -292046.875000 -32457.902344 -21073.937500 +v -292046.875000 -34156.796875 -21844.197266 +v -292046.875000 -35910.648438 -22499.205078 +v -292046.875000 -37709.753906 -23035.214844 +v -292046.875000 -62218.402344 -17324.191406 +v -289999.968750 -63574.843750 -16510.228516 +v -287834.031250 -63613.550781 -16940.669922 +v -285447.937500 -64984.878906 -15914.475586 +v -282914.312500 -66305.023438 -14712.654297 +v -280190.000000 -67553.898438 -13346.689453 +v -277260.718750 -68710.976562 -11824.078125 +v -274112.250000 -69756.015625 -10153.803711 +v -270694.281250 -69899.179688 -10353.163086 +v -267100.875000 -70811.242188 -8499.378906 +v -263209.531250 -71567.546875 -6524.049316 +v -259052.109375 -72149.632812 -4438.948242 +v -292046.875000 -69537.976562 -5231.455566 +v -289999.968750 -70162.187500 -3599.587158 +v -287826.656250 -70420.726562 -3693.739014 +v -285447.937500 -70910.101562 -1898.728760 +v -282914.312500 -71236.953125 0.000000 +v -280190.000000 -71320.164062 2649.760742 +v -277260.718750 -71081.492188 5389.568848 +v -274112.250000 -70511.703125 8187.150391 +v -270677.843750 -70671.453125 8348.627930 +v -267100.875000 -70811.242188 8499.378906 +v -263209.531250 -69834.812500 11403.286133 +v -259052.109375 -68517.203125 14281.216797 +v -292046.875000 -65839.507812 13287.032227 +v -292046.875000 -64350.511719 15176.258789 +v -292046.875000 -62668.082031 16915.355469 +v -292046.875000 -60803.992188 18484.970703 +v -292046.875000 -58778.980469 19874.126953 +v -292046.875000 -56616.042969 21073.937500 +v -289999.968750 -62212.976562 -17803.304688 +v -287835.875000 -60692.332031 -19491.037109 +v -285447.937500 -60636.050781 -19988.777344 +v -282914.312500 -60581.039062 -20468.300781 +v -280190.000000 -60526.582031 -20935.408203 +v -277260.718750 -60472.718750 -21389.171875 +v -274112.250000 -60419.488281 -21828.664062 +v -270708.875000 -58486.347656 -23530.855469 +v -267100.875000 -58399.683594 -23959.714844 +v -263209.531250 -58316.355469 -24373.251953 +v -259052.109375 -58237.031250 -24768.166016 +v -289999.968750 -69796.437500 -5376.135254 +v -287828.500000 -69520.914062 -7310.995605 +v -285447.937500 -69744.765625 -7497.074707 +v -282914.312500 -69955.257812 -7676.926758 +v -289999.968750 -64421.953125 15595.968750 +v -289999.968750 -62678.867188 17383.162109 +v -289999.968750 -60747.570312 18996.185547 +v -289999.968750 -58649.550781 20423.759766 +v -289999.968750 -56408.628906 21656.753906 +v -289999.968750 -54048.621094 22686.037109 +v -287834.968750 -62206.410156 -18267.269531 +v -285447.937500 -63650.183594 -17372.921875 +v -282914.312500 -65056.628906 -16296.257812 +v -280190.000000 -66405.070312 -15048.411133 +v -277260.718750 -67674.953125 -13635.970703 +v -274112.250000 -68845.875000 -12067.033203 +v -270696.093750 -68969.851562 -12303.837891 +v -267100.875000 -70025.312500 -10541.033203 +v -263209.531250 -70936.921875 -8646.076172 +v -259052.109375 -71685.929688 -6629.756836 +v -287827.562500 -70042.679688 -5516.697754 +v -285447.937500 -70672.890625 -3787.673340 +v -282914.312500 -71154.562500 -1944.278564 +v -280190.000000 -71470.125000 0.000000 +v -277260.718750 -71534.976562 2707.192871 +v -274112.250000 -71270.523438 5500.311035 +v -270680.281250 -71446.179688 5608.722656 +v -267100.875000 -71600.437500 5710.073242 +v -263209.531250 -70936.921875 8646.076172 +v -259052.109375 -69927.343750 11588.050781 +v -287816.187500 -64489.339844 16005.778320 +v -287814.937500 -62687.855469 17840.179688 +v -287813.718750 -60691.785156 19495.880859 +v -287812.468750 -58523.332031 20961.294922 +v -287811.250000 -56207.101562 22227.046875 +v -287810.031250 -53767.699219 23283.757812 +v -285447.937500 -33140.679688 -24329.582031 +v -285447.937500 -35127.843750 -24909.199219 +v -285447.937500 -37154.285156 -25356.082031 +v -285447.937500 -39209.292969 -25666.183594 +v -285447.937500 -41282.152344 -25835.445312 +v -285447.937500 -62198.308594 -18733.566406 +v -282914.312500 -62188.832031 -19182.976562 +v -280190.000000 -62177.773438 -19620.751953 +v -277260.718750 -62165.011719 -20046.019531 +v -274112.250000 -62150.425781 -20457.914062 +v -270707.062500 -60366.589844 -22255.732422 +v -267100.875000 -60315.105469 -22661.132812 +v -263209.531250 -60264.031250 -23052.255859 +v -259052.109375 -60213.769531 -23425.765625 +v -285447.937500 -70282.968750 -5657.049805 +v -282914.312500 -70509.148438 -5792.760742 +v -280190.000000 -70722.679688 -5924.957031 +v -285447.937500 -64553.277344 16410.892578 +v -285447.937500 -62694.992188 18291.468750 +v -285447.937500 -60636.050781 19988.777344 +v -285447.937500 -58399.375000 21490.945312 +v -285447.937500 -56010.347656 22788.365234 +v -285447.937500 -53494.363281 23871.433594 +v -280190.000000 -13913.043945 10356.141602 +v -282914.312500 -16413.019531 12478.236328 +v -282914.312500 -15192.665039 10125.078125 +v -285447.937500 -17718.988281 12185.900391 +v -280190.000000 -12918.909180 7852.122070 +v -279751.500000 -13721.213867 10391.237305 +v -279743.312500 -12719.548828 7879.223633 +v -280190.000000 -16667.675781 -15048.411133 +v -282914.312500 -17874.896484 -14712.654297 +v -285447.937500 -19139.460938 -14367.971680 +v -279677.812500 -14948.380859 -12813.457031 +v -279620.156250 -13664.475586 -10401.642578 +v -277284.562500 -11689.458008 -8020.995605 +v -274112.250000 -9753.752930 -5500.311035 +v -282914.312500 -32284.226562 -24913.240234 +v -282914.312500 -34329.312500 -25506.761719 +v -280190.000000 -35708.046875 -26556.898438 +v -282914.312500 -36414.820312 -25964.367188 +v -280190.000000 -37880.042969 -26881.685547 +v -282914.312500 -38529.730469 -26281.906250 +v -277260.718750 -35036.402344 -27132.503906 +v -280190.000000 -40070.906250 -27058.964844 +v -282914.312500 -40663.007812 -26455.230469 +v -277260.718750 -37262.460938 -27464.330078 +v -274112.250000 -36679.218750 -28028.652344 +v -277260.718750 -39507.859375 -27645.451172 +v -274112.250000 -38975.894531 -28213.496094 +v -270727.125000 -36132.050781 -28573.960938 +v -280190.000000 -63712.300781 -18195.671875 +v -282914.312500 -63683.027344 -17789.693359 +v -280190.000000 -65122.976562 -16668.154297 +v -277260.718750 -63737.738281 -18590.052734 +v -274112.250000 -63759.066406 -18972.031250 +v -270705.218750 -62133.777344 -20858.369141 +v -267100.875000 -62115.320312 -21238.107422 +v -263209.531250 -62094.562500 -21604.671875 +v -259052.109375 -62071.613281 -21954.726562 +v -277260.718750 -66497.539062 -15374.577148 +v -274112.250000 -67786.195312 -13916.155273 +v -270697.937500 -67887.851562 -14189.110352 +v -267100.875000 -69078.742188 -12527.227539 +v -263209.531250 -70137.757812 -10722.968750 +v -259052.109375 -71045.898438 -8786.166016 +v -277260.718750 -65183.527344 -17029.427734 +v -274112.250000 -65237.871094 -17379.339844 +v -270703.406250 -63776.136719 -19343.587891 +v -267100.875000 -63788.343750 -19695.556641 +v -263209.531250 -63795.757812 -20035.496094 +v -259052.109375 -63798.187500 -20360.126953 +v -280190.000000 -71134.804688 -3967.050537 +v -282914.312500 -70910.437500 -3878.538330 +v -280190.000000 -71385.515625 -1988.648926 +v -277260.718750 -71344.992188 -4053.033936 +v -277260.718750 -71688.664062 0.000000 +v -274112.250000 -71734.359375 2762.818604 +v -270682.718750 -71919.679688 2817.237793 +v -267100.875000 -72082.835938 2868.182861 +v -263209.531250 -71739.406250 5808.627441 +v -259052.109375 -71045.898438 8786.166016 +v -277260.718750 -71601.945312 -2031.751709 +v -274112.250000 -71802.859375 -2073.499023 +v -280190.000000 -60526.582031 20935.408203 +v -282914.312500 -62699.996094 18730.275391 +v -282914.312500 -60581.039062 20468.300781 +v -280190.000000 -58162.574219 22508.714844 +v -282914.312500 -58279.167969 22006.505859 +v -277260.718750 -58049.867188 22996.578125 +v -277260.718750 -55461.984375 24384.896484 +v -280190.000000 -55637.546875 23867.580078 +v -277260.718750 -52736.578125 25543.841797 +v -280190.000000 -52978.332031 25001.939453 +v -277260.718750 -49901.152344 26463.138672 +v -280190.000000 -50211.773438 25901.732422 +v -277260.718750 -46983.210938 27132.503906 +v -280190.000000 -47364.699219 26556.898438 +v -282914.312500 -55820.503906 23335.050781 +v -282914.312500 -53231.183594 24444.099609 +v -282914.312500 -50537.339844 25323.818359 +v -259052.109375 -10865.816406 16838.486328 +v -263209.531250 -17534.669922 -22583.562500 +v -267100.875000 -18293.386719 -22200.390625 +v -259052.109375 -16846.892578 -22949.478516 +v -263209.531250 -65359.652344 -18353.527344 +v -267100.875000 -65326.335938 -18042.125000 +v -270701.593750 -65285.972656 -17719.875000 +v -274112.250000 -66581.882812 -15690.485352 +v -263209.531250 -66781.000000 -16570.005859 +v -267100.875000 -66724.140625 -16288.865234 +v -270699.750000 -66658.218750 -15998.085938 +v -259052.109375 -65385.414062 -18650.904297 +v -263209.531250 -68054.593750 -14696.216797 +v -267100.875000 -67976.648438 -14446.869141 +v -259052.109375 -66827.968750 -16838.486328 +v -263209.531250 -69175.250000 -12743.443359 +v -259052.109375 -68120.570312 -14934.335938 +v -259052.109375 -70234.812500 -10896.709961 +v -259052.109375 -69257.937500 -12949.921875 +v -263209.531250 -72229.929688 2917.686768 +v -267100.875000 -72246.328125 0.000000 +v -259052.109375 -71860.351562 5902.743164 +v -263209.531250 -51895.949219 27529.968750 +v -267100.875000 -54984.820312 25835.005859 +v -267100.875000 -52085.609375 27062.871094 +v -270655.937500 -52284.976562 26585.968750 +v -267100.875000 -49069.359375 28036.835938 +v -270653.500000 -49323.019531 27543.126953 +v -263209.531250 -48828.910156 28520.742188 +v -259052.109375 -48608.035156 28982.857422 +v -270658.375000 -55131.929688 25379.412109 +v -274112.250000 -55294.332031 24885.943359 +v -270686.968750 -71989.414062 -2114.292480 +v -270730.375000 -8173.165039 2816.521240 +v -274112.250000 -9289.916016 2762.818604 +v -270730.375000 -13432.877930 15995.470703 +v -270730.375000 -15293.020508 18269.796875 +v -279620.156250 -11937.719727 5298.408203 +v -279620.156250 -12665.270508 7886.620605 +v -277308.343750 -11698.908203 8019.680664 +v -274112.250000 -16264.602539 17921.449219 +v -277304.375000 -10955.707031 5387.948242 +v -274112.250000 -9753.752930 5500.311035 +v -274112.250000 -46621.945312 27690.007812 +v -274112.250000 -49606.519531 27006.888672 +v -274112.250000 -52506.691406 26068.703125 +v -270685.156250 -72080.078125 0.000000 +v -274112.250000 -71891.562500 0.000000 +v 165925.484375 -7132.450684 -20268.656250 +v 165930.875000 -7132.490234 -20268.656250 +v 175938.062500 -7193.921387 -20263.724609 +v 186000.000000 -7238.477051 -20228.875000 +v 195904.484375 -7276.817871 -20135.501953 +v 165924.843750 -5529.198242 -17190.445312 +v 165930.875000 -5529.271484 -17190.445312 +v 175938.062500 -5641.437012 -17186.263672 +v 186000.000000 -5743.498047 -17156.705078 +v 165924.203125 -4190.820801 -13948.654297 +v 165930.875000 -4190.927734 -13948.654297 +v 175938.062500 -4345.446289 -13945.259766 +v 165923.562500 -3129.190430 -10575.997070 +v 165930.875000 -3129.330566 -10575.997070 +v 165922.921875 -2356.179443 -7105.191895 +v 165919.078125 -4190.738770 13948.654297 +v 165930.875000 -4190.927734 13948.654297 +v 175938.062500 -4345.446289 13945.259766 +v 186000.000000 -4495.511719 13921.276367 +v 195904.484375 -4648.339355 13857.018555 +v 197944.625000 -5866.014648 17052.658203 +v 205790.625000 -7321.061035 19953.029297 +v 215576.312500 -7382.449707 19652.199219 +v 225234.750000 -7472.444336 19203.417969 +v 234739.109375 -7602.506836 18577.097656 +v 244062.593750 -7784.097656 17743.646484 +v 253187.203125 -8025.456055 16683.339844 +v 262130.109375 -8321.930664 15415.904297 +v 270917.250000 -8665.647461 13970.928711 +v 279574.593750 -9048.733398 12378.002930 +v 288128.093750 -9463.314453 10666.717773 +v 165918.437500 -5529.120605 17190.445312 +v 165930.875000 -5529.271484 17190.445312 +v 165930.875000 -7132.490234 20268.656250 +v 175938.062500 -5641.437012 17186.263672 +v 175938.062500 -7193.921387 20263.724609 +v 186000.000000 -5743.498047 17156.705078 +v 186000.000000 -7238.477051 20228.875000 +v 195904.484375 -5844.236816 17077.513672 +v 195904.484375 -7276.817871 20135.501953 +v 197155.046875 -7281.843750 20118.005859 +v 165917.796875 -7132.393555 20268.656250 +v 165930.875000 -8988.713867 23150.568359 +v 175938.062500 -8991.404297 23144.935547 +v 165915.875000 -13410.064453 28197.832031 +v 165930.875000 -15934.328125 30316.914062 +v 165915.234375 -15934.618164 30316.914062 +v 165930.875000 -18630.707031 32147.164062 +v 165914.593750 -18631.138672 32147.164062 +v 186000.000000 -2194.876221 0.000000 +v 215576.312500 -4152.400879 -10254.335938 +v 225234.750000 -5235.988770 -13215.569336 +v 234739.109375 -6460.670898 -15755.785156 +v 244062.593750 -7784.097656 -17743.646484 +v 253187.203125 -9164.147461 -19055.472656 +v 262130.109375 -10549.033203 -19625.564453 +v 270917.250000 -11576.520508 -19041.232422 +v 279574.593750 -12520.877930 -17888.916016 +v 288128.093750 -13350.265625 -16210.110352 +v 165979.421875 -41437.164062 -35370.210938 +v 155960.796875 -42290.574219 -35370.210938 +v 175938.062500 -63250.746094 7103.462891 +v 165945.984375 -65491.234375 3568.954102 +v 186000.000000 -60498.113281 10555.239258 +v 195904.484375 -57364.878906 13857.018555 +v 205790.625000 -53909.507812 16922.753906 +v 215576.312500 -50237.671875 19652.199219 +v 225234.750000 -46442.421875 21933.869141 +v 234739.109375 -42614.277344 23649.992188 +v 244062.593750 -38841.660156 24685.031250 +v 253187.203125 -35207.675781 24954.166016 +v 262130.109375 -31763.832031 24450.443359 +v 270917.250000 -28548.984375 23211.773438 +v 279574.593750 -25595.841797 21305.353516 +v 288128.093750 -22930.783203 18824.242188 +v 175938.062500 -56828.265625 23144.935547 +v 165934.453125 -60244.554688 20268.656250 +v 165932.140625 -58388.683594 23150.568359 +v 155911.921875 -61612.742188 20268.656250 +v 155909.421875 -59705.972656 23150.568359 +v 145844.546875 -62747.406250 20268.656250 +v 145846.921875 -60796.609375 23150.568359 +v 135874.765625 -61673.285156 23150.568359 +v 135872.546875 -59428.535156 25803.468750 +v 125819.117188 -62376.929688 23150.568359 +v 125822.054688 -60097.535156 25803.468750 +v 115860.867188 -60613.433594 25803.468750 +v 115858.226562 -58057.410156 28197.832031 +v 105814.914062 -61010.152344 25803.468750 +v 105817.617188 -58428.878906 28197.832031 +v 85831.226562 -58912.828125 28197.832031 +v 85831.703125 -56070.488281 30316.914062 +v 55833.824219 -56405.363281 30316.914062 +v 55833.824219 -53337.472656 32147.164062 +v 25833.611328 -56506.617188 30316.914062 +v 25833.611328 -53429.066406 32147.164062 +v 175938.062500 -54797.281250 25797.191406 +v 165929.843750 -56291.648438 25803.468750 +v 155906.921875 -57551.437500 25803.468750 +v 145849.296875 -58592.441406 25803.468750 +v 135870.312500 -56941.371094 28197.832031 +v 125824.992188 -57572.058594 28197.832031 +v 115855.585938 -55280.710938 30316.914062 +v 105820.312500 -55624.792969 30316.914062 +v 85832.171875 -53034.546875 32147.164062 +v 55833.824219 -50106.554688 33675.031250 +v 25833.611328 -50187.972656 33675.031250 +v 186000.000000 -53078.562500 25752.824219 +v 186000.000000 -50911.628906 28142.488281 +v 175938.062500 -52546.992188 28190.970703 +v 175938.062500 -50102.449219 30309.539062 +v 165927.531250 -53968.117188 28197.832031 +v 155904.406250 -55164.203125 28197.832031 +v 145851.656250 -56150.324219 28197.832031 +v 135868.093750 -54239.464844 30316.914062 +v 125827.929688 -54828.601562 30316.914062 +v 115852.945312 -52314.855469 32147.164062 +v 105823.015625 -52629.726562 32147.164062 +v 85832.648438 -49837.277344 33675.031250 +v 55833.824219 -46745.207031 34886.957031 +v 25833.611328 -46816.039062 34886.957031 +v 165925.218750 -51443.945312 30316.914062 +v 155901.906250 -52570.832031 30316.914062 +v 145854.031250 -53497.429688 30316.914062 +v 135865.875000 -51353.488281 32147.164062 +v 125830.867188 -51898.312500 32147.164062 +v 115850.304688 -49191.363281 33675.031250 +v 105825.718750 -49475.519531 33675.031250 +v 85833.117188 -46510.937500 34886.957031 +v 55833.824219 -43286.042969 35769.398438 +v 25833.611328 -43345.976562 35769.398438 +v 155914.437500 -63259.554688 17190.445312 +v 145839.796875 -65838.984375 13948.654297 +v 135881.421875 -66808.031250 13948.654297 +v 125807.367188 -68745.218750 10575.997070 +v 115874.062500 -69364.882812 10575.997070 +v 105798.703125 -70707.390625 7105.191895 +v 85827.921875 -71358.429688 7105.191895 +v 55833.824219 -71854.125000 7105.191895 +v 25833.611328 -72543.320312 3568.954102 +v 155926.968750 -67167.593750 0.000000 +v 145828.531250 -68337.945312 -2678.504639 +v 145842.171875 -64432.359375 17190.445312 +v 135876.984375 -63659.921875 20268.656250 +v 125816.179688 -64394.300781 20268.656250 +v 115863.507812 -62920.339844 23150.568359 +v 105812.210938 -63339.894531 23150.568359 +v 85830.757812 -61529.300781 25803.468750 +v 55833.824219 -59277.609375 28197.832031 +v 25833.611328 -59387.910156 28197.832031 +v 145912.812500 -8886.457031 -23150.568359 +v 145909.937500 -6936.126465 -20268.656250 +v 145567.234375 -8883.734375 -23150.568359 +v 145907.046875 -5251.604004 -17190.445312 +v 145567.234375 -6932.070801 -20268.656250 +v 144621.656250 -6920.786133 -20268.656250 +v 145904.156250 -3845.365479 -13948.654297 +v 145567.234375 -5246.420410 -17190.445312 +v 144505.390625 -5230.152832 -17190.445312 +v 135854.781250 -6810.573242 -20268.656250 +v 145901.265625 -2729.888916 -10575.997070 +v 145567.234375 -3839.264648 -13948.654297 +v 144389.109375 -3817.891113 -13948.654297 +v 135854.781250 -5094.504395 -17190.445312 +v 135385.421875 -5087.028809 -17190.445312 +v 145898.375000 -1917.651489 -7105.191895 +v 145567.234375 -2723.084229 -10575.997070 +v 144272.843750 -2696.709229 -10575.997070 +v 135854.781250 -3661.956055 -13948.654297 +v 135385.421875 -3653.362549 -13948.654297 +v 125781.859375 -3478.767090 -13948.654297 +v 145895.500000 -1421.131470 -3568.954102 +v 145567.234375 -1910.359863 -7105.191895 +v 144156.562500 -1879.325195 -7105.191895 +v 135854.781250 -2525.633545 -10575.997070 +v 135385.421875 -2516.153564 -10575.997070 +v 125781.859375 -2325.059326 -10575.997070 +v 125203.601562 -2313.780518 -10575.997070 +v 145892.609375 -1252.806763 0.000000 +v 145567.234375 -1413.572632 -3568.954102 +v 144040.296875 -1378.468628 -3568.954102 +v 135854.781250 -1698.243164 -7105.191895 +v 135385.421875 -1688.118042 -7105.191895 +v 125781.859375 -1485.010498 -7105.191895 +v 125203.601562 -1473.077881 -7105.191895 +v 115924.445312 -1287.633301 -7105.191895 +v 145889.718750 -1420.998413 3568.954102 +v 145567.234375 -1245.203369 0.000000 +v 143924.031250 -1206.878906 0.000000 +v 135854.781250 -1192.491211 -3568.954102 +v 135385.421875 -1181.971558 -3568.954102 +v 125781.859375 -971.520813 -3568.954102 +v 125203.601562 -959.188599 -3568.954102 +v 115924.445312 -767.940979 -3568.954102 +v 115021.781250 -750.080017 -3568.954102 +v 145886.828125 -1917.397095 7105.191895 +v 145567.234375 -1413.572632 3568.954102 +v 145883.937500 -2729.535889 10575.997070 +v 145567.234375 -1910.359863 7105.191895 +v 143807.750000 -1373.131348 3568.954102 +v 135854.781250 -1021.083679 0.000000 +v 135385.421875 -1010.430237 0.000000 +v 125781.859375 -797.490784 0.000000 +v 125203.601562 -785.023193 0.000000 +v 115924.453125 -591.808777 0.000000 +v 115021.781250 -573.776306 0.000000 +v 105742.617188 -397.646149 0.000000 +v 145881.046875 -3844.947266 13948.654297 +v 145567.234375 -2723.084229 10575.997070 +v 143691.484375 -1869.104858 7105.191895 +v 135854.781250 -1192.491211 3568.954102 +v 135385.421875 -1181.971558 3568.954102 +v 125781.859375 -971.520813 3568.954102 +v 125203.601562 -959.188599 3568.954102 +v 115924.453125 -767.941040 3568.954102 +v 115021.781250 -750.080017 3568.954102 +v 145878.171875 -5251.163574 17190.445312 +v 145567.234375 -3839.264648 13948.654297 +v 143575.218750 -2682.492920 10575.997070 +v 135854.781250 -1698.243164 7105.191895 +v 135385.421875 -1688.118042 7105.191895 +v 125781.859375 -1485.010498 7105.191895 +v 125203.601562 -1473.077881 7105.191895 +v 115924.453125 -1287.633423 7105.191895 +v 115021.781250 -1270.278564 7105.191895 +v 105742.617188 -575.528015 3568.954102 +v 104839.960938 -381.488678 0.000000 +v 145875.281250 -6935.717285 20268.656250 +v 145567.234375 -5246.420410 17190.445312 +v 143458.953125 -3800.976562 13948.654297 +v 135854.781250 -2525.633545 10575.997070 +v 135385.421875 -2516.153564 10575.997070 +v 125781.859375 -2325.059326 10575.997070 +v 125203.601562 -2313.780518 10575.997070 +v 115924.453125 -2137.829590 10575.997070 +v 115021.781250 -2121.302734 10575.997070 +v 105742.617188 -1100.383057 7105.191895 +v 104839.960938 -559.507080 3568.954102 +v 94658.148438 -392.332184 3568.954102 +v 145872.390625 -8886.139648 23150.568359 +v 145567.234375 -6932.070801 20268.656250 +v 143342.687500 -5212.225098 17190.445312 +v 135854.781250 -3661.956055 13948.654297 +v 135385.421875 -3653.362549 13948.654297 +v 125781.859375 -3478.767090 13948.654297 +v 125203.601562 -3468.385986 13948.654297 +v 115924.453125 -3305.473389 13948.654297 +v 115021.781250 -3290.083740 13948.654297 +v 105742.617188 -1959.025146 10575.997070 +v 104839.960938 -1084.764893 7105.191895 +v 94658.148438 -921.583618 7105.191895 +v 85764.601562 -801.275330 7105.191895 +v 145869.500000 -11089.961914 25803.468750 +v 145567.234375 -8883.734375 23150.568359 +v 143226.421875 -6903.895020 20268.656250 +v 135854.781250 -5094.504395 17190.445312 +v 135385.421875 -5087.028809 17190.445312 +v 125781.859375 -4933.232910 17190.445312 +v 125203.601562 -4923.983887 17190.445312 +v 115924.453125 -4777.508301 17190.445312 +v 115021.781250 -4763.552734 17190.445312 +v 105742.609375 -3138.268311 13948.654297 +v 104839.960938 -1944.065918 10575.997070 +v 94658.148438 -1787.418213 10575.997070 +v 85764.601562 -1671.627441 10575.997070 +v 84476.328125 -1656.702881 10575.997070 +v 145866.609375 -13531.776367 28197.832031 +v 145567.234375 -11088.930664 25803.468750 +v 143110.156250 -8863.631836 23150.568359 +v 135854.781250 -6810.573242 20268.656250 +v 135385.421875 -6804.436035 20268.656250 +v 125781.859375 -6675.556641 20268.656250 +v 125203.601562 -6667.663574 20268.656250 +v 115924.453125 -6540.878418 20268.656250 +v 115021.781250 -6528.639648 20268.656250 +v 105742.609375 -4624.926758 17190.445312 +v 104839.960938 -3124.213867 13948.654297 +v 94658.148438 -2976.539307 13948.654297 +v 85764.601562 -2866.952881 13948.654297 +v 84476.328125 -2852.818359 13948.654297 +v 74294.507812 -2756.529785 13948.654297 +v 145863.734375 -16184.412109 30316.914062 +v 145567.234375 -13532.237305 28197.832031 +v 142993.890625 -11079.067383 25803.468750 +v 135854.781250 -8797.456055 23150.568359 +v 135385.421875 -8792.868164 23150.568359 +v 125781.859375 -8692.836914 23150.568359 +v 125203.601562 -8686.513672 23150.568359 +v 115924.453125 -8582.527344 23150.568359 +v 115021.781250 -8572.276367 23150.568359 +v 105742.609375 -6405.813965 20268.656250 +v 104839.960938 -4612.013184 17190.445312 +v 94658.148438 -4475.650391 17190.445312 +v 85764.601562 -4373.886230 17190.445312 +v 84476.328125 -4360.747070 17190.445312 +v 74294.507812 -4271.242676 17190.445312 +v 64112.691406 -4204.765625 17190.445312 +v 135879.203125 -65375.738281 17190.445312 +v 125810.304688 -67591.343750 13948.654297 +v 115871.421875 -68197.320312 13948.654297 +v 105801.406250 -69848.671875 10575.997070 +v 85828.390625 -70488.093750 10575.997070 +v 55833.824219 -70974.640625 10575.997070 +v 25833.611328 -72004.031250 7105.191895 +v 145203.031250 -19026.025391 -32147.164062 +v 145115.828125 -16883.121094 -30802.083984 +v 135854.781250 -19118.142578 -32147.164062 +v 135854.781250 -16937.455078 -30802.083984 +v 135385.421875 -14856.120117 -29292.630859 +v 125781.859375 -12844.609375 -27624.519531 +v 125203.601562 -10967.625977 -25803.468750 +v 115924.445312 -8582.526367 -23150.568359 +v 115021.781250 -6528.639648 -20268.656250 +v 105742.617188 -4624.926758 -17190.445312 +v 104839.960938 -4612.013184 -17190.445312 +v 94658.148438 -2976.539307 -13948.654297 +v 85764.601562 -1671.627441 -10575.997070 +v 84476.328125 -785.775574 -7105.191895 +v 74294.507812 -145.428207 -3568.954102 +v 64112.691406 116.614639 0.000000 +v 55833.824219 -17.637909 3568.954102 +v 53930.875000 -546.468689 7105.191895 +v 43749.054688 -1391.409302 10575.997070 +v 33567.238281 -2582.265381 13948.654297 +v 25833.611328 -4102.046387 17190.445312 +v 23385.417969 -5930.627930 20268.656250 +v 13203.600586 -8047.225586 23150.568359 +v 3021.782227 -10441.415039 25803.468750 +v -7160.036133 -13094.315430 28197.832031 +v -17341.853516 -15976.228516 30316.914062 +v 142645.093750 -19055.835938 32147.164062 +v 135854.781250 -16231.967773 30316.914062 +v 135385.421875 -16233.178711 30316.914062 +v 125781.859375 -16241.092773 30316.914062 +v 125813.242188 -66136.742188 17190.445312 +v 115866.148438 -64961.992188 20268.656250 +v 105809.507812 -65401.804688 20268.656250 +v 85830.281250 -63890.789062 23150.568359 +v 55833.824219 -61921.613281 25803.468750 +v 25833.611328 -62040.242188 25803.468750 +v 135385.421875 -16939.216797 -30802.083984 +v 125203.601562 -19173.255859 -32147.164062 +v 115924.437500 -16946.894531 -30802.083984 +v 115021.781250 -14803.861328 -29292.630859 +v 105742.617188 -12711.409180 -27624.519531 +v 104839.960938 -12704.701172 -27624.519531 +v 94658.148438 -10699.959961 -25803.468750 +v 85764.601562 -8269.111328 -23150.568359 +v 84476.328125 -6167.114746 -20268.656250 +v 74294.507812 -4271.242676 -17190.445312 +v 64112.691406 -2685.014404 -13948.654297 +v 55833.824219 -1434.714233 -10575.997070 +v 53930.875000 -546.468689 -7105.191895 +v 43749.054688 28.356102 -3568.954102 +v 33567.238281 232.708893 0.000000 +v 25833.611328 58.699234 3568.954102 +v 23385.417969 -478.933594 7105.191895 +v 13203.600586 -1358.171631 10575.997070 +v 3021.782227 -2569.854736 13948.654297 +v -7160.036133 -4097.719727 17190.445312 +v -17341.853516 -5927.969238 20268.656250 +v -27523.671875 -8047.051758 23150.568359 +v -34166.402344 -10441.415039 25803.468750 +v 125781.859375 -14844.055664 -29292.630859 +v 125203.601562 -12841.517578 -27624.519531 +v 115924.445312 -10889.397461 -25803.468750 +v 115021.781250 -8572.276367 -23150.568359 +v 105742.617188 -6405.813965 -20268.656250 +v 104839.960938 -6394.267090 -20268.656250 +v 94658.148438 -4475.650391 -17190.445312 +v 85764.601562 -2866.952881 -13948.654297 +v 84476.328125 -1656.702881 -10575.997070 +v 74294.507812 -680.187744 -7105.191895 +v 64112.691406 -65.226944 -3568.954102 +v 55833.824219 164.561401 0.000000 +v 53930.875000 -8.676009 3568.954102 +v 43749.054688 -510.257935 7105.191895 +v 33567.238281 -1371.029785 10575.997070 +v 25833.611328 -2574.509277 13948.654297 +v 23385.417969 -4100.644043 17190.445312 +v 13203.600586 -5928.166016 20268.656250 +v 3021.782227 -8047.051758 23150.568359 +v -7160.036133 -10441.415039 25803.468750 +v -17341.853516 -13094.315430 28197.832031 +v 115868.789062 -66725.335938 17190.445312 +v 105804.101562 -68669.382812 13948.654297 +v 85828.867188 -69292.796875 13948.654297 +v 55833.824219 -69766.773438 13948.654297 +v 25833.611328 -71121.781250 10575.997070 +v 115924.437500 -19187.689453 -32147.164062 +v 115021.781250 -16944.791016 -30802.083984 +v 105742.617188 -14755.110352 -29292.630859 +v 104839.960938 -14749.970703 -29292.630859 +v 94658.148438 -12629.870117 -27624.519531 +v 85764.601562 -10630.671875 -25803.468750 +v 84476.328125 -8258.546875 -23150.568359 +v 74294.507812 -6085.737305 -20268.656250 +v 64112.691406 -4204.765625 -17190.445312 +v 55833.824219 -2642.579102 -13948.654297 +v 53930.875000 -1426.276245 -10575.997070 +v 43749.054688 -510.257935 -7105.191895 +v 33567.238281 50.001125 -3568.954102 +v 25833.611328 241.472382 0.000000 +v 23385.417969 60.390972 3568.954102 +v 13203.600586 -475.739349 7105.191895 +v 3021.782227 -1357.925659 10575.997070 +v -7160.036133 -2569.854736 13948.654297 +v -17341.853516 -4097.719727 17190.445312 +v -27523.671875 -5927.969238 20268.656250 +v -34166.402344 -8047.051758 23150.568359 +v -37705.492188 -10441.415039 25803.468750 +v 115021.781250 -16219.151367 30316.914062 +v 105806.804688 -67182.695312 17190.445312 +v 85829.812500 -65980.781250 20268.656250 +v 55833.824219 -64307.945312 23150.568359 +v 25833.611328 -64434.089844 23150.568359 +v 105742.609375 -13378.881836 28197.832031 +v 104839.960938 -10789.354492 25803.468750 +v 94658.148438 -10699.959961 25803.468750 +v 85764.601562 -10630.671875 25803.468750 +v 84476.328125 -10621.667969 25803.468750 +v 74294.507812 -10560.331055 25803.468750 +v 64112.691406 -10514.774414 25803.468750 +v 55833.824219 -10487.742188 25803.468750 +v 53930.875000 -10482.651367 25803.468750 +v 43749.054688 -10461.616211 25803.468750 +v 85829.335938 -67785.898438 17190.445312 +v 55833.824219 -68244.031250 17190.445312 +v 25833.611328 -69910.109375 13948.654297 +v 85825.914062 -71172.093750 -7980.305664 +v 85825.554688 -70488.164062 -10575.997070 +v 85825.203125 -69621.437500 -13116.480469 +v 85819.531250 -36961.539062 -36480.082031 +v 55833.824219 -39761.664062 -36308.804688 +v 25833.611328 -39810.500000 -36308.804688 +v 55833.824219 -66419.921875 20268.656250 +v 25833.611328 -66552.718750 20268.656250 +v 55833.824219 -71665.773438 -7980.305664 +v 55833.824219 -70974.640625 -10575.997070 +v 55833.824219 -37095.199219 -36480.082031 +v 25833.611328 -34456.171875 -36445.628906 +v 64112.691406 -19082.058594 -32147.164062 +v 55833.824219 -16753.898438 -30802.083984 +v 53930.875000 -14537.784180 -29292.630859 +v 43749.054688 -12425.666016 -27624.519531 +v 33567.238281 -10449.321289 -25803.468750 +v 25833.611328 -8050.530762 -23150.568359 +v 23385.417969 -5930.627930 -20268.656250 +v 13203.600586 -4097.936523 -17190.445312 +v 3021.782227 -2569.854736 -13948.654297 +v -7160.036133 -1357.925659 -10575.997070 +v -17341.853516 -475.483948 -7105.191895 +v -27523.671875 63.918869 -3568.954102 +v -34166.402344 246.731247 0.000000 +v -37705.492188 63.918869 3568.954102 +v 55833.824219 -19071.880859 -32147.164062 +v 53930.875000 -16751.125000 -30802.083984 +v 43749.054688 -14522.942383 -29292.630859 +v 33567.238281 -12415.122070 -27624.519531 +v 25833.611328 -10444.380859 -25803.468750 +v 23385.417969 -8049.402832 -23150.568359 +v 13203.600586 -5928.166016 -20268.656250 +v 3021.782227 -4097.719727 -17190.445312 +v -7160.036133 -2569.854736 -13948.654297 +v -17341.853516 -1357.925659 -10575.997070 +v -27523.671875 -475.483948 -7105.191895 +v -34166.402344 63.918869 -3568.954102 +v -37705.492188 246.731247 0.000000 +v 53930.875000 -19069.964844 -32147.164062 +v 43749.054688 -16739.662109 -30802.083984 +v 33567.238281 -14514.267578 -29292.630859 +v 25833.611328 -12410.884766 -27624.519531 +v 23385.417969 -10443.418945 -25803.468750 +v 13203.600586 -8047.225586 -23150.568359 +v 3021.782227 -5927.969238 -20268.656250 +v -7160.036133 -4097.719727 -17190.445312 +v -17341.853516 -2569.854736 -13948.654297 +v -27523.671875 -1357.925659 -10575.997070 +v -34166.402344 -475.483948 -7105.191895 +v -37705.492188 63.918869 -3568.954102 +v 25833.611328 -68382.578125 17190.445312 +v 25833.611328 -71121.781250 -10575.997070 +v 25833.611328 -37135.636719 -36480.082031 +v 25833.611328 -19055.554688 -32147.164062 +v 23385.417969 -16729.748047 -30802.083984 +v 13203.600586 -14508.793945 -29292.630859 +v 3021.782227 -12408.341797 -27624.519531 +v -7160.036133 -10441.415039 -25803.468750 +v -17341.853516 -8047.051758 -23150.568359 +v -27523.671875 -5927.969238 -20268.656250 +v -34166.402344 -4097.719727 -17190.445312 +v -37705.492188 -2569.854736 -13948.654297 +v 23385.417969 -19055.193359 -32147.164062 +v 13203.600586 -16728.736328 -30802.083984 +v 3021.782227 -14508.689453 -29292.630859 +v -7160.036133 -12408.341797 -27624.519531 +v -17341.853516 -10441.415039 -25803.468750 +v -27523.671875 -8047.051758 -23150.568359 +v -34166.402344 -5927.969238 -20268.656250 +v -37705.492188 -4097.719727 -17190.445312 +v -105155.640625 -19062.146484 -32103.445312 +v -101982.093750 -14514.308594 -29263.591797 +v -105155.640625 -12416.050781 -27586.951172 +v -105621.648438 -10449.466797 -25766.814453 +v -109817.234375 -10453.000000 -25750.730469 +v -114584.210938 -8063.683105 -23082.642578 +v -114886.187500 -5944.958984 -20207.902344 +v -117934.609375 -5948.850586 -20193.986328 +v -124012.781250 -4127.885254 -17098.958984 +v -124062.460938 -2600.104980 -13874.211914 +v -126063.867188 -2603.629150 -13865.539062 +v -133441.359375 -1406.742432 -10484.911133 +v -133883.921875 -525.307495 -7042.736328 +v -134552.203125 -526.850464 -7040.802246 +v -142869.921875 -8.953900 -3523.069336 +v -101982.093750 -8052.670898 23127.619141 +v -105155.640625 -10449.124023 25768.376953 +v -106875.906250 -10450.438477 25762.392578 +v -109817.234375 -56525.125000 30254.953125 +v -117853.859375 -59416.226562 28094.498047 +v -126063.867188 -59429.226562 28029.810547 +v -134552.203125 -62099.718750 25569.628906 +v -143335.140625 -64516.917969 22847.501953 +v -152451.062500 -66664.765625 19900.462891 +v -161938.421875 -68530.390625 16770.884766 +v -172925.734375 -70104.773438 13490.518555 +v -184237.296875 -71363.867188 10121.716797 +v -109817.234375 -70264.632812 -13089.672852 +v -117894.265625 -70273.867188 -13068.286133 +v -126063.867188 -70286.820312 -13038.324219 +v -134552.203125 -69245.992188 -15446.689453 +v -143335.140625 -68036.507812 -17741.277344 +v -152451.062500 -66664.765625 -19900.462891 +v -161938.421875 -65137.164062 -21902.347656 +v -172925.734375 -63464.660156 -23702.750000 +v -184224.140625 -61648.546875 -25292.310547 +v -117850.695312 -56534.308594 30205.835938 +v -126063.867188 -53469.105469 31955.611328 +v -134552.203125 -53486.695312 31855.835938 +v -143335.140625 -53509.531250 31726.320312 +v -152451.062500 -53538.296875 31563.189453 +v -161938.421875 -53573.667969 31362.560547 +v -172925.734375 -53621.933594 31091.308594 +v -184246.640625 -53682.339844 30766.027344 +v -117891.882812 -71152.664062 -10537.143555 +v -126063.867188 -71859.078125 -7932.753418 +v -134552.203125 -71876.671875 -7907.984863 +v -143335.140625 -71899.507812 -7875.833984 +v -152451.062500 -71928.273438 -7835.337891 +v -161938.421875 -71963.640625 -7785.533203 +v -172925.734375 -72009.960938 -7718.196777 +v -184231.156250 -72056.718750 -7637.566895 +v -114584.210938 -19071.070312 -32052.839844 +v -114584.210938 -16745.287109 -30711.707031 +v -114584.210938 -14525.320312 -29206.681641 +v -115532.460938 -19072.212891 32046.361328 +v -115494.406250 -15993.955078 30222.099609 +v -117934.570312 -15997.109375 30205.228516 +v -117934.570312 -13115.196289 28093.953125 +v -115456.359375 -13111.995117 28109.876953 +v -117934.570312 -10462.296875 25708.410156 +v -115418.312500 -10459.048828 25723.193359 +v -117934.578125 -8067.933105 23065.283203 +v -115380.273438 -8064.638672 23078.738281 +v -117934.578125 -5948.850586 20193.986328 +v -115342.242188 -5945.509766 20205.933594 +v -117934.578125 -4118.601074 17127.117188 +v -115304.210938 -4115.214355 17137.388672 +v -117934.585938 -2590.736084 13897.267578 +v -115266.187500 -2587.302734 13905.715820 +v -117934.585938 -1378.806885 10537.035156 +v -115228.171875 -1375.327515 10543.527344 +v -117934.585938 -496.365112 7079.016602 +v -115190.148438 -492.839630 7083.436035 +v -117934.593750 43.037712 3555.806152 +v -115152.140625 46.609203 3558.054932 +v -117934.593750 225.850098 0.000000 +v -115114.132812 229.467529 0.000000 +v -117934.593750 43.037704 -3555.806152 +v -115076.132812 46.700993 -3558.112793 +v -126063.867188 -56547.316406 30136.267578 +v -134552.203125 -59446.820312 27942.292969 +v -143335.140625 -62122.554688 25465.671875 +v -152451.062500 -64545.683594 22730.023438 +v -161938.421875 -66700.140625 19773.966797 +v -172925.734375 -68577.070312 16625.835938 +v -184238.453125 -70152.960938 13349.488281 +v -126063.867188 -66595.570312 20147.882812 +v -126063.867188 -68425.820312 17088.013672 +v -126063.867188 -69953.687500 13865.539062 +v -126063.867188 -71165.617188 10512.978516 +v -126063.867188 -72048.062500 7062.854492 +v -126063.867188 -71165.617188 -10512.978516 +v -134552.203125 -70304.414062 -12997.614258 +v -143335.140625 -69268.828125 -15383.888672 +v -152451.062500 -68065.273438 -17650.054688 +v -161938.421875 -66700.140625 -19773.966797 +v -172925.734375 -65184.203125 -21712.916016 +v -184225.015625 -63517.687500 -23455.277344 +v -124012.781250 -19084.603516 -31976.078125 +v -124012.781250 -16758.822266 -30638.156250 +v -124031.257812 -16758.853516 -30637.986328 +v -124012.781250 -14538.855469 -29136.736328 +v -124035.000000 -14538.892578 -29136.541016 +v -126063.867188 -16762.429688 -30618.544922 +v -124012.781250 -12438.507812 -27477.503906 +v -124038.750000 -12438.551758 -27477.287109 +v -126063.867188 -14542.463867 -29118.085938 +v -133441.359375 -14557.505859 -29040.347656 +v -124012.781250 -10471.581055 -25666.144531 +v -124042.492188 -10471.631836 -25665.914062 +v -126063.867188 -12442.116211 -27459.914062 +v -133441.359375 -12457.159180 -27386.603516 +v -133633.765625 -12457.594727 -27384.476562 +v -124047.484375 -8077.276367 -23027.121094 +v -126063.867188 -10475.189453 -25649.714844 +v -133441.359375 -10490.232422 -25581.236328 +v -133661.546875 -10490.731445 -25578.962891 +v -134552.203125 -12459.708984 -27374.175781 +v -126063.867188 -8080.826172 -23012.623047 +v -133441.359375 -5976.786133 -20094.091797 +v -133772.703125 -4147.289551 -17040.109375 +v -134552.203125 -4149.086426 -17034.660156 +v -142869.921875 -2642.727539 -13769.321289 +v -143039.796875 -1431.282349 -10439.123047 +v -143335.140625 -1432.127808 -10437.544922 +v -152298.500000 -577.925415 -6976.777832 +v -126063.867188 212.956940 0.000000 +v -126063.867188 30.144550 3547.687988 +v -126063.867188 -509.258270 7062.854492 +v -126063.867188 -1391.699951 10512.978516 +v -126063.867188 -2603.629150 13865.539062 +v -126063.867188 -4131.494141 17088.013672 +v -126063.867188 -5961.743652 20147.882812 +v -126063.867188 -8080.826172 23012.623047 +v -126063.867188 -10475.189453 25649.714844 +v -126063.867188 -13128.088867 28029.810547 +v -126063.867188 -16010.001953 30136.267578 +v -134552.203125 -56564.906250 30042.171875 +v -143335.140625 -56587.742188 29920.031250 +v -152451.062500 -56616.503906 29766.187500 +v -161938.421875 -56651.878906 29576.980469 +v -172925.734375 -56699.816406 29321.173828 +v -184245.468750 -56757.941406 29014.445312 +v -134552.203125 -68443.414062 17034.660156 +v -134552.203125 -69971.281250 13822.246094 +v -134552.203125 -71183.210938 10480.153320 +v -134552.203125 -72065.648438 7040.802246 +v -134552.203125 -71183.210938 -10480.153320 +v -143335.140625 -71206.046875 -10437.544922 +v -152451.062500 -71234.804688 -10383.876953 +v -161938.421875 -71270.179688 -10317.873047 +v -172925.734375 -71316.578125 -10228.634766 +v -184230.281250 -71363.835938 -10121.788086 +v -133441.359375 -8095.868652 -22951.185547 +v -133698.593750 -8096.452148 -22948.800781 +v -134552.203125 -10492.782227 -25569.628906 +v -142869.921875 -10514.288086 -25471.722656 +v -133441.359375 15.102141 3538.216309 +v -133441.359375 -524.300659 7043.998535 +v -133441.359375 -1406.742432 10484.911133 +v -133441.359375 -2618.671631 13828.520508 +v -133441.359375 -4146.536621 17042.392578 +v -133441.359375 -5976.786133 20094.091797 +v -133441.359375 -8095.868652 22951.185547 +v -133441.359375 -10490.232422 25581.236328 +v -133441.359375 -13143.131836 27954.978516 +v -133441.359375 -16025.044922 30055.810547 +v -134366.390625 -19105.373047 31858.283203 +v -134329.250000 -16027.077148 30044.941406 +v -134552.203125 -16027.594727 30042.171875 +v -134552.203125 -13145.681641 27942.292969 +v -142869.921875 -16049.100586 29927.142578 +v -142869.921875 -13167.187500 27835.304688 +v -143226.281250 -13168.205078 27830.244141 +v -143210.734375 -10515.260742 25467.294922 +v -143335.140625 -10515.617188 25465.671875 +v -143335.140625 -8121.253906 22847.501953 +v -152298.500000 -10543.857422 25337.115234 +v -152298.500000 -8149.493164 22732.162109 +v -152405.171875 -8149.859375 22730.667969 +v -152400.078125 -6030.759277 19901.087891 +v -152451.062500 -6030.934570 19900.462891 +v -152451.062500 -4200.685059 16878.169922 +v -161727.062500 -6065.461426 19776.998047 +v -161727.062500 -4235.211914 16773.455078 +v -161860.703125 -4235.747559 16771.832031 +v -161853.625000 -2707.854004 13609.051758 +v -161938.421875 -2708.194336 13608.213867 +v -134292.109375 -13145.078125 27945.296875 +v -134552.203125 -10492.782227 25569.628906 +v -142869.921875 -10514.288086 25471.722656 +v -143195.187500 -8120.852539 22849.140625 +v -143335.140625 -6002.171387 20003.316406 +v -152298.500000 -6030.410645 19902.335938 +v -152394.984375 -4200.492676 16878.753906 +v -152451.062500 -2672.820068 13695.266602 +v -161727.062500 -2707.346924 13610.299805 +v -134254.968750 -10492.092773 25572.767578 +v -134552.203125 -8098.418457 22940.769531 +v -142869.921875 -8119.924316 22852.931641 +v -143179.656250 -6001.725586 20004.910156 +v -143335.140625 -4171.921875 16965.402344 +v -152298.500000 -4200.161621 16879.757812 +v -152389.875000 -2672.609863 13695.784180 +v -152451.062500 -1460.890869 10383.876953 +v -134217.843750 -8097.643066 22943.937500 +v -134552.203125 -5979.335938 20084.974609 +v -142869.921875 -6000.842285 20008.070312 +v -143164.109375 -4171.431641 16966.890625 +v -143335.140625 -2644.057129 13766.049805 +v -152298.500000 -2672.296387 13696.555664 +v -152384.781250 -1460.663208 10384.301758 +v -134180.718750 -5978.474609 20088.052734 +v -134552.203125 -4149.086426 17034.660156 +v -142869.921875 -4170.592773 16969.435547 +v -143148.562500 -2643.522217 13767.366211 +v -143335.140625 -1432.127808 10437.544922 +v -152298.500000 -1460.367188 10384.854492 +v -134143.593750 -4148.139648 17037.531250 +v -134552.203125 -2621.221436 13822.246094 +v -142869.921875 -2642.727539 13769.321289 +v -143133.031250 -1431.548706 10438.625977 +v -143335.140625 -549.686096 7012.176758 +v -134106.484375 -2620.189209 13824.786133 +v -134552.203125 -1409.292236 10480.153320 +v -142869.921875 -1430.798462 10440.025391 +v -143117.484375 -549.062500 7012.958496 +v -134069.375000 -1408.174683 10482.239258 +v -134552.203125 -526.850464 7040.802246 +v -142869.921875 -548.356689 7013.843262 +v -134032.281250 -525.647644 7042.310059 +v -134552.203125 12.552354 3536.610840 +v -133995.171875 13.840353 3537.421875 +v -133735.640625 -5977.454102 -20091.703125 +v -134552.203125 -8098.418457 -22940.769531 +v -142869.921875 -8119.924316 -22852.931641 +v -142977.671875 -8120.231445 -22851.677734 +v -134552.203125 -5979.335938 -20084.974609 +v -142869.921875 -4170.592773 -16969.435547 +v -143024.265625 -2643.167236 -13768.239258 +v -143335.140625 -2644.057129 -13766.049805 +v -152298.500000 -1460.367188 -10384.854492 +v -152359.296875 -578.133972 -6976.516113 +v -152451.062500 -578.449158 -6976.121094 +v -161727.062500 -73.573090 -3482.381592 +v -161818.312500 -73.938705 -3482.151367 +v -161938.421875 -74.420738 -3481.847900 +v -171155.640625 65.137703 0.000000 +v -171977.703125 60.305088 0.000000 +v -172925.734375 54.455074 0.000000 +v -143335.140625 -59469.656250 27828.689453 +v -152451.062500 -62151.316406 25334.730469 +v -161938.421875 -64581.054688 22585.541016 +v -172925.734375 -66747.015625 19602.943359 +v -184239.625000 -68626.390625 16452.009766 +v -143335.140625 -69994.117188 13766.049805 +v -143335.140625 -71206.046875 10437.544922 +v -143335.140625 -72088.484375 7012.176758 +v -143335.140625 -70327.250000 -12944.770508 +v -152451.062500 -69297.593750 -15304.787109 +v -161938.421875 -68100.648438 -17537.863281 +v -172925.734375 -66747.015625 -19602.943359 +v -184225.890625 -65235.968750 -21486.201172 +v -142869.921875 -6000.842285 -20008.070312 +v -142993.203125 -6001.193359 -20006.814453 +v -143335.140625 -8121.253906 -22847.501953 +v -143257.375000 -19128.417969 31727.585938 +v -143241.828125 -16050.162109 29921.462891 +v -143335.140625 -16050.430664 29920.031250 +v -143335.140625 -13168.517578 27828.689453 +v -152298.500000 -16078.669922 29768.988281 +v -152298.500000 -13196.756836 27688.205078 +v -152415.375000 -13197.157227 27686.208984 +v -152410.281250 -10544.240234 25335.369141 +v -152451.062500 -10544.380859 25334.730469 +v -152451.062500 -8150.017090 22730.023438 +v -161727.062500 -10578.907227 25177.552734 +v -161727.062500 -8184.543457 22589.003906 +v -161874.828125 -8185.136230 22586.583984 +v -161867.765625 -6066.025391 19774.980469 +v -161938.421875 -6066.309082 19773.966797 +v -161938.421875 -4236.059570 16770.884766 +v -171155.640625 -6109.174316 19632.306641 +v -171155.640625 -4279.040039 16650.740234 +v -172273.703125 -4285.556641 16635.080078 +v -143008.734375 -4170.987793 -16968.236328 +v -143335.140625 -6002.171387 -20003.316406 +v -152298.500000 -6030.410645 -19902.335938 +v -143335.140625 -4171.921875 -16965.402344 +v -152298.500000 -2672.296387 -13696.555664 +v -152354.203125 -1460.558228 -10384.498047 +v -152451.062500 -1460.890869 -10383.876953 +v -161727.062500 -612.975891 -6932.840820 +v -152451.062500 -59498.417969 27685.599609 +v -161938.421875 -59533.792969 27509.619141 +v -172925.734375 -59581.425781 27271.691406 +v -184244.312500 -59637.414062 26986.433594 +v -152451.062500 -71234.804688 10383.876953 +v -152451.062500 -72117.250000 6976.121094 +v -152451.062500 -70356.007812 -12878.209961 +v -161938.421875 -70391.382812 -12796.351562 +v -172925.734375 -70437.867188 -12685.676758 +v -184229.406250 -70485.773438 -12553.174805 +v -152298.500000 -16831.097656 -30245.390625 +v -152298.500000 -4200.161621 -16879.757812 +v -152344.015625 -4200.317383 -16879.285156 +v -152420.468750 -16079.087891 29766.750000 +v -152451.062500 -13197.280273 27685.599609 +v -161727.062500 -13231.806641 27513.835938 +v -161881.890625 -10579.528320 25174.726562 +v -161938.421875 -8185.391113 22585.541016 +v -171155.640625 -8228.123047 22423.740234 +v -172332.921875 -6115.997559 19612.857422 +v -172925.734375 -4289.537109 16625.835938 +v -152349.109375 -2672.469971 -13696.128906 +v -152451.062500 -4200.685059 -16878.169922 +v -152321.078125 -14611.208008 -28762.816406 +v -152451.062500 -14611.655273 -28760.509766 +v -161727.062500 -12545.833984 -26954.429688 +v -161768.875000 -10579.075195 -25176.789062 +v -161938.421875 -10579.754883 -25173.693359 +v -171155.640625 -8228.123047 -22423.740234 +v -171622.843750 -6111.833008 -19624.625000 +v -172925.734375 -6119.592773 -19602.943359 +v -180584.203125 -4348.469727 -16511.011719 +v -180924.359375 -2824.635010 -13392.988281 +v -184204.078125 -2859.347656 -13349.949219 +v -190012.781250 -2937.008545 -13269.132812 +v -199441.359375 -1910.190674 -9951.170898 +v -207258.000000 -1250.856079 -6617.311035 +v -208869.921875 -769.657776 -3316.397705 +v -152451.062500 -2672.820068 -13695.266602 +v -161727.062500 -1495.417603 -10319.454102 +v -161811.250000 -613.313232 -6932.417969 +v -161938.421875 -613.823547 -6931.778320 +v -171155.640625 -117.663170 -3456.904297 +v -171918.531250 -122.137657 -3454.691162 +v -172925.734375 -128.337982 -3451.733887 +v -161938.421875 -62186.691406 25173.693359 +v -172925.734375 -64628.156250 22390.203125 +v -184240.796875 -66797.695312 19397.968750 +v -161938.421875 -72152.625000 6931.778320 +v -161938.421875 -69332.968750 -15207.502930 +v -172925.734375 -68147.375000 -17386.179688 +v -184226.765625 -66797.632812 -19398.242188 +v -161727.062500 -2707.346924 -13610.299805 +v -161804.187500 -1495.726685 -10318.877930 +v -161938.421875 -1496.265259 -10317.873047 +v -171155.640625 -657.032043 -6882.119141 +v -172925.734375 -62234.046875 24955.968750 +v -184243.140625 -62288.066406 24694.962891 +v -172925.734375 -69379.562500 -15075.975586 +v -184228.515625 -69428.242188 -14918.519531 +v -171155.640625 -19234.816406 -31137.880859 +v -171155.640625 -16909.181641 -29835.031250 +v -184241.968750 -64680.402344 22156.056641 +v -184227.640625 -68196.960938 -17204.611328 +v -180584.203125 -16973.093750 -29584.666016 +v -180584.203125 -14754.236328 -28134.871094 +v -180584.203125 -12654.938477 -26532.691406 +v -180786.796875 -10690.806641 -24778.816406 +v -180761.000000 -12656.491211 -26528.208984 +v -184204.046875 -12689.568359 -26438.820312 +v -184204.046875 -14788.151367 -28035.332031 +v -190012.781250 -14856.083008 -27865.615234 +v -180735.218750 -14755.536133 -28130.812500 +v -184204.046875 -10724.294922 -24695.931641 +v -190012.781250 -10795.541016 -24546.429688 +v -199441.359375 -8573.445312 -21782.841797 +v -207258.000000 -6666.460449 -18876.900391 +v -208869.921875 -4900.066406 -15973.967773 +v -218298.500000 -3760.614990 -12777.290039 +v -184204.109375 -227.786972 -3415.767334 +v -184204.109375 -45.128269 0.000000 +v -184204.125000 -227.787140 3415.767090 +v -190012.781250 -12759.211914 -26278.767578 +v -199441.359375 -12917.868164 -25992.472656 +v -190012.781250 -307.593994 -3395.089355 +v -190012.781250 -125.084190 0.000000 +v -190012.781250 -307.593994 3395.089355 +v -199441.359375 -4639.388184 16174.839844 +v -199441.359375 -1031.161987 6685.419434 +v -199441.359375 -493.845367 3358.101318 +v -207258.000000 -1250.856079 6617.311035 +v -207258.000000 -715.101807 3323.890381 +v -208869.921875 -1305.012817 6602.394531 +v -199441.359375 -311.740021 0.000000 +v -199441.359375 -10958.548828 -24279.007812 +v -207258.000000 -11149.376953 -24031.662109 +v -207258.000000 -8771.208984 -21560.925781 +v -208869.921875 -6716.581055 -18834.349609 +v -218298.500000 -5268.623047 -15746.846680 +v -207258.000000 -6666.460449 18876.900391 +v -208869.921875 -8819.761719 21512.324219 +v -208869.921875 -8819.761719 -21512.324219 +v -218298.500000 -7075.085449 -18566.558594 +v 225234.750000 -22931.117188 33889.507812 +v 234739.109375 -22083.582031 32784.199219 +v 244062.593750 -21267.048828 31313.355469 +v 225234.750000 -20619.611328 33053.441406 +v 234739.109375 -19918.253906 31975.402344 +v 244062.593750 -19250.968750 30540.845703 +v 253187.203125 -18633.263672 28715.816406 +v 225234.750000 -18373.470703 31905.207031 +v 234739.109375 -17814.158203 30864.617188 +v 244062.593750 -17291.900391 29479.894531 +v 253187.203125 -16820.960938 27718.265625 +v 262130.109375 -16398.640625 25612.503906 +v 225234.750000 -16214.483398 30457.640625 +v 234739.109375 -15791.704102 29464.261719 +v 244062.593750 -15408.846680 28142.365234 +v 253187.203125 -15078.981445 26460.664062 +v 262130.109375 -14799.019531 24450.443359 +v 270917.250000 -14561.833008 22158.634766 +v 225234.750000 -14164.439453 28723.582031 +v 234739.109375 -13871.304688 27786.759766 +v 244062.593750 -13620.811523 26540.123047 +v 253187.203125 -13424.900391 24954.166016 +v 262130.109375 -13280.116211 23058.394531 +v 270917.250000 -13179.153320 20897.066406 +v 279574.593750 -13114.709961 18514.443359 +v 279574.593750 -18441.238281 21844.257812 +v 288128.093750 -16567.675781 18359.843750 +v 288128.093750 -33178.449219 -4199.768555 +v 288128.093750 -32231.720703 -8203.419922 +v 288128.093750 -28705.193359 -14839.579102 +v 288128.093750 -24487.066406 -18216.371094 +v 288128.093750 -11087.613281 -13579.504883 +v 279574.593750 -35433.148438 -6458.727539 +v 279574.593750 -34150.613281 -10978.258789 +v 279574.593750 -29817.427734 -18207.126953 +v 279574.593750 -24897.757812 -21600.474609 +v 279574.593750 -9906.208984 -14137.978516 +v 270917.250000 -37559.371094 -9041.024414 +v 262130.109375 -39540.054688 -11855.862305 +v 253187.203125 -41359.683594 -14796.735352 +v 244062.593750 -43004.359375 -17743.646484 +v 234739.109375 -44454.984375 -20576.652344 +v 225234.750000 -45667.468750 -23219.666016 +v 215576.312500 -46595.304688 -25623.363281 +v 205790.625000 -47199.453125 -27758.732422 +v 270917.250000 -35901.328125 -13970.928711 +v 262130.109375 -37469.691406 -17075.203125 +v 253187.203125 -38843.156250 -20172.533203 +v 244062.593750 -40010.906250 -23134.914062 +v 234739.109375 -40959.214844 -25844.529297 +v 225234.750000 -41654.640625 -28246.806641 +v 270917.250000 -30706.583984 -21553.320312 +v 262130.109375 -31370.863281 -24762.921875 +v 253187.203125 -31811.615234 -27718.265625 +v 244062.593750 -32033.343750 -30302.185547 +v 234739.109375 -32038.042969 -32418.324219 +v 225234.750000 -31809.492188 -34048.242188 +v 270917.250000 -25080.093750 -24770.878906 +v 262130.109375 -25042.480469 -27615.695312 +v 253187.203125 -24796.419922 -30027.134766 +v 244062.593750 -24356.496094 -31905.341797 +v 234739.109375 -23735.482422 -33185.140625 +v 225234.750000 -22931.117188 -33889.507812 +v 270917.250000 -8665.647461 -13970.928711 +v 262130.109375 -7418.817383 -13074.683594 +v 253187.203125 -6220.969238 -11481.281250 +v -289421.031250 -24337.732422 8813.791016 +v -289421.031250 -24337.732422 0.000000 +v -289421.031250 -24337.732422 -8813.791016 +v -289610.906250 -23865.843750 -8813.791016 +v -289913.656250 -23457.109375 -8813.791016 +v -290309.750000 -23137.970703 -8813.791016 +v -289913.656250 -23457.109375 0.000000 +v -290309.750000 -23137.970703 0.000000 +v -289913.656250 -23457.109375 8813.791016 +v -290309.750000 -23137.970703 8813.791016 +v -289610.906250 -23865.843750 8813.791016 +v -289610.906250 -23865.843750 0.000000 +v -290773.531250 -22929.066406 8813.791016 +v -290773.531250 -22929.066406 0.000000 +v -290773.531250 -22929.066406 -8813.791016 +v -290838.718750 -29931.851562 10311.961914 +v -290838.718750 -29931.851562 0.118929 +v -290838.718750 -29931.851562 -10311.723633 +v -290356.375000 -29732.050781 -10311.723633 +v -289942.156250 -29414.212891 -10311.723633 +v -289624.312500 -29000.000000 -10311.723633 +v -289424.500000 -28517.638672 -10311.723633 +v -289424.500000 -28517.638672 0.118929 +v -289424.500000 -28517.638672 10311.961914 +v -289624.312500 -29000.000000 10311.961914 +v -289942.156250 -29414.212891 10311.961914 +v -290356.375000 -29732.050781 10311.961914 +v -290356.375000 -29732.050781 0.118929 +v -289942.156250 -29414.212891 0.118929 +v -289624.312500 -29000.000000 0.118929 +v -286517.625000 -22068.148438 8919.981445 +v -286517.625000 -22068.148438 0.000000 +v -286517.625000 -22068.148438 -8919.981445 +v -287000.000000 -22267.949219 -8919.981445 +v -287414.218750 -22585.787109 -8919.981445 +v -287732.062500 -23000.000000 -8919.981445 +v -287931.843750 -23482.361328 -8919.981445 +v -287931.843750 -23482.361328 0.000000 +v -287931.843750 -23482.361328 8919.981445 +v -287732.062500 -23000.000000 8919.981445 +v -287414.218750 -22585.787109 8919.981445 +v -287000.000000 -22267.949219 8919.981445 +v -287000.000000 -22267.949219 0.000000 +v -287414.218750 -22585.787109 0.000000 +v -287732.062500 -23000.000000 0.000000 +v -287931.843750 -28517.638672 11437.205078 +v -287931.843750 -28517.638672 0.000000 +v -287931.843750 -28517.638672 -11437.205078 +v -287732.062500 -29000.000000 -11437.205078 +v -287414.218750 -29414.212891 -11437.205078 +v -287000.000000 -29732.050781 -11437.205078 +v -286517.625000 -29931.851562 -11437.205078 +v -286517.625000 -29931.851562 0.000000 +v -286517.625000 -29931.851562 11437.205078 +v -287000.000000 -29732.050781 11437.205078 +v -287414.218750 -29414.212891 11437.205078 +v -287732.062500 -29000.000000 11437.205078 +v -287732.062500 -29000.000000 0.000000 +v -287414.218750 -29414.212891 0.000000 +v -287000.000000 -29732.050781 0.000000 +v -281993.718750 -29931.851562 14669.689453 +v -281993.718750 -29931.851562 4889.896973 +v -281993.718750 -29931.851562 -4889.895508 +v -281511.343750 -29732.050781 -4889.895508 +v -281511.343750 -29732.050781 -14669.688477 +v -281097.156250 -29414.212891 -14669.688477 +v -280779.312500 -29000.000000 -14669.688477 +v -280579.500000 -28517.638672 -14669.688477 +v -280579.500000 -28517.638672 -4889.895508 +v -280579.500000 -28517.638672 4889.896973 +v -280779.312500 -29000.000000 4889.896973 +v -280779.312500 -29000.000000 14669.689453 +v -281097.156250 -29414.212891 14669.689453 +v -281511.343750 -29732.050781 14669.689453 +v -280579.500000 -28517.638672 14669.689453 +v -281993.718750 -29931.851562 -14669.688477 +v -281511.343750 -29732.050781 4889.896973 +v -281097.156250 -29414.212891 4889.896973 +v -281097.156250 -29414.212891 -4889.895508 +v -280779.312500 -29000.000000 -4889.895508 +v -280579.500000 -23482.361328 10905.983398 +v -280579.500000 -23482.361328 0.000000 +v -280579.500000 -23482.361328 -10905.983398 +v -280779.312500 -23000.000000 -10905.983398 +v -281097.156250 -22585.787109 -10905.983398 +v -281511.343750 -22267.949219 -10905.983398 +v -281993.718750 -22068.148438 -10905.983398 +v -281993.718750 -22068.148438 0.000000 +v -281993.718750 -22068.148438 10905.983398 +v -281511.343750 -22267.949219 10905.983398 +v -281097.156250 -22585.787109 10905.983398 +v -280779.312500 -23000.000000 10905.983398 +v -280779.312500 -23000.000000 0.000000 +v -281097.156250 -22585.787109 0.000000 +v -281511.343750 -22267.949219 0.000000 +v -279552.031250 -30517.638672 15804.035156 +v -279552.031250 -30517.638672 5268.011719 +v -279552.031250 -30517.638672 -5268.011719 +v -279352.218750 -31000.000000 -5268.011719 +v -279352.218750 -31000.000000 -15804.035156 +v -279034.375000 -31414.212891 -15804.035156 +v -278620.156250 -31732.050781 -15804.035156 +v -278137.812500 -31931.851562 -15804.035156 +v -278137.812500 -31931.851562 -5268.011719 +v -278137.812500 -31931.851562 5268.011719 +v -278620.156250 -31732.050781 5268.011719 +v -278620.156250 -31732.050781 15804.035156 +v -279034.375000 -31414.212891 15804.035156 +v -279352.218750 -31000.000000 15804.035156 +v -278137.812500 -31931.851562 15804.035156 +v -279552.031250 -30517.638672 -15804.035156 +v -279352.218750 -31000.000000 5268.011719 +v -279034.375000 -31414.212891 5268.011719 +v -279034.375000 -31414.212891 -5268.011719 +v -278620.156250 -31732.050781 -5268.011719 +v -267823.750000 -31931.851562 17037.667969 +v -267823.750000 -31931.851562 5679.224121 +v -267823.750000 -31931.851562 -5679.220703 +v -267341.406250 -31732.050781 -5679.220703 +v -267341.406250 -31732.050781 -17037.666016 +v -266927.187500 -31414.212891 -17037.666016 +v -266609.343750 -31000.000000 -17037.666016 +v -266409.562500 -30517.638672 -17037.666016 +v -266409.562500 -30517.638672 -5679.220703 +v -266409.562500 -30517.638672 5679.224121 +v -266609.343750 -31000.000000 5679.224121 +v -266609.343750 -31000.000000 17037.667969 +v -266927.187500 -31414.212891 17037.667969 +v -267341.406250 -31732.050781 17037.667969 +v -266409.562500 -30517.638672 17037.667969 +v -267823.750000 -31931.851562 -17037.666016 +v -267341.406250 -31732.050781 5679.224121 +v -266927.187500 -31414.212891 5679.224121 +v -266927.187500 -31414.212891 -5679.220703 +v -266609.343750 -31000.000000 -5679.220703 +v -266409.562500 -23060.357422 15402.917969 +v -266409.562500 -23060.357422 5134.306152 +v -266409.562500 -23060.357422 -5134.306152 +v -266609.343750 -22577.994141 -5134.306152 +v -266609.343750 -22577.994141 -15402.917969 +v -266927.187500 -22163.781250 -15402.917969 +v -267341.406250 -21845.943359 -15402.917969 +v -267823.750000 -21646.142578 -15402.917969 +v -267823.750000 -21646.142578 -5134.306152 +v -267823.750000 -21646.142578 5134.306152 +v -267341.406250 -21845.943359 5134.306152 +v -267341.406250 -21845.943359 15402.917969 +v -266927.187500 -22163.781250 15402.917969 +v -266609.343750 -22577.994141 15402.917969 +v -267823.750000 -21646.142578 15402.917969 +v -266409.562500 -23060.357422 -15402.917969 +v -266609.343750 -22577.994141 5134.306152 +v -266927.187500 -22163.781250 5134.306152 +v -266927.187500 -22163.781250 -5134.306152 +v -267341.406250 -21845.943359 -5134.306152 +v -278137.812500 -21646.142578 10945.179688 +v -278137.812500 -21646.142578 0.000000 +v -278137.812500 -21646.142578 -10945.179688 +v -278620.156250 -21845.943359 -10945.179688 +v -279034.375000 -22163.781250 -10945.179688 +v -279352.218750 -22577.994141 -10945.179688 +v -279552.031250 -23060.357422 -10945.179688 +v -279552.031250 -23060.357422 0.000000 +v -279552.031250 -23060.357422 10945.179688 +v -279352.218750 -22577.994141 10945.179688 +v -279034.375000 -22163.781250 10945.179688 +v -278620.156250 -21845.943359 10945.179688 +v -278620.156250 -21845.943359 0.000000 +v -279034.375000 -22163.781250 0.000000 +v -279352.218750 -22577.994141 0.000000 +v 168516.359375 -21974.726562 23375.857422 +v 168516.359375 -21974.726562 11687.928711 +v 168516.359375 -21974.726562 0.000000 +v 167964.406250 -22105.890625 11687.928711 +v 167964.406250 -22105.890625 0.000000 +v 167577.062500 -22268.785156 11687.928711 +v 167577.062500 -22268.785156 0.000000 +v 167219.140625 -22482.214844 11687.928711 +v 167219.140625 -22482.214844 0.000000 +v 166833.593750 -22800.855469 11687.928711 +v 166833.593750 -22800.855469 0.000000 +v 166509.125000 -23175.310547 11687.928711 +v 166509.125000 -23175.310547 0.000000 +v 166220.031250 -23660.902344 11687.928711 +v 166220.031250 -23660.902344 0.000000 +v 166004.125000 -24287.080078 11687.928711 +v 166004.125000 -24287.080078 0.000000 +v 167964.406250 -22105.890625 23375.857422 +v 167577.062500 -22268.785156 23375.857422 +v 167219.140625 -22482.214844 23375.857422 +v 166833.593750 -22800.855469 23375.857422 +v 166509.125000 -23175.310547 23375.857422 +v 166220.031250 -23660.902344 23375.857422 +v 166004.125000 -24287.080078 23375.857422 +v 166004.125000 -24287.080078 -23375.857422 +v 166004.125000 -24287.080078 -11687.928711 +v 166220.031250 -23660.902344 -11687.928711 +v 166509.125000 -23175.310547 -11687.928711 +v 166833.593750 -22800.855469 -11687.928711 +v 167219.140625 -22482.214844 -11687.928711 +v 167577.062500 -22268.785156 -11687.928711 +v 167964.406250 -22105.890625 -11687.928711 +v 168516.359375 -21974.726562 -11687.928711 +v 166220.031250 -23660.902344 -23375.857422 +v 166509.125000 -23175.310547 -23375.857422 +v 166833.593750 -22800.855469 -23375.857422 +v 167219.140625 -22482.214844 -23375.857422 +v 167577.062500 -22268.785156 -23375.857422 +v 167964.406250 -22105.890625 -23375.857422 +v 168516.359375 -21974.726562 -23375.857422 +v 165988.421875 -29322.224609 26024.310547 +v 165988.421875 -29322.224609 15614.586914 +v 165988.421875 -29322.224609 5204.862305 +v 166152.375000 -29868.781250 15614.586914 +v 166152.375000 -29868.781250 5204.862305 +v 166474.437500 -30459.638672 15614.586914 +v 166474.437500 -30459.638672 5204.862305 +v 166836.828125 -30885.695312 15614.586914 +v 166836.828125 -30885.695312 5204.862305 +v 167273.312500 -31237.945312 15614.586914 +v 167273.312500 -31237.945312 5204.862305 +v 167663.796875 -31456.732422 15614.586914 +v 167663.796875 -31456.732422 5204.862305 +v 168082.984375 -31615.132812 15614.586914 +v 168082.984375 -31615.132812 5204.862305 +v 168544.328125 -31712.439453 15614.586914 +v 168544.328125 -31712.439453 5204.862305 +v 166152.375000 -29868.781250 26024.310547 +v 166474.437500 -30459.638672 26024.310547 +v 166836.828125 -30885.695312 26024.310547 +v 167273.312500 -31237.945312 26024.310547 +v 167663.796875 -31456.732422 26024.310547 +v 168082.984375 -31615.132812 26024.310547 +v 168544.328125 -31712.439453 26024.310547 +v 168544.328125 -31712.439453 -26024.310547 +v 168544.328125 -31712.439453 -15614.586914 +v 168544.328125 -31712.439453 -5204.862305 +v 168082.984375 -31615.132812 -15614.586914 +v 168082.984375 -31615.132812 -5204.862305 +v 167663.796875 -31456.732422 -15614.586914 +v 167663.796875 -31456.732422 -5204.862305 +v 167273.312500 -31237.945312 -15614.586914 +v 167273.312500 -31237.945312 -5204.862305 +v 166836.828125 -30885.695312 -15614.586914 +v 166836.828125 -30885.695312 -5204.862305 +v 166474.437500 -30459.638672 -15614.586914 +v 166474.437500 -30459.638672 -5204.862305 +v 166152.375000 -29868.781250 -15614.586914 +v 166152.375000 -29868.781250 -5204.862305 +v 165988.421875 -29322.224609 -15614.586914 +v 165988.421875 -29322.224609 -5204.862305 +v 168082.984375 -31615.132812 -26024.310547 +v 167663.796875 -31456.732422 -26024.310547 +v 167273.312500 -31237.945312 -26024.310547 +v 166836.828125 -30885.695312 -26024.310547 +v 166474.437500 -30459.638672 -26024.310547 +v 166152.375000 -29868.781250 -26024.310547 +v 165988.421875 -29322.224609 -26024.310547 +v 169752.078125 -31691.560547 21861.197266 +v 169752.078125 -31691.560547 7287.065918 +v 169752.078125 -31691.560547 -7287.065918 +v 170258.281250 -31555.484375 7287.065918 +v 170258.281250 -31555.484375 -7287.065918 +v 170833.875000 -31272.320312 7287.065918 +v 170833.875000 -31272.320312 -7287.065918 +v 171231.562500 -30971.556641 7287.065918 +v 171231.562500 -30971.556641 -7287.065918 +v 171573.187500 -30610.013672 7287.065918 +v 171573.187500 -30610.013672 -7287.065918 +v 171903.828125 -30096.605469 7287.065918 +v 171903.828125 -30096.605469 -7287.065918 +v 172150.953125 -29418.859375 7287.065918 +v 172150.953125 -29418.859375 -7287.065918 +v 172150.953125 -29418.859375 -21861.197266 +v 171903.828125 -30096.605469 -21861.197266 +v 170258.281250 -31555.484375 21861.197266 +v 170833.875000 -31272.320312 21861.197266 +v 171231.562500 -30971.556641 21861.197266 +v 171573.187500 -30610.013672 21861.197266 +v 171903.828125 -30096.605469 21861.197266 +v 172150.953125 -29418.859375 21861.197266 +v 171573.187500 -30610.013672 -21861.197266 +v 171231.562500 -30971.556641 -21861.197266 +v 170833.875000 -31272.320312 -21861.197266 +v 170258.281250 -31555.484375 -21861.197266 +v 169752.078125 -31691.560547 -21861.197266 +v 172168.218750 -24343.314453 27348.216797 +v 172168.218750 -24343.314453 19534.441406 +v 172168.218750 -24343.314453 11720.664062 +v 171987.531250 -23765.898438 19534.441406 +v 171987.531250 -23765.898438 11720.664062 +v 171741.453125 -23306.007812 19534.441406 +v 171741.453125 -23306.007812 11720.664062 +v 171263.296875 -22740.685547 19534.441406 +v 171263.296875 -22740.685547 11720.664062 +v 170886.968750 -22445.462891 19534.441406 +v 170886.968750 -22445.462891 11720.664062 +v 170464.187500 -22211.861328 19534.441406 +v 170464.187500 -22211.861328 11720.664062 +v 169823.984375 -22005.466797 19534.441406 +v 169823.984375 -22005.466797 11720.664062 +v 169509.484375 -21959.056641 19534.441406 +v 169509.484375 -21959.056641 11720.664062 +v 169509.484375 -21959.056641 3906.888184 +v 169509.484375 -21959.056641 -3906.888184 +v 169509.484375 -21959.056641 -11720.664062 +v 169823.984375 -22005.466797 -11720.664062 +v 169823.984375 -22005.466797 -19534.441406 +v 170464.187500 -22211.861328 -19534.441406 +v 170464.187500 -22211.861328 -27348.216797 +v 170886.968750 -22445.462891 -27348.216797 +v 171987.531250 -23765.898438 27348.216797 +v 171741.453125 -23306.007812 27348.216797 +v 171263.296875 -22740.685547 27348.216797 +v 170886.968750 -22445.462891 27348.216797 +v 170464.187500 -22211.861328 27348.216797 +v 169823.984375 -22005.466797 27348.216797 +v 169509.484375 -21959.056641 27348.216797 +v 169509.484375 -21959.056641 -27348.216797 +v 169509.484375 -21959.056641 -19534.441406 +v 169823.984375 -22005.466797 -27348.216797 +v 171263.296875 -22740.685547 -27348.216797 +v 171741.453125 -23306.007812 -27348.216797 +v 171987.531250 -23765.898438 -27348.216797 +v 172168.218750 -24343.314453 -27348.216797 +v 172168.218750 -24343.314453 -19534.441406 +v 172168.218750 -24343.314453 -11720.664062 +v 171987.531250 -23765.898438 -11720.664062 +v 171987.531250 -23765.898438 -3906.888184 +v 171741.453125 -23306.007812 -3906.888184 +v 171741.453125 -23306.007812 3906.888184 +v 171263.296875 -22740.685547 3906.888184 +v 172168.218750 -24343.314453 -3906.888184 +v 172168.218750 -24343.314453 3906.888184 +v 171987.531250 -23765.898438 -19534.441406 +v 171741.453125 -23306.007812 -19534.441406 +v 171741.453125 -23306.007812 -11720.664062 +v 171263.296875 -22740.685547 -19534.441406 +v 171263.296875 -22740.685547 -11720.664062 +v 171263.296875 -22740.685547 -3906.888184 +v 170886.968750 -22445.462891 -19534.441406 +v 170886.968750 -22445.462891 -11720.664062 +v 170886.968750 -22445.462891 -3906.888184 +v 170886.968750 -22445.462891 3906.888184 +v 170464.187500 -22211.861328 -11720.664062 +v 169823.984375 -22005.466797 -3906.888184 +v 170464.187500 -22211.861328 -3906.888184 +v 170464.187500 -22211.861328 3906.888184 +v 171987.531250 -23765.898438 3906.888184 +v 169823.984375 -22005.466797 3906.888184 +v 158334.531250 -21974.726562 23287.082031 +v 158334.531250 -21974.726562 11643.541016 +v 158334.531250 -21974.726562 0.000000 +v 157782.578125 -22105.890625 11643.541016 +v 157782.578125 -22105.890625 0.000000 +v 157395.250000 -22268.785156 11643.541016 +v 157395.250000 -22268.785156 0.000000 +v 157037.328125 -22482.214844 11643.541016 +v 157037.328125 -22482.214844 0.000000 +v 156651.781250 -22800.855469 11643.541016 +v 156651.781250 -22800.855469 0.000000 +v 156327.312500 -23175.310547 11643.541016 +v 156327.312500 -23175.310547 0.000000 +v 156038.218750 -23660.902344 11643.541016 +v 156038.218750 -23660.902344 0.000000 +v 155822.296875 -24287.080078 11643.541016 +v 155822.296875 -24287.080078 0.000000 +v 157782.578125 -22105.890625 23287.082031 +v 157395.250000 -22268.785156 23287.082031 +v 157037.328125 -22482.214844 23287.082031 +v 156651.781250 -22800.855469 23287.082031 +v 156327.312500 -23175.310547 23287.082031 +v 156038.218750 -23660.902344 23287.082031 +v 155822.296875 -24287.080078 23287.082031 +v 155822.296875 -24287.080078 -23287.082031 +v 155822.296875 -24287.080078 -11643.541016 +v 156038.218750 -23660.902344 -11643.541016 +v 156327.312500 -23175.310547 -11643.541016 +v 156651.781250 -22800.855469 -11643.541016 +v 157037.328125 -22482.214844 -11643.541016 +v 157395.250000 -22268.785156 -11643.541016 +v 157782.578125 -22105.890625 -11643.541016 +v 158334.531250 -21974.726562 -11643.541016 +v 156038.218750 -23660.902344 -23287.082031 +v 156327.312500 -23175.310547 -23287.082031 +v 156651.781250 -22800.855469 -23287.082031 +v 157037.328125 -22482.214844 -23287.082031 +v 157395.250000 -22268.785156 -23287.082031 +v 157782.578125 -22105.890625 -23287.082031 +v 158334.531250 -21974.726562 -23287.082031 +v 155806.593750 -29322.224609 25989.855469 +v 155806.593750 -29322.224609 15593.913086 +v 155806.593750 -29322.224609 5197.971191 +v 155970.546875 -29868.781250 15593.913086 +v 155970.546875 -29868.781250 5197.971191 +v 156292.625000 -30459.638672 15593.913086 +v 156292.625000 -30459.638672 5197.971191 +v 156655.000000 -30885.695312 15593.913086 +v 156655.000000 -30885.695312 5197.971191 +v 157091.500000 -31237.945312 15593.913086 +v 157091.500000 -31237.945312 5197.971191 +v 157481.984375 -31456.732422 15593.913086 +v 157481.984375 -31456.732422 5197.971191 +v 157901.156250 -31615.132812 15593.913086 +v 157901.156250 -31615.132812 5197.971191 +v 158362.500000 -31712.439453 15593.913086 +v 158362.500000 -31712.439453 5197.971191 +v 155970.546875 -29868.781250 25989.855469 +v 156292.625000 -30459.638672 25989.855469 +v 156655.000000 -30885.695312 25989.855469 +v 157091.500000 -31237.945312 25989.855469 +v 157481.984375 -31456.732422 25989.855469 +v 157901.156250 -31615.132812 25989.855469 +v 158362.500000 -31712.439453 25989.855469 +v 158362.500000 -31712.439453 -25989.855469 +v 158362.500000 -31712.439453 -15593.913086 +v 158362.500000 -31712.439453 -5197.971191 +v 157901.156250 -31615.132812 -15593.913086 +v 157901.156250 -31615.132812 -5197.971191 +v 157481.984375 -31456.732422 -15593.913086 +v 157481.984375 -31456.732422 -5197.971191 +v 157091.500000 -31237.945312 -15593.913086 +v 157091.500000 -31237.945312 -5197.971191 +v 156655.000000 -30885.695312 -15593.913086 +v 156655.000000 -30885.695312 -5197.971191 +v 156292.625000 -30459.638672 -15593.913086 +v 156292.625000 -30459.638672 -5197.971191 +v 155970.546875 -29868.781250 -15593.913086 +v 155970.546875 -29868.781250 -5197.971191 +v 155806.593750 -29322.224609 -15593.913086 +v 155806.593750 -29322.224609 -5197.971191 +v 157901.156250 -31615.132812 -25989.855469 +v 157481.984375 -31456.732422 -25989.855469 +v 157091.500000 -31237.945312 -25989.855469 +v 156655.000000 -30885.695312 -25989.855469 +v 156292.625000 -30459.638672 -25989.855469 +v 155970.546875 -29868.781250 -25989.855469 +v 155806.593750 -29322.224609 -25989.855469 +v 159570.250000 -31691.560547 21832.330078 +v 159570.250000 -31691.560547 7277.443359 +v 159570.250000 -31691.560547 -7277.443359 +v 160076.468750 -31555.484375 7277.443359 +v 160076.468750 -31555.484375 -7277.443359 +v 160652.046875 -31272.320312 7277.443359 +v 160652.046875 -31272.320312 -7277.443359 +v 161049.734375 -30971.556641 7277.443359 +v 161049.734375 -30971.556641 -7277.443359 +v 161391.375000 -30610.013672 7277.443359 +v 161391.375000 -30610.013672 -7277.443359 +v 161722.000000 -30096.605469 7277.443359 +v 161722.000000 -30096.605469 -7277.443359 +v 161969.140625 -29418.859375 7277.443359 +v 161969.140625 -29418.859375 -7277.443359 +v 161969.140625 -29418.859375 -21832.330078 +v 161722.000000 -30096.605469 -21832.330078 +v 160076.468750 -31555.484375 21832.330078 +v 160652.046875 -31272.320312 21832.330078 +v 161049.734375 -30971.556641 21832.330078 +v 161391.375000 -30610.013672 21832.330078 +v 161722.000000 -30096.605469 21832.330078 +v 161969.140625 -29418.859375 21832.330078 +v 161391.375000 -30610.013672 -21832.330078 +v 161049.734375 -30971.556641 -21832.330078 +v 160652.046875 -31272.320312 -21832.330078 +v 160076.468750 -31555.484375 -21832.330078 +v 159570.250000 -31691.560547 -21832.330078 +v 161986.406250 -24343.314453 27229.064453 +v 161986.406250 -24343.314453 19449.332031 +v 161986.406250 -24343.314453 11669.598633 +v 161805.718750 -23765.898438 19449.332031 +v 161805.718750 -23765.898438 11669.598633 +v 161559.640625 -23306.007812 19449.332031 +v 161559.640625 -23306.007812 11669.598633 +v 161081.468750 -22740.685547 19449.332031 +v 161081.468750 -22740.685547 11669.598633 +v 160705.140625 -22445.462891 19449.332031 +v 160705.140625 -22445.462891 11669.598633 +v 160282.375000 -22211.861328 19449.332031 +v 160282.375000 -22211.861328 11669.598633 +v 159642.156250 -22005.466797 19449.332031 +v 159642.156250 -22005.466797 11669.598633 +v 159327.671875 -21959.056641 19449.332031 +v 159327.671875 -21959.056641 11669.598633 +v 159327.671875 -21959.056641 3889.866211 +v 159327.671875 -21959.056641 -3889.866211 +v 159327.671875 -21959.056641 -11669.598633 +v 159642.156250 -22005.466797 -11669.598633 +v 159642.156250 -22005.466797 -19449.332031 +v 160282.375000 -22211.861328 -19449.332031 +v 160282.375000 -22211.861328 -27229.064453 +v 160705.140625 -22445.462891 -27229.064453 +v 161805.718750 -23765.898438 27229.064453 +v 161559.640625 -23306.007812 27229.064453 +v 161081.468750 -22740.685547 27229.064453 +v 160705.140625 -22445.462891 27229.064453 +v 160282.375000 -22211.861328 27229.064453 +v 159642.156250 -22005.466797 27229.064453 +v 159327.671875 -21959.056641 27229.064453 +v 159327.671875 -21959.056641 -27229.064453 +v 159327.671875 -21959.056641 -19449.332031 +v 159642.156250 -22005.466797 -27229.064453 +v 161081.468750 -22740.685547 -27229.064453 +v 161559.640625 -23306.007812 -27229.064453 +v 161805.718750 -23765.898438 -27229.064453 +v 161986.406250 -24343.314453 -27229.064453 +v 161986.406250 -24343.314453 -19449.332031 +v 161986.406250 -24343.314453 -11669.598633 +v 161805.718750 -23765.898438 -11669.598633 +v 161805.718750 -23765.898438 -3889.866211 +v 161559.640625 -23306.007812 -3889.866211 +v 161559.640625 -23306.007812 3889.866211 +v 161081.468750 -22740.685547 3889.866211 +v 161986.406250 -24343.314453 -3889.866211 +v 161986.406250 -24343.314453 3889.866211 +v 161805.718750 -23765.898438 -19449.332031 +v 161559.640625 -23306.007812 -19449.332031 +v 161559.640625 -23306.007812 -11669.598633 +v 161081.468750 -22740.685547 -19449.332031 +v 161081.468750 -22740.685547 -11669.598633 +v 161081.468750 -22740.685547 -3889.866211 +v 160705.140625 -22445.462891 -19449.332031 +v 160705.140625 -22445.462891 -11669.598633 +v 160705.140625 -22445.462891 -3889.866211 +v 160705.140625 -22445.462891 3889.866211 +v 160282.375000 -22211.861328 -11669.598633 +v 159642.156250 -22005.466797 -3889.866211 +v 160282.375000 -22211.861328 -3889.866211 +v 160282.375000 -22211.861328 3889.866211 +v 161805.718750 -23765.898438 3889.866211 +v 159642.156250 -22005.466797 3889.866211 +v 148152.718750 -21974.726562 23220.529297 +v 148152.718750 -21974.726562 11610.264648 +v 148152.718750 -21974.726562 0.000000 +v 147600.765625 -22105.890625 11610.264648 +v 147600.765625 -22105.890625 0.000000 +v 147213.421875 -22268.785156 11610.264648 +v 147213.421875 -22268.785156 0.000000 +v 146855.515625 -22482.214844 11610.264648 +v 146855.515625 -22482.214844 0.000000 +v 146469.953125 -22800.855469 11610.264648 +v 146469.953125 -22800.855469 0.000000 +v 146145.500000 -23175.310547 11610.264648 +v 146145.500000 -23175.310547 0.000000 +v 145856.390625 -23660.902344 11610.264648 +v 145856.390625 -23660.902344 0.000000 +v 145640.484375 -24287.080078 11610.264648 +v 145640.484375 -24287.080078 0.000000 +v 147600.765625 -22105.890625 23220.529297 +v 147213.421875 -22268.785156 23220.529297 +v 146855.515625 -22482.214844 23220.529297 +v 146469.953125 -22800.855469 23220.529297 +v 146145.500000 -23175.310547 23220.529297 +v 145856.390625 -23660.902344 23220.529297 +v 145640.484375 -24287.080078 23220.529297 +v 145640.484375 -24287.080078 -23220.529297 +v 145640.484375 -24287.080078 -11610.264648 +v 145856.390625 -23660.902344 -11610.264648 +v 146145.500000 -23175.310547 -11610.264648 +v 146469.953125 -22800.855469 -11610.264648 +v 146855.515625 -22482.214844 -11610.264648 +v 147213.421875 -22268.785156 -11610.264648 +v 147600.765625 -22105.890625 -11610.264648 +v 148152.718750 -21974.726562 -11610.264648 +v 145856.390625 -23660.902344 -23220.529297 +v 146145.500000 -23175.310547 -23220.529297 +v 146469.953125 -22800.855469 -23220.529297 +v 146855.515625 -22482.214844 -23220.529297 +v 147213.421875 -22268.785156 -23220.529297 +v 147600.765625 -22105.890625 -23220.529297 +v 148152.718750 -21974.726562 -23220.529297 +v 145624.781250 -29322.224609 25956.890625 +v 145624.781250 -29322.224609 15574.133789 +v 145624.781250 -29322.224609 5191.377930 +v 145788.734375 -29868.781250 15574.133789 +v 145788.734375 -29868.781250 5191.377930 +v 146110.796875 -30459.638672 15574.133789 +v 146110.796875 -30459.638672 5191.377930 +v 146473.187500 -30885.695312 15574.133789 +v 146473.187500 -30885.695312 5191.377930 +v 146909.671875 -31237.945312 15574.133789 +v 146909.671875 -31237.945312 5191.377930 +v 147300.156250 -31456.732422 15574.133789 +v 147300.156250 -31456.732422 5191.377930 +v 147719.343750 -31615.132812 15574.133789 +v 147719.343750 -31615.132812 5191.377930 +v 148180.687500 -31712.439453 15574.133789 +v 148180.687500 -31712.439453 5191.377930 +v 145788.734375 -29868.781250 25956.890625 +v 146110.796875 -30459.638672 25956.890625 +v 146473.187500 -30885.695312 25956.890625 +v 146909.671875 -31237.945312 25956.890625 +v 147300.156250 -31456.732422 25956.890625 +v 147719.343750 -31615.132812 25956.890625 +v 148180.687500 -31712.439453 25956.890625 +v 148180.687500 -31712.439453 -25956.890625 +v 148180.687500 -31712.439453 -15574.133789 +v 148180.687500 -31712.439453 -5191.377930 +v 147719.343750 -31615.132812 -15574.133789 +v 147719.343750 -31615.132812 -5191.377930 +v 147300.156250 -31456.732422 -15574.133789 +v 147300.156250 -31456.732422 -5191.377930 +v 146909.671875 -31237.945312 -15574.133789 +v 146909.671875 -31237.945312 -5191.377930 +v 146473.187500 -30885.695312 -15574.133789 +v 146473.187500 -30885.695312 -5191.377930 +v 146110.796875 -30459.638672 -15574.133789 +v 146110.796875 -30459.638672 -5191.377930 +v 145788.734375 -29868.781250 -15574.133789 +v 145788.734375 -29868.781250 -5191.377930 +v 145624.781250 -29322.224609 -15574.133789 +v 145624.781250 -29322.224609 -5191.377930 +v 147719.343750 -31615.132812 -25956.890625 +v 147300.156250 -31456.732422 -25956.890625 +v 146909.671875 -31237.945312 -25956.890625 +v 146473.187500 -30885.695312 -25956.890625 +v 146110.796875 -30459.638672 -25956.890625 +v 145788.734375 -29868.781250 -25956.890625 +v 145624.781250 -29322.224609 -25956.890625 +v 149388.437500 -31691.560547 21804.548828 +v 149388.437500 -31691.560547 7268.183105 +v 149388.437500 -31691.560547 -7268.183105 +v 149894.656250 -31555.484375 7268.183105 +v 149894.656250 -31555.484375 -7268.183105 +v 150470.234375 -31272.320312 7268.183105 +v 150470.234375 -31272.320312 -7268.183105 +v 150867.921875 -30971.556641 7268.183105 +v 150867.921875 -30971.556641 -7268.183105 +v 151209.562500 -30610.013672 7268.183105 +v 151209.562500 -30610.013672 -7268.183105 +v 151540.187500 -30096.605469 7268.183105 +v 151540.187500 -30096.605469 -7268.183105 +v 151787.328125 -29418.859375 7268.183105 +v 151787.328125 -29418.859375 -7268.183105 +v 151787.328125 -29418.859375 -21804.548828 +v 151540.187500 -30096.605469 -21804.548828 +v 149894.656250 -31555.484375 21804.548828 +v 150470.234375 -31272.320312 21804.548828 +v 150867.921875 -30971.556641 21804.548828 +v 151209.562500 -30610.013672 21804.548828 +v 151540.187500 -30096.605469 21804.548828 +v 151787.328125 -29418.859375 21804.548828 +v 151209.562500 -30610.013672 -21804.548828 +v 150867.921875 -30971.556641 -21804.548828 +v 150470.234375 -31272.320312 -21804.548828 +v 149894.656250 -31555.484375 -21804.548828 +v 149388.437500 -31691.560547 -21804.548828 +v 151804.578125 -24343.314453 27135.777344 +v 151804.578125 -24343.314453 19382.697266 +v 151804.578125 -24343.314453 11629.619141 +v 151623.890625 -23765.898438 19382.697266 +v 151623.890625 -23765.898438 11629.619141 +v 151377.828125 -23306.007812 19382.697266 +v 151377.828125 -23306.007812 11629.619141 +v 150899.656250 -22740.685547 19382.697266 +v 150899.656250 -22740.685547 11629.619141 +v 150523.328125 -22445.462891 19382.697266 +v 150523.328125 -22445.462891 11629.619141 +v 150100.546875 -22211.861328 19382.697266 +v 150100.546875 -22211.861328 11629.619141 +v 149460.343750 -22005.466797 19382.697266 +v 149460.343750 -22005.466797 11629.619141 +v 149145.859375 -21959.056641 19382.697266 +v 149145.859375 -21959.056641 11629.619141 +v 149145.859375 -21959.056641 3876.539551 +v 149145.859375 -21959.056641 -3876.539551 +v 149145.859375 -21959.056641 -11629.619141 +v 149460.343750 -22005.466797 -11629.619141 +v 149460.343750 -22005.466797 -19382.697266 +v 150100.546875 -22211.861328 -19382.697266 +v 150100.546875 -22211.861328 -27135.777344 +v 150523.328125 -22445.462891 -27135.777344 +v 151623.890625 -23765.898438 27135.777344 +v 151377.828125 -23306.007812 27135.777344 +v 150899.656250 -22740.685547 27135.777344 +v 150523.328125 -22445.462891 27135.777344 +v 150100.546875 -22211.861328 27135.777344 +v 149460.343750 -22005.466797 27135.777344 +v 149145.859375 -21959.056641 27135.777344 +v 149145.859375 -21959.056641 -27135.777344 +v 149145.859375 -21959.056641 -19382.697266 +v 149460.343750 -22005.466797 -27135.777344 +v 150899.656250 -22740.685547 -27135.777344 +v 151377.828125 -23306.007812 -27135.777344 +v 151623.890625 -23765.898438 -27135.777344 +v 151804.578125 -24343.314453 -27135.777344 +v 151804.578125 -24343.314453 -19382.697266 +v 151804.578125 -24343.314453 -11629.619141 +v 151623.890625 -23765.898438 -11629.619141 +v 151623.890625 -23765.898438 -3876.539551 +v 151377.828125 -23306.007812 -3876.539551 +v 151377.828125 -23306.007812 3876.539551 +v 150899.656250 -22740.685547 3876.539551 +v 151804.578125 -24343.314453 -3876.539551 +v 151804.578125 -24343.314453 3876.539551 +v 151623.890625 -23765.898438 -19382.697266 +v 151377.828125 -23306.007812 -19382.697266 +v 151377.828125 -23306.007812 -11629.619141 +v 150899.656250 -22740.685547 -19382.697266 +v 150899.656250 -22740.685547 -11629.619141 +v 150899.656250 -22740.685547 -3876.539551 +v 150523.328125 -22445.462891 -19382.697266 +v 150523.328125 -22445.462891 -11629.619141 +v 150523.328125 -22445.462891 -3876.539551 +v 150523.328125 -22445.462891 3876.539551 +v 150100.546875 -22211.861328 -11629.619141 +v 149460.343750 -22005.466797 -3876.539551 +v 150100.546875 -22211.861328 -3876.539551 +v 150100.546875 -22211.861328 3876.539551 +v 151623.890625 -23765.898438 3876.539551 +v 149460.343750 -22005.466797 3876.539551 +v 137970.906250 -21974.726562 23173.103516 +v 137970.906250 -21974.726562 11586.551758 +v 137970.906250 -21974.726562 0.000000 +v 137418.953125 -22105.890625 11586.551758 +v 137418.953125 -22105.890625 0.000000 +v 137031.609375 -22268.785156 11586.551758 +v 137031.609375 -22268.785156 0.000000 +v 136673.687500 -22482.214844 11586.551758 +v 136673.687500 -22482.214844 0.000000 +v 136288.140625 -22800.855469 11586.551758 +v 136288.140625 -22800.855469 0.000000 +v 135963.671875 -23175.310547 11586.551758 +v 135963.671875 -23175.310547 0.000000 +v 135674.578125 -23660.902344 11586.551758 +v 135674.578125 -23660.902344 0.000000 +v 135458.671875 -24287.080078 11586.551758 +v 135458.671875 -24287.080078 0.000000 +v 137418.953125 -22105.890625 23173.103516 +v 137031.609375 -22268.785156 23173.103516 +v 136673.687500 -22482.214844 23173.103516 +v 136288.140625 -22800.855469 23173.103516 +v 135963.671875 -23175.310547 23173.103516 +v 135674.578125 -23660.902344 23173.103516 +v 135458.671875 -24287.080078 23173.103516 +v 135458.671875 -24287.080078 -23173.103516 +v 135458.671875 -24287.080078 -11586.551758 +v 135674.578125 -23660.902344 -11586.551758 +v 135963.671875 -23175.310547 -11586.551758 +v 136288.140625 -22800.855469 -11586.551758 +v 136673.687500 -22482.214844 -11586.551758 +v 137031.609375 -22268.785156 -11586.551758 +v 137418.953125 -22105.890625 -11586.551758 +v 137970.906250 -21974.726562 -11586.551758 +v 135674.578125 -23660.902344 -23173.103516 +v 135963.671875 -23175.310547 -23173.103516 +v 136288.140625 -22800.855469 -23173.103516 +v 136673.687500 -22482.214844 -23173.103516 +v 137031.609375 -22268.785156 -23173.103516 +v 137418.953125 -22105.890625 -23173.103516 +v 137970.906250 -21974.726562 -23173.103516 +v 135442.968750 -29322.224609 25928.798828 +v 135442.968750 -29322.224609 15557.279297 +v 135442.968750 -29322.224609 5185.759766 +v 135606.921875 -29868.781250 15557.279297 +v 135606.921875 -29868.781250 5185.759766 +v 135928.984375 -30459.638672 15557.279297 +v 135928.984375 -30459.638672 5185.759766 +v 136291.375000 -30885.695312 15557.279297 +v 136291.375000 -30885.695312 5185.759766 +v 136727.859375 -31237.945312 15557.279297 +v 136727.859375 -31237.945312 5185.759766 +v 137118.343750 -31456.732422 15557.279297 +v 137118.343750 -31456.732422 5185.759766 +v 137537.515625 -31615.132812 15557.279297 +v 137537.515625 -31615.132812 5185.759766 +v 137998.859375 -31712.439453 15557.279297 +v 137998.859375 -31712.439453 5185.759766 +v 135606.921875 -29868.781250 25928.798828 +v 135928.984375 -30459.638672 25928.798828 +v 136291.375000 -30885.695312 25928.798828 +v 136727.859375 -31237.945312 25928.798828 +v 137118.343750 -31456.732422 25928.798828 +v 137537.515625 -31615.132812 25928.798828 +v 137998.859375 -31712.439453 25928.798828 +v 137998.859375 -31712.439453 -25928.798828 +v 137998.859375 -31712.439453 -15557.279297 +v 137998.859375 -31712.439453 -5185.759766 +v 137537.515625 -31615.132812 -15557.279297 +v 137537.515625 -31615.132812 -5185.759766 +v 137118.343750 -31456.732422 -15557.279297 +v 137118.343750 -31456.732422 -5185.759766 +v 136727.859375 -31237.945312 -15557.279297 +v 136727.859375 -31237.945312 -5185.759766 +v 136291.375000 -30885.695312 -15557.279297 +v 136291.375000 -30885.695312 -5185.759766 +v 135928.984375 -30459.638672 -15557.279297 +v 135928.984375 -30459.638672 -5185.759766 +v 135606.921875 -29868.781250 -15557.279297 +v 135606.921875 -29868.781250 -5185.759766 +v 135442.968750 -29322.224609 -15557.279297 +v 135442.968750 -29322.224609 -5185.759766 +v 137537.515625 -31615.132812 -25928.798828 +v 137118.343750 -31456.732422 -25928.798828 +v 136727.859375 -31237.945312 -25928.798828 +v 136291.375000 -30885.695312 -25928.798828 +v 135928.984375 -30459.638672 -25928.798828 +v 135606.921875 -29868.781250 -25928.798828 +v 135442.968750 -29322.224609 -25928.798828 +v 139206.625000 -31691.560547 21780.812500 +v 139206.625000 -31691.560547 7260.270996 +v 139206.625000 -31691.560547 -7260.270996 +v 139712.828125 -31555.484375 7260.270996 +v 139712.828125 -31555.484375 -7260.270996 +v 140288.421875 -31272.320312 7260.270996 +v 140288.421875 -31272.320312 -7260.270996 +v 140686.109375 -30971.556641 7260.270996 +v 140686.109375 -30971.556641 -7260.270996 +v 141027.734375 -30610.013672 7260.270996 +v 141027.734375 -30610.013672 -7260.270996 +v 141358.359375 -30096.605469 7260.270996 +v 141358.359375 -30096.605469 -7260.270996 +v 141605.500000 -29418.859375 7260.270996 +v 141605.500000 -29418.859375 -7260.270996 +v 141605.500000 -29418.859375 -21780.812500 +v 141358.359375 -30096.605469 -21780.812500 +v 139712.828125 -31555.484375 21780.812500 +v 140288.421875 -31272.320312 21780.812500 +v 140686.109375 -30971.556641 21780.812500 +v 141027.734375 -30610.013672 21780.812500 +v 141358.359375 -30096.605469 21780.812500 +v 141605.500000 -29418.859375 21780.812500 +v 141027.734375 -30610.013672 -21780.812500 +v 140686.109375 -30971.556641 -21780.812500 +v 140288.421875 -31272.320312 -21780.812500 +v 139712.828125 -31555.484375 -21780.812500 +v 139206.625000 -31691.560547 -21780.812500 +v 141622.765625 -24343.314453 27067.089844 +v 141622.765625 -24343.314453 19333.636719 +v 141622.765625 -24343.314453 11600.181641 +v 141442.078125 -23765.898438 19333.636719 +v 141442.078125 -23765.898438 11600.181641 +v 141196.000000 -23306.007812 19333.636719 +v 141196.000000 -23306.007812 11600.181641 +v 140717.828125 -22740.685547 19333.636719 +v 140717.828125 -22740.685547 11600.181641 +v 140341.515625 -22445.462891 19333.636719 +v 140341.515625 -22445.462891 11600.181641 +v 139918.734375 -22211.861328 19333.636719 +v 139918.734375 -22211.861328 11600.181641 +v 139278.531250 -22005.466797 19333.636719 +v 139278.531250 -22005.466797 11600.181641 +v 138964.031250 -21959.056641 19333.636719 +v 138964.031250 -21959.056641 11600.181641 +v 138964.031250 -21959.056641 3866.727051 +v 138964.031250 -21959.056641 -3866.727051 +v 138964.031250 -21959.056641 -11600.181641 +v 139278.531250 -22005.466797 -11600.181641 +v 139278.531250 -22005.466797 -19333.636719 +v 139918.734375 -22211.861328 -19333.636719 +v 139918.734375 -22211.861328 -27067.089844 +v 140341.515625 -22445.462891 -27067.089844 +v 141442.078125 -23765.898438 27067.089844 +v 141196.000000 -23306.007812 27067.089844 +v 140717.828125 -22740.685547 27067.089844 +v 140341.515625 -22445.462891 27067.089844 +v 139918.734375 -22211.861328 27067.089844 +v 139278.531250 -22005.466797 27067.089844 +v 138964.031250 -21959.056641 27067.089844 +v 138964.031250 -21959.056641 -27067.089844 +v 138964.031250 -21959.056641 -19333.636719 +v 139278.531250 -22005.466797 -27067.089844 +v 140717.828125 -22740.685547 -27067.089844 +v 141196.000000 -23306.007812 -27067.089844 +v 141442.078125 -23765.898438 -27067.089844 +v 141622.765625 -24343.314453 -27067.089844 +v 141622.765625 -24343.314453 -19333.636719 +v 141622.765625 -24343.314453 -11600.181641 +v 141442.078125 -23765.898438 -11600.181641 +v 141442.078125 -23765.898438 -3866.727051 +v 141196.000000 -23306.007812 -3866.727051 +v 141196.000000 -23306.007812 3866.727051 +v 140717.828125 -22740.685547 3866.727051 +v 141622.765625 -24343.314453 -3866.727051 +v 141622.765625 -24343.314453 3866.727051 +v 141442.078125 -23765.898438 -19333.636719 +v 141196.000000 -23306.007812 -19333.636719 +v 141196.000000 -23306.007812 -11600.181641 +v 140717.828125 -22740.685547 -19333.636719 +v 140717.828125 -22740.685547 -11600.181641 +v 140717.828125 -22740.685547 -3866.727051 +v 140341.515625 -22445.462891 -19333.636719 +v 140341.515625 -22445.462891 -11600.181641 +v 140341.515625 -22445.462891 -3866.727051 +v 140341.515625 -22445.462891 3866.727051 +v 139918.734375 -22211.861328 -11600.181641 +v 139278.531250 -22005.466797 -3866.727051 +v 139918.734375 -22211.861328 -3866.727051 +v 139918.734375 -22211.861328 3866.727051 +v 141442.078125 -23765.898438 3866.727051 +v 139278.531250 -22005.466797 3866.727051 +v 127789.078125 -21974.726562 23141.484375 +v 127789.078125 -21974.726562 11570.742188 +v 127789.078125 -21974.726562 0.000000 +v 127237.132812 -22105.890625 11570.742188 +v 127237.132812 -22105.890625 0.000000 +v 126849.789062 -22268.785156 11570.742188 +v 126849.789062 -22268.785156 0.000000 +v 126491.875000 -22482.214844 11570.742188 +v 126491.875000 -22482.214844 0.000000 +v 126106.320312 -22800.855469 11570.742188 +v 126106.320312 -22800.855469 0.000000 +v 125781.859375 -23175.310547 11570.742188 +v 125781.859375 -23175.310547 0.000000 +v 125492.757812 -23660.902344 11570.742188 +v 125492.757812 -23660.902344 0.000000 +v 125276.843750 -24287.080078 11570.742188 +v 125276.843750 -24287.080078 0.000000 +v 127237.132812 -22105.890625 23141.484375 +v 126849.789062 -22268.785156 23141.484375 +v 126491.875000 -22482.214844 23141.484375 +v 126106.320312 -22800.855469 23141.484375 +v 125781.859375 -23175.310547 23141.484375 +v 125492.757812 -23660.902344 23141.484375 +v 125276.843750 -24287.080078 23141.484375 +v 125276.843750 -24287.080078 -23141.484375 +v 125276.843750 -24287.080078 -11570.742188 +v 125492.757812 -23660.902344 -11570.742188 +v 125781.859375 -23175.310547 -11570.742188 +v 126106.320312 -22800.855469 -11570.742188 +v 126491.875000 -22482.214844 -11570.742188 +v 126849.789062 -22268.785156 -11570.742188 +v 127237.132812 -22105.890625 -11570.742188 +v 127789.078125 -21974.726562 -11570.742188 +v 125492.757812 -23660.902344 -23141.484375 +v 125781.859375 -23175.310547 -23141.484375 +v 126106.320312 -22800.855469 -23141.484375 +v 126491.875000 -22482.214844 -23141.484375 +v 126849.789062 -22268.785156 -23141.484375 +v 127237.132812 -22105.890625 -23141.484375 +v 127789.078125 -21974.726562 -23141.484375 +v 125261.148438 -29322.224609 25906.693359 +v 125261.148438 -29322.224609 15544.015625 +v 125261.148438 -29322.224609 5181.338379 +v 125425.093750 -29868.781250 15544.015625 +v 125425.093750 -29868.781250 5181.338379 +v 125747.164062 -30459.638672 15544.015625 +v 125747.164062 -30459.638672 5181.338379 +v 126109.554688 -30885.695312 15544.015625 +v 126109.554688 -30885.695312 5181.338379 +v 126546.039062 -31237.945312 15544.015625 +v 126546.039062 -31237.945312 5181.338379 +v 126936.523438 -31456.732422 15544.015625 +v 126936.523438 -31456.732422 5181.338379 +v 127355.703125 -31615.132812 15544.015625 +v 127355.703125 -31615.132812 5181.338379 +v 127817.046875 -31712.439453 15544.015625 +v 127817.046875 -31712.439453 5181.338379 +v 125425.093750 -29868.781250 25906.693359 +v 125747.164062 -30459.638672 25906.693359 +v 126109.554688 -30885.695312 25906.693359 +v 126546.039062 -31237.945312 25906.693359 +v 126936.523438 -31456.732422 25906.693359 +v 127355.703125 -31615.132812 25906.693359 +v 127817.046875 -31712.439453 25906.693359 +v 127817.046875 -31712.439453 -25906.693359 +v 127817.046875 -31712.439453 -15544.015625 +v 127817.046875 -31712.439453 -5181.338379 +v 127355.703125 -31615.132812 -15544.015625 +v 127355.703125 -31615.132812 -5181.338379 +v 126936.523438 -31456.732422 -15544.015625 +v 126936.523438 -31456.732422 -5181.338379 +v 126546.039062 -31237.945312 -15544.015625 +v 126546.039062 -31237.945312 -5181.338379 +v 126109.554688 -30885.695312 -15544.015625 +v 126109.554688 -30885.695312 -5181.338379 +v 125747.164062 -30459.638672 -15544.015625 +v 125747.164062 -30459.638672 -5181.338379 +v 125425.093750 -29868.781250 -15544.015625 +v 125425.093750 -29868.781250 -5181.338379 +v 125261.148438 -29322.224609 -15544.015625 +v 125261.148438 -29322.224609 -5181.338379 +v 127355.703125 -31615.132812 -25906.693359 +v 126936.523438 -31456.732422 -25906.693359 +v 126546.039062 -31237.945312 -25906.693359 +v 126109.554688 -30885.695312 -25906.693359 +v 125747.164062 -30459.638672 -25906.693359 +v 125425.093750 -29868.781250 -25906.693359 +v 125261.148438 -29322.224609 -25906.693359 +v 129024.804688 -31691.560547 21762.093750 +v 129024.804688 -31691.560547 7254.031250 +v 129024.804688 -31691.560547 -7254.031250 +v 129531.015625 -31555.484375 7254.031250 +v 129531.015625 -31555.484375 -7254.031250 +v 130106.601562 -31272.320312 7254.031250 +v 130106.601562 -31272.320312 -7254.031250 +v 130504.289062 -30971.556641 7254.031250 +v 130504.289062 -30971.556641 -7254.031250 +v 130845.921875 -30610.013672 7254.031250 +v 130845.921875 -30610.013672 -7254.031250 +v 131176.546875 -30096.605469 7254.031250 +v 131176.546875 -30096.605469 -7254.031250 +v 131423.687500 -29418.859375 7254.031250 +v 131423.687500 -29418.859375 -7254.031250 +v 131423.687500 -29418.859375 -21762.093750 +v 131176.546875 -30096.605469 -21762.093750 +v 129531.015625 -31555.484375 21762.093750 +v 130106.601562 -31272.320312 21762.093750 +v 130504.289062 -30971.556641 21762.093750 +v 130845.921875 -30610.013672 21762.093750 +v 131176.546875 -30096.605469 21762.093750 +v 131423.687500 -29418.859375 21762.093750 +v 130845.921875 -30610.013672 -21762.093750 +v 130504.289062 -30971.556641 -21762.093750 +v 130106.601562 -31272.320312 -21762.093750 +v 129531.015625 -31555.484375 -21762.093750 +v 129024.804688 -31691.560547 -21762.093750 +v 131440.937500 -24343.314453 27019.255859 +v 131440.937500 -24343.314453 19299.468750 +v 131440.937500 -24343.314453 11579.680664 +v 131260.265625 -23765.898438 19299.468750 +v 131260.265625 -23765.898438 11579.680664 +v 131014.187500 -23306.007812 19299.468750 +v 131014.187500 -23306.007812 11579.680664 +v 130536.015625 -22740.685547 19299.468750 +v 130536.015625 -22740.685547 11579.680664 +v 130159.695312 -22445.462891 19299.468750 +v 130159.695312 -22445.462891 11579.680664 +v 129736.914062 -22211.861328 19299.468750 +v 129736.914062 -22211.861328 11579.680664 +v 129096.710938 -22005.466797 19299.468750 +v 129096.710938 -22005.466797 11579.680664 +v 128782.218750 -21959.056641 19299.468750 +v 128782.218750 -21959.056641 11579.680664 +v 128782.218750 -21959.056641 3859.893555 +v 128782.218750 -21959.056641 -3859.893555 +v 128782.218750 -21959.056641 -11579.680664 +v 129096.710938 -22005.466797 -11579.680664 +v 129096.710938 -22005.466797 -19299.468750 +v 129736.914062 -22211.861328 -19299.468750 +v 129736.914062 -22211.861328 -27019.255859 +v 130159.695312 -22445.462891 -27019.255859 +v 131260.265625 -23765.898438 27019.255859 +v 131014.187500 -23306.007812 27019.255859 +v 130536.015625 -22740.685547 27019.255859 +v 130159.695312 -22445.462891 27019.255859 +v 129736.914062 -22211.861328 27019.255859 +v 129096.710938 -22005.466797 27019.255859 +v 128782.218750 -21959.056641 27019.255859 +v 128782.218750 -21959.056641 -27019.255859 +v 128782.218750 -21959.056641 -19299.468750 +v 129096.710938 -22005.466797 -27019.255859 +v 130536.015625 -22740.685547 -27019.255859 +v 131014.187500 -23306.007812 -27019.255859 +v 131260.265625 -23765.898438 -27019.255859 +v 131440.937500 -24343.314453 -27019.255859 +v 131440.937500 -24343.314453 -19299.468750 +v 131440.937500 -24343.314453 -11579.680664 +v 131260.265625 -23765.898438 -11579.680664 +v 131260.265625 -23765.898438 -3859.893555 +v 131014.187500 -23306.007812 -3859.893555 +v 131014.187500 -23306.007812 3859.893555 +v 130536.015625 -22740.685547 3859.893555 +v 131440.937500 -24343.314453 -3859.893555 +v 131440.937500 -24343.314453 3859.893555 +v 131260.265625 -23765.898438 -19299.468750 +v 131014.187500 -23306.007812 -19299.468750 +v 131014.187500 -23306.007812 -11579.680664 +v 130536.015625 -22740.685547 -19299.468750 +v 130536.015625 -22740.685547 -11579.680664 +v 130536.015625 -22740.685547 -3859.893555 +v 130159.695312 -22445.462891 -19299.468750 +v 130159.695312 -22445.462891 -11579.680664 +v 130159.695312 -22445.462891 -3859.893555 +v 130159.695312 -22445.462891 3859.893555 +v 129736.914062 -22211.861328 -11579.680664 +v 129096.710938 -22005.466797 -3859.893555 +v 129736.914062 -22211.861328 -3859.893555 +v 129736.914062 -22211.861328 3859.893555 +v 131260.265625 -23765.898438 3859.893555 +v 129096.710938 -22005.466797 3859.893555 +v 117607.265625 -21974.726562 23122.320312 +v 117607.265625 -21974.726562 11561.160156 +v 117607.265625 -21974.726562 0.000000 +v 117055.312500 -22105.890625 11561.160156 +v 117055.312500 -22105.890625 0.000000 +v 116667.968750 -22268.785156 11561.160156 +v 116667.968750 -22268.785156 0.000000 +v 116310.054688 -22482.214844 11561.160156 +v 116310.054688 -22482.214844 0.000000 +v 115924.507812 -22800.855469 11561.160156 +v 115924.507812 -22800.855469 0.000000 +v 115600.039062 -23175.310547 11561.160156 +v 115600.039062 -23175.310547 0.000000 +v 115310.945312 -23660.902344 11561.160156 +v 115310.945312 -23660.902344 0.000000 +v 115095.031250 -24287.080078 11561.160156 +v 115095.031250 -24287.080078 0.000000 +v 117055.312500 -22105.890625 23122.320312 +v 116667.968750 -22268.785156 23122.320312 +v 116310.054688 -22482.214844 23122.320312 +v 115924.507812 -22800.855469 23122.320312 +v 115600.039062 -23175.310547 23122.320312 +v 115310.945312 -23660.902344 23122.320312 +v 115095.031250 -24287.080078 23122.320312 +v 115095.031250 -24287.080078 -23122.320312 +v 115095.031250 -24287.080078 -11561.160156 +v 115310.945312 -23660.902344 -11561.160156 +v 115600.039062 -23175.310547 -11561.160156 +v 115924.507812 -22800.855469 -11561.160156 +v 116310.054688 -22482.214844 -11561.160156 +v 116667.968750 -22268.785156 -11561.160156 +v 117055.312500 -22105.890625 -11561.160156 +v 117607.265625 -21974.726562 -11561.160156 +v 115310.945312 -23660.902344 -23122.320312 +v 115600.039062 -23175.310547 -23122.320312 +v 115924.507812 -22800.855469 -23122.320312 +v 116310.054688 -22482.214844 -23122.320312 +v 116667.968750 -22268.785156 -23122.320312 +v 117055.312500 -22105.890625 -23122.320312 +v 117607.265625 -21974.726562 -23122.320312 +v 115079.328125 -29322.224609 25890.470703 +v 115079.328125 -29322.224609 15534.283203 +v 115079.328125 -29322.224609 5178.094238 +v 115243.281250 -29868.781250 15534.283203 +v 115243.281250 -29868.781250 5178.094238 +v 115565.351562 -30459.638672 15534.283203 +v 115565.351562 -30459.638672 5178.094238 +v 115927.734375 -30885.695312 15534.283203 +v 115927.734375 -30885.695312 5178.094238 +v 116364.218750 -31237.945312 15534.283203 +v 116364.218750 -31237.945312 5178.094238 +v 116754.703125 -31456.732422 15534.283203 +v 116754.703125 -31456.732422 5178.094238 +v 117173.882812 -31615.132812 15534.283203 +v 117173.882812 -31615.132812 5178.094238 +v 117635.234375 -31712.439453 15534.283203 +v 117635.234375 -31712.439453 5178.094238 +v 115243.281250 -29868.781250 25890.470703 +v 115565.351562 -30459.638672 25890.470703 +v 115927.734375 -30885.695312 25890.470703 +v 116364.218750 -31237.945312 25890.470703 +v 116754.703125 -31456.732422 25890.470703 +v 117173.882812 -31615.132812 25890.470703 +v 117635.234375 -31712.439453 25890.470703 +v 117635.234375 -31712.439453 -25890.470703 +v 117635.234375 -31712.439453 -15534.283203 +v 117635.234375 -31712.439453 -5178.094238 +v 117173.882812 -31615.132812 -15534.283203 +v 117173.882812 -31615.132812 -5178.094238 +v 116754.703125 -31456.732422 -15534.283203 +v 116754.703125 -31456.732422 -5178.094238 +v 116364.218750 -31237.945312 -15534.283203 +v 116364.218750 -31237.945312 -5178.094238 +v 115927.734375 -30885.695312 -15534.283203 +v 115927.734375 -30885.695312 -5178.094238 +v 115565.351562 -30459.638672 -15534.283203 +v 115565.351562 -30459.638672 -5178.094238 +v 115243.281250 -29868.781250 -15534.283203 +v 115243.281250 -29868.781250 -5178.094238 +v 115079.328125 -29322.224609 -15534.283203 +v 115079.328125 -29322.224609 -5178.094238 +v 117173.882812 -31615.132812 -25890.470703 +v 116754.703125 -31456.732422 -25890.470703 +v 116364.218750 -31237.945312 -25890.470703 +v 115927.734375 -30885.695312 -25890.470703 +v 115565.351562 -30459.638672 -25890.470703 +v 115243.281250 -29868.781250 -25890.470703 +v 115079.328125 -29322.224609 -25890.470703 +v 118842.984375 -31691.560547 21748.330078 +v 118842.984375 -31691.560547 7249.443359 +v 118842.984375 -31691.560547 -7249.443359 +v 119349.195312 -31555.484375 7249.443359 +v 119349.195312 -31555.484375 -7249.443359 +v 119924.781250 -31272.320312 7249.443359 +v 119924.781250 -31272.320312 -7249.443359 +v 120322.468750 -30971.556641 7249.443359 +v 120322.468750 -30971.556641 -7249.443359 +v 120664.101562 -30610.013672 7249.443359 +v 120664.101562 -30610.013672 -7249.443359 +v 120994.734375 -30096.605469 7249.443359 +v 120994.734375 -30096.605469 -7249.443359 +v 121241.867188 -29418.859375 7249.443359 +v 121241.867188 -29418.859375 -7249.443359 +v 121241.867188 -29418.859375 -21748.330078 +v 120994.734375 -30096.605469 -21748.330078 +v 119349.195312 -31555.484375 21748.330078 +v 119924.781250 -31272.320312 21748.330078 +v 120322.468750 -30971.556641 21748.330078 +v 120664.101562 -30610.013672 21748.330078 +v 120994.734375 -30096.605469 21748.330078 +v 121241.867188 -29418.859375 21748.330078 +v 120664.101562 -30610.013672 -21748.330078 +v 120322.468750 -30971.556641 -21748.330078 +v 119924.781250 -31272.320312 -21748.330078 +v 119349.195312 -31555.484375 -21748.330078 +v 118842.984375 -31691.560547 -21748.330078 +v 121259.125000 -24343.314453 26988.369141 +v 121259.125000 -24343.314453 19277.406250 +v 121259.125000 -24343.314453 11566.443359 +v 121078.445312 -23765.898438 19277.406250 +v 121078.445312 -23765.898438 11566.443359 +v 120832.367188 -23306.007812 19277.406250 +v 120832.367188 -23306.007812 11566.443359 +v 120354.195312 -22740.685547 19277.406250 +v 120354.195312 -22740.685547 11566.443359 +v 119977.875000 -22445.462891 19277.406250 +v 119977.875000 -22445.462891 11566.443359 +v 119555.093750 -22211.861328 19277.406250 +v 119555.093750 -22211.861328 11566.443359 +v 118914.890625 -22005.466797 19277.406250 +v 118914.890625 -22005.466797 11566.443359 +v 118600.398438 -21959.056641 19277.406250 +v 118600.398438 -21959.056641 11566.443359 +v 118600.398438 -21959.056641 3855.481201 +v 118600.398438 -21959.056641 -3855.481201 +v 118600.398438 -21959.056641 -11566.443359 +v 118914.890625 -22005.466797 -11566.443359 +v 118914.890625 -22005.466797 -19277.406250 +v 119555.093750 -22211.861328 -19277.406250 +v 119555.093750 -22211.861328 -26988.369141 +v 119977.875000 -22445.462891 -26988.369141 +v 121078.445312 -23765.898438 26988.369141 +v 120832.367188 -23306.007812 26988.369141 +v 120354.195312 -22740.685547 26988.369141 +v 119977.875000 -22445.462891 26988.369141 +v 119555.093750 -22211.861328 26988.369141 +v 118914.890625 -22005.466797 26988.369141 +v 118600.398438 -21959.056641 26988.369141 +v 118600.398438 -21959.056641 -26988.369141 +v 118600.398438 -21959.056641 -19277.406250 +v 118914.890625 -22005.466797 -26988.369141 +v 120354.195312 -22740.685547 -26988.369141 +v 120832.367188 -23306.007812 -26988.369141 +v 121078.445312 -23765.898438 -26988.369141 +v 121259.125000 -24343.314453 -26988.369141 +v 121259.125000 -24343.314453 -19277.406250 +v 121259.125000 -24343.314453 -11566.443359 +v 121078.445312 -23765.898438 -11566.443359 +v 121078.445312 -23765.898438 -3855.481201 +v 120832.367188 -23306.007812 -3855.481201 +v 120832.367188 -23306.007812 3855.481201 +v 120354.195312 -22740.685547 3855.481201 +v 121259.125000 -24343.314453 -3855.481201 +v 121259.125000 -24343.314453 3855.481201 +v 121078.445312 -23765.898438 -19277.406250 +v 120832.367188 -23306.007812 -19277.406250 +v 120832.367188 -23306.007812 -11566.443359 +v 120354.195312 -22740.685547 -19277.406250 +v 120354.195312 -22740.685547 -11566.443359 +v 120354.195312 -22740.685547 -3855.481201 +v 119977.875000 -22445.462891 -19277.406250 +v 119977.875000 -22445.462891 -11566.443359 +v 119977.875000 -22445.462891 -3855.481201 +v 119977.875000 -22445.462891 3855.481201 +v 119555.093750 -22211.861328 -11566.443359 +v 118914.890625 -22005.466797 -3855.481201 +v 119555.093750 -22211.861328 -3855.481201 +v 119555.093750 -22211.861328 3855.481201 +v 121078.445312 -23765.898438 3855.481201 +v 118914.890625 -22005.466797 3855.481201 +v 107425.445312 -21974.726562 23112.308594 +v 107425.445312 -21974.726562 11556.154297 +v 107425.445312 -21974.726562 0.000000 +v 106873.492188 -22105.890625 11556.154297 +v 106873.492188 -22105.890625 0.000000 +v 106486.148438 -22268.785156 11556.154297 +v 106486.148438 -22268.785156 0.000000 +v 106128.234375 -22482.214844 11556.154297 +v 106128.234375 -22482.214844 0.000000 +v 105742.687500 -22800.855469 11556.154297 +v 105742.687500 -22800.855469 0.000000 +v 105418.226562 -23175.310547 11556.154297 +v 105418.226562 -23175.310547 0.000000 +v 105129.125000 -23660.902344 11556.154297 +v 105129.125000 -23660.902344 0.000000 +v 104913.210938 -24287.080078 11556.154297 +v 104913.210938 -24287.080078 0.000000 +v 106873.492188 -22105.890625 23112.308594 +v 106486.148438 -22268.785156 23112.308594 +v 106128.234375 -22482.214844 23112.308594 +v 105742.687500 -22800.855469 23112.308594 +v 105418.226562 -23175.310547 23112.308594 +v 105129.125000 -23660.902344 23112.308594 +v 104913.210938 -24287.080078 23112.308594 +v 104913.210938 -24287.080078 -23112.308594 +v 104913.210938 -24287.080078 -11556.154297 +v 105129.125000 -23660.902344 -11556.154297 +v 105418.226562 -23175.310547 -11556.154297 +v 105742.687500 -22800.855469 -11556.154297 +v 106128.234375 -22482.214844 -11556.154297 +v 106486.148438 -22268.785156 -11556.154297 +v 106873.492188 -22105.890625 -11556.154297 +v 107425.445312 -21974.726562 -11556.154297 +v 105129.125000 -23660.902344 -23112.308594 +v 105418.226562 -23175.310547 -23112.308594 +v 105742.687500 -22800.855469 -23112.308594 +v 106128.234375 -22482.214844 -23112.308594 +v 106486.148438 -22268.785156 -23112.308594 +v 106873.492188 -22105.890625 -23112.308594 +v 107425.445312 -21974.726562 -23112.308594 +v 104897.507812 -29322.224609 25879.343750 +v 104897.507812 -29322.224609 15527.606445 +v 104897.507812 -29322.224609 5175.868652 +v 105061.460938 -29868.781250 15527.606445 +v 105061.460938 -29868.781250 5175.868652 +v 105383.531250 -30459.638672 15527.606445 +v 105383.531250 -30459.638672 5175.868652 +v 105745.914062 -30885.695312 15527.606445 +v 105745.914062 -30885.695312 5175.868652 +v 106182.398438 -31237.945312 15527.606445 +v 106182.398438 -31237.945312 5175.868652 +v 106572.890625 -31456.732422 15527.606445 +v 106572.890625 -31456.732422 5175.868652 +v 106992.070312 -31615.132812 15527.606445 +v 106992.070312 -31615.132812 5175.868652 +v 107453.414062 -31712.439453 15527.606445 +v 107453.414062 -31712.439453 5175.868652 +v 105061.460938 -29868.781250 25879.343750 +v 105383.531250 -30459.638672 25879.343750 +v 105745.914062 -30885.695312 25879.343750 +v 106182.398438 -31237.945312 25879.343750 +v 106572.890625 -31456.732422 25879.343750 +v 106992.070312 -31615.132812 25879.343750 +v 107453.414062 -31712.439453 25879.343750 +v 107453.414062 -31712.439453 -25879.343750 +v 107453.414062 -31712.439453 -15527.606445 +v 107453.414062 -31712.439453 -5175.868652 +v 106992.070312 -31615.132812 -15527.606445 +v 106992.070312 -31615.132812 -5175.868652 +v 106572.890625 -31456.732422 -15527.606445 +v 106572.890625 -31456.732422 -5175.868652 +v 106182.398438 -31237.945312 -15527.606445 +v 106182.398438 -31237.945312 -5175.868652 +v 105745.914062 -30885.695312 -15527.606445 +v 105745.914062 -30885.695312 -5175.868652 +v 105383.531250 -30459.638672 -15527.606445 +v 105383.531250 -30459.638672 -5175.868652 +v 105061.460938 -29868.781250 -15527.606445 +v 105061.460938 -29868.781250 -5175.868652 +v 104897.507812 -29322.224609 -15527.606445 +v 104897.507812 -29322.224609 -5175.868652 +v 106992.070312 -31615.132812 -25879.343750 +v 106572.890625 -31456.732422 -25879.343750 +v 106182.398438 -31237.945312 -25879.343750 +v 105745.914062 -30885.695312 -25879.343750 +v 105383.531250 -30459.638672 -25879.343750 +v 105061.460938 -29868.781250 -25879.343750 +v 104897.507812 -29322.224609 -25879.343750 +v 108661.164062 -31691.560547 21738.871094 +v 108661.164062 -31691.560547 7246.290039 +v 108661.164062 -31691.560547 -7246.290039 +v 109167.375000 -31555.484375 7246.290039 +v 109167.375000 -31555.484375 -7246.290039 +v 109742.960938 -31272.320312 7246.290039 +v 109742.960938 -31272.320312 -7246.290039 +v 110140.648438 -30971.556641 7246.290039 +v 110140.648438 -30971.556641 -7246.290039 +v 110482.281250 -30610.013672 7246.290039 +v 110482.281250 -30610.013672 -7246.290039 +v 110812.914062 -30096.605469 7246.290039 +v 110812.914062 -30096.605469 -7246.290039 +v 111060.046875 -29418.859375 7246.290039 +v 111060.046875 -29418.859375 -7246.290039 +v 111060.046875 -29418.859375 -21738.871094 +v 110812.914062 -30096.605469 -21738.871094 +v 109167.375000 -31555.484375 21738.871094 +v 109742.960938 -31272.320312 21738.871094 +v 110140.648438 -30971.556641 21738.871094 +v 110482.281250 -30610.013672 21738.871094 +v 110812.914062 -30096.605469 21738.871094 +v 111060.046875 -29418.859375 21738.871094 +v 110482.281250 -30610.013672 -21738.871094 +v 110140.648438 -30971.556641 -21738.871094 +v 109742.960938 -31272.320312 -21738.871094 +v 109167.375000 -31555.484375 -21738.871094 +v 108661.164062 -31691.560547 -21738.871094 +v 111077.312500 -24343.314453 26970.531250 +v 111077.312500 -24343.314453 19264.666016 +v 111077.312500 -24343.314453 11558.799805 +v 110896.625000 -23765.898438 19264.666016 +v 110896.625000 -23765.898438 11558.799805 +v 110650.546875 -23306.007812 19264.666016 +v 110650.546875 -23306.007812 11558.799805 +v 110172.382812 -22740.685547 19264.666016 +v 110172.382812 -22740.685547 11558.799805 +v 109796.054688 -22445.462891 19264.666016 +v 109796.054688 -22445.462891 11558.799805 +v 109373.281250 -22211.861328 19264.666016 +v 109373.281250 -22211.861328 11558.799805 +v 108733.070312 -22005.466797 19264.666016 +v 108733.070312 -22005.466797 11558.799805 +v 108418.585938 -21959.056641 19264.666016 +v 108418.585938 -21959.056641 11558.799805 +v 108418.585938 -21959.056641 3852.933105 +v 108418.585938 -21959.056641 -3852.933105 +v 108418.585938 -21959.056641 -11558.799805 +v 108733.070312 -22005.466797 -11558.799805 +v 108733.070312 -22005.466797 -19264.666016 +v 109373.281250 -22211.861328 -19264.666016 +v 109373.281250 -22211.861328 -26970.531250 +v 109796.054688 -22445.462891 -26970.531250 +v 110896.625000 -23765.898438 26970.531250 +v 110650.546875 -23306.007812 26970.531250 +v 110172.382812 -22740.685547 26970.531250 +v 109796.054688 -22445.462891 26970.531250 +v 109373.281250 -22211.861328 26970.531250 +v 108733.070312 -22005.466797 26970.531250 +v 108418.585938 -21959.056641 26970.531250 +v 108418.585938 -21959.056641 -26970.531250 +v 108418.585938 -21959.056641 -19264.666016 +v 108733.070312 -22005.466797 -26970.531250 +v 110172.382812 -22740.685547 -26970.531250 +v 110650.546875 -23306.007812 -26970.531250 +v 110896.625000 -23765.898438 -26970.531250 +v 111077.312500 -24343.314453 -26970.531250 +v 111077.312500 -24343.314453 -19264.666016 +v 111077.312500 -24343.314453 -11558.799805 +v 110896.625000 -23765.898438 -11558.799805 +v 110896.625000 -23765.898438 -3852.933105 +v 110650.546875 -23306.007812 -3852.933105 +v 110650.546875 -23306.007812 3852.933105 +v 110172.382812 -22740.685547 3852.933105 +v 111077.312500 -24343.314453 -3852.933105 +v 111077.312500 -24343.314453 3852.933105 +v 110896.625000 -23765.898438 -19264.666016 +v 110650.546875 -23306.007812 -19264.666016 +v 110650.546875 -23306.007812 -11558.799805 +v 110172.382812 -22740.685547 -19264.666016 +v 110172.382812 -22740.685547 -11558.799805 +v 110172.382812 -22740.685547 -3852.933105 +v 109796.054688 -22445.462891 -19264.666016 +v 109796.054688 -22445.462891 -11558.799805 +v 109796.054688 -22445.462891 -3852.933105 +v 109796.054688 -22445.462891 3852.933105 +v 109373.281250 -22211.861328 -11558.799805 +v 108733.070312 -22005.466797 -3852.933105 +v 109373.281250 -22211.861328 -3852.933105 +v 109373.281250 -22211.861328 3852.933105 +v 110896.625000 -23765.898438 3852.933105 +v 108733.070312 -22005.466797 3852.933105 +v 97243.625000 -21974.726562 23108.246094 +v 97243.625000 -21974.726562 11554.123047 +v 97243.625000 -21974.726562 0.000000 +v 96691.671875 -22105.890625 11554.123047 +v 96691.671875 -22105.890625 0.000000 +v 96304.335938 -22268.785156 11554.123047 +v 96304.335938 -22268.785156 0.000000 +v 95946.421875 -22482.214844 11554.123047 +v 95946.421875 -22482.214844 0.000000 +v 95560.867188 -22800.855469 11554.123047 +v 95560.867188 -22800.855469 0.000000 +v 95236.406250 -23175.310547 11554.123047 +v 95236.406250 -23175.310547 0.000000 +v 94947.304688 -23660.902344 11554.123047 +v 94947.304688 -23660.902344 0.000000 +v 94731.390625 -24287.080078 11554.123047 +v 94731.390625 -24287.080078 0.000000 +v 96691.671875 -22105.890625 23108.246094 +v 96304.335938 -22268.785156 23108.246094 +v 95946.421875 -22482.214844 23108.246094 +v 95560.867188 -22800.855469 23108.246094 +v 95236.406250 -23175.310547 23108.246094 +v 94947.304688 -23660.902344 23108.246094 +v 94731.390625 -24287.080078 23108.246094 +v 94731.390625 -24287.080078 -23108.246094 +v 94731.390625 -24287.080078 -11554.123047 +v 94947.304688 -23660.902344 -11554.123047 +v 95236.406250 -23175.310547 -11554.123047 +v 95560.867188 -22800.855469 -11554.123047 +v 95946.421875 -22482.214844 -11554.123047 +v 96304.335938 -22268.785156 -11554.123047 +v 96691.671875 -22105.890625 -11554.123047 +v 97243.625000 -21974.726562 -11554.123047 +v 94947.304688 -23660.902344 -23108.246094 +v 95236.406250 -23175.310547 -23108.246094 +v 95560.867188 -22800.855469 -23108.246094 +v 95946.421875 -22482.214844 -23108.246094 +v 96304.335938 -22268.785156 -23108.246094 +v 96691.671875 -22105.890625 -23108.246094 +v 97243.625000 -21974.726562 -23108.246094 +v 94715.695312 -29322.224609 25872.146484 +v 94715.695312 -29322.224609 15523.288086 +v 94715.695312 -29322.224609 5174.429199 +v 94879.640625 -29868.781250 15523.288086 +v 94879.640625 -29868.781250 5174.429199 +v 95201.710938 -30459.638672 15523.288086 +v 95201.710938 -30459.638672 5174.429199 +v 95564.093750 -30885.695312 15523.288086 +v 95564.093750 -30885.695312 5174.429199 +v 96000.585938 -31237.945312 15523.288086 +v 96000.585938 -31237.945312 5174.429199 +v 96391.070312 -31456.732422 15523.288086 +v 96391.070312 -31456.732422 5174.429199 +v 96810.250000 -31615.132812 15523.288086 +v 96810.250000 -31615.132812 5174.429199 +v 97271.593750 -31712.439453 15523.288086 +v 97271.593750 -31712.439453 5174.429199 +v 94879.640625 -29868.781250 25872.146484 +v 95201.710938 -30459.638672 25872.146484 +v 95564.093750 -30885.695312 25872.146484 +v 96000.585938 -31237.945312 25872.146484 +v 96391.070312 -31456.732422 25872.146484 +v 96810.250000 -31615.132812 25872.146484 +v 97271.593750 -31712.439453 25872.146484 +v 97271.593750 -31712.439453 -25872.146484 +v 97271.593750 -31712.439453 -15523.288086 +v 97271.593750 -31712.439453 -5174.429199 +v 96810.250000 -31615.132812 -15523.288086 +v 96810.250000 -31615.132812 -5174.429199 +v 96391.070312 -31456.732422 -15523.288086 +v 96391.070312 -31456.732422 -5174.429199 +v 96000.585938 -31237.945312 -15523.288086 +v 96000.585938 -31237.945312 -5174.429199 +v 95564.093750 -30885.695312 -15523.288086 +v 95564.093750 -30885.695312 -5174.429199 +v 95201.710938 -30459.638672 -15523.288086 +v 95201.710938 -30459.638672 -5174.429199 +v 94879.640625 -29868.781250 -15523.288086 +v 94879.640625 -29868.781250 -5174.429199 +v 94715.695312 -29322.224609 -15523.288086 +v 94715.695312 -29322.224609 -5174.429199 +v 96810.250000 -31615.132812 -25872.146484 +v 96391.070312 -31456.732422 -25872.146484 +v 96000.585938 -31237.945312 -25872.146484 +v 95564.093750 -30885.695312 -25872.146484 +v 95201.710938 -30459.638672 -25872.146484 +v 94879.640625 -29868.781250 -25872.146484 +v 94715.695312 -29322.224609 -25872.146484 +v 98479.351562 -31691.560547 21732.744141 +v 98479.351562 -31691.560547 7244.247559 +v 98479.351562 -31691.560547 -7244.247559 +v 98985.554688 -31555.484375 7244.247559 +v 98985.554688 -31555.484375 -7244.247559 +v 99561.148438 -31272.320312 7244.247559 +v 99561.148438 -31272.320312 -7244.247559 +v 99958.828125 -30971.556641 7244.247559 +v 99958.828125 -30971.556641 -7244.247559 +v 100300.460938 -30610.013672 7244.247559 +v 100300.460938 -30610.013672 -7244.247559 +v 100631.093750 -30096.605469 7244.247559 +v 100631.093750 -30096.605469 -7244.247559 +v 100878.234375 -29418.859375 7244.247559 +v 100878.234375 -29418.859375 -7244.247559 +v 100878.234375 -29418.859375 -21732.744141 +v 100631.093750 -30096.605469 -21732.744141 +v 98985.554688 -31555.484375 21732.744141 +v 99561.148438 -31272.320312 21732.744141 +v 99958.828125 -30971.556641 21732.744141 +v 100300.460938 -30610.013672 21732.744141 +v 100631.093750 -30096.605469 21732.744141 +v 100878.234375 -29418.859375 21732.744141 +v 100300.460938 -30610.013672 -21732.744141 +v 99958.828125 -30971.556641 -21732.744141 +v 99561.148438 -31272.320312 -21732.744141 +v 98985.554688 -31555.484375 -21732.744141 +v 98479.351562 -31691.560547 -21732.744141 +v 100895.492188 -24343.314453 26961.933594 +v 100895.492188 -24343.314453 19258.523438 +v 100895.492188 -24343.314453 11555.114258 +v 100714.804688 -23765.898438 19258.523438 +v 100714.804688 -23765.898438 11555.114258 +v 100468.734375 -23306.007812 19258.523438 +v 100468.734375 -23306.007812 11555.114258 +v 99990.562500 -22740.685547 19258.523438 +v 99990.562500 -22740.685547 11555.114258 +v 99614.242188 -22445.462891 19258.523438 +v 99614.242188 -22445.462891 11555.114258 +v 99191.460938 -22211.861328 19258.523438 +v 99191.460938 -22211.861328 11555.114258 +v 98551.250000 -22005.466797 19258.523438 +v 98551.250000 -22005.466797 11555.114258 +v 98236.765625 -21959.056641 19258.523438 +v 98236.765625 -21959.056641 11555.114258 +v 98236.765625 -21959.056641 3851.704834 +v 98236.765625 -21959.056641 -3851.704834 +v 98236.765625 -21959.056641 -11555.114258 +v 98551.250000 -22005.466797 -11555.114258 +v 98551.250000 -22005.466797 -19258.523438 +v 99191.460938 -22211.861328 -19258.523438 +v 99191.460938 -22211.861328 -26961.933594 +v 99614.242188 -22445.462891 -26961.933594 +v 100714.804688 -23765.898438 26961.933594 +v 100468.734375 -23306.007812 26961.933594 +v 99990.562500 -22740.685547 26961.933594 +v 99614.242188 -22445.462891 26961.933594 +v 99191.460938 -22211.861328 26961.933594 +v 98551.250000 -22005.466797 26961.933594 +v 98236.765625 -21959.056641 26961.933594 +v 98236.765625 -21959.056641 -26961.933594 +v 98236.765625 -21959.056641 -19258.523438 +v 98551.250000 -22005.466797 -26961.933594 +v 99990.562500 -22740.685547 -26961.933594 +v 100468.734375 -23306.007812 -26961.933594 +v 100714.804688 -23765.898438 -26961.933594 +v 100895.492188 -24343.314453 -26961.933594 +v 100895.492188 -24343.314453 -19258.523438 +v 100895.492188 -24343.314453 -11555.114258 +v 100714.804688 -23765.898438 -11555.114258 +v 100714.804688 -23765.898438 -3851.704834 +v 100468.734375 -23306.007812 -3851.704834 +v 100468.734375 -23306.007812 3851.704834 +v 99990.562500 -22740.685547 3851.704834 +v 100895.492188 -24343.314453 -3851.704834 +v 100895.492188 -24343.314453 3851.704834 +v 100714.804688 -23765.898438 -19258.523438 +v 100468.734375 -23306.007812 -19258.523438 +v 100468.734375 -23306.007812 -11555.114258 +v 99990.562500 -22740.685547 -19258.523438 +v 99990.562500 -22740.685547 -11555.114258 +v 99990.562500 -22740.685547 -3851.704834 +v 99614.242188 -22445.462891 -19258.523438 +v 99614.242188 -22445.462891 -11555.114258 +v 99614.242188 -22445.462891 -3851.704834 +v 99614.242188 -22445.462891 3851.704834 +v 99191.460938 -22211.861328 -11555.114258 +v 98551.250000 -22005.466797 -3851.704834 +v 99191.460938 -22211.861328 -3851.704834 +v 99191.460938 -22211.861328 3851.704834 +v 100714.804688 -23765.898438 3851.704834 +v 98551.250000 -22005.466797 3851.704834 +v 87061.812500 -21974.726562 23107.027344 +v 87061.812500 -21974.726562 11553.513672 +v 87061.812500 -21974.726562 0.000000 +v 86509.859375 -22105.890625 11553.513672 +v 86509.859375 -22105.890625 0.000000 +v 86122.515625 -22268.785156 11553.513672 +v 86122.515625 -22268.785156 0.000000 +v 85764.601562 -22482.214844 11553.513672 +v 85764.601562 -22482.214844 0.000000 +v 85379.046875 -22800.855469 11553.513672 +v 85379.046875 -22800.855469 0.000000 +v 85054.585938 -23175.310547 11553.513672 +v 85054.585938 -23175.310547 0.000000 +v 84765.484375 -23660.902344 11553.513672 +v 84765.484375 -23660.902344 0.000000 +v 84549.570312 -24287.080078 11553.513672 +v 84549.570312 -24287.080078 0.000000 +v 86509.859375 -22105.890625 23107.027344 +v 86122.515625 -22268.785156 23107.027344 +v 85764.601562 -22482.214844 23107.027344 +v 85379.046875 -22800.855469 23107.027344 +v 85054.585938 -23175.310547 23107.027344 +v 84765.484375 -23660.902344 23107.027344 +v 84549.570312 -24287.080078 23107.027344 +v 84549.570312 -24287.080078 -23107.027344 +v 84549.570312 -24287.080078 -11553.513672 +v 84765.484375 -23660.902344 -11553.513672 +v 85054.585938 -23175.310547 -11553.513672 +v 85379.046875 -22800.855469 -11553.513672 +v 85764.601562 -22482.214844 -11553.513672 +v 86122.515625 -22268.785156 -11553.513672 +v 86509.859375 -22105.890625 -11553.513672 +v 87061.812500 -21974.726562 -11553.513672 +v 84765.484375 -23660.902344 -23107.027344 +v 85054.585938 -23175.310547 -23107.027344 +v 85379.046875 -22800.855469 -23107.027344 +v 85764.601562 -22482.214844 -23107.027344 +v 86122.515625 -22268.785156 -23107.027344 +v 86509.859375 -22105.890625 -23107.027344 +v 87061.812500 -21974.726562 -23107.027344 +v 84533.875000 -29322.224609 25867.531250 +v 84533.875000 -29322.224609 15520.518555 +v 84533.875000 -29322.224609 5173.506348 +v 84697.820312 -29868.781250 15520.518555 +v 84697.820312 -29868.781250 5173.506348 +v 85019.890625 -30459.638672 15520.518555 +v 85019.890625 -30459.638672 5173.506348 +v 85382.281250 -30885.695312 15520.518555 +v 85382.281250 -30885.695312 5173.506348 +v 85818.765625 -31237.945312 15520.518555 +v 85818.765625 -31237.945312 5173.506348 +v 86209.250000 -31456.732422 15520.518555 +v 86209.250000 -31456.732422 5173.506348 +v 86628.429688 -31615.132812 15520.518555 +v 86628.429688 -31615.132812 5173.506348 +v 87089.773438 -31712.439453 15520.518555 +v 87089.773438 -31712.439453 5173.506348 +v 84697.820312 -29868.781250 25867.531250 +v 85019.890625 -30459.638672 25867.531250 +v 85382.281250 -30885.695312 25867.531250 +v 85818.765625 -31237.945312 25867.531250 +v 86209.250000 -31456.732422 25867.531250 +v 86628.429688 -31615.132812 25867.531250 +v 87089.773438 -31712.439453 25867.531250 +v 87089.773438 -31712.439453 -25867.531250 +v 87089.773438 -31712.439453 -15520.518555 +v 87089.773438 -31712.439453 -5173.506348 +v 86628.429688 -31615.132812 -15520.518555 +v 86628.429688 -31615.132812 -5173.506348 +v 86209.250000 -31456.732422 -15520.518555 +v 86209.250000 -31456.732422 -5173.506348 +v 85818.765625 -31237.945312 -15520.518555 +v 85818.765625 -31237.945312 -5173.506348 +v 85382.281250 -30885.695312 -15520.518555 +v 85382.281250 -30885.695312 -5173.506348 +v 85019.890625 -30459.638672 -15520.518555 +v 85019.890625 -30459.638672 -5173.506348 +v 84697.820312 -29868.781250 -15520.518555 +v 84697.820312 -29868.781250 -5173.506348 +v 84533.875000 -29322.224609 -15520.518555 +v 84533.875000 -29322.224609 -5173.506348 +v 86628.429688 -31615.132812 -25867.531250 +v 86209.250000 -31456.732422 -25867.531250 +v 85818.765625 -31237.945312 -25867.531250 +v 85382.281250 -30885.695312 -25867.531250 +v 85019.890625 -30459.638672 -25867.531250 +v 84697.820312 -29868.781250 -25867.531250 +v 84533.875000 -29322.224609 -25867.531250 +v 88297.531250 -31691.560547 21728.820312 +v 88297.531250 -31691.560547 7242.939941 +v 88297.531250 -31691.560547 -7242.939941 +v 88803.742188 -31555.484375 7242.939941 +v 88803.742188 -31555.484375 -7242.939941 +v 89379.328125 -31272.320312 7242.939941 +v 89379.328125 -31272.320312 -7242.939941 +v 89777.015625 -30971.556641 7242.939941 +v 89777.015625 -30971.556641 -7242.939941 +v 90118.648438 -30610.013672 7242.939941 +v 90118.648438 -30610.013672 -7242.939941 +v 90449.273438 -30096.605469 7242.939941 +v 90449.273438 -30096.605469 -7242.939941 +v 90696.414062 -29418.859375 7242.939941 +v 90696.414062 -29418.859375 -7242.939941 +v 90696.414062 -29418.859375 -21728.820312 +v 90449.273438 -30096.605469 -21728.820312 +v 88803.742188 -31555.484375 21728.820312 +v 89379.328125 -31272.320312 21728.820312 +v 89777.015625 -30971.556641 21728.820312 +v 90118.648438 -30610.013672 21728.820312 +v 90449.273438 -30096.605469 21728.820312 +v 90696.414062 -29418.859375 21728.820312 +v 90118.648438 -30610.013672 -21728.820312 +v 89777.015625 -30971.556641 -21728.820312 +v 89379.328125 -31272.320312 -21728.820312 +v 88803.742188 -31555.484375 -21728.820312 +v 88297.531250 -31691.560547 -21728.820312 +v 90713.671875 -24343.314453 26958.880859 +v 90713.671875 -24343.314453 19256.343750 +v 90713.671875 -24343.314453 11553.805664 +v 90532.992188 -23765.898438 19256.343750 +v 90532.992188 -23765.898438 11553.805664 +v 90286.914062 -23306.007812 19256.343750 +v 90286.914062 -23306.007812 11553.805664 +v 89808.742188 -22740.685547 19256.343750 +v 89808.742188 -22740.685547 11553.805664 +v 89432.421875 -22445.462891 19256.343750 +v 89432.421875 -22445.462891 11553.805664 +v 89009.640625 -22211.861328 19256.343750 +v 89009.640625 -22211.861328 11553.805664 +v 88369.437500 -22005.466797 19256.343750 +v 88369.437500 -22005.466797 11553.805664 +v 88054.945312 -21959.056641 19256.343750 +v 88054.945312 -21959.056641 11553.805664 +v 88054.945312 -21959.056641 3851.268555 +v 88054.945312 -21959.056641 -3851.268555 +v 88054.945312 -21959.056641 -11553.805664 +v 88369.437500 -22005.466797 -11553.805664 +v 88369.437500 -22005.466797 -19256.343750 +v 89009.640625 -22211.861328 -19256.343750 +v 89009.640625 -22211.861328 -26958.880859 +v 89432.421875 -22445.462891 -26958.880859 +v 90532.992188 -23765.898438 26958.880859 +v 90286.914062 -23306.007812 26958.880859 +v 89808.742188 -22740.685547 26958.880859 +v 89432.421875 -22445.462891 26958.880859 +v 89009.640625 -22211.861328 26958.880859 +v 88369.437500 -22005.466797 26958.880859 +v 88054.945312 -21959.056641 26958.880859 +v 88054.945312 -21959.056641 -26958.880859 +v 88054.945312 -21959.056641 -19256.343750 +v 88369.437500 -22005.466797 -26958.880859 +v 89808.742188 -22740.685547 -26958.880859 +v 90286.914062 -23306.007812 -26958.880859 +v 90532.992188 -23765.898438 -26958.880859 +v 90713.671875 -24343.314453 -26958.880859 +v 90713.671875 -24343.314453 -19256.343750 +v 90713.671875 -24343.314453 -11553.805664 +v 90532.992188 -23765.898438 -11553.805664 +v 90532.992188 -23765.898438 -3851.268555 +v 90286.914062 -23306.007812 -3851.268555 +v 90286.914062 -23306.007812 3851.268555 +v 89808.742188 -22740.685547 3851.268555 +v 90713.671875 -24343.314453 -3851.268555 +v 90713.671875 -24343.314453 3851.268555 +v 90532.992188 -23765.898438 -19256.343750 +v 90286.914062 -23306.007812 -19256.343750 +v 90286.914062 -23306.007812 -11553.805664 +v 89808.742188 -22740.685547 -19256.343750 +v 89808.742188 -22740.685547 -11553.805664 +v 89808.742188 -22740.685547 -3851.268555 +v 89432.421875 -22445.462891 -19256.343750 +v 89432.421875 -22445.462891 -11553.805664 +v 89432.421875 -22445.462891 -3851.268555 +v 89432.421875 -22445.462891 3851.268555 +v 89009.640625 -22211.861328 -11553.805664 +v 88369.437500 -22005.466797 -3851.268555 +v 89009.640625 -22211.861328 -3851.268555 +v 89009.640625 -22211.861328 3851.268555 +v 90532.992188 -23765.898438 3851.268555 +v 88369.437500 -22005.466797 3851.268555 +v 76879.992188 -21974.726562 23106.341797 +v 76879.992188 -21974.726562 11553.170898 +v 76879.992188 -21974.726562 0.000000 +v 76328.039062 -22105.890625 11553.170898 +v 76328.039062 -22105.890625 0.000000 +v 75940.695312 -22268.785156 11553.170898 +v 75940.695312 -22268.785156 0.000000 +v 75582.781250 -22482.214844 11553.170898 +v 75582.781250 -22482.214844 0.000000 +v 75197.234375 -22800.855469 11553.170898 +v 75197.234375 -22800.855469 0.000000 +v 74872.765625 -23175.310547 11553.170898 +v 74872.765625 -23175.310547 0.000000 +v 74583.671875 -23660.902344 11553.170898 +v 74583.671875 -23660.902344 0.000000 +v 74367.757812 -24287.080078 11553.170898 +v 74367.757812 -24287.080078 0.000000 +v 76328.039062 -22105.890625 23106.341797 +v 75940.695312 -22268.785156 23106.341797 +v 75582.781250 -22482.214844 23106.341797 +v 75197.234375 -22800.855469 23106.341797 +v 74872.765625 -23175.310547 23106.341797 +v 74583.671875 -23660.902344 23106.341797 +v 74367.757812 -24287.080078 23106.341797 +v 74367.757812 -24287.080078 -23106.341797 +v 74367.757812 -24287.080078 -11553.170898 +v 74583.671875 -23660.902344 -11553.170898 +v 74872.765625 -23175.310547 -11553.170898 +v 75197.234375 -22800.855469 -11553.170898 +v 75582.781250 -22482.214844 -11553.170898 +v 75940.695312 -22268.785156 -11553.170898 +v 76328.039062 -22105.890625 -11553.170898 +v 76879.992188 -21974.726562 -11553.170898 +v 74583.671875 -23660.902344 -23106.341797 +v 74872.765625 -23175.310547 -23106.341797 +v 75197.234375 -22800.855469 -23106.341797 +v 75582.781250 -22482.214844 -23106.341797 +v 75940.695312 -22268.785156 -23106.341797 +v 76328.039062 -22105.890625 -23106.341797 +v 76879.992188 -21974.726562 -23106.341797 +v 74352.054688 -29322.224609 25864.207031 +v 74352.054688 -29322.224609 15518.524414 +v 74352.054688 -29322.224609 5172.841309 +v 74516.007812 -29868.781250 15518.524414 +v 74516.007812 -29868.781250 5172.841309 +v 74838.078125 -30459.638672 15518.524414 +v 74838.078125 -30459.638672 5172.841309 +v 75200.460938 -30885.695312 15518.524414 +v 75200.460938 -30885.695312 5172.841309 +v 75636.945312 -31237.945312 15518.524414 +v 75636.945312 -31237.945312 5172.841309 +v 76027.429688 -31456.732422 15518.524414 +v 76027.429688 -31456.732422 5172.841309 +v 76446.617188 -31615.132812 15518.524414 +v 76446.617188 -31615.132812 5172.841309 +v 76907.960938 -31712.439453 15518.524414 +v 76907.960938 -31712.439453 5172.841309 +v 74516.007812 -29868.781250 25864.207031 +v 74838.078125 -30459.638672 25864.207031 +v 75200.460938 -30885.695312 25864.207031 +v 75636.945312 -31237.945312 25864.207031 +v 76027.429688 -31456.732422 25864.207031 +v 76446.617188 -31615.132812 25864.207031 +v 76907.960938 -31712.439453 25864.207031 +v 76907.960938 -31712.439453 -25864.207031 +v 76907.960938 -31712.439453 -15518.524414 +v 76907.960938 -31712.439453 -5172.841309 +v 76446.617188 -31615.132812 -15518.524414 +v 76446.617188 -31615.132812 -5172.841309 +v 76027.429688 -31456.732422 -15518.524414 +v 76027.429688 -31456.732422 -5172.841309 +v 75636.945312 -31237.945312 -15518.524414 +v 75636.945312 -31237.945312 -5172.841309 +v 75200.460938 -30885.695312 -15518.524414 +v 75200.460938 -30885.695312 -5172.841309 +v 74838.078125 -30459.638672 -15518.524414 +v 74838.078125 -30459.638672 -5172.841309 +v 74516.007812 -29868.781250 -15518.524414 +v 74516.007812 -29868.781250 -5172.841309 +v 74352.054688 -29322.224609 -15518.524414 +v 74352.054688 -29322.224609 -5172.841309 +v 76446.617188 -31615.132812 -25864.207031 +v 76027.429688 -31456.732422 -25864.207031 +v 75636.945312 -31237.945312 -25864.207031 +v 75200.460938 -30885.695312 -25864.207031 +v 74838.078125 -30459.638672 -25864.207031 +v 74516.007812 -29868.781250 -25864.207031 +v 74352.054688 -29322.224609 -25864.207031 +v 78115.710938 -31691.560547 21726.005859 +v 78115.710938 -31691.560547 7242.001465 +v 78115.710938 -31691.560547 -7242.001465 +v 78621.921875 -31555.484375 7242.001465 +v 78621.921875 -31555.484375 -7242.001465 +v 79197.507812 -31272.320312 7242.001465 +v 79197.507812 -31272.320312 -7242.001465 +v 79595.195312 -30971.556641 7242.001465 +v 79595.195312 -30971.556641 -7242.001465 +v 79936.828125 -30610.013672 7242.001465 +v 79936.828125 -30610.013672 -7242.001465 +v 80267.460938 -30096.605469 7242.001465 +v 80267.460938 -30096.605469 -7242.001465 +v 80514.593750 -29418.859375 7242.001465 +v 80514.593750 -29418.859375 -7242.001465 +v 80514.593750 -29418.859375 -21726.005859 +v 80267.460938 -30096.605469 -21726.005859 +v 78621.921875 -31555.484375 21726.005859 +v 79197.507812 -31272.320312 21726.005859 +v 79595.195312 -30971.556641 21726.005859 +v 79936.828125 -30610.013672 21726.005859 +v 80267.460938 -30096.605469 21726.005859 +v 80514.593750 -29418.859375 21726.005859 +v 79936.828125 -30610.013672 -21726.005859 +v 79595.195312 -30971.556641 -21726.005859 +v 79197.507812 -31272.320312 -21726.005859 +v 78621.921875 -31555.484375 -21726.005859 +v 78115.710938 -31691.560547 -21726.005859 +v 80531.851562 -24343.314453 26957.865234 +v 80531.851562 -24343.314453 19255.619141 +v 80531.851562 -24343.314453 11553.371094 +v 80351.171875 -23765.898438 19255.619141 +v 80351.171875 -23765.898438 11553.371094 +v 80105.093750 -23306.007812 19255.619141 +v 80105.093750 -23306.007812 11553.371094 +v 79626.929688 -22740.685547 19255.619141 +v 79626.929688 -22740.685547 11553.371094 +v 79250.601562 -22445.462891 19255.619141 +v 79250.601562 -22445.462891 11553.371094 +v 78827.820312 -22211.861328 19255.619141 +v 78827.820312 -22211.861328 11553.371094 +v 78187.617188 -22005.466797 19255.619141 +v 78187.617188 -22005.466797 11553.371094 +v 77873.125000 -21959.056641 19255.619141 +v 77873.125000 -21959.056641 11553.371094 +v 77873.125000 -21959.056641 3851.123779 +v 77873.125000 -21959.056641 -3851.123779 +v 77873.125000 -21959.056641 -11553.371094 +v 78187.617188 -22005.466797 -11553.371094 +v 78187.617188 -22005.466797 -19255.619141 +v 78827.820312 -22211.861328 -19255.619141 +v 78827.820312 -22211.861328 -26957.865234 +v 79250.601562 -22445.462891 -26957.865234 +v 80351.171875 -23765.898438 26957.865234 +v 80105.093750 -23306.007812 26957.865234 +v 79626.929688 -22740.685547 26957.865234 +v 79250.601562 -22445.462891 26957.865234 +v 78827.820312 -22211.861328 26957.865234 +v 78187.617188 -22005.466797 26957.865234 +v 77873.125000 -21959.056641 26957.865234 +v 77873.125000 -21959.056641 -26957.865234 +v 77873.125000 -21959.056641 -19255.619141 +v 78187.617188 -22005.466797 -26957.865234 +v 79626.929688 -22740.685547 -26957.865234 +v 80105.093750 -23306.007812 -26957.865234 +v 80351.171875 -23765.898438 -26957.865234 +v 80531.851562 -24343.314453 -26957.865234 +v 80531.851562 -24343.314453 -19255.619141 +v 80531.851562 -24343.314453 -11553.371094 +v 80351.171875 -23765.898438 -11553.371094 +v 80351.171875 -23765.898438 -3851.123779 +v 80105.093750 -23306.007812 -3851.123779 +v 80105.093750 -23306.007812 3851.123779 +v 79626.929688 -22740.685547 3851.123779 +v 80531.851562 -24343.314453 -3851.123779 +v 80531.851562 -24343.314453 3851.123779 +v 80351.171875 -23765.898438 -19255.619141 +v 80105.093750 -23306.007812 -19255.619141 +v 80105.093750 -23306.007812 -11553.371094 +v 79626.929688 -22740.685547 -19255.619141 +v 79626.929688 -22740.685547 -11553.371094 +v 79626.929688 -22740.685547 -3851.123779 +v 79250.601562 -22445.462891 -19255.619141 +v 79250.601562 -22445.462891 -11553.371094 +v 79250.601562 -22445.462891 -3851.123779 +v 79250.601562 -22445.462891 3851.123779 +v 78827.820312 -22211.861328 -11553.371094 +v 78187.617188 -22005.466797 -3851.123779 +v 78827.820312 -22211.861328 -3851.123779 +v 78827.820312 -22211.861328 3851.123779 +v 80351.171875 -23765.898438 3851.123779 +v 78187.617188 -22005.466797 3851.123779 +v 66698.171875 -21974.726562 23105.835938 +v 66698.171875 -21974.726562 11552.917969 +v 66698.171875 -21974.726562 0.000000 +v 66146.218750 -22105.890625 11552.917969 +v 66146.218750 -22105.890625 0.000000 +v 65758.882812 -22268.785156 11552.917969 +v 65758.882812 -22268.785156 0.000000 +v 65400.964844 -22482.214844 11552.917969 +v 65400.964844 -22482.214844 0.000000 +v 65015.414062 -22800.855469 11552.917969 +v 65015.414062 -22800.855469 0.000000 +v 64690.949219 -23175.310547 11552.917969 +v 64690.949219 -23175.310547 0.000000 +v 64401.851562 -23660.902344 11552.917969 +v 64401.851562 -23660.902344 0.000000 +v 64185.937500 -24287.080078 11552.917969 +v 64185.937500 -24287.080078 0.000000 +v 66146.218750 -22105.890625 23105.835938 +v 65758.882812 -22268.785156 23105.835938 +v 65400.964844 -22482.214844 23105.835938 +v 65015.414062 -22800.855469 23105.835938 +v 64690.949219 -23175.310547 23105.835938 +v 64401.851562 -23660.902344 23105.835938 +v 64185.937500 -24287.080078 23105.835938 +v 64185.937500 -24287.080078 -23105.835938 +v 64185.937500 -24287.080078 -11552.917969 +v 64401.851562 -23660.902344 -11552.917969 +v 64690.949219 -23175.310547 -11552.917969 +v 65015.414062 -22800.855469 -11552.917969 +v 65400.964844 -22482.214844 -11552.917969 +v 65758.882812 -22268.785156 -11552.917969 +v 66146.218750 -22105.890625 -11552.917969 +v 66698.171875 -21974.726562 -11552.917969 +v 64401.851562 -23660.902344 -23105.835938 +v 64690.949219 -23175.310547 -23105.835938 +v 65015.414062 -22800.855469 -23105.835938 +v 65400.964844 -22482.214844 -23105.835938 +v 65758.882812 -22268.785156 -23105.835938 +v 66146.218750 -22105.890625 -23105.835938 +v 66698.171875 -21974.726562 -23105.835938 +v 64170.238281 -29322.224609 25861.710938 +v 64170.238281 -29322.224609 15517.026367 +v 64170.238281 -29322.224609 5172.342285 +v 64334.187500 -29868.781250 15517.026367 +v 64334.187500 -29868.781250 5172.342285 +v 64656.257812 -30459.638672 15517.026367 +v 64656.257812 -30459.638672 5172.342285 +v 65018.640625 -30885.695312 15517.026367 +v 65018.640625 -30885.695312 5172.342285 +v 65455.128906 -31237.945312 15517.026367 +v 65455.128906 -31237.945312 5172.342285 +v 65845.617188 -31456.732422 15517.026367 +v 65845.617188 -31456.732422 5172.342285 +v 66264.796875 -31615.132812 15517.026367 +v 66264.796875 -31615.132812 5172.342285 +v 66726.140625 -31712.439453 15517.026367 +v 66726.140625 -31712.439453 5172.342285 +v 64334.187500 -29868.781250 25861.710938 +v 64656.257812 -30459.638672 25861.710938 +v 65018.640625 -30885.695312 25861.710938 +v 65455.128906 -31237.945312 25861.710938 +v 65845.617188 -31456.732422 25861.710938 +v 66264.796875 -31615.132812 25861.710938 +v 66726.140625 -31712.439453 25861.710938 +v 66726.140625 -31712.439453 -25861.710938 +v 66726.140625 -31712.439453 -15517.026367 +v 66726.140625 -31712.439453 -5172.342285 +v 66264.796875 -31615.132812 -15517.026367 +v 66264.796875 -31615.132812 -5172.342285 +v 65845.617188 -31456.732422 -15517.026367 +v 65845.617188 -31456.732422 -5172.342285 +v 65455.128906 -31237.945312 -15517.026367 +v 65455.128906 -31237.945312 -5172.342285 +v 65018.640625 -30885.695312 -15517.026367 +v 65018.640625 -30885.695312 -5172.342285 +v 64656.257812 -30459.638672 -15517.026367 +v 64656.257812 -30459.638672 -5172.342285 +v 64334.187500 -29868.781250 -15517.026367 +v 64334.187500 -29868.781250 -5172.342285 +v 64170.238281 -29322.224609 -15517.026367 +v 64170.238281 -29322.224609 -5172.342285 +v 66264.796875 -31615.132812 -25861.710938 +v 65845.617188 -31456.732422 -25861.710938 +v 65455.128906 -31237.945312 -25861.710938 +v 65018.640625 -30885.695312 -25861.710938 +v 64656.257812 -30459.638672 -25861.710938 +v 64334.187500 -29868.781250 -25861.710938 +v 64170.238281 -29322.224609 -25861.710938 +v 67933.890625 -31691.560547 21723.888672 +v 67933.890625 -31691.560547 7241.296387 +v 67933.890625 -31691.560547 -7241.296387 +v 68440.101562 -31555.484375 7241.296387 +v 68440.101562 -31555.484375 -7241.296387 +v 69015.687500 -31272.320312 7241.296387 +v 69015.687500 -31272.320312 -7241.296387 +v 69413.375000 -30971.556641 7241.296387 +v 69413.375000 -30971.556641 -7241.296387 +v 69755.007812 -30610.013672 7241.296387 +v 69755.007812 -30610.013672 -7241.296387 +v 70085.640625 -30096.605469 7241.296387 +v 70085.640625 -30096.605469 -7241.296387 +v 70332.773438 -29418.859375 7241.296387 +v 70332.773438 -29418.859375 -7241.296387 +v 70332.773438 -29418.859375 -21723.888672 +v 70085.640625 -30096.605469 -21723.888672 +v 68440.101562 -31555.484375 21723.888672 +v 69015.687500 -31272.320312 21723.888672 +v 69413.375000 -30971.556641 21723.888672 +v 69755.007812 -30610.013672 21723.888672 +v 70085.640625 -30096.605469 21723.888672 +v 70332.773438 -29418.859375 21723.888672 +v 69755.007812 -30610.013672 -21723.888672 +v 69413.375000 -30971.556641 -21723.888672 +v 69015.687500 -31272.320312 -21723.888672 +v 68440.101562 -31555.484375 -21723.888672 +v 67933.890625 -31691.560547 -21723.888672 +v 70350.039062 -24343.314453 26957.150391 +v 70350.039062 -24343.314453 19255.107422 +v 70350.039062 -24343.314453 11553.064453 +v 70169.351562 -23765.898438 19255.107422 +v 70169.351562 -23765.898438 11553.064453 +v 69923.273438 -23306.007812 19255.107422 +v 69923.273438 -23306.007812 11553.064453 +v 69445.109375 -22740.685547 19255.107422 +v 69445.109375 -22740.685547 11553.064453 +v 69068.781250 -22445.462891 19255.107422 +v 69068.781250 -22445.462891 11553.064453 +v 68646.007812 -22211.861328 19255.107422 +v 68646.007812 -22211.861328 11553.064453 +v 68005.796875 -22005.466797 19255.107422 +v 68005.796875 -22005.466797 11553.064453 +v 67691.312500 -21959.056641 19255.107422 +v 67691.312500 -21959.056641 11553.064453 +v 67691.312500 -21959.056641 3851.021484 +v 67691.312500 -21959.056641 -3851.021484 +v 67691.312500 -21959.056641 -11553.064453 +v 68005.796875 -22005.466797 -11553.064453 +v 68005.796875 -22005.466797 -19255.107422 +v 68646.007812 -22211.861328 -19255.107422 +v 68646.007812 -22211.861328 -26957.150391 +v 69068.781250 -22445.462891 -26957.150391 +v 70169.351562 -23765.898438 26957.150391 +v 69923.273438 -23306.007812 26957.150391 +v 69445.109375 -22740.685547 26957.150391 +v 69068.781250 -22445.462891 26957.150391 +v 68646.007812 -22211.861328 26957.150391 +v 68005.796875 -22005.466797 26957.150391 +v 67691.312500 -21959.056641 26957.150391 +v 67691.312500 -21959.056641 -26957.150391 +v 67691.312500 -21959.056641 -19255.107422 +v 68005.796875 -22005.466797 -26957.150391 +v 69445.109375 -22740.685547 -26957.150391 +v 69923.273438 -23306.007812 -26957.150391 +v 70169.351562 -23765.898438 -26957.150391 +v 70350.039062 -24343.314453 -26957.150391 +v 70350.039062 -24343.314453 -19255.107422 +v 70350.039062 -24343.314453 -11553.064453 +v 70169.351562 -23765.898438 -11553.064453 +v 70169.351562 -23765.898438 -3851.021484 +v 69923.273438 -23306.007812 -3851.021484 +v 69923.273438 -23306.007812 3851.021484 +v 69445.109375 -22740.685547 3851.021484 +v 70350.039062 -24343.314453 -3851.021484 +v 70350.039062 -24343.314453 3851.021484 +v 70169.351562 -23765.898438 -19255.107422 +v 69923.273438 -23306.007812 -19255.107422 +v 69923.273438 -23306.007812 -11553.064453 +v 69445.109375 -22740.685547 -19255.107422 +v 69445.109375 -22740.685547 -11553.064453 +v 69445.109375 -22740.685547 -3851.021484 +v 69068.781250 -22445.462891 -19255.107422 +v 69068.781250 -22445.462891 -11553.064453 +v 69068.781250 -22445.462891 -3851.021484 +v 69068.781250 -22445.462891 3851.021484 +v 68646.007812 -22211.861328 -11553.064453 +v 68005.796875 -22005.466797 -3851.021484 +v 68646.007812 -22211.861328 -3851.021484 +v 68646.007812 -22211.861328 3851.021484 +v 70169.351562 -23765.898438 3851.021484 +v 68005.796875 -22005.466797 3851.021484 +v 56516.355469 -21974.726562 23105.482422 +v 56516.355469 -21974.726562 11552.741211 +v 56516.355469 -21974.726562 0.000000 +v 55964.402344 -22105.890625 11552.741211 +v 55964.402344 -22105.890625 0.000000 +v 55577.062500 -22268.785156 11552.741211 +v 55577.062500 -22268.785156 0.000000 +v 55219.144531 -22482.214844 11552.741211 +v 55219.144531 -22482.214844 0.000000 +v 54833.593750 -22800.855469 11552.741211 +v 54833.593750 -22800.855469 0.000000 +v 54509.132812 -23175.310547 11552.741211 +v 54509.132812 -23175.310547 0.000000 +v 54220.035156 -23660.902344 11552.741211 +v 54220.035156 -23660.902344 0.000000 +v 54004.117188 -24287.080078 11552.741211 +v 54004.117188 -24287.080078 0.000000 +v 55964.402344 -22105.890625 23105.482422 +v 55577.062500 -22268.785156 23105.482422 +v 55219.144531 -22482.214844 23105.482422 +v 54833.593750 -22800.855469 23105.482422 +v 54509.132812 -23175.310547 23105.482422 +v 54220.035156 -23660.902344 23105.482422 +v 54004.117188 -24287.080078 23105.482422 +v 54004.117188 -24287.080078 -23105.482422 +v 54004.117188 -24287.080078 -11552.741211 +v 54220.035156 -23660.902344 -11552.741211 +v 54509.132812 -23175.310547 -11552.741211 +v 54833.593750 -22800.855469 -11552.741211 +v 55219.144531 -22482.214844 -11552.741211 +v 55577.062500 -22268.785156 -11552.741211 +v 55964.402344 -22105.890625 -11552.741211 +v 56516.355469 -21974.726562 -11552.741211 +v 54220.035156 -23660.902344 -23105.482422 +v 54509.132812 -23175.310547 -23105.482422 +v 54833.593750 -22800.855469 -23105.482422 +v 55219.144531 -22482.214844 -23105.482422 +v 55577.062500 -22268.785156 -23105.482422 +v 55964.402344 -22105.890625 -23105.482422 +v 56516.355469 -21974.726562 -23105.482422 +v 53988.417969 -29322.224609 25859.921875 +v 53988.417969 -29322.224609 15515.953125 +v 53988.417969 -29322.224609 5171.984375 +v 54152.367188 -29868.781250 15515.953125 +v 54152.367188 -29868.781250 5171.984375 +v 54474.437500 -30459.638672 15515.953125 +v 54474.437500 -30459.638672 5171.984375 +v 54836.824219 -30885.695312 15515.953125 +v 54836.824219 -30885.695312 5171.984375 +v 55273.312500 -31237.945312 15515.953125 +v 55273.312500 -31237.945312 5171.984375 +v 55663.796875 -31456.732422 15515.953125 +v 55663.796875 -31456.732422 5171.984375 +v 56082.976562 -31615.132812 15515.953125 +v 56082.976562 -31615.132812 5171.984375 +v 56544.320312 -31712.439453 15515.953125 +v 56544.320312 -31712.439453 5171.984375 +v 54152.367188 -29868.781250 25859.921875 +v 54474.437500 -30459.638672 25859.921875 +v 54836.824219 -30885.695312 25859.921875 +v 55273.312500 -31237.945312 25859.921875 +v 55663.796875 -31456.732422 25859.921875 +v 56082.976562 -31615.132812 25859.921875 +v 56544.320312 -31712.439453 25859.921875 +v 56544.320312 -31712.439453 -25859.921875 +v 56544.320312 -31712.439453 -15515.953125 +v 56544.320312 -31712.439453 -5171.984375 +v 56082.976562 -31615.132812 -15515.953125 +v 56082.976562 -31615.132812 -5171.984375 +v 55663.796875 -31456.732422 -15515.953125 +v 55663.796875 -31456.732422 -5171.984375 +v 55273.312500 -31237.945312 -15515.953125 +v 55273.312500 -31237.945312 -5171.984375 +v 54836.824219 -30885.695312 -15515.953125 +v 54836.824219 -30885.695312 -5171.984375 +v 54474.437500 -30459.638672 -15515.953125 +v 54474.437500 -30459.638672 -5171.984375 +v 54152.367188 -29868.781250 -15515.953125 +v 54152.367188 -29868.781250 -5171.984375 +v 53988.417969 -29322.224609 -15515.953125 +v 53988.417969 -29322.224609 -5171.984375 +v 56082.976562 -31615.132812 -25859.921875 +v 55663.796875 -31456.732422 -25859.921875 +v 55273.312500 -31237.945312 -25859.921875 +v 54836.824219 -30885.695312 -25859.921875 +v 54474.437500 -30459.638672 -25859.921875 +v 54152.367188 -29868.781250 -25859.921875 +v 53988.417969 -29322.224609 -25859.921875 +v 57752.074219 -31691.560547 21722.371094 +v 57752.074219 -31691.560547 7240.790039 +v 57752.074219 -31691.560547 -7240.790039 +v 58258.285156 -31555.484375 7240.790039 +v 58258.285156 -31555.484375 -7240.790039 +v 58833.871094 -31272.320312 7240.790039 +v 58833.871094 -31272.320312 -7240.790039 +v 59231.558594 -30971.556641 7240.790039 +v 59231.558594 -30971.556641 -7240.790039 +v 59573.191406 -30610.013672 7240.790039 +v 59573.191406 -30610.013672 -7240.790039 +v 59903.820312 -30096.605469 7240.790039 +v 59903.820312 -30096.605469 -7240.790039 +v 60150.957031 -29418.859375 7240.790039 +v 60150.957031 -29418.859375 -7240.790039 +v 60150.957031 -29418.859375 -21722.371094 +v 59903.820312 -30096.605469 -21722.371094 +v 58258.285156 -31555.484375 21722.371094 +v 58833.871094 -31272.320312 21722.371094 +v 59231.558594 -30971.556641 21722.371094 +v 59573.191406 -30610.013672 21722.371094 +v 59903.820312 -30096.605469 21722.371094 +v 60150.957031 -29418.859375 21722.371094 +v 59573.191406 -30610.013672 -21722.371094 +v 59231.558594 -30971.556641 -21722.371094 +v 58833.871094 -31272.320312 -21722.371094 +v 58258.285156 -31555.484375 -21722.371094 +v 57752.074219 -31691.560547 -21722.371094 +v 60168.218750 -24343.314453 26956.632812 +v 60168.218750 -24343.314453 19254.736328 +v 60168.218750 -24343.314453 11552.842773 +v 59987.535156 -23765.898438 19254.736328 +v 59987.535156 -23765.898438 11552.842773 +v 59741.457031 -23306.007812 19254.736328 +v 59741.457031 -23306.007812 11552.842773 +v 59263.289062 -22740.685547 19254.736328 +v 59263.289062 -22740.685547 11552.842773 +v 58886.964844 -22445.462891 19254.736328 +v 58886.964844 -22445.462891 11552.842773 +v 58464.187500 -22211.861328 19254.736328 +v 58464.187500 -22211.861328 11552.842773 +v 57823.980469 -22005.466797 19254.736328 +v 57823.980469 -22005.466797 11552.842773 +v 57509.492188 -21959.056641 19254.736328 +v 57509.492188 -21959.056641 11552.842773 +v 57509.492188 -21959.056641 3850.947510 +v 57509.492188 -21959.056641 -3850.947510 +v 57509.492188 -21959.056641 -11552.842773 +v 57823.980469 -22005.466797 -11552.842773 +v 57823.980469 -22005.466797 -19254.736328 +v 58464.187500 -22211.861328 -19254.736328 +v 58464.187500 -22211.861328 -26956.632812 +v 58886.964844 -22445.462891 -26956.632812 +v 59987.535156 -23765.898438 26956.632812 +v 59741.457031 -23306.007812 26956.632812 +v 59263.289062 -22740.685547 26956.632812 +v 58886.964844 -22445.462891 26956.632812 +v 58464.187500 -22211.861328 26956.632812 +v 57823.980469 -22005.466797 26956.632812 +v 57509.492188 -21959.056641 26956.632812 +v 57509.492188 -21959.056641 -26956.632812 +v 57509.492188 -21959.056641 -19254.736328 +v 57823.980469 -22005.466797 -26956.632812 +v 59263.289062 -22740.685547 -26956.632812 +v 59741.457031 -23306.007812 -26956.632812 +v 59987.535156 -23765.898438 -26956.632812 +v 60168.218750 -24343.314453 -26956.632812 +v 60168.218750 -24343.314453 -19254.736328 +v 60168.218750 -24343.314453 -11552.842773 +v 59987.535156 -23765.898438 -11552.842773 +v 59987.535156 -23765.898438 -3850.947510 +v 59741.457031 -23306.007812 -3850.947510 +v 59741.457031 -23306.007812 3850.947510 +v 59263.289062 -22740.685547 3850.947510 +v 60168.218750 -24343.314453 -3850.947510 +v 60168.218750 -24343.314453 3850.947510 +v 59987.535156 -23765.898438 -19254.736328 +v 59741.457031 -23306.007812 -19254.736328 +v 59741.457031 -23306.007812 -11552.842773 +v 59263.289062 -22740.685547 -19254.736328 +v 59263.289062 -22740.685547 -11552.842773 +v 59263.289062 -22740.685547 -3850.947510 +v 58886.964844 -22445.462891 -19254.736328 +v 58886.964844 -22445.462891 -11552.842773 +v 58886.964844 -22445.462891 -3850.947510 +v 58886.964844 -22445.462891 3850.947510 +v 58464.187500 -22211.861328 -11552.842773 +v 57823.980469 -22005.466797 -3850.947510 +v 58464.187500 -22211.861328 -3850.947510 +v 58464.187500 -22211.861328 3850.947510 +v 59987.535156 -23765.898438 3850.947510 +v 57823.980469 -22005.466797 3850.947510 +v 46334.535156 -21974.726562 23105.250000 +v 46334.535156 -21974.726562 11552.625000 +v 46334.535156 -21974.726562 0.000000 +v 45782.585938 -22105.890625 11552.625000 +v 45782.585938 -22105.890625 0.000000 +v 45395.242188 -22268.785156 11552.625000 +v 45395.242188 -22268.785156 0.000000 +v 45037.328125 -22482.214844 11552.625000 +v 45037.328125 -22482.214844 0.000000 +v 44651.777344 -22800.855469 11552.625000 +v 44651.777344 -22800.855469 0.000000 +v 44327.312500 -23175.310547 11552.625000 +v 44327.312500 -23175.310547 0.000000 +v 44038.214844 -23660.902344 11552.625000 +v 44038.214844 -23660.902344 0.000000 +v 43822.300781 -24287.080078 11552.625000 +v 43822.300781 -24287.080078 0.000000 +v 45782.585938 -22105.890625 23105.250000 +v 45395.242188 -22268.785156 23105.250000 +v 45037.328125 -22482.214844 23105.250000 +v 44651.777344 -22800.855469 23105.250000 +v 44327.312500 -23175.310547 23105.250000 +v 44038.214844 -23660.902344 23105.250000 +v 43822.300781 -24287.080078 23105.250000 +v 43822.300781 -24287.080078 -23105.250000 +v 43822.300781 -24287.080078 -11552.625000 +v 44038.214844 -23660.902344 -11552.625000 +v 44327.312500 -23175.310547 -11552.625000 +v 44651.777344 -22800.855469 -11552.625000 +v 45037.328125 -22482.214844 -11552.625000 +v 45395.242188 -22268.785156 -11552.625000 +v 45782.585938 -22105.890625 -11552.625000 +v 46334.535156 -21974.726562 -11552.625000 +v 44038.214844 -23660.902344 -23105.250000 +v 44327.312500 -23175.310547 -23105.250000 +v 44651.777344 -22800.855469 -23105.250000 +v 45037.328125 -22482.214844 -23105.250000 +v 45395.242188 -22268.785156 -23105.250000 +v 45782.585938 -22105.890625 -23105.250000 +v 46334.535156 -21974.726562 -23105.250000 +v 43806.601562 -29322.224609 25858.720703 +v 43806.601562 -29322.224609 15515.232422 +v 43806.601562 -29322.224609 5171.744141 +v 43970.550781 -29868.781250 15515.232422 +v 43970.550781 -29868.781250 5171.744141 +v 44292.621094 -30459.638672 15515.232422 +v 44292.621094 -30459.638672 5171.744141 +v 44655.003906 -30885.695312 15515.232422 +v 44655.003906 -30885.695312 5171.744141 +v 45091.492188 -31237.945312 15515.232422 +v 45091.492188 -31237.945312 5171.744141 +v 45481.980469 -31456.732422 15515.232422 +v 45481.980469 -31456.732422 5171.744141 +v 45901.160156 -31615.132812 15515.232422 +v 45901.160156 -31615.132812 5171.744141 +v 46362.503906 -31712.439453 15515.232422 +v 46362.503906 -31712.439453 5171.744141 +v 43970.550781 -29868.781250 25858.720703 +v 44292.621094 -30459.638672 25858.720703 +v 44655.003906 -30885.695312 25858.720703 +v 45091.492188 -31237.945312 25858.720703 +v 45481.980469 -31456.732422 25858.720703 +v 45901.160156 -31615.132812 25858.720703 +v 46362.503906 -31712.439453 25858.720703 +v 46362.503906 -31712.439453 -25858.720703 +v 46362.503906 -31712.439453 -15515.232422 +v 46362.503906 -31712.439453 -5171.744141 +v 45901.160156 -31615.132812 -15515.232422 +v 45901.160156 -31615.132812 -5171.744141 +v 45481.980469 -31456.732422 -15515.232422 +v 45481.980469 -31456.732422 -5171.744141 +v 45091.492188 -31237.945312 -15515.232422 +v 45091.492188 -31237.945312 -5171.744141 +v 44655.003906 -30885.695312 -15515.232422 +v 44655.003906 -30885.695312 -5171.744141 +v 44292.621094 -30459.638672 -15515.232422 +v 44292.621094 -30459.638672 -5171.744141 +v 43970.550781 -29868.781250 -15515.232422 +v 43970.550781 -29868.781250 -5171.744141 +v 43806.601562 -29322.224609 -15515.232422 +v 43806.601562 -29322.224609 -5171.744141 +v 45901.160156 -31615.132812 -25858.720703 +v 45481.980469 -31456.732422 -25858.720703 +v 45091.492188 -31237.945312 -25858.720703 +v 44655.003906 -30885.695312 -25858.720703 +v 44292.621094 -30459.638672 -25858.720703 +v 43970.550781 -29868.781250 -25858.720703 +v 43806.601562 -29322.224609 -25858.720703 +v 47570.257812 -31691.560547 21721.349609 +v 47570.257812 -31691.560547 7240.449707 +v 47570.257812 -31691.560547 -7240.449707 +v 48076.468750 -31555.484375 7240.449707 +v 48076.468750 -31555.484375 -7240.449707 +v 48652.054688 -31272.320312 7240.449707 +v 48652.054688 -31272.320312 -7240.449707 +v 49049.742188 -30971.556641 7240.449707 +v 49049.742188 -30971.556641 -7240.449707 +v 49391.375000 -30610.013672 7240.449707 +v 49391.375000 -30610.013672 -7240.449707 +v 49722.003906 -30096.605469 7240.449707 +v 49722.003906 -30096.605469 -7240.449707 +v 49969.140625 -29418.859375 7240.449707 +v 49969.140625 -29418.859375 -7240.449707 +v 49969.140625 -29418.859375 -21721.349609 +v 49722.003906 -30096.605469 -21721.349609 +v 48076.468750 -31555.484375 21721.349609 +v 48652.054688 -31272.320312 21721.349609 +v 49049.742188 -30971.556641 21721.349609 +v 49391.375000 -30610.013672 21721.349609 +v 49722.003906 -30096.605469 21721.349609 +v 49969.140625 -29418.859375 21721.349609 +v 49391.375000 -30610.013672 -21721.349609 +v 49049.742188 -30971.556641 -21721.349609 +v 48652.054688 -31272.320312 -21721.349609 +v 48076.468750 -31555.484375 -21721.349609 +v 47570.257812 -31691.560547 -21721.349609 +v 49986.398438 -24343.314453 26956.277344 +v 49986.398438 -24343.314453 19254.484375 +v 49986.398438 -24343.314453 11552.690430 +v 49805.714844 -23765.898438 19254.484375 +v 49805.714844 -23765.898438 11552.690430 +v 49559.640625 -23306.007812 19254.484375 +v 49559.640625 -23306.007812 11552.690430 +v 49081.472656 -22740.685547 19254.484375 +v 49081.472656 -22740.685547 11552.690430 +v 48705.148438 -22445.462891 19254.484375 +v 48705.148438 -22445.462891 11552.690430 +v 48282.367188 -22211.861328 19254.484375 +v 48282.367188 -22211.861328 11552.690430 +v 47642.160156 -22005.466797 19254.484375 +v 47642.160156 -22005.466797 11552.690430 +v 47327.671875 -21959.056641 19254.484375 +v 47327.671875 -21959.056641 11552.690430 +v 47327.671875 -21959.056641 3850.896729 +v 47327.671875 -21959.056641 -3850.896729 +v 47327.671875 -21959.056641 -11552.690430 +v 47642.160156 -22005.466797 -11552.690430 +v 47642.160156 -22005.466797 -19254.484375 +v 48282.367188 -22211.861328 -19254.484375 +v 48282.367188 -22211.861328 -26956.277344 +v 48705.148438 -22445.462891 -26956.277344 +v 49805.714844 -23765.898438 26956.277344 +v 49559.640625 -23306.007812 26956.277344 +v 49081.472656 -22740.685547 26956.277344 +v 48705.148438 -22445.462891 26956.277344 +v 48282.367188 -22211.861328 26956.277344 +v 47642.160156 -22005.466797 26956.277344 +v 47327.671875 -21959.056641 26956.277344 +v 47327.671875 -21959.056641 -26956.277344 +v 47327.671875 -21959.056641 -19254.484375 +v 47642.160156 -22005.466797 -26956.277344 +v 49081.472656 -22740.685547 -26956.277344 +v 49559.640625 -23306.007812 -26956.277344 +v 49805.714844 -23765.898438 -26956.277344 +v 49986.398438 -24343.314453 -26956.277344 +v 49986.398438 -24343.314453 -19254.484375 +v 49986.398438 -24343.314453 -11552.690430 +v 49805.714844 -23765.898438 -11552.690430 +v 49805.714844 -23765.898438 -3850.896729 +v 49559.640625 -23306.007812 -3850.896729 +v 49559.640625 -23306.007812 3850.896729 +v 49081.472656 -22740.685547 3850.896729 +v 49986.398438 -24343.314453 -3850.896729 +v 49986.398438 -24343.314453 3850.896729 +v 49805.714844 -23765.898438 -19254.484375 +v 49559.640625 -23306.007812 -19254.484375 +v 49559.640625 -23306.007812 -11552.690430 +v 49081.472656 -22740.685547 -19254.484375 +v 49081.472656 -22740.685547 -11552.690430 +v 49081.472656 -22740.685547 -3850.896729 +v 48705.148438 -22445.462891 -19254.484375 +v 48705.148438 -22445.462891 -11552.690430 +v 48705.148438 -22445.462891 -3850.896729 +v 48705.148438 -22445.462891 3850.896729 +v 48282.367188 -22211.861328 -11552.690430 +v 47642.160156 -22005.466797 -3850.896729 +v 48282.367188 -22211.861328 -3850.896729 +v 48282.367188 -22211.861328 3850.896729 +v 49805.714844 -23765.898438 3850.896729 +v 47642.160156 -22005.466797 3850.896729 +v 36152.718750 -21974.726562 23105.115234 +v 36152.718750 -21974.726562 11552.557617 +v 36152.718750 -21974.726562 0.000000 +v 35600.765625 -22105.890625 11552.557617 +v 35600.765625 -22105.890625 0.000000 +v 35213.425781 -22268.785156 11552.557617 +v 35213.425781 -22268.785156 0.000000 +v 34855.507812 -22482.214844 11552.557617 +v 34855.507812 -22482.214844 0.000000 +v 34469.957031 -22800.855469 11552.557617 +v 34469.957031 -22800.855469 0.000000 +v 34145.496094 -23175.310547 11552.557617 +v 34145.496094 -23175.310547 0.000000 +v 33856.398438 -23660.902344 11552.557617 +v 33856.398438 -23660.902344 0.000000 +v 33640.484375 -24287.080078 11552.557617 +v 33640.484375 -24287.080078 0.000000 +v 35600.765625 -22105.890625 23105.115234 +v 35213.425781 -22268.785156 23105.115234 +v 34855.507812 -22482.214844 23105.115234 +v 34469.957031 -22800.855469 23105.115234 +v 34145.496094 -23175.310547 23105.115234 +v 33856.398438 -23660.902344 23105.115234 +v 33640.484375 -24287.080078 23105.115234 +v 33640.484375 -24287.080078 -23105.115234 +v 33640.484375 -24287.080078 -11552.557617 +v 33856.398438 -23660.902344 -11552.557617 +v 34145.496094 -23175.310547 -11552.557617 +v 34469.957031 -22800.855469 -11552.557617 +v 34855.507812 -22482.214844 -11552.557617 +v 35213.425781 -22268.785156 -11552.557617 +v 35600.765625 -22105.890625 -11552.557617 +v 36152.718750 -21974.726562 -11552.557617 +v 33856.398438 -23660.902344 -23105.115234 +v 34145.496094 -23175.310547 -23105.115234 +v 34469.957031 -22800.855469 -23105.115234 +v 34855.507812 -22482.214844 -23105.115234 +v 35213.425781 -22268.785156 -23105.115234 +v 35600.765625 -22105.890625 -23105.115234 +v 36152.718750 -21974.726562 -23105.115234 +v 33624.781250 -29322.224609 25857.992188 +v 33624.781250 -29322.224609 15514.794922 +v 33624.781250 -29322.224609 5171.598633 +v 33788.734375 -29868.781250 15514.794922 +v 33788.734375 -29868.781250 5171.598633 +v 34110.804688 -30459.638672 15514.794922 +v 34110.804688 -30459.638672 5171.598633 +v 34473.187500 -30885.695312 15514.794922 +v 34473.187500 -30885.695312 5171.598633 +v 34909.675781 -31237.945312 15514.794922 +v 34909.675781 -31237.945312 5171.598633 +v 35300.160156 -31456.732422 15514.794922 +v 35300.160156 -31456.732422 5171.598633 +v 35719.339844 -31615.132812 15514.794922 +v 35719.339844 -31615.132812 5171.598633 +v 36180.683594 -31712.439453 15514.794922 +v 36180.683594 -31712.439453 5171.598633 +v 33788.734375 -29868.781250 25857.992188 +v 34110.804688 -30459.638672 25857.992188 +v 34473.187500 -30885.695312 25857.992188 +v 34909.675781 -31237.945312 25857.992188 +v 35300.160156 -31456.732422 25857.992188 +v 35719.339844 -31615.132812 25857.992188 +v 36180.683594 -31712.439453 25857.992188 +v 36180.683594 -31712.439453 -25857.992188 +v 36180.683594 -31712.439453 -15514.794922 +v 36180.683594 -31712.439453 -5171.598633 +v 35719.339844 -31615.132812 -15514.794922 +v 35719.339844 -31615.132812 -5171.598633 +v 35300.160156 -31456.732422 -15514.794922 +v 35300.160156 -31456.732422 -5171.598633 +v 34909.675781 -31237.945312 -15514.794922 +v 34909.675781 -31237.945312 -5171.598633 +v 34473.187500 -30885.695312 -15514.794922 +v 34473.187500 -30885.695312 -5171.598633 +v 34110.804688 -30459.638672 -15514.794922 +v 34110.804688 -30459.638672 -5171.598633 +v 33788.734375 -29868.781250 -15514.794922 +v 33788.734375 -29868.781250 -5171.598633 +v 33624.781250 -29322.224609 -15514.794922 +v 33624.781250 -29322.224609 -5171.598633 +v 35719.339844 -31615.132812 -25857.992188 +v 35300.160156 -31456.732422 -25857.992188 +v 34909.675781 -31237.945312 -25857.992188 +v 34473.187500 -30885.695312 -25857.992188 +v 34110.804688 -30459.638672 -25857.992188 +v 33788.734375 -29868.781250 -25857.992188 +v 33624.781250 -29322.224609 -25857.992188 +v 37388.437500 -31691.560547 21720.726562 +v 37388.437500 -31691.560547 7240.242188 +v 37388.437500 -31691.560547 -7240.242188 +v 37894.648438 -31555.484375 7240.242188 +v 37894.648438 -31555.484375 -7240.242188 +v 38470.234375 -31272.320312 7240.242188 +v 38470.234375 -31272.320312 -7240.242188 +v 38867.921875 -30971.556641 7240.242188 +v 38867.921875 -30971.556641 -7240.242188 +v 39209.554688 -30610.013672 7240.242188 +v 39209.554688 -30610.013672 -7240.242188 +v 39540.183594 -30096.605469 7240.242188 +v 39540.183594 -30096.605469 -7240.242188 +v 39787.320312 -29418.859375 7240.242188 +v 39787.320312 -29418.859375 -7240.242188 +v 39787.320312 -29418.859375 -21720.726562 +v 39540.183594 -30096.605469 -21720.726562 +v 37894.648438 -31555.484375 21720.726562 +v 38470.234375 -31272.320312 21720.726562 +v 38867.921875 -30971.556641 21720.726562 +v 39209.554688 -30610.013672 21720.726562 +v 39540.183594 -30096.605469 21720.726562 +v 39787.320312 -29418.859375 21720.726562 +v 39209.554688 -30610.013672 -21720.726562 +v 38867.921875 -30971.556641 -21720.726562 +v 38470.234375 -31272.320312 -21720.726562 +v 37894.648438 -31555.484375 -21720.726562 +v 37388.437500 -31691.560547 -21720.726562 +v 39804.582031 -24343.314453 26956.054688 +v 39804.582031 -24343.314453 19254.324219 +v 39804.582031 -24343.314453 11552.594727 +v 39623.898438 -23765.898438 19254.324219 +v 39623.898438 -23765.898438 11552.594727 +v 39377.820312 -23306.007812 19254.324219 +v 39377.820312 -23306.007812 11552.594727 +v 38899.652344 -22740.685547 19254.324219 +v 38899.652344 -22740.685547 11552.594727 +v 38523.328125 -22445.462891 19254.324219 +v 38523.328125 -22445.462891 11552.594727 +v 38100.550781 -22211.861328 19254.324219 +v 38100.550781 -22211.861328 11552.594727 +v 37460.343750 -22005.466797 19254.324219 +v 37460.343750 -22005.466797 11552.594727 +v 37145.855469 -21959.056641 19254.324219 +v 37145.855469 -21959.056641 11552.594727 +v 37145.855469 -21959.056641 3850.864746 +v 37145.855469 -21959.056641 -3850.864746 +v 37145.855469 -21959.056641 -11552.594727 +v 37460.343750 -22005.466797 -11552.594727 +v 37460.343750 -22005.466797 -19254.324219 +v 38100.550781 -22211.861328 -19254.324219 +v 38100.550781 -22211.861328 -26956.054688 +v 38523.328125 -22445.462891 -26956.054688 +v 39623.898438 -23765.898438 26956.054688 +v 39377.820312 -23306.007812 26956.054688 +v 38899.652344 -22740.685547 26956.054688 +v 38523.328125 -22445.462891 26956.054688 +v 38100.550781 -22211.861328 26956.054688 +v 37460.343750 -22005.466797 26956.054688 +v 37145.855469 -21959.056641 26956.054688 +v 37145.855469 -21959.056641 -26956.054688 +v 37145.855469 -21959.056641 -19254.324219 +v 37460.343750 -22005.466797 -26956.054688 +v 38899.652344 -22740.685547 -26956.054688 +v 39377.820312 -23306.007812 -26956.054688 +v 39623.898438 -23765.898438 -26956.054688 +v 39804.582031 -24343.314453 -26956.054688 +v 39804.582031 -24343.314453 -19254.324219 +v 39804.582031 -24343.314453 -11552.594727 +v 39623.898438 -23765.898438 -11552.594727 +v 39623.898438 -23765.898438 -3850.864746 +v 39377.820312 -23306.007812 -3850.864746 +v 39377.820312 -23306.007812 3850.864746 +v 38899.652344 -22740.685547 3850.864746 +v 39804.582031 -24343.314453 -3850.864746 +v 39804.582031 -24343.314453 3850.864746 +v 39623.898438 -23765.898438 -19254.324219 +v 39377.820312 -23306.007812 -19254.324219 +v 39377.820312 -23306.007812 -11552.594727 +v 38899.652344 -22740.685547 -19254.324219 +v 38899.652344 -22740.685547 -11552.594727 +v 38899.652344 -22740.685547 -3850.864746 +v 38523.328125 -22445.462891 -19254.324219 +v 38523.328125 -22445.462891 -11552.594727 +v 38523.328125 -22445.462891 -3850.864746 +v 38523.328125 -22445.462891 3850.864746 +v 38100.550781 -22211.861328 -11552.594727 +v 37460.343750 -22005.466797 -3850.864746 +v 38100.550781 -22211.861328 -3850.864746 +v 38100.550781 -22211.861328 3850.864746 +v 39623.898438 -23765.898438 3850.864746 +v 37460.343750 -22005.466797 3850.864746 +v 25970.900391 -21974.726562 23105.050781 +v 25970.900391 -21974.726562 11552.525391 +v 25970.900391 -21974.726562 0.000000 +v 25418.949219 -22105.890625 11552.525391 +v 25418.949219 -22105.890625 0.000000 +v 25031.607422 -22268.785156 11552.525391 +v 25031.607422 -22268.785156 0.000000 +v 24673.691406 -22482.214844 11552.525391 +v 24673.691406 -22482.214844 0.000000 +v 24288.140625 -22800.855469 11552.525391 +v 24288.140625 -22800.855469 0.000000 +v 23963.677734 -23175.310547 11552.525391 +v 23963.677734 -23175.310547 0.000000 +v 23674.578125 -23660.902344 11552.525391 +v 23674.578125 -23660.902344 0.000000 +v 23458.664062 -24287.080078 11552.525391 +v 23458.664062 -24287.080078 0.000000 +v 25418.949219 -22105.890625 23105.050781 +v 25031.607422 -22268.785156 23105.050781 +v 24673.691406 -22482.214844 23105.050781 +v 24288.140625 -22800.855469 23105.050781 +v 23963.677734 -23175.310547 23105.050781 +v 23674.578125 -23660.902344 23105.050781 +v 23458.664062 -24287.080078 23105.050781 +v 23458.664062 -24287.080078 -23105.050781 +v 23458.664062 -24287.080078 -11552.525391 +v 23674.578125 -23660.902344 -11552.525391 +v 23963.677734 -23175.310547 -11552.525391 +v 24288.140625 -22800.855469 -11552.525391 +v 24673.691406 -22482.214844 -11552.525391 +v 25031.607422 -22268.785156 -11552.525391 +v 25418.949219 -22105.890625 -11552.525391 +v 25970.900391 -21974.726562 -11552.525391 +v 23674.578125 -23660.902344 -23105.050781 +v 23963.677734 -23175.310547 -23105.050781 +v 24288.140625 -22800.855469 -23105.050781 +v 24673.691406 -22482.214844 -23105.050781 +v 25031.607422 -22268.785156 -23105.050781 +v 25418.949219 -22105.890625 -23105.050781 +v 25970.900391 -21974.726562 -23105.050781 +v 23442.964844 -29322.224609 25857.617188 +v 23442.964844 -29322.224609 15514.569336 +v 23442.964844 -29322.224609 5171.523438 +v 23606.914062 -29868.781250 15514.569336 +v 23606.914062 -29868.781250 5171.523438 +v 23928.984375 -30459.638672 15514.569336 +v 23928.984375 -30459.638672 5171.523438 +v 24291.369141 -30885.695312 15514.569336 +v 24291.369141 -30885.695312 5171.523438 +v 24727.857422 -31237.945312 15514.569336 +v 24727.857422 -31237.945312 5171.523438 +v 25118.341797 -31456.732422 15514.569336 +v 25118.341797 -31456.732422 5171.523438 +v 25537.523438 -31615.132812 15514.569336 +v 25537.523438 -31615.132812 5171.523438 +v 25998.867188 -31712.439453 15514.569336 +v 25998.867188 -31712.439453 5171.523438 +v 23606.914062 -29868.781250 25857.617188 +v 23928.984375 -30459.638672 25857.617188 +v 24291.369141 -30885.695312 25857.617188 +v 24727.857422 -31237.945312 25857.617188 +v 25118.341797 -31456.732422 25857.617188 +v 25537.523438 -31615.132812 25857.617188 +v 25998.867188 -31712.439453 25857.617188 +v 25998.867188 -31712.439453 -25857.617188 +v 25998.867188 -31712.439453 -15514.569336 +v 25998.867188 -31712.439453 -5171.523438 +v 25537.523438 -31615.132812 -15514.569336 +v 25537.523438 -31615.132812 -5171.523438 +v 25118.341797 -31456.732422 -15514.569336 +v 25118.341797 -31456.732422 -5171.523438 +v 24727.857422 -31237.945312 -15514.569336 +v 24727.857422 -31237.945312 -5171.523438 +v 24291.369141 -30885.695312 -15514.569336 +v 24291.369141 -30885.695312 -5171.523438 +v 23928.984375 -30459.638672 -15514.569336 +v 23928.984375 -30459.638672 -5171.523438 +v 23606.914062 -29868.781250 -15514.569336 +v 23606.914062 -29868.781250 -5171.523438 +v 23442.964844 -29322.224609 -15514.569336 +v 23442.964844 -29322.224609 -5171.523438 +v 25537.523438 -31615.132812 -25857.617188 +v 25118.341797 -31456.732422 -25857.617188 +v 24727.857422 -31237.945312 -25857.617188 +v 24291.369141 -30885.695312 -25857.617188 +v 23928.984375 -30459.638672 -25857.617188 +v 23606.914062 -29868.781250 -25857.617188 +v 23442.964844 -29322.224609 -25857.617188 +v 27206.621094 -31691.560547 21720.404297 +v 27206.621094 -31691.560547 7240.134766 +v 27206.621094 -31691.560547 -7240.134766 +v 27712.832031 -31555.484375 7240.134766 +v 27712.832031 -31555.484375 -7240.134766 +v 28288.417969 -31272.320312 7240.134766 +v 28288.417969 -31272.320312 -7240.134766 +v 28686.103516 -30971.556641 7240.134766 +v 28686.103516 -30971.556641 -7240.134766 +v 29027.736328 -30610.013672 7240.134766 +v 29027.736328 -30610.013672 -7240.134766 +v 29358.367188 -30096.605469 7240.134766 +v 29358.367188 -30096.605469 -7240.134766 +v 29605.503906 -29418.859375 7240.134766 +v 29605.503906 -29418.859375 -7240.134766 +v 29605.503906 -29418.859375 -21720.404297 +v 29358.367188 -30096.605469 -21720.404297 +v 27712.832031 -31555.484375 21720.404297 +v 28288.417969 -31272.320312 21720.404297 +v 28686.103516 -30971.556641 21720.404297 +v 29027.736328 -30610.013672 21720.404297 +v 29358.367188 -30096.605469 21720.404297 +v 29605.503906 -29418.859375 21720.404297 +v 29027.736328 -30610.013672 -21720.404297 +v 28686.103516 -30971.556641 -21720.404297 +v 28288.417969 -31272.320312 -21720.404297 +v 27712.832031 -31555.484375 -21720.404297 +v 27206.621094 -31691.560547 -21720.404297 +v 29622.763672 -24343.314453 26955.931641 +v 29622.763672 -24343.314453 19254.236328 +v 29622.763672 -24343.314453 11552.541992 +v 29442.080078 -23765.898438 19254.236328 +v 29442.080078 -23765.898438 11552.541992 +v 29196.003906 -23306.007812 19254.236328 +v 29196.003906 -23306.007812 11552.541992 +v 28717.835938 -22740.685547 19254.236328 +v 28717.835938 -22740.685547 11552.541992 +v 28341.511719 -22445.462891 19254.236328 +v 28341.511719 -22445.462891 11552.541992 +v 27918.732422 -22211.861328 19254.236328 +v 27918.732422 -22211.861328 11552.541992 +v 27278.525391 -22005.466797 19254.236328 +v 27278.525391 -22005.466797 11552.541992 +v 26964.037109 -21959.056641 19254.236328 +v 26964.037109 -21959.056641 11552.541992 +v 26964.037109 -21959.056641 3850.847412 +v 26964.037109 -21959.056641 -3850.847412 +v 26964.037109 -21959.056641 -11552.541992 +v 27278.525391 -22005.466797 -11552.541992 +v 27278.525391 -22005.466797 -19254.236328 +v 27918.732422 -22211.861328 -19254.236328 +v 27918.732422 -22211.861328 -26955.931641 +v 28341.511719 -22445.462891 -26955.931641 +v 29442.080078 -23765.898438 26955.931641 +v 29196.003906 -23306.007812 26955.931641 +v 28717.835938 -22740.685547 26955.931641 +v 28341.511719 -22445.462891 26955.931641 +v 27918.732422 -22211.861328 26955.931641 +v 27278.525391 -22005.466797 26955.931641 +v 26964.037109 -21959.056641 26955.931641 +v 26964.037109 -21959.056641 -26955.931641 +v 26964.037109 -21959.056641 -19254.236328 +v 27278.525391 -22005.466797 -26955.931641 +v 28717.835938 -22740.685547 -26955.931641 +v 29196.003906 -23306.007812 -26955.931641 +v 29442.080078 -23765.898438 -26955.931641 +v 29622.763672 -24343.314453 -26955.931641 +v 29622.763672 -24343.314453 -19254.236328 +v 29622.763672 -24343.314453 -11552.541992 +v 29442.080078 -23765.898438 -11552.541992 +v 29442.080078 -23765.898438 -3850.847412 +v 29196.003906 -23306.007812 -3850.847412 +v 29196.003906 -23306.007812 3850.847412 +v 28717.835938 -22740.685547 3850.847412 +v 29622.763672 -24343.314453 -3850.847412 +v 29622.763672 -24343.314453 3850.847412 +v 29442.080078 -23765.898438 -19254.236328 +v 29196.003906 -23306.007812 -19254.236328 +v 29196.003906 -23306.007812 -11552.541992 +v 28717.835938 -22740.685547 -19254.236328 +v 28717.835938 -22740.685547 -11552.541992 +v 28717.835938 -22740.685547 -3850.847412 +v 28341.511719 -22445.462891 -19254.236328 +v 28341.511719 -22445.462891 -11552.541992 +v 28341.511719 -22445.462891 -3850.847412 +v 28341.511719 -22445.462891 3850.847412 +v 27918.732422 -22211.861328 -11552.541992 +v 27278.525391 -22005.466797 -3850.847412 +v 27918.732422 -22211.861328 -3850.847412 +v 27918.732422 -22211.861328 3850.847412 +v 29442.080078 -23765.898438 3850.847412 +v 27278.525391 -22005.466797 3850.847412 +v 15789.082031 -21974.726562 23105.031250 +v 15789.082031 -21974.726562 11552.515625 +v 15789.082031 -21974.726562 0.000000 +v 15237.129883 -22105.890625 11552.515625 +v 15237.129883 -22105.890625 0.000000 +v 14849.788086 -22268.785156 11552.515625 +v 14849.788086 -22268.785156 0.000000 +v 14491.873047 -22482.214844 11552.515625 +v 14491.873047 -22482.214844 0.000000 +v 14106.322266 -22800.855469 11552.515625 +v 14106.322266 -22800.855469 0.000000 +v 13781.859375 -23175.310547 11552.515625 +v 13781.859375 -23175.310547 0.000000 +v 13492.760742 -23660.902344 11552.515625 +v 13492.760742 -23660.902344 0.000000 +v 13276.846680 -24287.080078 11552.515625 +v 13276.846680 -24287.080078 0.000000 +v 15237.129883 -22105.890625 23105.031250 +v 14849.788086 -22268.785156 23105.031250 +v 14491.873047 -22482.214844 23105.031250 +v 14106.322266 -22800.855469 23105.031250 +v 13781.859375 -23175.310547 23105.031250 +v 13492.760742 -23660.902344 23105.031250 +v 13276.846680 -24287.080078 23105.031250 +v 13276.846680 -24287.080078 -23105.031250 +v 13276.846680 -24287.080078 -11552.515625 +v 13492.760742 -23660.902344 -11552.515625 +v 13781.859375 -23175.310547 -11552.515625 +v 14106.322266 -22800.855469 -11552.515625 +v 14491.873047 -22482.214844 -11552.515625 +v 14849.788086 -22268.785156 -11552.515625 +v 15237.129883 -22105.890625 -11552.515625 +v 15789.082031 -21974.726562 -11552.515625 +v 13492.760742 -23660.902344 -23105.031250 +v 13781.859375 -23175.310547 -23105.031250 +v 14106.322266 -22800.855469 -23105.031250 +v 14491.873047 -22482.214844 -23105.031250 +v 14849.788086 -22268.785156 -23105.031250 +v 15237.129883 -22105.890625 -23105.031250 +v 15789.082031 -21974.726562 -23105.031250 +v 13261.146484 -29322.224609 25857.476562 +v 13261.146484 -29322.224609 15514.486328 +v 13261.146484 -29322.224609 5171.495117 +v 13425.095703 -29868.781250 15514.486328 +v 13425.095703 -29868.781250 5171.495117 +v 13747.166992 -30459.638672 15514.486328 +v 13747.166992 -30459.638672 5171.495117 +v 14109.550781 -30885.695312 15514.486328 +v 14109.550781 -30885.695312 5171.495117 +v 14546.038086 -31237.945312 15514.486328 +v 14546.038086 -31237.945312 5171.495117 +v 14936.524414 -31456.732422 15514.486328 +v 14936.524414 -31456.732422 5171.495117 +v 15355.704102 -31615.132812 15514.486328 +v 15355.704102 -31615.132812 5171.495117 +v 15817.048828 -31712.439453 15514.486328 +v 15817.048828 -31712.439453 5171.495117 +v 13425.095703 -29868.781250 25857.476562 +v 13747.166992 -30459.638672 25857.476562 +v 14109.550781 -30885.695312 25857.476562 +v 14546.038086 -31237.945312 25857.476562 +v 14936.524414 -31456.732422 25857.476562 +v 15355.704102 -31615.132812 25857.476562 +v 15817.048828 -31712.439453 25857.476562 +v 15817.048828 -31712.439453 -25857.476562 +v 15817.048828 -31712.439453 -15514.486328 +v 15817.048828 -31712.439453 -5171.495117 +v 15355.704102 -31615.132812 -15514.486328 +v 15355.704102 -31615.132812 -5171.495117 +v 14936.524414 -31456.732422 -15514.486328 +v 14936.524414 -31456.732422 -5171.495117 +v 14546.038086 -31237.945312 -15514.486328 +v 14546.038086 -31237.945312 -5171.495117 +v 14109.550781 -30885.695312 -15514.486328 +v 14109.550781 -30885.695312 -5171.495117 +v 13747.166992 -30459.638672 -15514.486328 +v 13747.166992 -30459.638672 -5171.495117 +v 13425.095703 -29868.781250 -15514.486328 +v 13425.095703 -29868.781250 -5171.495117 +v 13261.146484 -29322.224609 -15514.486328 +v 13261.146484 -29322.224609 -5171.495117 +v 15355.704102 -31615.132812 -25857.476562 +v 14936.524414 -31456.732422 -25857.476562 +v 14546.038086 -31237.945312 -25857.476562 +v 14109.550781 -30885.695312 -25857.476562 +v 13747.166992 -30459.638672 -25857.476562 +v 13425.095703 -29868.781250 -25857.476562 +v 13261.146484 -29322.224609 -25857.476562 +v 17024.802734 -31691.560547 21720.281250 +v 17024.802734 -31691.560547 7240.093750 +v 17024.802734 -31691.560547 -7240.093750 +v 17531.013672 -31555.484375 7240.093750 +v 17531.013672 -31555.484375 -7240.093750 +v 18106.599609 -31272.320312 7240.093750 +v 18106.599609 -31272.320312 -7240.093750 +v 18504.285156 -30971.556641 7240.093750 +v 18504.285156 -30971.556641 -7240.093750 +v 18845.917969 -30610.013672 7240.093750 +v 18845.917969 -30610.013672 -7240.093750 +v 19176.548828 -30096.605469 7240.093750 +v 19176.548828 -30096.605469 -7240.093750 +v 19423.685547 -29418.859375 7240.093750 +v 19423.685547 -29418.859375 -7240.093750 +v 19423.685547 -29418.859375 -21720.281250 +v 19176.548828 -30096.605469 -21720.281250 +v 17531.013672 -31555.484375 21720.281250 +v 18106.599609 -31272.320312 21720.281250 +v 18504.285156 -30971.556641 21720.281250 +v 18845.917969 -30610.013672 21720.281250 +v 19176.548828 -30096.605469 21720.281250 +v 19423.685547 -29418.859375 21720.281250 +v 18845.917969 -30610.013672 -21720.281250 +v 18504.285156 -30971.556641 -21720.281250 +v 18106.599609 -31272.320312 -21720.281250 +v 17531.013672 -31555.484375 -21720.281250 +v 17024.802734 -31691.560547 -21720.281250 +v 19440.945312 -24343.314453 26955.878906 +v 19440.945312 -24343.314453 19254.199219 +v 19440.945312 -24343.314453 11552.519531 +v 19260.261719 -23765.898438 19254.199219 +v 19260.261719 -23765.898438 11552.519531 +v 19014.185547 -23306.007812 19254.199219 +v 19014.185547 -23306.007812 11552.519531 +v 18536.017578 -22740.685547 19254.199219 +v 18536.017578 -22740.685547 11552.519531 +v 18159.693359 -22445.462891 19254.199219 +v 18159.693359 -22445.462891 11552.519531 +v 17736.914062 -22211.861328 19254.199219 +v 17736.914062 -22211.861328 11552.519531 +v 17096.707031 -22005.466797 19254.199219 +v 17096.707031 -22005.466797 11552.519531 +v 16782.218750 -21959.056641 19254.199219 +v 16782.218750 -21959.056641 11552.519531 +v 16782.218750 -21959.056641 3850.839844 +v 16782.218750 -21959.056641 -3850.839844 +v 16782.218750 -21959.056641 -11552.519531 +v 17096.707031 -22005.466797 -11552.519531 +v 17096.707031 -22005.466797 -19254.199219 +v 17736.914062 -22211.861328 -19254.199219 +v 17736.914062 -22211.861328 -26955.878906 +v 18159.693359 -22445.462891 -26955.878906 +v 19260.261719 -23765.898438 26955.878906 +v 19014.185547 -23306.007812 26955.878906 +v 18536.017578 -22740.685547 26955.878906 +v 18159.693359 -22445.462891 26955.878906 +v 17736.914062 -22211.861328 26955.878906 +v 17096.707031 -22005.466797 26955.878906 +v 16782.218750 -21959.056641 26955.878906 +v 16782.218750 -21959.056641 -26955.878906 +v 16782.218750 -21959.056641 -19254.199219 +v 17096.707031 -22005.466797 -26955.878906 +v 18536.017578 -22740.685547 -26955.878906 +v 19014.185547 -23306.007812 -26955.878906 +v 19260.261719 -23765.898438 -26955.878906 +v 19440.945312 -24343.314453 -26955.878906 +v 19440.945312 -24343.314453 -19254.199219 +v 19440.945312 -24343.314453 -11552.519531 +v 19260.261719 -23765.898438 -11552.519531 +v 19260.261719 -23765.898438 -3850.839844 +v 19014.185547 -23306.007812 -3850.839844 +v 19014.185547 -23306.007812 3850.839844 +v 18536.017578 -22740.685547 3850.839844 +v 19440.945312 -24343.314453 -3850.839844 +v 19440.945312 -24343.314453 3850.839844 +v 19260.261719 -23765.898438 -19254.199219 +v 19014.185547 -23306.007812 -19254.199219 +v 19014.185547 -23306.007812 -11552.519531 +v 18536.017578 -22740.685547 -19254.199219 +v 18536.017578 -22740.685547 -11552.519531 +v 18536.017578 -22740.685547 -3850.839844 +v 18159.693359 -22445.462891 -19254.199219 +v 18159.693359 -22445.462891 -11552.519531 +v 18159.693359 -22445.462891 -3850.839844 +v 18159.693359 -22445.462891 3850.839844 +v 17736.914062 -22211.861328 -11552.519531 +v 17096.707031 -22005.466797 -3850.839844 +v 17736.914062 -22211.861328 -3850.839844 +v 17736.914062 -22211.861328 3850.839844 +v 19260.261719 -23765.898438 3850.839844 +v 17096.707031 -22005.466797 3850.839844 +v 5607.263672 -21974.726562 23105.029297 +v 5607.263672 -21974.726562 11552.514648 +v 5607.263672 -21974.726562 0.000000 +v 5055.312012 -22105.890625 11552.514648 +v 5055.312012 -22105.890625 0.000000 +v 4667.970215 -22268.785156 11552.514648 +v 4667.970215 -22268.785156 0.000000 +v 4310.055176 -22482.214844 11552.514648 +v 4310.055176 -22482.214844 0.000000 +v 3924.504150 -22800.855469 11552.514648 +v 3924.504150 -22800.855469 0.000000 +v 3600.041016 -23175.310547 11552.514648 +v 3600.041016 -23175.310547 0.000000 +v 3310.942383 -23660.902344 11552.514648 +v 3310.942383 -23660.902344 0.000000 +v 3095.028076 -24287.080078 11552.514648 +v 3095.028076 -24287.080078 0.000000 +v 5055.312012 -22105.890625 23105.029297 +v 4667.970215 -22268.785156 23105.029297 +v 4310.055176 -22482.214844 23105.029297 +v 3924.504150 -22800.855469 23105.029297 +v 3600.041016 -23175.310547 23105.029297 +v 3310.942383 -23660.902344 23105.029297 +v 3095.028076 -24287.080078 23105.029297 +v 3095.028076 -24287.080078 -23105.029297 +v 3095.028076 -24287.080078 -11552.514648 +v 3310.942383 -23660.902344 -11552.514648 +v 3600.041016 -23175.310547 -11552.514648 +v 3924.504150 -22800.855469 -11552.514648 +v 4310.055176 -22482.214844 -11552.514648 +v 4667.970215 -22268.785156 -11552.514648 +v 5055.312012 -22105.890625 -11552.514648 +v 5607.263672 -21974.726562 -11552.514648 +v 3310.942383 -23660.902344 -23105.029297 +v 3600.041016 -23175.310547 -23105.029297 +v 3924.504150 -22800.855469 -23105.029297 +v 4310.055176 -22482.214844 -23105.029297 +v 4667.970215 -22268.785156 -23105.029297 +v 5055.312012 -22105.890625 -23105.029297 +v 5607.263672 -21974.726562 -23105.029297 +v 3079.327881 -29322.224609 25857.455078 +v 3079.327881 -29322.224609 15514.473633 +v 3079.327881 -29322.224609 5171.491211 +v 3243.277832 -29868.781250 15514.473633 +v 3243.277832 -29868.781250 5171.491211 +v 3565.348633 -30459.638672 15514.473633 +v 3565.348633 -30459.638672 5171.491211 +v 3927.732910 -30885.695312 15514.473633 +v 3927.732910 -30885.695312 5171.491211 +v 4364.220215 -31237.945312 15514.473633 +v 4364.220215 -31237.945312 5171.491211 +v 4754.706055 -31456.732422 15514.473633 +v 4754.706055 -31456.732422 5171.491211 +v 5173.886230 -31615.132812 15514.473633 +v 5173.886230 -31615.132812 5171.491211 +v 5635.230469 -31712.439453 15514.473633 +v 5635.230469 -31712.439453 5171.491211 +v 3243.277832 -29868.781250 25857.455078 +v 3565.348633 -30459.638672 25857.455078 +v 3927.732910 -30885.695312 25857.455078 +v 4364.220215 -31237.945312 25857.455078 +v 4754.706055 -31456.732422 25857.455078 +v 5173.886230 -31615.132812 25857.455078 +v 5635.230469 -31712.439453 25857.455078 +v 5635.230469 -31712.439453 -25857.455078 +v 5635.230469 -31712.439453 -15514.473633 +v 5635.230469 -31712.439453 -5171.491211 +v 5173.886230 -31615.132812 -15514.473633 +v 5173.886230 -31615.132812 -5171.491211 +v 4754.706055 -31456.732422 -15514.473633 +v 4754.706055 -31456.732422 -5171.491211 +v 4364.220215 -31237.945312 -15514.473633 +v 4364.220215 -31237.945312 -5171.491211 +v 3927.732910 -30885.695312 -15514.473633 +v 3927.732910 -30885.695312 -5171.491211 +v 3565.348633 -30459.638672 -15514.473633 +v 3565.348633 -30459.638672 -5171.491211 +v 3243.277832 -29868.781250 -15514.473633 +v 3243.277832 -29868.781250 -5171.491211 +v 3079.327881 -29322.224609 -15514.473633 +v 3079.327881 -29322.224609 -5171.491211 +v 5173.886230 -31615.132812 -25857.455078 +v 4754.706055 -31456.732422 -25857.455078 +v 4364.220215 -31237.945312 -25857.455078 +v 3927.732910 -30885.695312 -25857.455078 +v 3565.348633 -30459.638672 -25857.455078 +v 3243.277832 -29868.781250 -25857.455078 +v 3079.327881 -29322.224609 -25857.455078 +v 6842.984375 -31691.560547 21720.263672 +v 6842.984375 -31691.560547 7240.087891 +v 6842.984375 -31691.560547 -7240.087891 +v 7349.194824 -31555.484375 7240.087891 +v 7349.194824 -31555.484375 -7240.087891 +v 7924.781250 -31272.320312 7240.087891 +v 7924.781250 -31272.320312 -7240.087891 +v 8322.467773 -30971.556641 7240.087891 +v 8322.467773 -30971.556641 -7240.087891 +v 8664.100586 -30610.013672 7240.087891 +v 8664.100586 -30610.013672 -7240.087891 +v 8994.730469 -30096.605469 7240.087891 +v 8994.730469 -30096.605469 -7240.087891 +v 9241.867188 -29418.859375 7240.087891 +v 9241.867188 -29418.859375 -7240.087891 +v 9241.867188 -29418.859375 -21720.263672 +v 8994.730469 -30096.605469 -21720.263672 +v 7349.194824 -31555.484375 21720.263672 +v 7924.781250 -31272.320312 21720.263672 +v 8322.467773 -30971.556641 21720.263672 +v 8664.100586 -30610.013672 21720.263672 +v 8994.730469 -30096.605469 21720.263672 +v 9241.867188 -29418.859375 21720.263672 +v 8664.100586 -30610.013672 -21720.263672 +v 8322.467773 -30971.556641 -21720.263672 +v 7924.781250 -31272.320312 -21720.263672 +v 7349.194824 -31555.484375 -21720.263672 +v 6842.984375 -31691.560547 -21720.263672 +v 9259.126953 -24343.314453 26955.867188 +v 9259.126953 -24343.314453 19254.191406 +v 9259.126953 -24343.314453 11552.514648 +v 9078.443359 -23765.898438 19254.191406 +v 9078.443359 -23765.898438 11552.514648 +v 8832.367188 -23306.007812 19254.191406 +v 8832.367188 -23306.007812 11552.514648 +v 8354.199219 -22740.685547 19254.191406 +v 8354.199219 -22740.685547 11552.514648 +v 7977.875000 -22445.462891 19254.191406 +v 7977.875000 -22445.462891 11552.514648 +v 7555.096191 -22211.861328 19254.191406 +v 7555.096191 -22211.861328 11552.514648 +v 6914.888672 -22005.466797 19254.191406 +v 6914.888672 -22005.466797 11552.514648 +v 6600.400879 -21959.056641 19254.191406 +v 6600.400879 -21959.056641 11552.514648 +v 6600.400879 -21959.056641 3850.838135 +v 6600.400879 -21959.056641 -3850.838135 +v 6600.400879 -21959.056641 -11552.514648 +v 6914.888672 -22005.466797 -11552.514648 +v 6914.888672 -22005.466797 -19254.191406 +v 7555.096191 -22211.861328 -19254.191406 +v 7555.096191 -22211.861328 -26955.867188 +v 7977.875000 -22445.462891 -26955.867188 +v 9078.443359 -23765.898438 26955.867188 +v 8832.367188 -23306.007812 26955.867188 +v 8354.199219 -22740.685547 26955.867188 +v 7977.875000 -22445.462891 26955.867188 +v 7555.096191 -22211.861328 26955.867188 +v 6914.888672 -22005.466797 26955.867188 +v 6600.400879 -21959.056641 26955.867188 +v 6600.400879 -21959.056641 -26955.867188 +v 6600.400879 -21959.056641 -19254.191406 +v 6914.888672 -22005.466797 -26955.867188 +v 8354.199219 -22740.685547 -26955.867188 +v 8832.367188 -23306.007812 -26955.867188 +v 9078.443359 -23765.898438 -26955.867188 +v 9259.126953 -24343.314453 -26955.867188 +v 9259.126953 -24343.314453 -19254.191406 +v 9259.126953 -24343.314453 -11552.514648 +v 9078.443359 -23765.898438 -11552.514648 +v 9078.443359 -23765.898438 -3850.838135 +v 8832.367188 -23306.007812 -3850.838135 +v 8832.367188 -23306.007812 3850.838135 +v 8354.199219 -22740.685547 3850.838135 +v 9259.126953 -24343.314453 -3850.838135 +v 9259.126953 -24343.314453 3850.838135 +v 9078.443359 -23765.898438 -19254.191406 +v 8832.367188 -23306.007812 -19254.191406 +v 8832.367188 -23306.007812 -11552.514648 +v 8354.199219 -22740.685547 -19254.191406 +v 8354.199219 -22740.685547 -11552.514648 +v 8354.199219 -22740.685547 -3850.838135 +v 7977.875000 -22445.462891 -19254.191406 +v 7977.875000 -22445.462891 -11552.514648 +v 7977.875000 -22445.462891 -3850.838135 +v 7977.875000 -22445.462891 3850.838135 +v 7555.096191 -22211.861328 -11552.514648 +v 6914.888672 -22005.466797 -3850.838135 +v 7555.096191 -22211.861328 -3850.838135 +v 7555.096191 -22211.861328 3850.838135 +v 9078.443359 -23765.898438 3850.838135 +v 6914.888672 -22005.466797 3850.838135 +v -4574.554688 -21974.726562 23105.029297 +v -4574.554688 -21974.726562 11552.514648 +v -4574.554688 -21974.726562 0.000000 +v -5126.505859 -22105.890625 11552.514648 +v -5126.505859 -22105.890625 0.000000 +v -5513.848145 -22268.785156 11552.514648 +v -5513.848145 -22268.785156 0.000000 +v -5871.763184 -22482.214844 11552.514648 +v -5871.763184 -22482.214844 0.000000 +v -6257.313965 -22800.855469 11552.514648 +v -6257.313965 -22800.855469 0.000000 +v -6581.777344 -23175.310547 11552.514648 +v -6581.777344 -23175.310547 0.000000 +v -6870.875488 -23660.902344 11552.514648 +v -6870.875488 -23660.902344 0.000000 +v -7086.790039 -24287.080078 11552.514648 +v -7086.790039 -24287.080078 0.000000 +v -5126.505859 -22105.890625 23105.029297 +v -5513.848145 -22268.785156 23105.029297 +v -5871.763184 -22482.214844 23105.029297 +v -6257.313965 -22800.855469 23105.029297 +v -6581.777344 -23175.310547 23105.029297 +v -6870.875488 -23660.902344 23105.029297 +v -7086.790039 -24287.080078 23105.029297 +v -7086.790039 -24287.080078 -23105.029297 +v -7086.790039 -24287.080078 -11552.514648 +v -6870.875488 -23660.902344 -11552.514648 +v -6581.777344 -23175.310547 -11552.514648 +v -6257.313965 -22800.855469 -11552.514648 +v -5871.763184 -22482.214844 -11552.514648 +v -5513.848145 -22268.785156 -11552.514648 +v -5126.505859 -22105.890625 -11552.514648 +v -4574.554688 -21974.726562 -11552.514648 +v -6870.875488 -23660.902344 -23105.029297 +v -6581.777344 -23175.310547 -23105.029297 +v -6257.313965 -22800.855469 -23105.029297 +v -5871.763184 -22482.214844 -23105.029297 +v -5513.848145 -22268.785156 -23105.029297 +v -5126.505859 -22105.890625 -23105.029297 +v -4574.554688 -21974.726562 -23105.029297 +v -7102.490234 -29322.224609 25857.455078 +v -7102.490234 -29322.224609 15514.473633 +v -7102.490234 -29322.224609 5171.491211 +v -6938.540039 -29868.781250 15514.473633 +v -6938.540039 -29868.781250 5171.491211 +v -6616.469727 -30459.638672 15514.473633 +v -6616.469727 -30459.638672 5171.491211 +v -6254.085449 -30885.695312 15514.473633 +v -6254.085449 -30885.695312 5171.491211 +v -5817.598145 -31237.945312 15514.473633 +v -5817.598145 -31237.945312 5171.491211 +v -5427.112305 -31456.732422 15514.473633 +v -5427.112305 -31456.732422 5171.491211 +v -5007.931641 -31615.132812 15514.473633 +v -5007.931641 -31615.132812 5171.491211 +v -4546.587402 -31712.439453 15514.473633 +v -4546.587402 -31712.439453 5171.491211 +v -6938.540039 -29868.781250 25857.455078 +v -6616.469727 -30459.638672 25857.455078 +v -6254.085449 -30885.695312 25857.455078 +v -5817.598145 -31237.945312 25857.455078 +v -5427.112305 -31456.732422 25857.455078 +v -5007.931641 -31615.132812 25857.455078 +v -4546.587402 -31712.439453 25857.455078 +v -4546.587402 -31712.439453 -25857.455078 +v -4546.587402 -31712.439453 -15514.473633 +v -4546.587402 -31712.439453 -5171.491211 +v -5007.931641 -31615.132812 -15514.473633 +v -5007.931641 -31615.132812 -5171.491211 +v -5427.112305 -31456.732422 -15514.473633 +v -5427.112305 -31456.732422 -5171.491211 +v -5817.598145 -31237.945312 -15514.473633 +v -5817.598145 -31237.945312 -5171.491211 +v -6254.085449 -30885.695312 -15514.473633 +v -6254.085449 -30885.695312 -5171.491211 +v -6616.469727 -30459.638672 -15514.473633 +v -6616.469727 -30459.638672 -5171.491211 +v -6938.540039 -29868.781250 -15514.473633 +v -6938.540039 -29868.781250 -5171.491211 +v -7102.490234 -29322.224609 -15514.473633 +v -7102.490234 -29322.224609 -5171.491211 +v -5007.931641 -31615.132812 -25857.455078 +v -5427.112305 -31456.732422 -25857.455078 +v -5817.598145 -31237.945312 -25857.455078 +v -6254.085449 -30885.695312 -25857.455078 +v -6616.469727 -30459.638672 -25857.455078 +v -6938.540039 -29868.781250 -25857.455078 +v -7102.490234 -29322.224609 -25857.455078 +v -3338.833496 -31691.560547 21720.263672 +v -3338.833496 -31691.560547 7240.087891 +v -3338.833496 -31691.560547 -7240.087891 +v -2832.623291 -31555.484375 7240.087891 +v -2832.623291 -31555.484375 -7240.087891 +v -2257.037109 -31272.320312 7240.087891 +v -2257.037109 -31272.320312 -7240.087891 +v -1859.350464 -30971.556641 7240.087891 +v -1859.350464 -30971.556641 -7240.087891 +v -1517.717773 -30610.013672 7240.087891 +v -1517.717773 -30610.013672 -7240.087891 +v -1187.087524 -30096.605469 7240.087891 +v -1187.087524 -30096.605469 -7240.087891 +v -939.951050 -29418.859375 7240.087891 +v -939.951050 -29418.859375 -7240.087891 +v -939.951050 -29418.859375 -21720.263672 +v -1187.087524 -30096.605469 -21720.263672 +v -2832.623291 -31555.484375 21720.263672 +v -2257.037109 -31272.320312 21720.263672 +v -1859.350464 -30971.556641 21720.263672 +v -1517.717773 -30610.013672 21720.263672 +v -1187.087524 -30096.605469 21720.263672 +v -939.951050 -29418.859375 21720.263672 +v -1517.717773 -30610.013672 -21720.263672 +v -1859.350464 -30971.556641 -21720.263672 +v -2257.037109 -31272.320312 -21720.263672 +v -2832.623291 -31555.484375 -21720.263672 +v -3338.833496 -31691.560547 -21720.263672 +v -922.691162 -24343.314453 26955.867188 +v -922.691162 -24343.314453 19254.191406 +v -922.691162 -24343.314453 11552.514648 +v -1103.374390 -23765.898438 19254.191406 +v -1103.374390 -23765.898438 11552.514648 +v -1349.451294 -23306.007812 19254.191406 +v -1349.451294 -23306.007812 11552.514648 +v -1827.619141 -22740.685547 19254.191406 +v -1827.619141 -22740.685547 11552.514648 +v -2203.943359 -22445.462891 19254.191406 +v -2203.943359 -22445.462891 11552.514648 +v -2626.722168 -22211.861328 19254.191406 +v -2626.722168 -22211.861328 11552.514648 +v -3266.929199 -22005.466797 19254.191406 +v -3266.929199 -22005.466797 11552.514648 +v -3581.417480 -21959.056641 19254.191406 +v -3581.417480 -21959.056641 11552.514648 +v -3581.417480 -21959.056641 3850.838135 +v -3581.417480 -21959.056641 -3850.838135 +v -3581.417480 -21959.056641 -11552.514648 +v -3266.929199 -22005.466797 -11552.514648 +v -3266.929199 -22005.466797 -19254.191406 +v -2626.722168 -22211.861328 -19254.191406 +v -2626.722168 -22211.861328 -26955.867188 +v -2203.943359 -22445.462891 -26955.867188 +v -1103.374390 -23765.898438 26955.867188 +v -1349.451294 -23306.007812 26955.867188 +v -1827.619141 -22740.685547 26955.867188 +v -2203.943359 -22445.462891 26955.867188 +v -2626.722168 -22211.861328 26955.867188 +v -3266.929199 -22005.466797 26955.867188 +v -3581.417480 -21959.056641 26955.867188 +v -3581.417480 -21959.056641 -26955.867188 +v -3581.417480 -21959.056641 -19254.191406 +v -3266.929199 -22005.466797 -26955.867188 +v -1827.619141 -22740.685547 -26955.867188 +v -1349.451294 -23306.007812 -26955.867188 +v -1103.374390 -23765.898438 -26955.867188 +v -922.691162 -24343.314453 -26955.867188 +v -922.691162 -24343.314453 -19254.191406 +v -922.691162 -24343.314453 -11552.514648 +v -1103.374390 -23765.898438 -11552.514648 +v -1103.374390 -23765.898438 -3850.838135 +v -1349.451294 -23306.007812 -3850.838135 +v -1349.451294 -23306.007812 3850.838135 +v -1827.619141 -22740.685547 3850.838135 +v -922.691162 -24343.314453 -3850.838135 +v -922.691162 -24343.314453 3850.838135 +v -1103.374390 -23765.898438 -19254.191406 +v -1349.451294 -23306.007812 -19254.191406 +v -1349.451294 -23306.007812 -11552.514648 +v -1827.619141 -22740.685547 -19254.191406 +v -1827.619141 -22740.685547 -11552.514648 +v -1827.619141 -22740.685547 -3850.838135 +v -2203.943359 -22445.462891 -19254.191406 +v -2203.943359 -22445.462891 -11552.514648 +v -2203.943359 -22445.462891 -3850.838135 +v -2203.943359 -22445.462891 3850.838135 +v -2626.722168 -22211.861328 -11552.514648 +v -3266.929199 -22005.466797 -3850.838135 +v -2626.722168 -22211.861328 -3850.838135 +v -2626.722168 -22211.861328 3850.838135 +v -1103.374390 -23765.898438 3850.838135 +v -3266.929199 -22005.466797 3850.838135 +v -14756.373047 -21974.726562 23105.029297 +v -14756.373047 -21974.726562 11552.514648 +v -14756.373047 -21974.726562 0.000000 +v -15308.324219 -22105.890625 11552.514648 +v -15308.324219 -22105.890625 0.000000 +v -15695.666016 -22268.785156 11552.514648 +v -15695.666016 -22268.785156 0.000000 +v -16053.581055 -22482.214844 11552.514648 +v -16053.581055 -22482.214844 0.000000 +v -16439.132812 -22800.855469 11552.514648 +v -16439.132812 -22800.855469 0.000000 +v -16763.595703 -23175.310547 11552.514648 +v -16763.595703 -23175.310547 0.000000 +v -17052.693359 -23660.902344 11552.514648 +v -17052.693359 -23660.902344 0.000000 +v -17268.607422 -24287.080078 11552.514648 +v -17268.607422 -24287.080078 0.000000 +v -15308.324219 -22105.890625 23105.029297 +v -15695.666016 -22268.785156 23105.029297 +v -16053.581055 -22482.214844 23105.029297 +v -16439.132812 -22800.855469 23105.029297 +v -16763.595703 -23175.310547 23105.029297 +v -17052.693359 -23660.902344 23105.029297 +v -17268.607422 -24287.080078 23105.029297 +v -17268.607422 -24287.080078 -23105.029297 +v -17268.607422 -24287.080078 -11552.514648 +v -17052.693359 -23660.902344 -11552.514648 +v -16763.595703 -23175.310547 -11552.514648 +v -16439.132812 -22800.855469 -11552.514648 +v -16053.581055 -22482.214844 -11552.514648 +v -15695.666016 -22268.785156 -11552.514648 +v -15308.324219 -22105.890625 -11552.514648 +v -14756.373047 -21974.726562 -11552.514648 +v -17052.693359 -23660.902344 -23105.029297 +v -16763.595703 -23175.310547 -23105.029297 +v -16439.132812 -22800.855469 -23105.029297 +v -16053.581055 -22482.214844 -23105.029297 +v -15695.666016 -22268.785156 -23105.029297 +v -15308.324219 -22105.890625 -23105.029297 +v -14756.373047 -21974.726562 -23105.029297 +v -17284.308594 -29322.224609 25857.455078 +v -17284.308594 -29322.224609 15514.473633 +v -17284.308594 -29322.224609 5171.491211 +v -17120.359375 -29868.781250 15514.473633 +v -17120.359375 -29868.781250 5171.491211 +v -16798.287109 -30459.638672 15514.473633 +v -16798.287109 -30459.638672 5171.491211 +v -16435.904297 -30885.695312 15514.473633 +v -16435.904297 -30885.695312 5171.491211 +v -15999.416016 -31237.945312 15514.473633 +v -15999.416016 -31237.945312 5171.491211 +v -15608.930664 -31456.732422 15514.473633 +v -15608.930664 -31456.732422 5171.491211 +v -15189.750000 -31615.132812 15514.473633 +v -15189.750000 -31615.132812 5171.491211 +v -14728.405273 -31712.439453 15514.473633 +v -14728.405273 -31712.439453 5171.491211 +v -17120.359375 -29868.781250 25857.455078 +v -16798.287109 -30459.638672 25857.455078 +v -16435.904297 -30885.695312 25857.455078 +v -15999.416016 -31237.945312 25857.455078 +v -15608.930664 -31456.732422 25857.455078 +v -15189.750000 -31615.132812 25857.455078 +v -14728.405273 -31712.439453 25857.455078 +v -14728.405273 -31712.439453 -25857.455078 +v -14728.405273 -31712.439453 -15514.473633 +v -14728.405273 -31712.439453 -5171.491211 +v -15189.750000 -31615.132812 -15514.473633 +v -15189.750000 -31615.132812 -5171.491211 +v -15608.930664 -31456.732422 -15514.473633 +v -15608.930664 -31456.732422 -5171.491211 +v -15999.416016 -31237.945312 -15514.473633 +v -15999.416016 -31237.945312 -5171.491211 +v -16435.904297 -30885.695312 -15514.473633 +v -16435.904297 -30885.695312 -5171.491211 +v -16798.287109 -30459.638672 -15514.473633 +v -16798.287109 -30459.638672 -5171.491211 +v -17120.359375 -29868.781250 -15514.473633 +v -17120.359375 -29868.781250 -5171.491211 +v -17284.308594 -29322.224609 -15514.473633 +v -17284.308594 -29322.224609 -5171.491211 +v -15189.750000 -31615.132812 -25857.455078 +v -15608.930664 -31456.732422 -25857.455078 +v -15999.416016 -31237.945312 -25857.455078 +v -16435.904297 -30885.695312 -25857.455078 +v -16798.287109 -30459.638672 -25857.455078 +v -17120.359375 -29868.781250 -25857.455078 +v -17284.308594 -29322.224609 -25857.455078 +v -13520.651367 -31691.560547 21720.263672 +v -13520.651367 -31691.560547 7240.087891 +v -13520.651367 -31691.560547 -7240.087891 +v -13014.441406 -31555.484375 7240.087891 +v -13014.441406 -31555.484375 -7240.087891 +v -12438.855469 -31272.320312 7240.087891 +v -12438.855469 -31272.320312 -7240.087891 +v -12041.168945 -30971.556641 7240.087891 +v -12041.168945 -30971.556641 -7240.087891 +v -11699.536133 -30610.013672 7240.087891 +v -11699.536133 -30610.013672 -7240.087891 +v -11368.905273 -30096.605469 7240.087891 +v -11368.905273 -30096.605469 -7240.087891 +v -11121.769531 -29418.859375 7240.087891 +v -11121.769531 -29418.859375 -7240.087891 +v -11121.769531 -29418.859375 -21720.263672 +v -11368.905273 -30096.605469 -21720.263672 +v -13014.441406 -31555.484375 21720.263672 +v -12438.855469 -31272.320312 21720.263672 +v -12041.168945 -30971.556641 21720.263672 +v -11699.536133 -30610.013672 21720.263672 +v -11368.905273 -30096.605469 21720.263672 +v -11121.769531 -29418.859375 21720.263672 +v -11699.536133 -30610.013672 -21720.263672 +v -12041.168945 -30971.556641 -21720.263672 +v -12438.855469 -31272.320312 -21720.263672 +v -13014.441406 -31555.484375 -21720.263672 +v -13520.651367 -31691.560547 -21720.263672 +v -11104.509766 -24343.314453 26955.867188 +v -11104.509766 -24343.314453 19254.191406 +v -11104.509766 -24343.314453 11552.514648 +v -11285.192383 -23765.898438 19254.191406 +v -11285.192383 -23765.898438 11552.514648 +v -11531.269531 -23306.007812 19254.191406 +v -11531.269531 -23306.007812 11552.514648 +v -12009.437500 -22740.685547 19254.191406 +v -12009.437500 -22740.685547 11552.514648 +v -12385.761719 -22445.462891 19254.191406 +v -12385.761719 -22445.462891 11552.514648 +v -12808.540039 -22211.861328 19254.191406 +v -12808.540039 -22211.861328 11552.514648 +v -13448.747070 -22005.466797 19254.191406 +v -13448.747070 -22005.466797 11552.514648 +v -13763.235352 -21959.056641 19254.191406 +v -13763.235352 -21959.056641 11552.514648 +v -13763.235352 -21959.056641 3850.838135 +v -13763.235352 -21959.056641 -3850.838135 +v -13763.235352 -21959.056641 -11552.514648 +v -13448.747070 -22005.466797 -11552.514648 +v -13448.747070 -22005.466797 -19254.191406 +v -12808.540039 -22211.861328 -19254.191406 +v -12808.540039 -22211.861328 -26955.867188 +v -12385.761719 -22445.462891 -26955.867188 +v -11285.192383 -23765.898438 26955.867188 +v -11531.269531 -23306.007812 26955.867188 +v -12009.437500 -22740.685547 26955.867188 +v -12385.761719 -22445.462891 26955.867188 +v -12808.540039 -22211.861328 26955.867188 +v -13448.747070 -22005.466797 26955.867188 +v -13763.235352 -21959.056641 26955.867188 +v -13763.235352 -21959.056641 -26955.867188 +v -13763.235352 -21959.056641 -19254.191406 +v -13448.747070 -22005.466797 -26955.867188 +v -12009.437500 -22740.685547 -26955.867188 +v -11531.269531 -23306.007812 -26955.867188 +v -11285.192383 -23765.898438 -26955.867188 +v -11104.509766 -24343.314453 -26955.867188 +v -11104.509766 -24343.314453 -19254.191406 +v -11104.509766 -24343.314453 -11552.514648 +v -11285.192383 -23765.898438 -11552.514648 +v -11285.192383 -23765.898438 -3850.838135 +v -11531.269531 -23306.007812 -3850.838135 +v -11531.269531 -23306.007812 3850.838135 +v -12009.437500 -22740.685547 3850.838135 +v -11104.509766 -24343.314453 -3850.838135 +v -11104.509766 -24343.314453 3850.838135 +v -11285.192383 -23765.898438 -19254.191406 +v -11531.269531 -23306.007812 -19254.191406 +v -11531.269531 -23306.007812 -11552.514648 +v -12009.437500 -22740.685547 -19254.191406 +v -12009.437500 -22740.685547 -11552.514648 +v -12009.437500 -22740.685547 -3850.838135 +v -12385.761719 -22445.462891 -19254.191406 +v -12385.761719 -22445.462891 -11552.514648 +v -12385.761719 -22445.462891 -3850.838135 +v -12385.761719 -22445.462891 3850.838135 +v -12808.540039 -22211.861328 -11552.514648 +v -13448.747070 -22005.466797 -3850.838135 +v -12808.540039 -22211.861328 -3850.838135 +v -12808.540039 -22211.861328 3850.838135 +v -11285.192383 -23765.898438 3850.838135 +v -13448.747070 -22005.466797 3850.838135 +v -24938.191406 -21974.726562 23105.029297 +v -24938.191406 -21974.726562 11552.514648 +v -24938.191406 -21974.726562 0.000000 +v -25490.142578 -22105.890625 11552.514648 +v -25490.142578 -22105.890625 0.000000 +v -25877.484375 -22268.785156 11552.514648 +v -25877.484375 -22268.785156 0.000000 +v -26235.400391 -22482.214844 11552.514648 +v -26235.400391 -22482.214844 0.000000 +v -26620.951172 -22800.855469 11552.514648 +v -26620.951172 -22800.855469 0.000000 +v -26945.414062 -23175.310547 11552.514648 +v -26945.414062 -23175.310547 0.000000 +v -27234.511719 -23660.902344 11552.514648 +v -27234.511719 -23660.902344 0.000000 +v -27450.425781 -24287.080078 11552.514648 +v -27450.425781 -24287.080078 0.000000 +v -25490.142578 -22105.890625 23105.029297 +v -25877.484375 -22268.785156 23105.029297 +v -26235.400391 -22482.214844 23105.029297 +v -26620.951172 -22800.855469 23105.029297 +v -26945.414062 -23175.310547 23105.029297 +v -27234.511719 -23660.902344 23105.029297 +v -27450.425781 -24287.080078 23105.029297 +v -27450.425781 -24287.080078 -23105.029297 +v -27450.425781 -24287.080078 -11552.514648 +v -27234.511719 -23660.902344 -11552.514648 +v -26945.414062 -23175.310547 -11552.514648 +v -26620.951172 -22800.855469 -11552.514648 +v -26235.400391 -22482.214844 -11552.514648 +v -25877.484375 -22268.785156 -11552.514648 +v -25490.142578 -22105.890625 -11552.514648 +v -24938.191406 -21974.726562 -11552.514648 +v -27234.511719 -23660.902344 -23105.029297 +v -26945.414062 -23175.310547 -23105.029297 +v -26620.951172 -22800.855469 -23105.029297 +v -26235.400391 -22482.214844 -23105.029297 +v -25877.484375 -22268.785156 -23105.029297 +v -25490.142578 -22105.890625 -23105.029297 +v -24938.191406 -21974.726562 -23105.029297 +v -27466.126953 -29322.224609 25857.455078 +v -27466.126953 -29322.224609 15514.473633 +v -27466.126953 -29322.224609 5171.491211 +v -27302.175781 -29868.781250 15514.473633 +v -27302.175781 -29868.781250 5171.491211 +v -26980.105469 -30459.638672 15514.473633 +v -26980.105469 -30459.638672 5171.491211 +v -26617.720703 -30885.695312 15514.473633 +v -26617.720703 -30885.695312 5171.491211 +v -26181.234375 -31237.945312 15514.473633 +v -26181.234375 -31237.945312 5171.491211 +v -25790.748047 -31456.732422 15514.473633 +v -25790.748047 -31456.732422 5171.491211 +v -25371.568359 -31615.132812 15514.473633 +v -25371.568359 -31615.132812 5171.491211 +v -24910.224609 -31712.439453 15514.473633 +v -24910.224609 -31712.439453 5171.491211 +v -27302.175781 -29868.781250 25857.455078 +v -26980.105469 -30459.638672 25857.455078 +v -26617.720703 -30885.695312 25857.455078 +v -26181.234375 -31237.945312 25857.455078 +v -25790.748047 -31456.732422 25857.455078 +v -25371.568359 -31615.132812 25857.455078 +v -24910.224609 -31712.439453 25857.455078 +v -24910.224609 -31712.439453 -25857.455078 +v -24910.224609 -31712.439453 -15514.473633 +v -24910.224609 -31712.439453 -5171.491211 +v -25371.568359 -31615.132812 -15514.473633 +v -25371.568359 -31615.132812 -5171.491211 +v -25790.748047 -31456.732422 -15514.473633 +v -25790.748047 -31456.732422 -5171.491211 +v -26181.234375 -31237.945312 -15514.473633 +v -26181.234375 -31237.945312 -5171.491211 +v -26617.720703 -30885.695312 -15514.473633 +v -26617.720703 -30885.695312 -5171.491211 +v -26980.105469 -30459.638672 -15514.473633 +v -26980.105469 -30459.638672 -5171.491211 +v -27302.175781 -29868.781250 -15514.473633 +v -27302.175781 -29868.781250 -5171.491211 +v -27466.126953 -29322.224609 -15514.473633 +v -27466.126953 -29322.224609 -5171.491211 +v -25371.568359 -31615.132812 -25857.455078 +v -25790.748047 -31456.732422 -25857.455078 +v -26181.234375 -31237.945312 -25857.455078 +v -26617.720703 -30885.695312 -25857.455078 +v -26980.105469 -30459.638672 -25857.455078 +v -27302.175781 -29868.781250 -25857.455078 +v -27466.126953 -29322.224609 -25857.455078 +v -23702.470703 -31691.560547 21720.263672 +v -23702.470703 -31691.560547 7240.087891 +v -23702.470703 -31691.560547 -7240.087891 +v -23196.259766 -31555.484375 7240.087891 +v -23196.259766 -31555.484375 -7240.087891 +v -22620.673828 -31272.320312 7240.087891 +v -22620.673828 -31272.320312 -7240.087891 +v -22222.986328 -30971.556641 7240.087891 +v -22222.986328 -30971.556641 -7240.087891 +v -21881.353516 -30610.013672 7240.087891 +v -21881.353516 -30610.013672 -7240.087891 +v -21550.724609 -30096.605469 7240.087891 +v -21550.724609 -30096.605469 -7240.087891 +v -21303.587891 -29418.859375 7240.087891 +v -21303.587891 -29418.859375 -7240.087891 +v -21303.587891 -29418.859375 -21720.263672 +v -21550.724609 -30096.605469 -21720.263672 +v -23196.259766 -31555.484375 21720.263672 +v -22620.673828 -31272.320312 21720.263672 +v -22222.986328 -30971.556641 21720.263672 +v -21881.353516 -30610.013672 21720.263672 +v -21550.724609 -30096.605469 21720.263672 +v -21303.587891 -29418.859375 21720.263672 +v -21881.353516 -30610.013672 -21720.263672 +v -22222.986328 -30971.556641 -21720.263672 +v -22620.673828 -31272.320312 -21720.263672 +v -23196.259766 -31555.484375 -21720.263672 +v -23702.470703 -31691.560547 -21720.263672 +v -21286.328125 -24343.314453 26955.867188 +v -21286.328125 -24343.314453 19254.191406 +v -21286.328125 -24343.314453 11552.514648 +v -21467.011719 -23765.898438 19254.191406 +v -21467.011719 -23765.898438 11552.514648 +v -21713.087891 -23306.007812 19254.191406 +v -21713.087891 -23306.007812 11552.514648 +v -22191.255859 -22740.685547 19254.191406 +v -22191.255859 -22740.685547 11552.514648 +v -22567.580078 -22445.462891 19254.191406 +v -22567.580078 -22445.462891 11552.514648 +v -22990.359375 -22211.861328 19254.191406 +v -22990.359375 -22211.861328 11552.514648 +v -23630.566406 -22005.466797 19254.191406 +v -23630.566406 -22005.466797 11552.514648 +v -23945.054688 -21959.056641 19254.191406 +v -23945.054688 -21959.056641 11552.514648 +v -23945.054688 -21959.056641 3850.838135 +v -23945.054688 -21959.056641 -3850.838135 +v -23945.054688 -21959.056641 -11552.514648 +v -23630.566406 -22005.466797 -11552.514648 +v -23630.566406 -22005.466797 -19254.191406 +v -22990.359375 -22211.861328 -19254.191406 +v -22990.359375 -22211.861328 -26955.867188 +v -22567.580078 -22445.462891 -26955.867188 +v -21467.011719 -23765.898438 26955.867188 +v -21713.087891 -23306.007812 26955.867188 +v -22191.255859 -22740.685547 26955.867188 +v -22567.580078 -22445.462891 26955.867188 +v -22990.359375 -22211.861328 26955.867188 +v -23630.566406 -22005.466797 26955.867188 +v -23945.054688 -21959.056641 26955.867188 +v -23945.054688 -21959.056641 -26955.867188 +v -23945.054688 -21959.056641 -19254.191406 +v -23630.566406 -22005.466797 -26955.867188 +v -22191.255859 -22740.685547 -26955.867188 +v -21713.087891 -23306.007812 -26955.867188 +v -21467.011719 -23765.898438 -26955.867188 +v -21286.328125 -24343.314453 -26955.867188 +v -21286.328125 -24343.314453 -19254.191406 +v -21286.328125 -24343.314453 -11552.514648 +v -21467.011719 -23765.898438 -11552.514648 +v -21467.011719 -23765.898438 -3850.838135 +v -21713.087891 -23306.007812 -3850.838135 +v -21713.087891 -23306.007812 3850.838135 +v -22191.255859 -22740.685547 3850.838135 +v -21286.328125 -24343.314453 -3850.838135 +v -21286.328125 -24343.314453 3850.838135 +v -21467.011719 -23765.898438 -19254.191406 +v -21713.087891 -23306.007812 -19254.191406 +v -21713.087891 -23306.007812 -11552.514648 +v -22191.255859 -22740.685547 -19254.191406 +v -22191.255859 -22740.685547 -11552.514648 +v -22191.255859 -22740.685547 -3850.838135 +v -22567.580078 -22445.462891 -19254.191406 +v -22567.580078 -22445.462891 -11552.514648 +v -22567.580078 -22445.462891 -3850.838135 +v -22567.580078 -22445.462891 3850.838135 +v -22990.359375 -22211.861328 -11552.514648 +v -23630.566406 -22005.466797 -3850.838135 +v -22990.359375 -22211.861328 -3850.838135 +v -22990.359375 -22211.861328 3850.838135 +v -21467.011719 -23765.898438 3850.838135 +v -23630.566406 -22005.466797 3850.838135 +v -35120.007812 -21974.726562 23105.029297 +v -35120.007812 -21974.726562 11552.514648 +v -35120.007812 -21974.726562 0.000000 +v -35671.960938 -22105.890625 11552.514648 +v -35671.960938 -22105.890625 0.000000 +v -36059.300781 -22268.785156 11552.514648 +v -36059.300781 -22268.785156 0.000000 +v -36417.218750 -22482.214844 11552.514648 +v -36417.218750 -22482.214844 0.000000 +v -36802.769531 -22800.855469 11552.514648 +v -36802.769531 -22800.855469 0.000000 +v -37127.230469 -23175.310547 11552.514648 +v -37127.230469 -23175.310547 0.000000 +v -37416.332031 -23660.902344 11552.514648 +v -37416.332031 -23660.902344 0.000000 +v -37632.246094 -24287.080078 11552.514648 +v -37632.246094 -24287.080078 0.000000 +v -35671.960938 -22105.890625 23105.029297 +v -36059.300781 -22268.785156 23105.029297 +v -36417.218750 -22482.214844 23105.029297 +v -36802.769531 -22800.855469 23105.029297 +v -37127.230469 -23175.310547 23105.029297 +v -37416.332031 -23660.902344 23105.029297 +v -37632.246094 -24287.080078 23105.029297 +v -37632.246094 -24287.080078 -23105.029297 +v -37632.246094 -24287.080078 -11552.514648 +v -37416.332031 -23660.902344 -11552.514648 +v -37127.230469 -23175.310547 -11552.514648 +v -36802.769531 -22800.855469 -11552.514648 +v -36417.218750 -22482.214844 -11552.514648 +v -36059.300781 -22268.785156 -11552.514648 +v -35671.960938 -22105.890625 -11552.514648 +v -35120.007812 -21974.726562 -11552.514648 +v -37416.332031 -23660.902344 -23105.029297 +v -37127.230469 -23175.310547 -23105.029297 +v -36802.769531 -22800.855469 -23105.029297 +v -36417.218750 -22482.214844 -23105.029297 +v -36059.300781 -22268.785156 -23105.029297 +v -35671.960938 -22105.890625 -23105.029297 +v -35120.007812 -21974.726562 -23105.029297 +v -37647.945312 -29322.224609 25857.455078 +v -37647.945312 -29322.224609 15514.473633 +v -37647.945312 -29322.224609 5171.491211 +v -37483.996094 -29868.781250 15514.473633 +v -37483.996094 -29868.781250 5171.491211 +v -37161.925781 -30459.638672 15514.473633 +v -37161.925781 -30459.638672 5171.491211 +v -36799.539062 -30885.695312 15514.473633 +v -36799.539062 -30885.695312 5171.491211 +v -36363.050781 -31237.945312 15514.473633 +v -36363.050781 -31237.945312 5171.491211 +v -35972.566406 -31456.732422 15514.473633 +v -35972.566406 -31456.732422 5171.491211 +v -35553.386719 -31615.132812 15514.473633 +v -35553.386719 -31615.132812 5171.491211 +v -35092.042969 -31712.439453 15514.473633 +v -35092.042969 -31712.439453 5171.491211 +v -37483.996094 -29868.781250 25857.455078 +v -37161.925781 -30459.638672 25857.455078 +v -36799.539062 -30885.695312 25857.455078 +v -36363.050781 -31237.945312 25857.455078 +v -35972.566406 -31456.732422 25857.455078 +v -35553.386719 -31615.132812 25857.455078 +v -35092.042969 -31712.439453 25857.455078 +v -35092.042969 -31712.439453 -25857.455078 +v -35092.042969 -31712.439453 -15514.473633 +v -35092.042969 -31712.439453 -5171.491211 +v -35553.386719 -31615.132812 -15514.473633 +v -35553.386719 -31615.132812 -5171.491211 +v -35972.566406 -31456.732422 -15514.473633 +v -35972.566406 -31456.732422 -5171.491211 +v -36363.050781 -31237.945312 -15514.473633 +v -36363.050781 -31237.945312 -5171.491211 +v -36799.539062 -30885.695312 -15514.473633 +v -36799.539062 -30885.695312 -5171.491211 +v -37161.925781 -30459.638672 -15514.473633 +v -37161.925781 -30459.638672 -5171.491211 +v -37483.996094 -29868.781250 -15514.473633 +v -37483.996094 -29868.781250 -5171.491211 +v -37647.945312 -29322.224609 -15514.473633 +v -37647.945312 -29322.224609 -5171.491211 +v -35553.386719 -31615.132812 -25857.455078 +v -35972.566406 -31456.732422 -25857.455078 +v -36363.050781 -31237.945312 -25857.455078 +v -36799.539062 -30885.695312 -25857.455078 +v -37161.925781 -30459.638672 -25857.455078 +v -37483.996094 -29868.781250 -25857.455078 +v -37647.945312 -29322.224609 -25857.455078 +v -33884.289062 -31691.560547 21720.263672 +v -33884.289062 -31691.560547 7240.087891 +v -33884.289062 -31691.560547 -7240.087891 +v -33378.078125 -31555.484375 7240.087891 +v -33378.078125 -31555.484375 -7240.087891 +v -32802.492188 -31272.320312 7240.087891 +v -32802.492188 -31272.320312 -7240.087891 +v -32404.804688 -30971.556641 7240.087891 +v -32404.804688 -30971.556641 -7240.087891 +v -32063.171875 -30610.013672 7240.087891 +v -32063.171875 -30610.013672 -7240.087891 +v -31732.542969 -30096.605469 7240.087891 +v -31732.542969 -30096.605469 -7240.087891 +v -31485.406250 -29418.859375 7240.087891 +v -31485.406250 -29418.859375 -7240.087891 +v -31485.406250 -29418.859375 -21720.263672 +v -31732.542969 -30096.605469 -21720.263672 +v -33378.078125 -31555.484375 21720.263672 +v -32802.492188 -31272.320312 21720.263672 +v -32404.804688 -30971.556641 21720.263672 +v -32063.171875 -30610.013672 21720.263672 +v -31732.542969 -30096.605469 21720.263672 +v -31485.406250 -29418.859375 21720.263672 +v -32063.171875 -30610.013672 -21720.263672 +v -32404.804688 -30971.556641 -21720.263672 +v -32802.492188 -31272.320312 -21720.263672 +v -33378.078125 -31555.484375 -21720.263672 +v -33884.289062 -31691.560547 -21720.263672 +v -31468.146484 -24343.314453 26955.867188 +v -31468.146484 -24343.314453 19254.191406 +v -31468.146484 -24343.314453 11552.514648 +v -31648.828125 -23765.898438 19254.191406 +v -31648.828125 -23765.898438 11552.514648 +v -31894.906250 -23306.007812 19254.191406 +v -31894.906250 -23306.007812 11552.514648 +v -32373.074219 -22740.685547 19254.191406 +v -32373.074219 -22740.685547 11552.514648 +v -32749.398438 -22445.462891 19254.191406 +v -32749.398438 -22445.462891 11552.514648 +v -33172.175781 -22211.861328 19254.191406 +v -33172.175781 -22211.861328 11552.514648 +v -33812.382812 -22005.466797 19254.191406 +v -33812.382812 -22005.466797 11552.514648 +v -34126.871094 -21959.056641 19254.191406 +v -34126.871094 -21959.056641 11552.514648 +v -34126.871094 -21959.056641 3850.838135 +v -34126.871094 -21959.056641 -3850.838135 +v -34126.871094 -21959.056641 -11552.514648 +v -33812.382812 -22005.466797 -11552.514648 +v -33812.382812 -22005.466797 -19254.191406 +v -33172.175781 -22211.861328 -19254.191406 +v -33172.175781 -22211.861328 -26955.867188 +v -32749.398438 -22445.462891 -26955.867188 +v -31648.828125 -23765.898438 26955.867188 +v -31894.906250 -23306.007812 26955.867188 +v -32373.074219 -22740.685547 26955.867188 +v -32749.398438 -22445.462891 26955.867188 +v -33172.175781 -22211.861328 26955.867188 +v -33812.382812 -22005.466797 26955.867188 +v -34126.871094 -21959.056641 26955.867188 +v -34126.871094 -21959.056641 -26955.867188 +v -34126.871094 -21959.056641 -19254.191406 +v -33812.382812 -22005.466797 -26955.867188 +v -32373.074219 -22740.685547 -26955.867188 +v -31894.906250 -23306.007812 -26955.867188 +v -31648.828125 -23765.898438 -26955.867188 +v -31468.146484 -24343.314453 -26955.867188 +v -31468.146484 -24343.314453 -19254.191406 +v -31468.146484 -24343.314453 -11552.514648 +v -31648.828125 -23765.898438 -11552.514648 +v -31648.828125 -23765.898438 -3850.838135 +v -31894.906250 -23306.007812 -3850.838135 +v -31894.906250 -23306.007812 3850.838135 +v -32373.074219 -22740.685547 3850.838135 +v -31468.146484 -24343.314453 -3850.838135 +v -31468.146484 -24343.314453 3850.838135 +v -31648.828125 -23765.898438 -19254.191406 +v -31894.906250 -23306.007812 -19254.191406 +v -31894.906250 -23306.007812 -11552.514648 +v -32373.074219 -22740.685547 -19254.191406 +v -32373.074219 -22740.685547 -11552.514648 +v -32373.074219 -22740.685547 -3850.838135 +v -32749.398438 -22445.462891 -19254.191406 +v -32749.398438 -22445.462891 -11552.514648 +v -32749.398438 -22445.462891 -3850.838135 +v -32749.398438 -22445.462891 3850.838135 +v -33172.175781 -22211.861328 -11552.514648 +v -33812.382812 -22005.466797 -3850.838135 +v -33172.175781 -22211.861328 -3850.838135 +v -33172.175781 -22211.861328 3850.838135 +v -31648.828125 -23765.898438 3850.838135 +v -33812.382812 -22005.466797 3850.838135 +v -45301.828125 -21974.726562 23105.029297 +v -45301.828125 -21974.726562 11552.514648 +v -45301.828125 -21974.726562 0.000000 +v -45853.777344 -22105.890625 11552.514648 +v -45853.777344 -22105.890625 0.000000 +v -46241.121094 -22268.785156 11552.514648 +v -46241.121094 -22268.785156 0.000000 +v -46599.035156 -22482.214844 11552.514648 +v -46599.035156 -22482.214844 0.000000 +v -46984.585938 -22800.855469 11552.514648 +v -46984.585938 -22800.855469 0.000000 +v -47309.050781 -23175.310547 11552.514648 +v -47309.050781 -23175.310547 0.000000 +v -47598.148438 -23660.902344 11552.514648 +v -47598.148438 -23660.902344 0.000000 +v -47814.062500 -24287.080078 11552.514648 +v -47814.062500 -24287.080078 0.000000 +v -45853.777344 -22105.890625 23105.029297 +v -46241.121094 -22268.785156 23105.029297 +v -46599.035156 -22482.214844 23105.029297 +v -46984.585938 -22800.855469 23105.029297 +v -47309.050781 -23175.310547 23105.029297 +v -47598.148438 -23660.902344 23105.029297 +v -47814.062500 -24287.080078 23105.029297 +v -47814.062500 -24287.080078 -23105.029297 +v -47814.062500 -24287.080078 -11552.514648 +v -47598.148438 -23660.902344 -11552.514648 +v -47309.050781 -23175.310547 -11552.514648 +v -46984.585938 -22800.855469 -11552.514648 +v -46599.035156 -22482.214844 -11552.514648 +v -46241.121094 -22268.785156 -11552.514648 +v -45853.777344 -22105.890625 -11552.514648 +v -45301.828125 -21974.726562 -11552.514648 +v -47598.148438 -23660.902344 -23105.029297 +v -47309.050781 -23175.310547 -23105.029297 +v -46984.585938 -22800.855469 -23105.029297 +v -46599.035156 -22482.214844 -23105.029297 +v -46241.121094 -22268.785156 -23105.029297 +v -45853.777344 -22105.890625 -23105.029297 +v -45301.828125 -21974.726562 -23105.029297 +v -47829.761719 -29322.224609 25857.455078 +v -47829.761719 -29322.224609 15514.473633 +v -47829.761719 -29322.224609 5171.491211 +v -47665.812500 -29868.781250 15514.473633 +v -47665.812500 -29868.781250 5171.491211 +v -47343.742188 -30459.638672 15514.473633 +v -47343.742188 -30459.638672 5171.491211 +v -46981.359375 -30885.695312 15514.473633 +v -46981.359375 -30885.695312 5171.491211 +v -46544.871094 -31237.945312 15514.473633 +v -46544.871094 -31237.945312 5171.491211 +v -46154.386719 -31456.732422 15514.473633 +v -46154.386719 -31456.732422 5171.491211 +v -45735.203125 -31615.132812 15514.473633 +v -45735.203125 -31615.132812 5171.491211 +v -45273.859375 -31712.439453 15514.473633 +v -45273.859375 -31712.439453 5171.491211 +v -47665.812500 -29868.781250 25857.455078 +v -47343.742188 -30459.638672 25857.455078 +v -46981.359375 -30885.695312 25857.455078 +v -46544.871094 -31237.945312 25857.455078 +v -46154.386719 -31456.732422 25857.455078 +v -45735.203125 -31615.132812 25857.455078 +v -45273.859375 -31712.439453 25857.455078 +v -45273.859375 -31712.439453 -25857.455078 +v -45273.859375 -31712.439453 -15514.473633 +v -45273.859375 -31712.439453 -5171.491211 +v -45735.203125 -31615.132812 -15514.473633 +v -45735.203125 -31615.132812 -5171.491211 +v -46154.386719 -31456.732422 -15514.473633 +v -46154.386719 -31456.732422 -5171.491211 +v -46544.871094 -31237.945312 -15514.473633 +v -46544.871094 -31237.945312 -5171.491211 +v -46981.359375 -30885.695312 -15514.473633 +v -46981.359375 -30885.695312 -5171.491211 +v -47343.742188 -30459.638672 -15514.473633 +v -47343.742188 -30459.638672 -5171.491211 +v -47665.812500 -29868.781250 -15514.473633 +v -47665.812500 -29868.781250 -5171.491211 +v -47829.761719 -29322.224609 -15514.473633 +v -47829.761719 -29322.224609 -5171.491211 +v -45735.203125 -31615.132812 -25857.455078 +v -46154.386719 -31456.732422 -25857.455078 +v -46544.871094 -31237.945312 -25857.455078 +v -46981.359375 -30885.695312 -25857.455078 +v -47343.742188 -30459.638672 -25857.455078 +v -47665.812500 -29868.781250 -25857.455078 +v -47829.761719 -29322.224609 -25857.455078 +v -44066.105469 -31691.560547 21720.263672 +v -44066.105469 -31691.560547 7240.087891 +v -44066.105469 -31691.560547 -7240.087891 +v -43559.894531 -31555.484375 7240.087891 +v -43559.894531 -31555.484375 -7240.087891 +v -42984.308594 -31272.320312 7240.087891 +v -42984.308594 -31272.320312 -7240.087891 +v -42586.625000 -30971.556641 7240.087891 +v -42586.625000 -30971.556641 -7240.087891 +v -42244.992188 -30610.013672 7240.087891 +v -42244.992188 -30610.013672 -7240.087891 +v -41914.359375 -30096.605469 7240.087891 +v -41914.359375 -30096.605469 -7240.087891 +v -41667.222656 -29418.859375 7240.087891 +v -41667.222656 -29418.859375 -7240.087891 +v -41667.222656 -29418.859375 -21720.263672 +v -41914.359375 -30096.605469 -21720.263672 +v -43559.894531 -31555.484375 21720.263672 +v -42984.308594 -31272.320312 21720.263672 +v -42586.625000 -30971.556641 21720.263672 +v -42244.992188 -30610.013672 21720.263672 +v -41914.359375 -30096.605469 21720.263672 +v -41667.222656 -29418.859375 21720.263672 +v -42244.992188 -30610.013672 -21720.263672 +v -42586.625000 -30971.556641 -21720.263672 +v -42984.308594 -31272.320312 -21720.263672 +v -43559.894531 -31555.484375 -21720.263672 +v -44066.105469 -31691.560547 -21720.263672 +v -41649.964844 -24343.314453 26955.867188 +v -41649.964844 -24343.314453 19254.191406 +v -41649.964844 -24343.314453 11552.514648 +v -41830.648438 -23765.898438 19254.191406 +v -41830.648438 -23765.898438 11552.514648 +v -42076.722656 -23306.007812 19254.191406 +v -42076.722656 -23306.007812 11552.514648 +v -42554.890625 -22740.685547 19254.191406 +v -42554.890625 -22740.685547 11552.514648 +v -42931.214844 -22445.462891 19254.191406 +v -42931.214844 -22445.462891 11552.514648 +v -43353.996094 -22211.861328 19254.191406 +v -43353.996094 -22211.861328 11552.514648 +v -43994.203125 -22005.466797 19254.191406 +v -43994.203125 -22005.466797 11552.514648 +v -44308.691406 -21959.056641 19254.191406 +v -44308.691406 -21959.056641 11552.514648 +v -44308.691406 -21959.056641 3850.838135 +v -44308.691406 -21959.056641 -3850.838135 +v -44308.691406 -21959.056641 -11552.514648 +v -43994.203125 -22005.466797 -11552.514648 +v -43994.203125 -22005.466797 -19254.191406 +v -43353.996094 -22211.861328 -19254.191406 +v -43353.996094 -22211.861328 -26955.867188 +v -42931.214844 -22445.462891 -26955.867188 +v -41830.648438 -23765.898438 26955.867188 +v -42076.722656 -23306.007812 26955.867188 +v -42554.890625 -22740.685547 26955.867188 +v -42931.214844 -22445.462891 26955.867188 +v -43353.996094 -22211.861328 26955.867188 +v -43994.203125 -22005.466797 26955.867188 +v -44308.691406 -21959.056641 26955.867188 +v -44308.691406 -21959.056641 -26955.867188 +v -44308.691406 -21959.056641 -19254.191406 +v -43994.203125 -22005.466797 -26955.867188 +v -42554.890625 -22740.685547 -26955.867188 +v -42076.722656 -23306.007812 -26955.867188 +v -41830.648438 -23765.898438 -26955.867188 +v -41649.964844 -24343.314453 -26955.867188 +v -41649.964844 -24343.314453 -19254.191406 +v -41649.964844 -24343.314453 -11552.514648 +v -41830.648438 -23765.898438 -11552.514648 +v -41830.648438 -23765.898438 -3850.838135 +v -42076.722656 -23306.007812 -3850.838135 +v -42076.722656 -23306.007812 3850.838135 +v -42554.890625 -22740.685547 3850.838135 +v -41649.964844 -24343.314453 -3850.838135 +v -41649.964844 -24343.314453 3850.838135 +v -41830.648438 -23765.898438 -19254.191406 +v -42076.722656 -23306.007812 -19254.191406 +v -42076.722656 -23306.007812 -11552.514648 +v -42554.890625 -22740.685547 -19254.191406 +v -42554.890625 -22740.685547 -11552.514648 +v -42554.890625 -22740.685547 -3850.838135 +v -42931.214844 -22445.462891 -19254.191406 +v -42931.214844 -22445.462891 -11552.514648 +v -42931.214844 -22445.462891 -3850.838135 +v -42931.214844 -22445.462891 3850.838135 +v -43353.996094 -22211.861328 -11552.514648 +v -43994.203125 -22005.466797 -3850.838135 +v -43353.996094 -22211.861328 -3850.838135 +v -43353.996094 -22211.861328 3850.838135 +v -41830.648438 -23765.898438 3850.838135 +v -43994.203125 -22005.466797 3850.838135 +v -86196.273438 -29776.457031 21739.166016 +v -86196.273438 -29776.457031 7246.388672 +v -86196.273438 -29776.457031 -7246.388672 +v -85896.570312 -30500.000000 -7246.388672 +v -85896.570312 -30500.000000 -21739.166016 +v -85419.820312 -31121.320312 -21739.166016 +v -84798.500000 -31598.076172 -21739.166016 +v -84074.953125 -31897.777344 -21739.166016 +v -84074.953125 -31897.777344 -7246.388672 +v -84074.953125 -31897.777344 7246.388672 +v -84798.500000 -31598.076172 7246.388672 +v -84798.500000 -31598.076172 21739.166016 +v -85419.820312 -31121.320312 21739.166016 +v -85896.570312 -30500.000000 21739.166016 +v -84074.953125 -31897.777344 21739.166016 +v -86196.273438 -29776.457031 -21739.166016 +v -85896.570312 -30500.000000 7246.388672 +v -85419.820312 -31121.320312 7246.388672 +v -85419.820312 -31121.320312 -7246.388672 +v -84798.500000 -31598.076172 -7246.388672 +v -82223.539062 -31897.777344 21739.242188 +v -82223.539062 -31897.777344 7246.414062 +v -82223.539062 -31897.777344 -7246.414062 +v -81500.000000 -31598.076172 -7246.414062 +v -81500.000000 -31598.076172 -21739.242188 +v -80878.679688 -31121.320312 -21739.242188 +v -80401.921875 -30500.000000 -21739.242188 +v -80102.218750 -29776.457031 -21739.242188 +v -80102.218750 -29776.457031 -7246.414062 +v -80102.218750 -29776.457031 7246.414062 +v -80401.921875 -30500.000000 7246.414062 +v -80401.921875 -30500.000000 21739.242188 +v -80878.679688 -31121.320312 21739.242188 +v -81500.000000 -31598.076172 21739.242188 +v -80102.218750 -29776.457031 21739.242188 +v -82223.539062 -31897.777344 -21739.242188 +v -81500.000000 -31598.076172 7246.414062 +v -80878.679688 -31121.320312 7246.414062 +v -80878.679688 -31121.320312 -7246.414062 +v -80401.921875 -30500.000000 -7246.414062 +v -80102.218750 -24432.044922 20845.429688 +v -80102.218750 -24432.044922 6948.476562 +v -80102.218750 -24432.044922 -6948.476562 +v -80401.921875 -23708.501953 -6948.476562 +v -80401.921875 -23708.501953 -20845.429688 +v -80878.679688 -23087.181641 -20845.429688 +v -81500.000000 -22610.425781 -20845.429688 +v -82223.539062 -22310.724609 -20845.429688 +v -82223.539062 -22310.724609 -6948.476562 +v -82223.539062 -22310.724609 6948.476562 +v -81500.000000 -22610.425781 6948.476562 +v -81500.000000 -22610.425781 20845.429688 +v -80878.679688 -23087.181641 20845.429688 +v -80401.921875 -23708.501953 20845.429688 +v -82223.539062 -22310.724609 20845.429688 +v -80102.218750 -24432.044922 -20845.429688 +v -80401.921875 -23708.501953 6948.476562 +v -80878.679688 -23087.181641 6948.476562 +v -80878.679688 -23087.181641 -6948.476562 +v -81500.000000 -22610.425781 -6948.476562 +v -84074.953125 -22310.724609 20843.781250 +v -84074.953125 -22310.724609 6947.927246 +v -84074.953125 -22310.724609 -6947.927246 +v -84798.500000 -22610.425781 -6947.927246 +v -84798.500000 -22610.425781 -20843.781250 +v -85419.820312 -23087.181641 -20843.781250 +v -85896.570312 -23708.501953 -20843.781250 +v -86196.273438 -24432.044922 -20843.781250 +v -86196.273438 -24432.044922 -6947.927246 +v -86196.273438 -24432.044922 6947.927246 +v -85896.570312 -23708.501953 6947.927246 +v -85896.570312 -23708.501953 20843.781250 +v -85419.820312 -23087.181641 20843.781250 +v -84798.500000 -22610.425781 20843.781250 +v -86196.273438 -24432.044922 20843.781250 +v -84074.953125 -22310.724609 -20843.781250 +v -84798.500000 -22610.425781 6947.927246 +v -85419.820312 -23087.181641 6947.927246 +v -85419.820312 -23087.181641 -6947.927246 +v -85896.570312 -23708.501953 -6947.927246 +v -95624.843750 -29776.457031 21733.318359 +v -95624.843750 -29776.457031 7244.439453 +v -95624.843750 -29776.457031 -7244.439453 +v -95325.140625 -30500.000000 -7244.439453 +v -95325.140625 -30500.000000 -21733.318359 +v -94848.390625 -31121.320312 -21733.318359 +v -94227.070312 -31598.076172 -21733.318359 +v -93503.523438 -31897.777344 -21733.318359 +v -93503.523438 -31897.777344 -7244.439453 +v -93503.523438 -31897.777344 7244.439453 +v -94227.070312 -31598.076172 7244.439453 +v -94227.070312 -31598.076172 21733.318359 +v -94848.390625 -31121.320312 21733.318359 +v -95325.140625 -30500.000000 21733.318359 +v -93503.523438 -31897.777344 21733.318359 +v -95624.843750 -29776.457031 -21733.318359 +v -95325.140625 -30500.000000 7244.439453 +v -94848.390625 -31121.320312 7244.439453 +v -94848.390625 -31121.320312 -7244.439453 +v -94227.070312 -31598.076172 -7244.439453 +v -91652.117188 -31897.777344 21733.630859 +v -91652.117188 -31897.777344 7244.543945 +v -91652.117188 -31897.777344 -7244.543945 +v -90928.570312 -31598.076172 -7244.543945 +v -90928.570312 -31598.076172 -21733.630859 +v -90307.250000 -31121.320312 -21733.630859 +v -89830.492188 -30500.000000 -21733.630859 +v -89530.796875 -29776.457031 -21733.630859 +v -89530.796875 -29776.457031 -7244.543945 +v -89530.796875 -29776.457031 7244.543945 +v -89830.492188 -30500.000000 7244.543945 +v -89830.492188 -30500.000000 21733.630859 +v -90307.250000 -31121.320312 21733.630859 +v -90928.570312 -31598.076172 21733.630859 +v -89530.796875 -29776.457031 21733.630859 +v -91652.117188 -31897.777344 -21733.630859 +v -90928.570312 -31598.076172 7244.543945 +v -90307.250000 -31121.320312 7244.543945 +v -90307.250000 -31121.320312 -7244.543945 +v -89830.492188 -30500.000000 -7244.543945 +v -89530.796875 -24432.044922 20841.958984 +v -89530.796875 -24432.044922 6947.319336 +v -89530.796875 -24432.044922 -6947.319336 +v -89830.492188 -23708.501953 -6947.319336 +v -89830.492188 -23708.501953 -20841.958984 +v -90307.250000 -23087.181641 -20841.958984 +v -90928.570312 -22610.425781 -20841.958984 +v -91652.117188 -22310.724609 -20841.958984 +v -91652.117188 -22310.724609 -6947.319336 +v -91652.117188 -22310.724609 6947.319336 +v -90928.570312 -22610.425781 6947.319336 +v -90928.570312 -22610.425781 20841.958984 +v -90307.250000 -23087.181641 20841.958984 +v -89830.492188 -23708.501953 20841.958984 +v -91652.117188 -22310.724609 20841.958984 +v -89530.796875 -24432.044922 -20841.958984 +v -89830.492188 -23708.501953 6947.319336 +v -90307.250000 -23087.181641 6947.319336 +v -90307.250000 -23087.181641 -6947.319336 +v -90928.570312 -22610.425781 -6947.319336 +v -93503.523438 -22310.724609 20835.373047 +v -93503.523438 -22310.724609 6945.124023 +v -93503.523438 -22310.724609 -6945.124023 +v -94227.070312 -22610.425781 -6945.124023 +v -94227.070312 -22610.425781 -20835.373047 +v -94848.390625 -23087.181641 -20835.373047 +v -95325.140625 -23708.501953 -20835.373047 +v -95624.843750 -24432.044922 -20835.373047 +v -95624.843750 -24432.044922 -6945.124023 +v -95624.843750 -24432.044922 6945.124023 +v -95325.140625 -23708.501953 6945.124023 +v -95325.140625 -23708.501953 20835.373047 +v -94848.390625 -23087.181641 20835.373047 +v -94227.070312 -22610.425781 20835.373047 +v -95624.843750 -24432.044922 20835.373047 +v -93503.523438 -22310.724609 -20835.373047 +v -94227.070312 -22610.425781 6945.124023 +v -94848.390625 -23087.181641 6945.124023 +v -94848.390625 -23087.181641 -6945.124023 +v -95325.140625 -23708.501953 -6945.124023 +v -105053.414062 -29776.457031 21717.601562 +v -105053.414062 -29776.457031 7239.200684 +v -105053.414062 -29776.457031 -7239.200684 +v -104753.718750 -30500.000000 -7239.200684 +v -104753.718750 -30500.000000 -21717.601562 +v -104276.960938 -31121.320312 -21717.601562 +v -103655.640625 -31598.076172 -21717.601562 +v -102932.093750 -31897.777344 -21717.601562 +v -102932.093750 -31897.777344 -7239.200684 +v -102932.093750 -31897.777344 7239.200684 +v -103655.640625 -31598.076172 7239.200684 +v -103655.640625 -31598.076172 21717.601562 +v -104276.960938 -31121.320312 21717.601562 +v -104753.718750 -30500.000000 21717.601562 +v -102932.093750 -31897.777344 21717.601562 +v -105053.414062 -29776.457031 -21717.601562 +v -104753.718750 -30500.000000 7239.200684 +v -104276.960938 -31121.320312 7239.200684 +v -104276.960938 -31121.320312 -7239.200684 +v -103655.640625 -31598.076172 -7239.200684 +v -101080.687500 -31897.777344 21718.292969 +v -101080.687500 -31897.777344 7239.431152 +v -101080.687500 -31897.777344 -7239.431152 +v -100357.140625 -31598.076172 -7239.431152 +v -100357.140625 -31598.076172 -21718.292969 +v -99735.820312 -31121.320312 -21718.292969 +v -99259.070312 -30500.000000 -21718.292969 +v -98959.367188 -29776.457031 -21718.292969 +v -98959.367188 -29776.457031 -7239.431152 +v -98959.367188 -29776.457031 7239.431152 +v -99259.070312 -30500.000000 7239.431152 +v -99259.070312 -30500.000000 21718.292969 +v -99735.820312 -31121.320312 21718.292969 +v -100357.140625 -31598.076172 21718.292969 +v -98959.367188 -29776.457031 21718.292969 +v -101080.687500 -31897.777344 -21718.292969 +v -100357.140625 -31598.076172 7239.431152 +v -99735.820312 -31121.320312 7239.431152 +v -99735.820312 -31121.320312 -7239.431152 +v -99259.070312 -30500.000000 -7239.431152 +v -98959.367188 -24432.044922 20830.320312 +v -98959.367188 -24432.044922 6943.439941 +v -98959.367188 -24432.044922 -6943.439941 +v -99259.070312 -23708.501953 -6943.439941 +v -99259.070312 -23708.501953 -20830.320312 +v -99735.820312 -23087.181641 -20830.320312 +v -100357.140625 -22610.425781 -20830.320312 +v -101080.687500 -22310.724609 -20830.320312 +v -101080.687500 -22310.724609 -6943.439941 +v -101080.687500 -22310.724609 6943.439941 +v -100357.140625 -22610.425781 6943.439941 +v -100357.140625 -22610.425781 20830.320312 +v -99735.820312 -23087.181641 20830.320312 +v -99259.070312 -23708.501953 20830.320312 +v -101080.687500 -22310.724609 20830.320312 +v -98959.367188 -24432.044922 -20830.320312 +v -99259.070312 -23708.501953 6943.439941 +v -99735.820312 -23087.181641 6943.439941 +v -99735.820312 -23087.181641 -6943.439941 +v -100357.140625 -22610.425781 -6943.439941 +v -102932.093750 -22310.724609 20815.806641 +v -102932.093750 -22310.724609 6938.602051 +v -102932.093750 -22310.724609 -6938.602051 +v -103655.640625 -22610.425781 -6938.602051 +v -103655.640625 -22610.425781 -20815.806641 +v -104276.960938 -23087.181641 -20815.806641 +v -104753.718750 -23708.501953 -20815.806641 +v -105053.414062 -24432.044922 -20815.806641 +v -105053.414062 -24432.044922 -6938.602051 +v -105053.414062 -24432.044922 6938.602051 +v -104753.718750 -23708.501953 6938.602051 +v -104753.718750 -23708.501953 20815.806641 +v -104276.960938 -23087.181641 20815.806641 +v -103655.640625 -22610.425781 20815.806641 +v -105053.414062 -24432.044922 20815.806641 +v -102932.093750 -22310.724609 -20815.806641 +v -103655.640625 -22610.425781 6938.602051 +v -104276.960938 -23087.181641 6938.602051 +v -104276.960938 -23087.181641 -6938.602051 +v -104753.718750 -23708.501953 -6938.602051 +v -114481.984375 -29776.457031 21687.900391 +v -114481.984375 -29776.457031 7229.299805 +v -114481.984375 -29776.457031 -7229.299805 +v -114182.289062 -30500.000000 -7229.299805 +v -114182.289062 -30500.000000 -21687.900391 +v -113705.531250 -31121.320312 -21687.900391 +v -113084.210938 -31598.076172 -21687.900391 +v -112360.664062 -31897.777344 -21687.900391 +v -112360.664062 -31897.777344 -7229.299805 +v -112360.664062 -31897.777344 7229.299805 +v -113084.210938 -31598.076172 7229.299805 +v -113084.210938 -31598.076172 21687.900391 +v -113705.531250 -31121.320312 21687.900391 +v -114182.289062 -30500.000000 21687.900391 +v -112360.664062 -31897.777344 21687.900391 +v -114481.984375 -29776.457031 -21687.900391 +v -114182.289062 -30500.000000 7229.299805 +v -113705.531250 -31121.320312 7229.299805 +v -113705.531250 -31121.320312 -7229.299805 +v -113084.210938 -31598.076172 -7229.299805 +v -110509.257812 -31897.777344 21689.089844 +v -110509.257812 -31897.777344 7229.696289 +v -110509.257812 -31897.777344 -7229.696289 +v -109785.710938 -31598.076172 -7229.696289 +v -109785.710938 -31598.076172 -21689.089844 +v -109164.390625 -31121.320312 -21689.089844 +v -108687.640625 -30500.000000 -21689.089844 +v -108387.937500 -29776.457031 -21689.089844 +v -108387.937500 -29776.457031 -7229.696289 +v -108387.937500 -29776.457031 7229.696289 +v -108687.640625 -30500.000000 7229.696289 +v -108687.640625 -30500.000000 21689.089844 +v -109164.390625 -31121.320312 21689.089844 +v -109785.710938 -31598.076172 21689.089844 +v -108387.937500 -29776.457031 21689.089844 +v -110509.257812 -31897.777344 -21689.089844 +v -109785.710938 -31598.076172 7229.696289 +v -109164.390625 -31121.320312 7229.696289 +v -109164.390625 -31121.320312 -7229.696289 +v -108687.640625 -30500.000000 -7229.696289 +v -108387.937500 -24432.044922 20806.166016 +v -108387.937500 -24432.044922 6935.388672 +v -108387.937500 -24432.044922 -6935.388672 +v -108687.640625 -23708.501953 -6935.388672 +v -108687.640625 -23708.501953 -20806.166016 +v -109164.390625 -23087.181641 -20806.166016 +v -109785.710938 -22610.425781 -20806.166016 +v -110509.257812 -22310.724609 -20806.166016 +v -110509.257812 -22310.724609 -6935.388672 +v -110509.257812 -22310.724609 6935.388672 +v -109785.710938 -22610.425781 6935.388672 +v -109785.710938 -22610.425781 20806.166016 +v -109164.390625 -23087.181641 20806.166016 +v -108687.640625 -23708.501953 20806.166016 +v -110509.257812 -22310.724609 20806.166016 +v -108387.937500 -24432.044922 -20806.166016 +v -108687.640625 -23708.501953 6935.388672 +v -109164.390625 -23087.181641 6935.388672 +v -109164.390625 -23087.181641 -6935.388672 +v -109785.710938 -22610.425781 -6935.388672 +v -112360.664062 -22310.724609 20781.283203 +v -112360.664062 -22310.724609 6927.094238 +v -112360.664062 -22310.724609 -6927.094238 +v -113084.210938 -22610.425781 -6927.094238 +v -113084.210938 -22610.425781 -20781.283203 +v -113705.531250 -23087.181641 -20781.283203 +v -114182.289062 -23708.501953 -20781.283203 +v -114481.984375 -24432.044922 -20781.283203 +v -114481.984375 -24432.044922 -6927.094238 +v -114481.984375 -24432.044922 6927.094238 +v -114182.289062 -23708.501953 6927.094238 +v -114182.289062 -23708.501953 20781.283203 +v -113705.531250 -23087.181641 20781.283203 +v -113084.210938 -22610.425781 20781.283203 +v -114481.984375 -24432.044922 20781.283203 +v -112360.664062 -22310.724609 -20781.283203 +v -113084.210938 -22610.425781 6927.094238 +v -113705.531250 -23087.181641 6927.094238 +v -113705.531250 -23087.181641 -6927.094238 +v -114182.289062 -23708.501953 -6927.094238 +v -123910.562500 -29776.457031 21640.998047 +v -123910.562500 -29776.457031 7213.666016 +v -123910.562500 -29776.457031 -7213.666016 +v -123610.859375 -30500.000000 -7213.666016 +v -123610.859375 -30500.000000 -21640.998047 +v -123134.101562 -31121.320312 -21640.998047 +v -122512.781250 -31598.076172 -21640.998047 +v -121789.242188 -31897.777344 -21640.998047 +v -121789.242188 -31897.777344 -7213.666016 +v -121789.242188 -31897.777344 7213.666016 +v -122512.781250 -31598.076172 7213.666016 +v -122512.781250 -31598.076172 21640.998047 +v -123134.101562 -31121.320312 21640.998047 +v -123610.859375 -30500.000000 21640.998047 +v -121789.242188 -31897.777344 21640.998047 +v -123910.562500 -29776.457031 -21640.998047 +v -123610.859375 -30500.000000 7213.666016 +v -123134.101562 -31121.320312 7213.666016 +v -123134.101562 -31121.320312 -7213.666016 +v -122512.781250 -31598.076172 -7213.666016 +v -119937.828125 -31897.777344 21642.771484 +v -119937.828125 -31897.777344 7214.257324 +v -119937.828125 -31897.777344 -7214.257324 +v -119214.289062 -31598.076172 -7214.257324 +v -119214.289062 -31598.076172 -21642.771484 +v -118592.968750 -31121.320312 -21642.771484 +v -118116.210938 -30500.000000 -21642.771484 +v -117816.507812 -29776.457031 -21642.771484 +v -117816.507812 -29776.457031 -7214.257324 +v -117816.507812 -29776.457031 7214.257324 +v -118116.210938 -30500.000000 7214.257324 +v -118116.210938 -30500.000000 21642.771484 +v -118592.968750 -31121.320312 21642.771484 +v -119214.289062 -31598.076172 21642.771484 +v -117816.507812 -29776.457031 21642.771484 +v -119937.828125 -31897.777344 -21642.771484 +v -119214.289062 -31598.076172 7214.257324 +v -118592.968750 -31121.320312 7214.257324 +v -118592.968750 -31121.320312 -7214.257324 +v -118116.210938 -30500.000000 -7214.257324 +v -117816.507812 -24432.044922 17304.992188 +v -117816.507812 -24432.044922 0.000000 +v -117816.507812 -24432.044922 -17304.992188 +v -118116.210938 -23708.501953 -17304.992188 +v -118592.968750 -23087.181641 -17304.992188 +v -119214.289062 -22610.425781 -17304.992188 +v -119937.828125 -22310.724609 -17304.992188 +v -119937.828125 -22310.724609 0.000000 +v -119937.828125 -22310.724609 17304.992188 +v -119214.289062 -22610.425781 17304.992188 +v -118592.968750 -23087.181641 17304.992188 +v -118116.210938 -23708.501953 17304.992188 +v -118116.210938 -23708.501953 0.000000 +v -118592.968750 -23087.181641 0.000000 +v -119214.289062 -22610.425781 0.000000 +v -121789.242188 -22310.724609 17274.101562 +v -121789.242188 -22310.724609 0.000000 +v -121789.242188 -22310.724609 -17274.101562 +v -122512.781250 -22610.425781 -17274.101562 +v -123134.101562 -23087.181641 -17274.101562 +v -123610.859375 -23708.501953 -17274.101562 +v -123910.562500 -24432.044922 -17274.101562 +v -123910.562500 -24432.044922 0.000000 +v -123910.562500 -24432.044922 17274.101562 +v -123610.859375 -23708.501953 17274.101562 +v -123134.101562 -23087.181641 17274.101562 +v -122512.781250 -22610.425781 17274.101562 +v -122512.781250 -22610.425781 0.000000 +v -123134.101562 -23087.181641 0.000000 +v -123610.859375 -23708.501953 0.000000 +v -133339.125000 -29776.457031 21574.632812 +v -133339.125000 -29776.457031 7191.543945 +v -133339.125000 -29776.457031 -7191.543945 +v -133039.421875 -30500.000000 -7191.543945 +v -133039.421875 -30500.000000 -21574.632812 +v -132562.671875 -31121.320312 -21574.632812 +v -131941.359375 -31598.076172 -21574.632812 +v -131217.812500 -31897.777344 -21574.632812 +v -131217.812500 -31897.777344 -7191.543945 +v -131217.812500 -31897.777344 7191.543945 +v -131941.359375 -31598.076172 7191.543945 +v -131941.359375 -31598.076172 21574.632812 +v -132562.671875 -31121.320312 21574.632812 +v -133039.421875 -30500.000000 21574.632812 +v -131217.812500 -31897.777344 21574.632812 +v -133339.125000 -29776.457031 -21574.632812 +v -133039.421875 -30500.000000 7191.543945 +v -132562.671875 -31121.320312 7191.543945 +v -132562.671875 -31121.320312 -7191.543945 +v -131941.359375 -31598.076172 -7191.543945 +v -129366.398438 -31897.777344 21577.458984 +v -129366.398438 -31897.777344 7192.487305 +v -129366.398438 -31897.777344 -7192.485352 +v -128642.859375 -31598.076172 -7192.485352 +v -128642.859375 -31598.076172 -21577.457031 +v -128021.539062 -31121.320312 -21577.457031 +v -127544.781250 -30500.000000 -21577.457031 +v -127245.078125 -29776.457031 -21577.457031 +v -127245.078125 -29776.457031 -7192.485352 +v -127245.078125 -29776.457031 7192.487305 +v -127544.781250 -30500.000000 7192.487305 +v -127544.781250 -30500.000000 21577.458984 +v -128021.539062 -31121.320312 21577.458984 +v -128642.859375 -31598.076172 21577.458984 +v -127245.078125 -29776.457031 21577.458984 +v -129366.398438 -31897.777344 -21577.457031 +v -128642.859375 -31598.076172 7192.487305 +v -128021.539062 -31121.320312 7192.487305 +v -128021.539062 -31121.320312 -7192.485352 +v -127544.781250 -30500.000000 -7192.485352 +v -127245.078125 -24432.044922 17256.029297 +v -127245.078125 -24432.044922 0.000000 +v -127245.078125 -24432.044922 -17256.029297 +v -127544.781250 -23708.501953 -17256.029297 +v -128021.539062 -23087.181641 -17256.029297 +v -128642.859375 -22610.425781 -17256.029297 +v -129366.398438 -22310.724609 -17256.029297 +v -129366.398438 -22310.724609 0.000000 +v -129366.398438 -22310.724609 17256.029297 +v -128642.859375 -22610.425781 17256.029297 +v -128021.539062 -23087.181641 17256.029297 +v -127544.781250 -23708.501953 17256.029297 +v -127544.781250 -23708.501953 0.000000 +v -128021.539062 -23087.181641 0.000000 +v -128642.859375 -22610.425781 0.000000 +v -131217.812500 -22310.724609 17213.982422 +v -131217.812500 -22310.724609 0.000000 +v -131217.812500 -22310.724609 -17213.982422 +v -131941.359375 -22610.425781 -17213.982422 +v -132562.671875 -23087.181641 -17213.982422 +v -133039.421875 -23708.501953 -17213.982422 +v -133339.125000 -24432.044922 -17213.982422 +v -133339.125000 -24432.044922 0.000000 +v -133339.125000 -24432.044922 17213.982422 +v -133039.421875 -23708.501953 17213.982422 +v -132562.671875 -23087.181641 17213.982422 +v -131941.359375 -22610.425781 17213.982422 +v -131941.359375 -22610.425781 0.000000 +v -132562.671875 -23087.181641 0.000000 +v -133039.421875 -23708.501953 0.000000 +v -142767.703125 -29776.457031 21487.421875 +v -142767.703125 -29776.457031 7162.473633 +v -142767.703125 -29776.457031 -7162.473633 +v -142468.000000 -30500.000000 -7162.473633 +v -142468.000000 -30500.000000 -21487.421875 +v -141991.250000 -31121.320312 -21487.421875 +v -141369.921875 -31598.076172 -21487.421875 +v -140646.375000 -31897.777344 -21487.421875 +v -140646.375000 -31897.777344 -7162.473633 +v -140646.375000 -31897.777344 7162.473633 +v -141369.921875 -31598.076172 7162.473633 +v -141369.921875 -31598.076172 21487.421875 +v -141991.250000 -31121.320312 21487.421875 +v -142468.000000 -30500.000000 21487.421875 +v -140646.375000 -31897.777344 21487.421875 +v -142767.703125 -29776.457031 -21487.421875 +v -142468.000000 -30500.000000 7162.473633 +v -141991.250000 -31121.320312 7162.473633 +v -141991.250000 -31121.320312 -7162.473633 +v -141369.921875 -31598.076172 -7162.473633 +v -138794.968750 -31897.777344 21492.246094 +v -138794.968750 -31897.777344 7164.082520 +v -138794.968750 -31897.777344 -7164.080566 +v -138071.421875 -31598.076172 -7164.080566 +v -138071.421875 -31598.076172 -21492.244141 +v -137450.109375 -31121.320312 -21492.244141 +v -136973.359375 -30500.000000 -21492.244141 +v -136673.656250 -29776.457031 -21492.244141 +v -136673.656250 -29776.457031 -7164.080566 +v -136673.656250 -29776.457031 7164.082520 +v -136973.359375 -30500.000000 7164.082520 +v -136973.359375 -30500.000000 21492.246094 +v -137450.109375 -31121.320312 21492.246094 +v -138071.421875 -31598.076172 21492.246094 +v -136673.656250 -29776.457031 21492.246094 +v -138794.968750 -31897.777344 -21492.244141 +v -138071.421875 -31598.076172 7164.082520 +v -137450.109375 -31121.320312 7164.082520 +v -137450.109375 -31121.320312 -7164.080566 +v -136973.359375 -30500.000000 -7164.080566 +v -136673.656250 -24432.044922 17190.203125 +v -136673.656250 -24432.044922 0.000000 +v -136673.656250 -24432.044922 -17190.203125 +v -136973.359375 -23708.501953 -17190.203125 +v -137450.109375 -23087.181641 -17190.203125 +v -138071.421875 -22610.425781 -17190.203125 +v -138794.968750 -22310.724609 -17190.203125 +v -138794.968750 -22310.724609 0.000000 +v -138794.968750 -22310.724609 17190.203125 +v -138071.421875 -22610.425781 17190.203125 +v -137450.109375 -23087.181641 17190.203125 +v -136973.359375 -23708.501953 17190.203125 +v -136973.359375 -23708.501953 0.000000 +v -137450.109375 -23087.181641 0.000000 +v -138071.421875 -22610.425781 0.000000 +v -140646.375000 -22310.724609 17136.462891 +v -140646.375000 -22310.724609 0.000000 +v -140646.375000 -22310.724609 -17136.462891 +v -141369.921875 -22610.425781 -17136.462891 +v -141991.250000 -23087.181641 -17136.462891 +v -142468.000000 -23708.501953 -17136.462891 +v -142767.703125 -24432.044922 -17136.462891 +v -142767.703125 -24432.044922 0.000000 +v -142767.703125 -24432.044922 17136.462891 +v -142468.000000 -23708.501953 17136.462891 +v -141991.250000 -23087.181641 17136.462891 +v -141369.921875 -22610.425781 17136.462891 +v -141369.921875 -22610.425781 0.000000 +v -141991.250000 -23087.181641 0.000000 +v -142468.000000 -23708.501953 0.000000 +v -152196.281250 -29776.457031 21378.742188 +v -152196.281250 -29776.457031 7126.247559 +v -152196.281250 -29776.457031 -7126.247559 +v -151896.578125 -30500.000000 -7126.247559 +v -151896.578125 -30500.000000 -21378.742188 +v -151419.812500 -31121.320312 -21378.742188 +v -150798.500000 -31598.076172 -21378.742188 +v -150074.953125 -31897.777344 -21378.742188 +v -150074.953125 -31897.777344 -7126.247559 +v -150074.953125 -31897.777344 7126.247559 +v -150798.500000 -31598.076172 7126.247559 +v -150798.500000 -31598.076172 21378.742188 +v -151419.812500 -31121.320312 21378.742188 +v -151896.578125 -30500.000000 21378.742188 +v -150074.953125 -31897.777344 21378.742188 +v -152196.281250 -29776.457031 -21378.742188 +v -151896.578125 -30500.000000 7126.247559 +v -151419.812500 -31121.320312 7126.247559 +v -151419.812500 -31121.320312 -7126.247559 +v -150798.500000 -31598.076172 -7126.247559 +v -148223.546875 -31897.777344 21385.591797 +v -148223.546875 -31897.777344 7128.531250 +v -148223.546875 -31897.777344 -7128.529785 +v -147500.000000 -31598.076172 -7128.529785 +v -147500.000000 -31598.076172 -21385.589844 +v -146878.671875 -31121.320312 -21385.589844 +v -146401.921875 -30500.000000 -21385.589844 +v -146102.218750 -29776.457031 -21385.589844 +v -146102.218750 -29776.457031 -7128.529785 +v -146102.218750 -29776.457031 7128.531250 +v -146401.921875 -30500.000000 7128.531250 +v -146401.921875 -30500.000000 21385.591797 +v -146878.671875 -31121.320312 21385.591797 +v -147500.000000 -31598.076172 21385.591797 +v -146102.218750 -29776.457031 21385.591797 +v -148223.546875 -31897.777344 -21385.589844 +v -147500.000000 -31598.076172 7128.531250 +v -146878.671875 -31121.320312 7128.531250 +v -146878.671875 -31121.320312 -7128.529785 +v -146401.921875 -30500.000000 -7128.529785 +v -146102.218750 -24432.044922 17106.810547 +v -146102.218750 -24432.044922 0.000000 +v -146102.218750 -24432.044922 -17106.810547 +v -146401.921875 -23708.501953 -17106.810547 +v -146878.671875 -23087.181641 -17106.810547 +v -147500.000000 -22610.425781 -17106.810547 +v -148223.546875 -22310.724609 -17106.810547 +v -148223.546875 -22310.724609 0.000000 +v -148223.546875 -22310.724609 17106.810547 +v -147500.000000 -22610.425781 17106.810547 +v -146878.671875 -23087.181641 17106.810547 +v -146401.921875 -23708.501953 17106.810547 +v -146401.921875 -23708.501953 0.000000 +v -146878.671875 -23087.181641 0.000000 +v -147500.000000 -22610.425781 0.000000 +v -150074.953125 -22310.724609 17041.212891 +v -150074.953125 -22310.724609 0.000000 +v -150074.953125 -22310.724609 -17041.212891 +v -150798.500000 -22610.425781 -17041.212891 +v -151419.812500 -23087.181641 -17041.212891 +v -151896.578125 -23708.501953 -17041.212891 +v -152196.281250 -24432.044922 -17041.212891 +v -152196.281250 -24432.044922 0.000000 +v -152196.281250 -24432.044922 17041.212891 +v -151896.578125 -23708.501953 17041.212891 +v -151419.812500 -23087.181641 17041.212891 +v -150798.500000 -22610.425781 17041.212891 +v -150798.500000 -22610.425781 0.000000 +v -151419.812500 -23087.181641 0.000000 +v -151896.578125 -23708.501953 0.000000 +v -161624.843750 -29776.457031 21248.566406 +v -161624.843750 -29776.457031 7082.855469 +v -161624.843750 -29776.457031 -7082.855469 +v -161325.140625 -30500.000000 -7082.855469 +v -161325.140625 -30500.000000 -21248.566406 +v -160848.390625 -31121.320312 -21248.566406 +v -160227.062500 -31598.076172 -21248.566406 +v -159503.531250 -31897.777344 -21248.566406 +v -159503.531250 -31897.777344 -7082.855469 +v -159503.531250 -31897.777344 7082.855469 +v -160227.062500 -31598.076172 7082.855469 +v -160227.062500 -31598.076172 21248.566406 +v -160848.390625 -31121.320312 21248.566406 +v -161325.140625 -30500.000000 21248.566406 +v -159503.531250 -31897.777344 21248.566406 +v -161624.843750 -29776.457031 -21248.566406 +v -161325.140625 -30500.000000 7082.855469 +v -160848.390625 -31121.320312 7082.855469 +v -160848.390625 -31121.320312 -7082.855469 +v -160227.062500 -31598.076172 -7082.855469 +v -157652.109375 -31897.777344 21257.421875 +v -157652.109375 -31897.777344 7085.807129 +v -157652.109375 -31897.777344 -7085.806641 +v -156928.578125 -31598.076172 -7085.806641 +v -156928.578125 -31598.076172 -21257.419922 +v -156307.250000 -31121.320312 -21257.419922 +v -155830.500000 -30500.000000 -21257.419922 +v -155530.796875 -29776.457031 -21257.419922 +v -155530.796875 -29776.457031 -7085.806641 +v -155530.796875 -29776.457031 7085.807129 +v -155830.500000 -30500.000000 7085.807129 +v -155830.500000 -30500.000000 21257.421875 +v -156307.250000 -31121.320312 21257.421875 +v -156928.578125 -31598.076172 21257.421875 +v -155530.796875 -29776.457031 21257.421875 +v -157652.109375 -31897.777344 -21257.419922 +v -156928.578125 -31598.076172 7085.807129 +v -156307.250000 -31121.320312 7085.807129 +v -156307.250000 -31121.320312 -7085.806641 +v -155830.500000 -30500.000000 -7085.806641 +v -155530.796875 -24432.044922 17005.681641 +v -155530.796875 -24432.044922 0.000000 +v -155530.796875 -24432.044922 -17005.681641 +v -155830.500000 -23708.501953 -17005.681641 +v -156307.250000 -23087.181641 -17005.681641 +v -156928.578125 -22610.425781 -17005.681641 +v -157652.109375 -22310.724609 -17005.681641 +v -157652.109375 -22310.724609 0.000000 +v -157652.109375 -22310.724609 17005.681641 +v -156928.578125 -22610.425781 17005.681641 +v -156307.250000 -23087.181641 17005.681641 +v -155830.500000 -23708.501953 17005.681641 +v -155830.500000 -23708.501953 0.000000 +v -156307.250000 -23087.181641 0.000000 +v -156928.578125 -22610.425781 0.000000 +v -159503.531250 -22310.724609 16928.351562 +v -159503.531250 -22310.724609 0.000000 +v -159503.531250 -22310.724609 -16928.351562 +v -160227.062500 -22610.425781 -16928.351562 +v -160848.390625 -23087.181641 -16928.351562 +v -161325.140625 -23708.501953 -16928.351562 +v -161624.843750 -24432.044922 -16928.351562 +v -161624.843750 -24432.044922 0.000000 +v -161624.843750 -24432.044922 16928.351562 +v -161325.140625 -23708.501953 16928.351562 +v -160848.390625 -23087.181641 16928.351562 +v -160227.062500 -22610.425781 16928.351562 +v -160227.062500 -22610.425781 0.000000 +v -160848.390625 -23087.181641 0.000000 +v -161325.140625 -23708.501953 0.000000 +v -171053.421875 -29776.457031 21097.191406 +v -171053.421875 -29776.457031 7032.396973 +v -171053.421875 -29776.457031 -7032.396973 +v -170753.718750 -30500.000000 -7032.396973 +v -170753.718750 -30500.000000 -21097.191406 +v -170276.953125 -31121.320312 -21097.191406 +v -169655.640625 -31598.076172 -21097.191406 +v -168932.093750 -31897.777344 -21097.191406 +v -168932.093750 -31897.777344 -7032.396973 +v -168932.093750 -31897.777344 7032.396973 +v -169655.640625 -31598.076172 7032.396973 +v -169655.640625 -31598.076172 21097.191406 +v -170276.953125 -31121.320312 21097.191406 +v -170753.718750 -30500.000000 21097.191406 +v -168932.093750 -31897.777344 21097.191406 +v -171053.421875 -29776.457031 -21097.191406 +v -170753.718750 -30500.000000 7032.396973 +v -170276.953125 -31121.320312 7032.396973 +v -170276.953125 -31121.320312 -7032.396973 +v -169655.640625 -31598.076172 -7032.396973 +v -167080.687500 -31897.777344 21108.037109 +v -167080.687500 -31897.777344 7036.012695 +v -167080.687500 -31897.777344 -7036.012207 +v -166357.140625 -31598.076172 -7036.012207 +v -166357.140625 -31598.076172 -21108.037109 +v -165735.828125 -31121.320312 -21108.037109 +v -165259.062500 -30500.000000 -21108.037109 +v -164959.359375 -29776.457031 -21108.037109 +v -164959.359375 -29776.457031 -7036.012207 +v -164959.359375 -29776.457031 7036.012695 +v -165259.062500 -30500.000000 7036.012695 +v -165259.062500 -30500.000000 21108.037109 +v -165735.828125 -31121.320312 21108.037109 +v -166357.140625 -31598.076172 21108.037109 +v -164959.359375 -29776.457031 21108.037109 +v -167080.687500 -31897.777344 -21108.037109 +v -166357.140625 -31598.076172 7036.012695 +v -165735.828125 -31121.320312 7036.012695 +v -165735.828125 -31121.320312 -7036.012207 +v -165259.062500 -30500.000000 -7036.012207 +v -164959.359375 -24432.044922 16887.044922 +v -164959.359375 -24432.044922 0.000000 +v -164959.359375 -24432.044922 -16887.044922 +v -165259.062500 -23708.501953 -16887.044922 +v -165735.828125 -23087.181641 -16887.044922 +v -166357.140625 -22610.425781 -16887.044922 +v -167080.687500 -22310.724609 -16887.044922 +v -167080.687500 -22310.724609 0.000000 +v -167080.687500 -22310.724609 16887.044922 +v -166357.140625 -22610.425781 16887.044922 +v -165735.828125 -23087.181641 16887.044922 +v -165259.062500 -23708.501953 16887.044922 +v -165259.062500 -23708.501953 0.000000 +v -165735.828125 -23087.181641 0.000000 +v -166357.140625 -22610.425781 0.000000 +v -168932.093750 -22310.724609 16797.804688 +v -168932.093750 -22310.724609 0.000000 +v -168932.093750 -22310.724609 -16797.804688 +v -169655.640625 -22610.425781 -16797.804688 +v -170276.953125 -23087.181641 -16797.804688 +v -170753.718750 -23708.501953 -16797.804688 +v -171053.421875 -24432.044922 -16797.804688 +v -171053.421875 -24432.044922 0.000000 +v -171053.421875 -24432.044922 16797.804688 +v -170753.718750 -23708.501953 16797.804688 +v -170276.953125 -23087.181641 16797.804688 +v -169655.640625 -22610.425781 16797.804688 +v -169655.640625 -22610.425781 0.000000 +v -170276.953125 -23087.181641 0.000000 +v -170753.718750 -23708.501953 0.000000 +v -180481.984375 -29776.457031 20923.798828 +v -180481.984375 -29776.457031 6974.599609 +v -180481.984375 -29776.457031 -6974.599609 +v -180182.281250 -30500.000000 -6974.599609 +v -180182.281250 -30500.000000 -20923.798828 +v -179705.531250 -31121.320312 -20923.798828 +v -179084.203125 -31598.076172 -20923.798828 +v -178360.671875 -31897.777344 -20923.798828 +v -178360.671875 -31897.777344 -6974.599609 +v -178360.671875 -31897.777344 6974.599609 +v -179084.203125 -31598.076172 6974.599609 +v -179084.203125 -31598.076172 20923.798828 +v -179705.531250 -31121.320312 20923.798828 +v -180182.281250 -30500.000000 20923.798828 +v -178360.671875 -31897.777344 20923.798828 +v -180481.984375 -29776.457031 -20923.798828 +v -180182.281250 -30500.000000 6974.599609 +v -179705.531250 -31121.320312 6974.599609 +v -179705.531250 -31121.320312 -6974.599609 +v -179084.203125 -31598.076172 -6974.599609 +v -176509.250000 -31897.777344 20936.781250 +v -176509.250000 -31897.777344 6978.927246 +v -176509.250000 -31897.777344 -6978.927246 +v -175785.718750 -31598.076172 -6978.927246 +v -175785.718750 -31598.076172 -20936.781250 +v -175164.390625 -31121.320312 -20936.781250 +v -174687.640625 -30500.000000 -20936.781250 +v -174387.937500 -29776.457031 -20936.781250 +v -174387.937500 -29776.457031 -6978.927246 +v -174387.937500 -29776.457031 6978.927246 +v -174687.640625 -30500.000000 6978.927246 +v -174687.640625 -30500.000000 20936.781250 +v -175164.390625 -31121.320312 20936.781250 +v -175785.718750 -31598.076172 20936.781250 +v -174387.937500 -29776.457031 20936.781250 +v -176509.250000 -31897.777344 -20936.781250 +v -175785.718750 -31598.076172 6978.927246 +v -175164.390625 -31121.320312 6978.927246 +v -175164.390625 -31121.320312 -6978.927246 +v -174687.640625 -30500.000000 -6978.927246 +v -174387.937500 -24432.044922 16750.212891 +v -174387.937500 -24432.044922 0.000000 +v -174387.937500 -24432.044922 -16750.212891 +v -174687.640625 -23708.501953 -16750.212891 +v -175164.390625 -23087.181641 -16750.212891 +v -175785.718750 -22610.425781 -16750.212891 +v -176509.250000 -22310.724609 -16750.212891 +v -176509.250000 -22310.724609 0.000000 +v -176509.250000 -22310.724609 16750.212891 +v -175785.718750 -22610.425781 16750.212891 +v -175164.390625 -23087.181641 16750.212891 +v -174687.640625 -23708.501953 16750.212891 +v -174687.640625 -23708.501953 0.000000 +v -175164.390625 -23087.181641 0.000000 +v -175785.718750 -22610.425781 0.000000 +v -178360.671875 -22310.724609 16647.375000 +v -178360.671875 -22310.724609 0.000000 +v -178360.671875 -22310.724609 -16647.375000 +v -179084.203125 -22610.425781 -16647.375000 +v -179705.531250 -23087.181641 -16647.375000 +v -180182.281250 -23708.501953 -16647.375000 +v -180481.984375 -24432.044922 -16647.375000 +v -180481.984375 -24432.044922 0.000000 +v -180481.984375 -24432.044922 16647.375000 +v -180182.281250 -23708.501953 16647.375000 +v -179705.531250 -23087.181641 16647.375000 +v -179084.203125 -22610.425781 16647.375000 +v -179084.203125 -22610.425781 0.000000 +v -179705.531250 -23087.181641 0.000000 +v -180182.281250 -23708.501953 0.000000 +v -189910.562500 -29776.457031 17271.916016 +v -189910.562500 -29776.457031 0.000000 +v -189910.562500 -29776.457031 -17271.916016 +v -189610.859375 -30500.000000 -17271.916016 +v -189134.109375 -31121.320312 -17271.916016 +v -188512.781250 -31598.076172 -17271.916016 +v -187789.234375 -31897.777344 -17271.916016 +v -187789.234375 -31897.777344 0.000000 +v -187789.234375 -31897.777344 17271.916016 +v -188512.781250 -31598.076172 17271.916016 +v -189134.109375 -31121.320312 17271.916016 +v -189610.859375 -30500.000000 17271.916016 +v -189610.859375 -30500.000000 0.000000 +v -189134.109375 -31121.320312 0.000000 +v -188512.781250 -31598.076172 0.000000 +v -185937.828125 -31897.777344 17284.687500 +v -185937.828125 -31897.777344 -0.000296 +v -185937.828125 -31897.777344 -17284.689453 +v -185214.281250 -31598.076172 -17284.689453 +v -184592.968750 -31121.320312 -17284.689453 +v -184116.203125 -30500.000000 -17284.689453 +v -183816.515625 -29776.457031 -17284.689453 +v -183816.515625 -29776.457031 -0.000296 +v -183816.515625 -29776.457031 17284.687500 +v -184116.203125 -30500.000000 17284.687500 +v -184592.968750 -31121.320312 17284.687500 +v -185214.281250 -31598.076172 17284.687500 +v -185214.281250 -31598.076172 -0.000296 +v -184592.968750 -31121.320312 -0.000296 +v -184116.203125 -30500.000000 -0.000296 +v -183816.515625 -24432.044922 16592.523438 +v -183816.515625 -24432.044922 0.000000 +v -183816.515625 -24432.044922 -16592.523438 +v -184116.203125 -23708.501953 -16592.523438 +v -184592.968750 -23087.181641 -16592.523438 +v -185214.281250 -22610.425781 -16592.523438 +v -185937.828125 -22310.724609 -16592.523438 +v -185937.828125 -22310.724609 0.000000 +v -185937.828125 -22310.724609 16592.523438 +v -185214.281250 -22610.425781 16592.523438 +v -184592.968750 -23087.181641 16592.523438 +v -184116.203125 -23708.501953 16592.523438 +v -184116.203125 -23708.501953 0.000000 +v -184592.968750 -23087.181641 0.000000 +v -185214.281250 -22610.425781 0.000000 +v -187789.234375 -22310.724609 16473.976562 +v -187789.234375 -22310.724609 0.000000 +v -187789.234375 -22310.724609 -16473.976562 +v -188512.781250 -22610.425781 -16473.976562 +v -189134.109375 -23087.181641 -16473.976562 +v -189610.859375 -23708.501953 -16473.976562 +v -189910.562500 -24432.044922 -16473.976562 +v -189910.562500 -24432.044922 0.000000 +v -189910.562500 -24432.044922 16473.976562 +v -189610.859375 -23708.501953 16473.976562 +v -189134.109375 -23087.181641 16473.976562 +v -188512.781250 -22610.425781 16473.976562 +v -188512.781250 -22610.425781 0.000000 +v -189134.109375 -23087.181641 0.000000 +v -189610.859375 -23708.501953 0.000000 +v -199339.125000 -29776.457031 17084.886719 +v -199339.125000 -29776.457031 0.000000 +v -199339.125000 -29776.457031 -17084.886719 +v -199039.421875 -30500.000000 -17084.886719 +v -198562.671875 -31121.320312 -17084.886719 +v -197941.359375 -31598.076172 -17084.886719 +v -197217.812500 -31897.777344 -17084.886719 +v -197217.812500 -31897.777344 0.000000 +v -197217.812500 -31897.777344 17084.886719 +v -197941.359375 -31598.076172 17084.886719 +v -198562.671875 -31121.320312 17084.886719 +v -199039.421875 -30500.000000 17084.886719 +v -199039.421875 -30500.000000 0.000000 +v -198562.671875 -31121.320312 0.000000 +v -197941.359375 -31598.076172 0.000000 +v -195366.406250 -31897.777344 17100.458984 +v -195366.406250 -31897.777344 -0.001095 +v -195366.406250 -31897.777344 -17100.460938 +v -194642.859375 -31598.076172 -17100.460938 +v -194021.531250 -31121.320312 -17100.460938 +v -193544.781250 -30500.000000 -17100.460938 +v -193245.078125 -29776.457031 -17100.460938 +v -193245.078125 -29776.457031 -0.001095 +v -193245.078125 -29776.457031 17100.458984 +v -193544.781250 -30500.000000 17100.458984 +v -194021.531250 -31121.320312 17100.458984 +v -194642.859375 -31598.076172 17100.458984 +v -194642.859375 -31598.076172 -0.001095 +v -194021.531250 -31121.320312 -0.001095 +v -193544.781250 -30500.000000 -0.001095 +v -193245.078125 -24432.044922 16410.720703 +v -193245.078125 -24432.044922 0.000000 +v -193245.078125 -24432.044922 -16410.720703 +v -193544.781250 -23708.501953 -16410.720703 +v -194021.531250 -23087.181641 -16410.720703 +v -194642.859375 -22610.425781 -16410.720703 +v -195366.406250 -22310.724609 -16410.720703 +v -195366.406250 -22310.724609 0.000000 +v -195366.406250 -22310.724609 16410.720703 +v -194642.859375 -22610.425781 16410.720703 +v -194021.531250 -23087.181641 16410.720703 +v -193544.781250 -23708.501953 16410.720703 +v -193544.781250 -23708.501953 0.000000 +v -194021.531250 -23087.181641 0.000000 +v -194642.859375 -22610.425781 0.000000 +v -197217.812500 -22310.724609 16273.906250 +v -197217.812500 -22310.724609 0.000000 +v -197217.812500 -22310.724609 -16273.906250 +v -197941.359375 -22610.425781 -16273.906250 +v -198562.671875 -23087.181641 -16273.906250 +v -199039.421875 -23708.501953 -16273.906250 +v -199339.125000 -24432.044922 -16273.906250 +v -199339.125000 -24432.044922 0.000000 +v -199339.125000 -24432.044922 16273.906250 +v -199039.421875 -23708.501953 16273.906250 +v -198562.671875 -23087.181641 16273.906250 +v -197941.359375 -22610.425781 16273.906250 +v -197941.359375 -22610.425781 0.000000 +v -198562.671875 -23087.181641 0.000000 +v -199039.421875 -23708.501953 0.000000 +v -208767.703125 -29776.457031 16872.255859 +v -208767.703125 -29776.457031 0.000000 +v -208767.703125 -29776.457031 -16872.255859 +v -208468.000000 -30500.000000 -16872.255859 +v -207991.250000 -31121.320312 -16872.255859 +v -207369.921875 -31598.076172 -16872.255859 +v -206646.375000 -31897.777344 -16872.255859 +v -206646.375000 -31897.777344 0.000000 +v -206646.375000 -31897.777344 16872.255859 +v -207369.921875 -31598.076172 16872.255859 +v -207991.250000 -31121.320312 16872.255859 +v -208468.000000 -30500.000000 16872.255859 +v -208468.000000 -30500.000000 0.000000 +v -207991.250000 -31121.320312 0.000000 +v -207369.921875 -31598.076172 0.000000 +v -204794.968750 -31897.777344 16891.722656 +v -204794.968750 -31897.777344 -0.000145 +v -204794.968750 -31897.777344 -16891.722656 +v -204071.421875 -31598.076172 -16891.722656 +v -203450.109375 -31121.320312 -16891.722656 +v -202973.359375 -30500.000000 -16891.722656 +v -202673.656250 -29776.457031 -16891.722656 +v -202673.656250 -29776.457031 -0.000145 +v -202673.656250 -29776.457031 16891.722656 +v -202973.359375 -30500.000000 16891.722656 +v -203450.109375 -31121.320312 16891.722656 +v -204071.421875 -31598.076172 16891.722656 +v -204071.421875 -31598.076172 -0.000145 +v -203450.109375 -31121.320312 -0.000145 +v -202973.359375 -30500.000000 -0.000145 +v -202673.656250 -24432.044922 16200.821289 +v -202673.656250 -24432.044922 0.000000 +v -202673.656250 -24432.044922 -16200.821289 +v -202973.359375 -23708.501953 -16200.821289 +v -203450.109375 -23087.181641 -16200.821289 +v -204071.421875 -22610.425781 -16200.821289 +v -204794.968750 -22310.724609 -16200.821289 +v -204794.968750 -22310.724609 0.000000 +v -204794.968750 -22310.724609 16200.821289 +v -204071.421875 -22610.425781 16200.821289 +v -203450.109375 -23087.181641 16200.821289 +v -202973.359375 -23708.501953 16200.821289 +v -202973.359375 -23708.501953 0.000000 +v -203450.109375 -23087.181641 0.000000 +v -204071.421875 -22610.425781 0.000000 +v -206646.375000 -22310.724609 16042.466797 +v -206646.375000 -22310.724609 0.000000 +v -206646.375000 -22310.724609 -16042.466797 +v -207369.921875 -22610.425781 -16042.466797 +v -207991.250000 -23087.181641 -16042.466797 +v -208468.000000 -23708.501953 -16042.466797 +v -208767.703125 -24432.044922 -16042.466797 +v -208767.703125 -24432.044922 0.000000 +v -208767.703125 -24432.044922 16042.466797 +v -208468.000000 -23708.501953 16042.466797 +v -207991.250000 -23087.181641 16042.466797 +v -207369.921875 -22610.425781 16042.466797 +v -207369.921875 -22610.425781 0.000000 +v -207991.250000 -23087.181641 0.000000 +v -208468.000000 -23708.501953 0.000000 +v -218196.281250 -29776.457031 16629.726562 +v -218196.281250 -29776.457031 0.000000 +v -218196.281250 -29776.457031 -16629.726562 +v -217896.578125 -30500.000000 -16629.726562 +v -217419.812500 -31121.320312 -16629.726562 +v -216798.500000 -31598.076172 -16629.726562 +v -216074.953125 -31897.777344 -16629.726562 +v -216074.953125 -31897.777344 0.000000 +v -216074.953125 -31897.777344 16629.726562 +v -216798.500000 -31598.076172 16629.726562 +v -217419.812500 -31121.320312 16629.726562 +v -217896.578125 -30500.000000 16629.726562 +v -217896.578125 -30500.000000 0.000000 +v -217419.812500 -31121.320312 0.000000 +v -216798.500000 -31598.076172 0.000000 +v -214223.546875 -31897.777344 16653.681641 +v -214223.546875 -31897.777344 -0.001089 +v -214223.546875 -31897.777344 -16653.683594 +v -213500.000000 -31598.076172 -16653.683594 +v -212878.671875 -31121.320312 -16653.683594 +v -212401.921875 -30500.000000 -16653.683594 +v -212102.218750 -29776.457031 -16653.683594 +v -212102.218750 -29776.457031 -0.001089 +v -212102.218750 -29776.457031 16653.681641 +v -212401.921875 -30500.000000 16653.681641 +v -212878.671875 -31121.320312 16653.681641 +v -213500.000000 -31598.076172 16653.681641 +v -213500.000000 -31598.076172 -0.001089 +v -212878.671875 -31121.320312 -0.001089 +v -212401.921875 -30500.000000 -0.001089 +v -212102.218750 -24432.044922 15957.681641 +v -212102.218750 -24432.044922 0.000000 +v -212102.218750 -24432.044922 -15957.681641 +v -212401.921875 -23708.501953 -15957.681641 +v -212878.671875 -23087.181641 -15957.681641 +v -213500.000000 -22610.425781 -15957.681641 +v -214223.546875 -22310.724609 -15957.681641 +v -214223.546875 -22310.724609 0.000000 +v -214223.546875 -22310.724609 15957.681641 +v -213500.000000 -22610.425781 15957.681641 +v -212878.671875 -23087.181641 15957.681641 +v -212401.921875 -23708.501953 15957.681641 +v -212401.921875 -23708.501953 0.000000 +v -212878.671875 -23087.181641 0.000000 +v -213500.000000 -22610.425781 0.000000 +v -216074.953125 -22310.724609 15773.395508 +v -216074.953125 -22310.724609 0.000000 +v -216074.953125 -22310.724609 -15773.395508 +v -216798.500000 -22610.425781 -15773.395508 +v -217419.812500 -23087.181641 -15773.395508 +v -217896.578125 -23708.501953 -15773.395508 +v -218196.281250 -24432.044922 -15773.395508 +v -218196.281250 -24432.044922 0.000000 +v -218196.281250 -24432.044922 15773.395508 +v -217896.578125 -23708.501953 15773.395508 +v -217419.812500 -23087.181641 15773.395508 +v -216798.500000 -22610.425781 15773.395508 +v -216798.500000 -22610.425781 0.000000 +v -217419.812500 -23087.181641 0.000000 +v -217896.578125 -23708.501953 0.000000 +v 283861.500000 100466.187500 1152.516602 +v 281854.531250 100811.523438 658.285278 +v 281668.031250 100466.187500 604.200928 +v 280055.531250 100537.476562 131.950668 +v 279858.562500 100502.140625 66.309570 +v 279818.031250 100531.531250 52.995968 +v 284457.750000 101095.648438 1243.936768 +v 286220.281250 100466.187500 1637.885010 +v 287051.406250 101289.250000 1677.819336 +v 288719.218750 100466.187500 2053.244629 +v 289877.500000 101426.984375 2018.459106 +v 292331.031250 100466.187500 2496.411621 +v 291763.906250 101485.039062 2180.385986 +v 296094.343750 100466.187500 2776.143555 +v 293725.156250 101520.953125 2298.613525 +v 295754.656250 101534.726562 2370.536133 +v 292038.937500 102383.265625 1837.099121 +v 293987.375000 102408.296875 1894.581177 +v 291082.437500 102872.390625 1514.025391 +v 292984.906250 102903.804688 1561.398682 +v 290310.406250 103267.203125 1190.951782 +v 292175.750000 103303.781250 1228.216064 +v 289707.687500 103575.414062 857.994446 +v 291544.062500 103616.015625 884.840759 +v 289469.625000 103697.164062 683.132690 +v 291294.562500 103739.351562 704.507629 +v 289285.562500 103791.281250 508.270935 +v 291101.656250 103834.695312 524.174500 +v 289154.187500 103858.476562 331.076904 +v 290963.937500 103902.765625 341.436157 +v 289078.250000 103897.296875 153.882904 +v 290884.375000 103942.093750 158.697830 +v 289058.656250 103907.328125 38.398426 +v 290863.812500 103952.257812 39.599895 +v 289062.593750 103905.312500 -77.086044 +v 290867.968750 103950.218750 -79.498039 +v 289090.093750 103891.242188 -192.570526 +v 290896.781250 103935.960938 -198.595963 +v 289141.187500 103865.125000 -308.054993 +v 290950.312500 103909.500000 -317.693909 +v 289257.375000 103805.703125 -475.837219 +v 291072.093750 103849.304688 -490.725983 +v 289423.312500 103720.851562 -643.619446 +v 291246.031250 103763.343750 -663.758057 +v 289915.968750 103468.906250 -985.857666 +v 291762.375000 103508.109375 -1016.704773 +v 290628.062500 103104.765625 -1333.390259 +v 292508.687500 103139.210938 -1375.111572 +v 291566.593750 102624.804688 -1685.318604 +v 293492.343750 102652.984375 -1738.051514 +v 292734.906250 102027.359375 -2040.276123 +v 294716.781250 102047.742188 -2104.115479 +v 294125.812500 101316.062500 -2395.233643 +v 296174.562500 101327.156250 -2470.179443 +v 298276.250000 101320.414062 -2494.158936 +v 300585.750000 101293.273438 -2459.996094 +v 299088.281250 101985.484375 -2095.441406 +v 301479.937500 101897.757812 -2010.636719 +v 300254.968750 102445.601562 -1660.835693 +v 302797.156250 102271.945312 -1542.399170 +v 301870.250000 102673.445312 -1220.315308 +v 304618.218750 102397.171875 -1086.451904 +v 303983.625000 102663.664062 -803.280884 +v 306976.125000 102276.429688 -673.227539 +v 306603.406250 102428.320312 -439.518158 +v 309860.312500 101929.656250 -333.415955 +v 309763.906250 101967.812500 -246.499268 +v 313258.625000 101375.140625 -151.715607 +v 313216.593750 101391.320312 -98.220032 +v 316954.593750 100705.664062 -25.844877 +v 316949.687500 100707.507812 -16.156082 +v 317577.531250 100587.937500 -8.172231 +v 317576.187500 100588.437500 -3.271347 +v 317893.000000 100527.585938 -1.645128 +v 317892.906250 100527.617188 0.819478 +v 318051.906250 100496.976562 0.410918 +v 318052.156250 100496.882812 1.646768 +v 299944.093750 100466.187500 2874.183105 +v 297845.687500 101526.359375 2393.548584 +v 296033.687500 102393.078125 1912.973145 +v 295005.843750 102884.710938 1576.556152 +v 294176.218750 103281.546875 1240.139160 +v 293528.562500 103591.335938 893.430481 +v 293272.718750 103713.710938 711.346741 +v 293074.937500 103808.312500 529.263000 +v 292933.750000 103875.843750 344.750702 +v 292852.156250 103914.867188 160.238403 +v 292831.093750 103924.953125 39.984318 +v 292835.312500 103922.921875 -80.269775 +v 292864.875000 103908.781250 -200.523865 +v 292919.781250 103882.531250 -320.777954 +v 293044.625000 103822.804688 -495.489777 +v 293222.937500 103737.515625 -670.201538 +v 293752.375000 103484.281250 -1026.574585 +v 294517.562500 103118.273438 -1388.460571 +v 295526.125000 102635.859375 -1754.923828 +v 296781.562500 102035.351562 -2124.541504 +v 300154.375000 101492.664062 2360.763672 +v 303815.156250 100466.187500 2772.273438 +v 302518.218750 101433.390625 2265.221191 +v 307642.500000 100466.187500 2452.157471 +v 304928.906250 101348.539062 2103.685303 +v 307378.218750 101238.093750 1872.919678 +v 303263.625000 102069.890625 1681.308350 +v 305875.531250 101869.156250 1496.875854 +v 302319.031250 102479.054688 1385.632202 +v 305023.156250 102227.117188 1233.634155 +v 301556.562500 102809.335938 1089.955933 +v 304335.125000 102516.054688 970.392334 +v 300961.343750 103067.164062 785.234314 +v 303798.031250 102741.609375 699.097412 +v 300726.218750 103169.007812 625.201294 +v 303585.843750 102830.710938 556.619324 +v 300544.437500 103247.742188 465.168243 +v 303421.843750 102899.585938 414.141235 +v 300414.687500 103303.953125 303.000732 +v 303304.750000 102948.757812 269.762817 +v 300339.718750 103336.429688 140.833237 +v 303237.093750 102977.171875 125.384415 +v 300320.343750 103344.820312 35.142139 +v 303219.625000 102984.515625 31.287193 +v 300324.250000 103343.132812 -70.548950 +v 303223.125000 102983.039062 -62.810024 +v 300351.406250 103331.359375 -176.240036 +v 303247.656250 102972.742188 -156.907242 +v 300401.843750 103309.515625 -281.931122 +v 303293.156250 102953.625000 -251.004471 +v 300516.593750 103259.804688 -435.485016 +v 303396.718750 102910.140625 -387.714111 +v 300680.468750 103188.820312 -589.038879 +v 303544.593750 102848.039062 -524.423767 +v 301167.031250 102978.062500 -902.254395 +v 311361.031250 100466.187500 1895.578003 +v 309857.843750 101102.070312 1569.688965 +v 308582.187500 101621.929688 1254.527588 +v 307858.593750 101916.812500 1033.905396 +v 307274.500000 102154.828125 813.283203 +v 306818.562500 102340.640625 585.911621 +v 306638.437500 102414.039062 466.501160 +v 306499.218750 102470.781250 347.090637 +v 306399.812500 102511.289062 226.087494 +v 306342.375000 102534.695312 105.084343 +v 306327.531250 102540.742188 26.221712 +v 306330.531250 102539.523438 -52.640915 +v 306351.343750 102531.046875 -131.503540 +v 306389.968750 102515.296875 -210.366165 +v 306477.875000 102479.476562 -324.942169 +v 312359.500000 100940.468750 1190.757080 +v 314905.625000 100466.187500 1084.277832 +v 314874.937500 100753.281250 732.888306 +v 317395.875000 100540.507812 192.846695 +v 314264.906250 100987.984375 585.739380 +v 317233.562500 100601.257812 154.127029 +v 313918.875000 101121.117188 482.730774 +v 317141.500000 100635.718750 127.022133 +v 313639.593750 101228.578125 379.722198 +v 317067.156250 100663.539062 99.917229 +v 313421.531250 101312.460938 273.562347 +v 317009.156250 100685.257812 71.983131 +v 313335.406250 101345.601562 217.809540 +v 316986.218750 100693.828125 57.312759 +v 313268.812500 101371.218750 162.056747 +v 316968.500000 100700.460938 42.642387 +v 313221.281250 101389.507812 105.560326 +v 316955.875000 100705.195312 27.776346 +v 313193.812500 101400.078125 49.063911 +v 316948.562500 100707.929688 12.910308 +v 313186.718750 101402.804688 12.242927 +v 316946.656250 100708.640625 3.221511 +v 313188.156250 101402.257812 -24.578060 +v 316947.031250 100708.500000 -6.467285 +v 313198.093750 101398.429688 -61.399048 +v 318109.375000 100475.625000 24.598467 +v 318007.468750 100485.015625 49.055756 +v 317803.625000 100503.679688 97.547646 +v 317721.375000 100534.335938 77.962082 +v 312592.281250 100848.335938 -1240.809448 +v 315019.906250 100697.507812 -763.694580 +v 317434.468750 100526.070312 -200.952820 +v 317300.562500 100576.179688 -171.172958 +v 317755.343750 100521.679688 -86.584419 +v 317698.343750 100542.921875 -71.520874 +v 317954.468750 100504.726562 -35.967148 +v 317931.437500 100513.296875 -28.456488 +v 318071.218750 100489.796875 -14.269192 +v 318062.468750 100493.054688 -10.550094 +v 307735.281250 101088.148438 -1951.646118 +v 310160.937500 100978.554688 -1635.669312 +v 311784.218750 101168.171875 -1056.929810 +v 314516.687500 100891.109375 -650.520142 +v 314094.031250 101053.726562 -537.345764 +v 317188.093750 100618.281250 -141.393112 +v 317097.750000 100652.093750 -111.867393 +v 317652.562500 100559.976562 -56.585888 +v 317617.812500 100572.921875 -41.837437 +v 317913.937500 100519.796875 -21.039637 +v 317901.843750 100524.289062 -13.735775 +v 318056.406250 100495.304688 -6.887653 +v 318054.343750 100496.062500 -5.092142 +v 302938.312500 101245.507812 -2360.437744 +v 305324.593750 101177.140625 -2192.111572 +v 306495.750000 101608.695312 -1662.425293 +v 309108.687500 101407.367188 -1393.274170 +v 308224.843750 101767.546875 -1150.878906 +v 311105.468750 101436.812500 -873.050232 +v 310560.218750 101652.632812 -690.739868 +v 313754.500000 101184.359375 -425.137207 +v 313496.875000 101283.476562 -314.330170 +v 317029.187500 100677.750000 -82.710464 +v 316981.781250 100695.500000 -53.997719 +v 317593.781250 100581.875000 -27.313667 +v 317585.687500 100584.890625 -20.193390 +v 317897.781250 100525.804688 -10.155058 +v 317894.937500 100526.867188 -6.574341 +v 318052.906250 100496.593750 -3.296631 +v 318052.281250 100496.828125 -2.060781 +v 292137.531250 101287.125000 -2272.036377 +v 290217.250000 101240.351562 -2103.302979 +v 287325.281250 101129.367188 -1748.344849 +v 284654.093750 100973.367188 -1296.224487 +v 281954.156250 100744.445312 -685.955688 +v 280074.781250 100523.625000 -137.497086 +v 279868.187500 100495.156250 -69.096825 +v 280007.968750 100571.703125 -117.120949 +v 279834.781250 100519.398438 -58.857140 +v 279951.843750 100612.078125 -96.744804 +v 279806.687500 100539.765625 -48.617455 +v 279906.750000 100644.515625 -76.542549 +v 279784.156250 100556.125000 -38.465157 +v 279872.562500 100669.132812 -56.592628 +v 279767.031250 100568.539062 -28.439663 +v 279848.906250 100686.156250 -36.946629 +v 279755.187500 100577.125000 -18.566900 +v 279840.906250 100691.890625 -27.315180 +v 279751.218750 100580.015625 -13.726779 +v 279835.343750 100695.906250 -17.683731 +v 279748.406250 100582.039062 -8.886659 +v 279832.875000 100697.671875 -11.054407 +v 279747.187500 100582.929688 -5.555204 +v 279831.562500 100698.625000 -4.425083 +v 279746.531250 100583.406250 -2.223750 +v 279831.375000 100698.757812 2.204241 +v 279746.437500 100583.476562 1.107704 +v 279832.312500 100698.085938 8.833565 +v 279746.906250 100583.140625 4.439158 +v 279835.968750 100695.460938 19.005291 +v 279748.718750 100581.812500 9.550786 +v 279842.281250 100690.921875 29.177019 +v 279751.875000 100579.523438 14.662415 +v 279851.125000 100684.554688 39.214863 +v 279756.312500 100576.312500 19.706764 +v 279862.562500 100676.328125 49.252708 +v 279762.031250 100572.164062 24.751112 +v 279891.500000 100655.500000 68.365944 +v 279776.500000 100561.664062 34.356140 +v 279928.593750 100628.812500 86.911812 +v 279795.062500 100548.203125 43.676056 +v 279974.531250 100595.757812 105.457687 +v 318088.625000 100483.335938 19.659599 +v 318076.843750 100487.718750 16.202248 +v 318067.312500 100491.250000 12.744894 +v 318059.906250 100494.007812 9.181773 +v 318056.968750 100495.093750 7.310501 +v 318054.687500 100495.937500 5.439229 +v 318053.093750 100496.539062 3.542999 +v 318051.937500 100496.953125 -0.824931 +v 318082.781250 100485.500000 -18.035330 +v 318097.187500 100480.156250 -21.833885 +v 318114.312500 100473.789062 -25.632441 +v 317966.062500 100500.414062 39.206364 +v 317942.593750 100509.148438 32.311504 +v 317923.625000 100516.195312 25.416641 +v 317908.843750 100521.695312 18.310848 +v 317903.000000 100523.867188 14.579044 +v 317898.468750 100525.546875 10.847240 +v 317895.250000 100526.750000 7.065662 +v 317893.375000 100527.445312 3.284085 +v 311379.875000 101328.203125 951.677551 +v 310824.218750 101548.140625 784.314758 +v 310375.687500 101725.671875 616.952026 +v 310025.531250 101864.257812 444.469238 +v 309887.218750 101919.007812 353.885101 +v 309780.312500 101961.328125 263.300995 +v 309703.968750 101991.539062 171.508682 +v 309659.875000 102008.992188 79.716385 +v 309648.468750 102013.507812 19.891642 +v 309650.750000 102012.601562 -39.933098 +v 309666.750000 102006.273438 -99.757835 +v 309696.406250 101994.531250 -159.582581 +v 300750.218750 102224.117188 1810.411377 +v 299747.343750 102672.640625 1492.031006 +v 298937.843750 103034.679688 1173.650635 +v 298305.906250 103317.304688 845.530273 +v 298056.281250 103428.945312 673.208740 +v 297863.312500 103515.250000 500.887207 +v 297725.562500 103576.859375 326.267303 +v 297645.968750 103612.460938 151.647415 +v 297625.375000 103621.664062 37.840607 +v 297629.531250 103619.812500 -75.966209 +v 297658.375000 103606.906250 -189.773026 +v 297711.937500 103582.960938 -303.579834 +v 297833.750000 103528.468750 -468.924683 +v 298007.750000 103450.656250 -634.269531 +v 298524.312500 103219.632812 -971.536011 +v 299270.906250 102885.718750 -1314.019897 +v 298338.968750 102331.851562 1886.770874 +v 297309.250000 102807.859375 1554.961792 +v 296478.062500 103192.078125 1223.152832 +v 295829.187500 103492.023438 881.192993 +v 295572.875000 103610.507812 701.603333 +v 295374.718750 103702.101562 522.013611 +v 295233.250000 103767.492188 340.028625 +v 295151.531250 103805.273438 158.043594 +v 295130.406250 103815.039062 39.436646 +v 295134.656250 103813.070312 -79.170311 +v 295164.281250 103799.382812 -197.777267 +v 295219.281250 103773.960938 -316.384216 +v 295344.375000 103716.140625 -488.702972 +v 295523.000000 103633.554688 -661.021729 +v 296053.406250 103388.367188 -1012.513428 +v 296820.031250 103033.992188 -1369.442627 +v 297830.468750 102566.906250 -1730.886353 +v 290191.375000 102317.992188 1742.609253 +v 289299.375000 102790.460938 1436.152588 +v 288579.406250 103171.835938 1129.695923 +v 288017.343750 103469.554688 813.864136 +v 287795.312500 103587.156250 647.996277 +v 287623.687500 103678.070312 482.128387 +v 287501.125000 103742.976562 314.048218 +v 287430.343750 103780.476562 145.968048 +v 287412.031250 103790.164062 36.423431 +v 287415.718750 103788.218750 -73.121185 +v 287441.375000 103774.625000 -182.665787 +v 287489.031250 103749.398438 -292.210419 +v 287597.375000 103692.000000 -451.362885 +v 287752.125000 103610.031250 -610.515381 +v 288211.562500 103366.664062 -935.150818 +v 288875.625000 103014.921875 -1264.808350 +v 289750.906250 102551.304688 -1598.635376 +v 290840.406250 101974.203125 -1935.335938 +v 288447.656250 102212.476562 1613.193848 +v 287636.625000 102658.023438 1329.496338 +v 286981.968750 103017.664062 1045.798828 +v 286470.906250 103298.414062 753.422302 +v 286269.031250 103409.320312 599.872620 +v 286112.968750 103495.054688 446.322998 +v 286001.531250 103556.257812 290.725342 +v 285937.156250 103591.625000 135.127686 +v 285920.531250 103600.757812 33.718433 +v 285923.875000 103598.921875 -67.690819 +v 285947.218750 103586.109375 -169.100067 +v 285990.531250 103562.312500 -270.509308 +v 286089.062500 103508.187500 -417.842285 +v 286229.750000 103430.890625 -565.175293 +v 286647.500000 103201.390625 -865.701599 +v 287251.312500 102869.695312 -1170.876953 +v 288047.156250 102432.492188 -1479.912354 +v 289037.812500 101888.273438 -1791.607666 +v 285898.781250 101962.132812 1340.947632 +v 285244.968750 102343.804688 1105.127563 +v 284717.250000 102651.890625 869.307434 +v 284305.250000 102892.398438 626.273071 +v 284142.531250 102987.398438 498.636780 +v 284016.718750 103060.843750 371.000519 +v 283926.906250 103113.273438 241.661880 +v 283875.000000 103143.570312 112.323235 +v 283861.593750 103151.398438 28.028034 +v 283864.312500 103149.820312 -56.267162 +v 283883.093750 103138.843750 -140.562363 +v 283918.031250 103118.460938 -224.857559 +v 283997.437500 103072.093750 -347.326294 +v 284110.875000 103005.882812 -469.795013 +v 284447.625000 102809.281250 -719.603821 +v 284934.375000 102525.132812 -973.277161 +v 285575.937500 102150.609375 -1230.158936 +v 286374.531250 101684.406250 -1489.251953 +v 283631.500000 101610.250000 994.179810 +v 283162.812500 101902.148438 819.342529 +v 282784.531250 102137.757812 644.505310 +v 282489.187500 102321.687500 464.319397 +v 282372.531250 102394.343750 369.689758 +v 282282.343750 102450.515625 275.060120 +v 282217.968750 102490.617188 179.168335 +v 282180.781250 102513.781250 83.276543 +v 282171.156250 102519.765625 20.780010 +v 282173.093750 102518.562500 -41.716526 +v 282186.562500 102510.164062 -104.213058 +v 282211.593750 102494.578125 -166.709595 +v 282268.531250 102459.117188 -257.508026 +v 282349.843750 102408.484375 -348.306458 +v 282591.250000 102258.125000 -533.514893 +v 282940.187500 102040.820312 -721.588562 +v 283400.062500 101754.390625 -912.040955 +v 283972.531250 101397.851562 -1104.132690 +v 281435.250000 101093.851562 526.115112 +v 281197.437500 101253.992188 433.592102 +v 281005.500000 101383.257812 341.069092 +v 280855.625000 101484.164062 245.715576 +v 280796.437500 101524.023438 195.638031 +v 280750.687500 101554.843750 145.560471 +v 280718.000000 101576.835938 94.815010 +v 280699.125000 101589.546875 44.069542 +v 280694.250000 101592.835938 10.996680 +v 280695.250000 101592.171875 -22.076181 +v 280702.062500 101587.570312 -55.149044 +v 280714.781250 101579.015625 -88.221909 +v 280743.656250 101559.562500 -136.271988 +v 280784.937500 101531.781250 -184.322083 +v 280907.406250 101449.289062 -282.333496 +v 281084.468750 101330.070312 -381.861176 +v 281317.812500 101172.929688 -482.647644 +v 281608.312500 100977.320312 -584.301697 +v 303950.968750 101772.156250 -1867.255371 +v 317823.187500 100496.398438 -101.647964 +v 318017.312500 100481.359375 -51.117767 +v 317983.156250 100494.062500 -43.542458 +v 317674.718750 100551.718750 64.251610 +v 317637.062500 100565.750000 50.541134 +v 317607.656250 100576.710938 36.411228 +v 317596.062500 100581.039062 28.990513 +v 317587.062500 100584.382812 21.569799 +v 317580.656250 100586.773438 14.050110 +v 317576.968750 100588.148438 6.530421 +v 317576.000000 100588.507812 1.629537 +v 317893.656250 100527.335938 -4.109735 +v 317580.031250 100587.007812 -13.073115 +v 316965.781250 100701.476562 -39.921299 +v 313318.656250 101352.046875 -205.211166 +v 310146.531250 101816.367188 -510.706573 +v 307514.812500 102056.898438 -910.552368 +v 305454.593750 102045.921875 -1373.204468 +v -310022.468750 -51258.363281 15386.162109 +v -309991.156250 -49348.593750 15266.382812 +v -309921.062500 -47452.351562 14918.156250 +v -309797.250000 -45423.664062 14278.978516 +v -309618.531250 -43519.027344 13399.189453 +v -309361.093750 -41736.003906 12283.536133 +v -309055.437500 -40185.343750 10970.416992 +v -308988.093750 -39884.417969 10662.503906 +v -308777.187500 -39074.085938 9735.503906 +v -308533.625000 -38333.183594 8740.888672 +v -308145.500000 -37375.398438 7158.858398 +v -307962.281250 -36968.335938 6337.940918 +v -307834.250000 -36684.488281 5683.353027 +v -307358.031250 -35829.316406 3147.552002 +v -307094.750000 -35507.511719 1841.442627 +v -306812.843750 -35251.351562 522.309814 +v -307446.375000 -35701.730469 1610.450684 +v -306915.843750 -35316.925781 456.790863 +v -307750.968750 -35869.960938 1379.458740 +v -307005.062500 -35373.726562 391.271942 +v -308008.468750 -36012.191406 1148.466797 +v -307080.468750 -35421.750000 325.752991 +v -308184.187500 -36109.242188 959.454285 +v -307131.937500 -35454.515625 272.141174 +v -308347.125000 -36199.238281 742.343018 +v -307179.687500 -35484.902344 210.559402 +v -308468.468750 -36266.273438 525.231750 +v -307215.218750 -35507.539062 148.977600 +v -308548.281250 -36310.343750 308.120544 +v -307238.593750 -35522.417969 87.395813 +v -308586.468750 -36331.453125 91.009285 +v -307249.781250 -35529.542969 25.814024 +v -308583.125000 -36329.597656 -126.101959 +v -307248.812500 -35528.917969 -35.767765 +v -308538.187500 -36304.777344 -343.213196 +v -307235.625000 -35520.539062 -97.349556 +v -308451.687500 -36256.996094 -560.324463 +v -307210.312500 -35504.402344 -158.931351 +v -308323.593750 -36186.250000 -777.435669 +v -307172.781250 -35480.519531 -220.513138 +v -308177.875000 -36105.765625 -966.864014 +v -307130.093750 -35453.343750 -274.242889 +v -308000.531250 -36007.800781 -1156.292358 +v -307078.156250 -35420.265625 -327.972656 +v -307791.500000 -35892.355469 -1345.720703 +v -307016.937500 -35381.289062 -381.702423 +v -307550.843750 -35759.429688 -1535.149048 +v -306946.437500 -35336.406250 -435.432190 +v -307293.906250 -35617.511719 -1714.439575 +v -306871.187500 -35288.492188 -486.286469 +v -307008.625000 -35459.937500 -1893.730225 +v -306787.625000 -35235.289062 -537.140747 +v -306742.156250 -35199.843750 -268.607300 +v -306719.187500 -35183.203125 -134.308258 +v -306740.281250 -35197.183594 -121.592514 +v -306725.562500 -35187.421875 130.599899 +v -306754.843750 -35208.148438 261.190796 +v -307215.031250 -35761.898438 -3236.926514 +v -307688.687500 -35985.210938 -2930.467773 +v -308115.281250 -36186.328125 -2624.008789 +v -308514.843750 -36374.707031 -2300.221680 +v -308861.875000 -36538.316406 -1976.434326 +v -309156.343750 -36677.148438 -1652.647217 +v -309398.281250 -36791.207031 -1328.859985 +v -309610.937500 -36891.468750 -957.754761 +v -309754.562500 -36959.183594 -586.649536 +v -309829.187500 -36994.359375 -215.544312 +v -309834.750000 -36996.988281 155.560898 +v -309771.312500 -36967.074219 526.666138 +v -309638.843750 -36904.617188 897.771362 +v -309437.343750 -36809.617188 1268.876587 +v -309166.812500 -36682.074219 1639.981812 +v -308875.093750 -36544.542969 1963.058228 +v -308447.531250 -36342.968750 2357.889404 +v -307941.843750 -36104.562500 2752.720703 +v -307588.375000 -36605.734375 -5844.731445 +v -308402.812500 -36866.601562 -5291.375977 +v -309136.281250 -37101.542969 -4738.020996 +v -309823.312500 -37321.601562 -4153.377441 +v -310420.000000 -37512.722656 -3568.733398 +v -310926.343750 -37674.906250 -2984.089600 +v -311342.312500 -37808.148438 -2399.445557 +v -311707.968750 -37925.269531 -1729.362427 +v -311954.937500 -38004.375000 -1059.279175 +v -312083.218750 -38045.460938 -389.195923 +v -312092.812500 -38048.535156 280.887329 +v -311983.718750 -38013.589844 950.970581 +v -311755.937500 -37940.628906 1621.053833 +v -311409.468750 -37829.652344 2291.137207 +v -310944.312500 -37680.660156 2961.220459 +v -310442.718750 -37519.996094 3544.580811 +v -309707.562500 -37284.527344 4257.504883 +v -308838.093750 -37006.023438 4970.428711 +v -307688.750000 -36890.792969 -6517.906250 +v -308594.781250 -37147.644531 -5900.817871 +v -309410.750000 -37378.968750 -5283.729004 +v -310175.062500 -37595.640625 -4631.748047 +v -310838.875000 -37783.820312 -3979.767090 +v -311402.156250 -37943.503906 -3327.786133 +v -311864.906250 -38074.695312 -2675.805176 +v -312271.687500 -38190.011719 -1928.544067 +v -312546.437500 -38267.898438 -1181.283081 +v -312689.156250 -38308.355469 -434.022095 +v -312699.812500 -38311.382812 313.238922 +v -312578.437500 -38276.976562 1060.499878 +v -312325.062500 -38205.136719 1807.760986 +v -311939.593750 -38095.871094 2555.021973 +v -311422.125000 -37949.171875 3302.282959 +v -310864.125000 -37790.980469 3952.832764 +v -310046.281250 -37559.136719 4747.868652 +v -309079.000000 -37284.921875 5542.904785 +v -307832.375000 -37299.777344 -7362.133789 +v -308869.531250 -37550.261719 -6665.117188 +v -309803.625000 -37775.855469 -5968.100586 +v -310678.531250 -37987.160156 -5231.672363 +v -311438.375000 -38170.675781 -4495.243652 +v -312083.187500 -38326.402344 -3758.815430 +v -312612.937500 -38454.339844 -3022.386963 +v -313078.562500 -38566.800781 -2178.337646 +v -313393.062500 -38642.757812 -1334.287964 +v -313556.437500 -38682.210938 -490.238525 +v -313568.656250 -38685.160156 353.810974 +v -313429.718750 -38651.609375 1197.860474 +v -313139.656250 -38581.550781 2041.910034 +v -312698.437500 -38474.992188 2885.959473 +v -312106.062500 -38331.929688 3730.009033 +v -311467.312500 -38177.656250 4464.820801 +v -310531.125000 -37951.558594 5362.833496 +v -309423.843750 -37684.136719 6260.846191 +v -308136.656250 -38264.296875 -8989.085938 +v -309451.531250 -38492.472656 -8138.036133 +v -310635.750000 -38697.972656 -7286.986328 +v -311744.937500 -38890.460938 -6387.815430 +v -312708.250000 -39057.632812 -5488.644043 +v -313525.718750 -39199.488281 -4589.473145 +v -314197.312500 -39316.035156 -3690.302002 +v -314787.625000 -39418.480469 -2659.726562 +v -315186.343750 -39487.671875 -1629.151245 +v -315393.468750 -39523.613281 -598.575928 +v -315408.937500 -39526.300781 431.999390 +v -315232.812500 -39495.734375 1462.574707 +v -314865.062500 -39431.917969 2493.150146 +v -314305.718750 -39334.847656 3523.725342 +v -313554.718750 -39204.523438 4554.300781 +v -312744.906250 -39063.992188 5451.498047 +v -311558.062500 -38858.031250 6547.961914 +v -310154.281250 -38614.425781 7644.425293 +v -308327.625000 -39011.902344 -10011.943359 +v -309816.781250 -39217.878906 -9064.053711 +v -311157.937500 -39403.386719 -8116.164062 +v -312414.156250 -39577.140625 -7114.677246 +v -313505.156250 -39728.046875 -6113.190430 +v -314430.968750 -39856.101562 -5111.703613 +v -315191.562500 -39961.308594 -4110.216797 +v -315860.156250 -40053.785156 -2962.373779 +v -316311.718750 -40116.246094 -1814.530396 +v -316546.281250 -40148.687500 -666.687195 +v -316563.812500 -40151.113281 481.156067 +v -316364.343750 -40123.523438 1628.999390 +v -315947.843750 -40065.914062 2776.842529 +v -315314.343750 -39978.289062 3924.685791 +v -314463.812500 -39860.648438 5072.529297 +v -313546.687500 -39733.789062 6071.817383 +v -312202.500000 -39547.867188 7293.046387 +v -310612.687500 -39327.964844 8514.275391 +v -308492.968750 -39831.078125 -10965.264648 +v -308545.750000 -40135.417969 -11281.920898 +v -308785.375000 -41695.765625 -12632.326172 +v -308987.187500 -43480.976562 -13779.658203 +v -309127.312500 -45390.171875 -14684.428711 +v -309224.375000 -47423.792969 -15341.755859 +v -309279.343750 -49323.246094 -15699.871094 +v -309303.875000 -51238.699219 -15823.050781 +v -309300.000000 -53158.363281 -15704.413086 +v -309262.625000 -55066.492188 -15350.593750 +v -309181.406250 -57070.636719 -14709.798828 +v -309057.937500 -58940.707031 -13829.297852 +v -308861.437500 -60712.203125 -12712.633789 +v -308621.687500 -62277.589844 -11396.221680 +v -308521.687500 -62895.101562 -10746.936523 +v -308391.343750 -63572.992188 -9940.843750 +v -308239.468750 -64205.976562 -9086.796875 +v -307899.281250 -65304.050781 -7264.546875 +v -307748.031250 -65721.015625 -6390.694824 +v -307664.656250 -65947.546875 -5845.201660 +v -308708.187500 -65631.382812 -5785.650391 +v -308548.718750 -65853.109375 -5291.802246 +v -309572.906250 -65550.648438 -5180.605469 +v -309344.937500 -65768.054688 -4738.402344 +v -310382.875000 -65475.035156 -4541.349609 +v -310090.687500 -65688.390625 -4153.711426 +v -311086.312500 -65409.363281 -3902.093262 +v -310738.406250 -65619.203125 -3569.020752 +v -311683.250000 -65353.636719 -3262.837158 +v -311288.031250 -65560.492188 -2984.329834 +v -312173.656250 -65307.851562 -2623.581055 +v -311739.562500 -65512.257812 -2399.638916 +v -312604.718750 -65267.609375 -1890.904419 +v -312136.468750 -65469.859375 -1729.501709 +v -312895.875000 -65240.425781 -1158.227783 +v -312404.562500 -65441.222656 -1059.364502 +v -313047.125000 -65226.308594 -425.551208 +v -312543.812500 -65426.347656 -389.227264 +v -313058.437500 -65225.253906 307.125366 +v -312554.218750 -65425.234375 280.909943 +v -312929.812500 -65237.261719 1039.802002 +v -312435.812500 -65437.886719 951.047180 +v -312661.281250 -65262.328125 1772.478516 +v -312188.531250 -65464.296875 1621.184326 +v -312252.812500 -65300.460938 2505.155029 +v -311812.437500 -65504.472656 2291.321533 +v -311704.437500 -65351.660156 3237.831787 +v -311307.531250 -65558.406250 2961.458740 +v -311113.093750 -65406.863281 3875.684570 +v -310763.031250 -65616.570312 3544.866211 +v -310246.406250 -65487.773438 4655.203613 +v -309965.062500 -65701.812500 4257.847656 +v -309221.343750 -65583.468750 5434.723145 +v -309021.218750 -65802.632812 4970.829102 +v -308037.906250 -65693.953125 6214.242188 +v -307931.562500 -65919.031250 5683.810547 +v -307749.562500 -66268.992188 4734.341309 +v -307263.187500 -66893.312500 2395.181641 +v -306990.343750 -67089.031250 1201.092285 +v -306845.968750 -67156.703125 600.983826 +v -306771.718750 -67182.859375 300.546600 +v -306838.437500 -67167.195312 262.845825 +v -306767.593750 -67186.031250 131.428894 +v -306796.625000 -67179.125000 112.577637 +v -307521.968750 -66299.210938 -4868.772461 +v -308275.812500 -66199.109375 -4407.816895 +v -308954.750000 -66108.960938 -3946.861572 +v -309590.656250 -66024.515625 -3459.842285 +v -310142.937500 -65951.171875 -2972.822754 +v -310611.593750 -65888.945312 -2485.803467 +v -310996.625000 -65837.812500 -1998.783936 +v -311335.093750 -65792.875000 -1440.591797 +v -311563.687500 -65762.515625 -882.399719 +v -311682.406250 -65746.750000 -324.207611 +v -311691.281250 -65745.570312 233.984497 +v -311590.312500 -65758.976562 792.176575 +v -311379.468750 -65786.976562 1350.368652 +v -311058.781250 -65829.562500 1908.560791 +v -310628.250000 -65886.734375 2466.752930 +v -310163.968750 -65948.382812 2952.703125 +v -309483.500000 -66038.742188 3546.582520 +v -308678.718750 -66145.609375 4140.461914 +v -307140.687500 -66916.593750 -2463.192627 +v -307546.500000 -66839.484375 -2229.987793 +v -307911.968750 -66770.039062 -1996.782837 +v -308254.281250 -66704.984375 -1750.391602 +v -308551.593750 -66648.492188 -1504.000366 +v -308803.906250 -66600.554688 -1257.609131 +v -309011.156250 -66561.164062 -1011.217957 +v -309193.375000 -66526.546875 -728.819275 +v -309316.406250 -66503.164062 -446.420654 +v -309380.343750 -66491.015625 -164.022003 +v -309385.125000 -66490.109375 118.376640 +v -309330.750000 -66500.437500 400.775269 +v -309217.250000 -66522.007812 683.173950 +v -309044.625000 -66554.812500 965.572571 +v -308812.843750 -66598.851562 1247.971191 +v -308562.906250 -66646.343750 1493.821533 +v -308196.625000 -66715.945312 1794.274902 +v -307763.375000 -66798.273438 2094.728271 +v -306926.781250 -67102.773438 -1235.197144 +v -307137.343750 -67057.250000 -1118.253784 +v -307327.000000 -67016.242188 -1001.310425 +v -307504.656250 -66977.843750 -877.754578 +v -307658.937500 -66944.492188 -754.198792 +v -307789.843750 -66916.187500 -630.643005 +v -307897.406250 -66892.929688 -507.087219 +v -307991.937500 -66872.492188 -365.475067 +v -308055.781250 -66858.687500 -223.862915 +v -308088.968750 -66851.515625 -82.250778 +v -308091.437500 -66850.984375 59.361366 +v -308063.250000 -66857.078125 200.973511 +v -308004.343750 -66869.812500 342.585663 +v -307914.750000 -66889.179688 484.197815 +v -307794.500000 -66915.179688 625.809937 +v -307664.781250 -66943.218750 749.094482 +v -307474.718750 -66984.312500 899.760437 +v -307249.906250 -67032.914062 1050.426392 +v -306725.843750 -67195.953125 -154.547333 +v -306755.375000 -67186.695312 -309.080597 +v -306813.593750 -67164.109375 -618.048706 +v -306920.843750 -67139.578125 -559.534363 +v -308230.843750 -65278.429688 7063.966309 +v -308664.750000 -64183.210938 8835.902344 +v -308858.468750 -63553.722656 9666.368164 +v -309024.750000 -62882.324219 10450.204102 +v -309152.281250 -62272.019531 11081.561523 +v -309458.093750 -60712.394531 12361.626953 +v -309708.750000 -58941.593750 13447.458008 +v -309866.250000 -57079.726562 14303.647461 +v -309969.843750 -55080.558594 14926.750000 +v -310017.531250 -53173.503906 15270.799805 +v -306751.562500 -35204.652344 114.217346 +v -306774.125000 -35219.578125 97.834793 +v -306793.156250 -35232.195312 81.452248 +v -306806.156250 -35240.804688 68.046989 +v -306818.218750 -35248.789062 52.648895 +v -306827.187500 -35254.738281 37.250801 +v -306833.093750 -35258.644531 21.852709 +v -306835.937500 -35260.519531 6.454615 +v -306835.687500 -35260.355469 -8.943479 +v -306832.343750 -35258.152344 -24.341572 +v -306825.937500 -35253.914062 -39.739666 +v -306816.468750 -35247.636719 -55.137760 +v -306805.687500 -35240.496094 -68.572510 +v -306792.562500 -35231.804688 -82.007256 +v -306777.125000 -35221.566406 -95.442009 +v -306759.312500 -35209.773438 -108.876755 +v -306753.062500 -67189.484375 -139.915436 +v -306777.531250 -67183.664062 -125.283524 +v -306800.468750 -67178.203125 -109.824280 +v -306820.406250 -67173.468750 -94.365028 +v -306837.312500 -67169.445312 -78.905777 +v -306851.187500 -67166.140625 -63.446533 +v -306863.406250 -67163.242188 -45.728081 +v -306871.656250 -67161.281250 -28.009632 +v -306875.937500 -67160.257812 -10.291182 +v -306876.250000 -67160.187500 7.427269 +v -306872.625000 -67161.054688 25.145720 +v -306865.000000 -67162.859375 42.864170 +v -306853.437500 -67165.609375 60.582619 +v -306837.906250 -67169.304688 78.301071 +v -306821.156250 -67173.289062 93.726379 +v -306734.062500 -67194.000000 150.280151 +v -306806.718750 -35242.046875 228.426834 +v -306851.625000 -35271.406250 195.662872 +v -306889.593750 -35296.230469 162.898895 +v -306915.500000 -35313.167969 136.089294 +v -306939.531250 -35328.875000 105.294174 +v -306957.437500 -35340.574219 74.499046 +v -306969.187500 -35348.265625 43.703915 +v -306974.843750 -35351.949219 12.908787 +v -306974.343750 -35351.625000 -17.886343 +v -306967.718750 -35347.296875 -48.681473 +v -306954.937500 -35338.957031 -79.476601 +v -306936.062500 -35326.609375 -110.271729 +v -306914.562500 -35312.562500 -137.140305 +v -306888.406250 -35295.464844 -164.008881 +v -306857.593750 -35275.316406 -190.877457 +v -306822.125000 -35252.113281 -217.746033 +v -306784.218750 -35227.347656 -243.176666 +v -311009.593750 -40102.187500 9324.992188 +v -312760.531250 -40290.812500 7987.479004 +v -314240.937500 -40450.292969 6649.966797 +v -315251.031250 -40559.109375 5555.527832 +v -316187.750000 -40660.019531 4298.388672 +v -316885.468750 -40735.183594 3041.249268 +v -317344.156250 -40784.597656 1784.110229 +v -317563.843750 -40808.261719 526.971008 +v -317544.531250 -40806.183594 -730.168091 +v -317286.218750 -40778.355469 -1987.307251 +v -316788.875000 -40724.777344 -3244.446533 +v -316052.531250 -40645.453125 -4501.585449 +v -315214.843750 -40555.210938 -5598.432129 +v -314195.218750 -40445.367188 -6695.279297 +v -312993.625000 -40315.925781 -7792.125977 +v -311610.125000 -40166.882812 -8888.972656 +v -310133.031250 -40007.757812 -9927.119141 +v -311136.312500 -40389.164062 9594.279297 +v -312938.718750 -40565.710938 8218.141602 +v -314462.593750 -40714.972656 6842.004883 +v -315502.375000 -40816.820312 5715.960449 +v -316466.625000 -40911.265625 4422.517578 +v -317184.812500 -40981.613281 3129.074707 +v -317657.000000 -41027.863281 1835.631836 +v -317883.156250 -41050.015625 542.188904 +v -317863.250000 -41048.066406 -751.253967 +v -317597.343750 -41022.023438 -2044.696777 +v -317085.406250 -40971.878906 -3338.139648 +v -316327.437500 -40897.632812 -4631.582520 +v -315465.125000 -40813.171875 -5760.104004 +v -314415.531250 -40710.363281 -6888.625977 +v -313178.656250 -40589.210938 -8017.147461 +v -311754.500000 -40449.714844 -9145.668945 +v -310234.000000 -40300.785156 -10213.794922 +v -311711.531250 -41900.285156 10742.679688 +v -313747.406250 -42042.582031 9201.824219 +v -315468.718750 -42162.890625 7660.968262 +v -316643.187500 -42244.980469 6400.140625 +v -317732.343750 -42321.105469 4951.876953 +v -318543.593750 -42377.804688 3503.613770 +v -319076.937500 -42415.082031 2055.350342 +v -319332.375000 -42432.937500 607.086975 +v -319309.906250 -42431.367188 -841.176331 +v -319009.562500 -42410.375000 -2289.439697 +v -318431.281250 -42369.957031 -3737.703125 +v -317575.125000 -42310.117188 -5185.966309 +v -316601.125000 -42242.039062 -6449.567871 +v -315415.562500 -42159.175781 -7713.169434 +v -314018.437500 -42061.523438 -8976.771484 +v -312409.781250 -41949.089844 -10240.373047 +v -310692.343750 -41829.050781 -11436.349609 +v -312196.000000 -43674.371094 11718.385742 +v -314428.562500 -43808.925781 10037.581055 +v -316316.125000 -43922.687500 8356.776367 +v -317604.062500 -44000.312500 6981.434082 +v -318798.406250 -44072.292969 5401.631836 +v -319688.000000 -44125.910156 3821.829834 +v -320272.875000 -44161.160156 2242.027832 +v -320553.000000 -44178.042969 662.225769 +v -320528.375000 -44176.558594 -917.576294 +v -320199.000000 -44156.707031 -2497.378418 +v -319564.875000 -44118.488281 -4077.180420 +v -318626.000000 -44061.902344 -5656.982422 +v -317557.906250 -43997.531250 -7035.350586 +v -316257.812500 -43919.175781 -8413.718750 +v -314725.750000 -43826.835938 -9792.087891 +v -312961.687500 -43720.519531 -11170.456055 +v -311078.343750 -43607.007812 -12475.057617 +v -312532.406250 -45560.402344 12487.812500 +v -314901.500000 -45678.843750 10696.646484 +v -316904.531250 -45778.980469 8905.480469 +v -318271.218750 -45847.304688 7439.833496 +v -319538.625000 -45910.667969 5756.302246 +v -320482.625000 -45957.859375 4072.770508 +v -321103.281250 -45988.886719 2389.239014 +v -321400.531250 -46003.750000 705.707397 +v -321374.375000 -46002.441406 -977.824158 +v -321024.875000 -45984.968750 -2661.355713 +v -320351.968750 -45951.328125 -4344.887207 +v -319355.687500 -45901.519531 -6028.418945 +v -318222.250000 -45844.855469 -7497.290527 +v -316842.656250 -45775.886719 -8966.162109 +v -315216.875000 -45694.609375 -10435.034180 +v -313344.937500 -45601.023438 -11903.906250 +v -311346.406250 -45501.113281 -13294.166992 +v -312765.375000 -47568.933594 13046.811523 +v -315229.031250 -47669.910156 11175.466797 +v -317312.000000 -47755.289062 9304.122070 +v -318733.250000 -47813.542969 7772.867188 +v -320051.250000 -47867.562500 6013.974609 +v -321032.937500 -47907.800781 4255.082520 +v -321678.343750 -47934.253906 2496.189941 +v -321987.468750 -47946.925781 737.297363 +v -321960.281250 -47945.812500 -1021.595093 +v -321596.812500 -47930.914062 -2780.487549 +v -320897.031250 -47902.230469 -4539.379883 +v -319861.000000 -47859.765625 -6298.272461 +v -318682.312500 -47811.453125 -7832.896484 +v -317247.656250 -47752.652344 -9367.520508 +v -315557.000000 -47683.355469 -10902.143555 +v -313610.312500 -47603.566406 -12436.767578 +v -311532.000000 -47518.378906 -13889.261719 +v -312897.312500 -49452.085938 13351.356445 +v -315414.500000 -49541.730469 11436.330078 +v -317542.750000 -49617.519531 9521.303711 +v -318994.906250 -49669.230469 7954.305176 +v -320341.562500 -49717.187500 6154.355957 +v -321344.593750 -49752.906250 4354.406738 +v -322004.031250 -49776.390625 2554.457031 +v -322319.875000 -49787.640625 754.507751 +v -322292.093750 -49786.648438 -1045.441650 +v -321920.718750 -49773.425781 -2845.391113 +v -321205.750000 -49747.964844 -4645.340332 +v -320147.156250 -49710.265625 -6445.290039 +v -318942.875000 -49667.378906 -8015.735352 +v -317477.031250 -49615.179688 -9586.181641 +v -315749.593750 -49553.664062 -11156.626953 +v -313760.625000 -49482.832031 -12727.072266 +v -311637.125000 -49407.210938 -14213.471680 +v -312956.250000 -51338.644531 13456.110352 +v -315497.375000 -51408.183594 11526.058594 +v -317645.843750 -51466.976562 9596.006836 +v -319111.781250 -51507.093750 8016.714355 +v -320471.250000 -51544.292969 6202.642578 +v -321483.812500 -51572.003906 4388.570801 +v -322149.531250 -51590.218750 2574.499268 +v -322468.375000 -51598.945312 760.427551 +v -322440.312500 -51598.175781 -1053.644165 +v -322065.437500 -51587.917969 -2867.715820 +v -321343.656250 -51568.167969 -4681.787598 +v -320275.000000 -51538.921875 -6495.859375 +v -319059.281250 -51505.656250 -8078.626465 +v -317579.500000 -51465.160156 -9661.393555 +v -315835.656250 -51417.441406 -11244.161133 +v -313827.781250 -51362.496094 -12826.928711 +v -311684.093750 -51303.832031 -14324.990234 +v -312946.937500 -53235.316406 13355.218750 +v -315484.281250 -53288.855469 11439.638672 +v -317629.593750 -53334.121094 9524.057617 +v -319093.343750 -53365.007812 7956.606445 +v -320450.781250 -53393.648438 6156.136230 +v -321461.843750 -53414.984375 4355.666016 +v -322126.562500 -53429.011719 2555.196045 +v -322444.937500 -53435.726562 754.726013 +v -322416.937500 -53435.136719 -1045.744141 +v -322042.593750 -53427.238281 -2846.214111 +v -321321.906250 -53412.031250 -4646.684082 +v -320254.843750 -53389.515625 -6447.154297 +v -319040.906250 -53363.902344 -8018.054199 +v -317563.312500 -53332.722656 -9588.954102 +v -315822.093750 -53295.984375 -11159.854492 +v -313817.156250 -53253.679688 -12730.753906 +v -311676.687500 -53208.511719 -14217.583008 +v -312857.156250 -55138.000000 13054.327148 +v -315358.062500 -55187.750000 11181.904297 +v -317472.562500 -55229.816406 9309.481445 +v -318915.312500 -55258.515625 7777.344727 +v -320253.218750 -55285.132812 6017.438965 +v -321249.781250 -55304.957031 4257.533203 +v -321904.968750 -55317.992188 2497.627686 +v -322218.750000 -55324.234375 737.722046 +v -322191.156250 -55323.683594 -1022.183594 +v -321822.187500 -55316.343750 -2782.089111 +v -321111.843750 -55302.210938 -4541.994629 +v -320060.093750 -55281.289062 -6301.900391 +v -318863.625000 -55257.488281 -7837.408203 +v -317407.250000 -55228.515625 -9372.916016 +v -315691.000000 -55194.375000 -10908.423828 +v -313714.906250 -55155.062500 -12443.931641 +v -311605.156250 -55113.093750 -13897.262695 +v -312662.250000 -57116.832031 12509.387695 +v -315084.062500 -57148.972656 10715.126953 +v -317131.656250 -57176.148438 8920.867188 +v -318528.750000 -57194.691406 7452.687500 +v -319824.343750 -57211.886719 5766.247070 +v -320789.375000 -57224.691406 4079.806885 +v -321423.812500 -57233.113281 2393.366699 +v -321727.687500 -57237.144531 706.926636 +v -321700.968750 -57236.792969 -979.513550 +v -321343.687500 -57232.050781 -2665.953613 +v -320655.812500 -57222.921875 -4352.394043 +v -319637.343750 -57209.402344 -6038.833984 +v -318478.687500 -57194.027344 -7510.243652 +v -317068.406250 -57175.308594 -8981.653320 +v -315406.468750 -57153.253906 -10453.062500 +v -313492.843750 -57127.855469 -11924.471680 +v -311449.843750 -57100.742188 -13317.135742 +v -312365.843750 -58945.222656 11760.598633 +v -314667.312500 -58948.363281 10073.739258 +v -316613.156250 -58951.015625 8386.879883 +v -317940.843750 -58952.828125 7006.583496 +v -319172.093750 -58954.507812 5421.090332 +v -320089.156250 -58955.761719 3835.597412 +v -320692.093750 -58956.582031 2250.104248 +v -320980.843750 -58956.976562 664.611328 +v -320955.468750 -58956.941406 -920.881714 +v -320615.906250 -58956.480469 -2506.374756 +v -319962.218750 -58955.585938 -4091.867676 +v -318994.375000 -58954.265625 -5677.360840 +v -317893.281250 -58952.765625 -7060.694336 +v -316553.062500 -58950.933594 -8444.028320 +v -314973.687500 -58948.781250 -9827.361328 +v -313155.156250 -58946.296875 -11210.695312 +v -311213.656250 -58943.648438 -12519.996094 +v -311894.093750 -60713.164062 10810.974609 +v -314004.093750 -60713.832031 9260.323242 +v -315788.062500 -60714.398438 7709.671387 +v -317005.281250 -60714.785156 6440.828125 +v -318134.062500 -60715.144531 4983.357910 +v -318974.843750 -60715.410156 3525.887451 +v -319527.593750 -60715.585938 2068.416992 +v -319792.343750 -60715.667969 610.946472 +v -319769.062500 -60715.660156 -846.523987 +v -319457.781250 -60715.562500 -2303.994385 +v -318858.468750 -60715.375000 -3761.464844 +v -317971.125000 -60715.089844 -5218.935547 +v -316961.656250 -60714.773438 -6490.570312 +v -315732.937500 -60714.382812 -7762.205078 +v -314284.968750 -60713.921875 -9033.839844 +v -312617.750000 -60713.394531 -10305.474609 +v -310837.812500 -60712.828125 -11509.054688 +v -311318.562500 -62249.269531 9691.482422 +v -313194.937500 -62229.562500 8301.402344 +v -314781.375000 -62212.902344 6911.323242 +v -315863.812500 -62201.535156 5773.870605 +v -316867.625000 -62190.996094 4467.323730 +v -317615.312500 -62183.144531 3160.776367 +v -318106.875000 -62177.980469 1854.229248 +v -318342.281250 -62175.507812 547.682007 +v -318321.593750 -62175.726562 -758.865112 +v -318044.781250 -62178.632812 -2065.412354 +v -317511.812500 -62184.230469 -3371.959473 +v -316722.718750 -62192.515625 -4678.506836 +v -315825.031250 -62201.945312 -5818.461426 +v -314732.375000 -62213.417969 -6958.416504 +v -313444.718750 -62226.941406 -8098.371582 +v -311962.093750 -62242.511719 -9238.327148 +v -310379.218750 -62259.132812 -10317.274414 +v -311078.562500 -62830.167969 9139.323242 +v -312857.500000 -62784.996094 7828.441406 +v -314361.562500 -62746.800781 6517.560059 +v -315387.812500 -62720.738281 5444.912109 +v -316339.500000 -62696.570312 4212.803711 +v -317048.343750 -62678.570312 2980.695312 +v -317514.375000 -62666.734375 1748.586914 +v -317737.593750 -62661.066406 516.478577 +v -317717.968750 -62661.566406 -715.629822 +v -317455.531250 -62668.230469 -1947.738159 +v -316950.218750 -62681.062500 -3179.846680 +v -316202.125000 -62700.058594 -4411.955078 +v -315351.031250 -62721.671875 -5486.962402 +v -314315.093750 -62747.980469 -6561.970215 +v -313094.312500 -62778.980469 -7636.978027 +v -311688.687500 -62814.675781 -8711.985352 +v -310187.968750 -62852.785156 -9729.460938 +v -310765.656250 -63475.054688 8453.811523 +v -312417.562500 -63406.917969 7241.255371 +v -313814.250000 -63349.308594 6028.698730 +v -314767.218750 -63310.000000 5036.506836 +v -315650.937500 -63273.546875 3896.814941 +v -316309.187500 -63246.398438 2757.123047 +v -316741.968750 -63228.546875 1617.431152 +v -316949.218750 -63219.996094 477.739197 +v -316931.000000 -63220.750000 -661.952759 +v -316687.281250 -63230.800781 -1801.644653 +v -316218.093750 -63250.156250 -2941.336670 +v -315523.375000 -63278.808594 -4081.028564 +v -314733.062500 -63311.410156 -5075.403320 +v -313771.093750 -63351.085938 -6069.777832 +v -312637.468750 -63397.847656 -7064.152832 +v -311332.187500 -63451.687500 -8058.527344 +v -309938.656250 -63509.167969 -8999.685547 +v -310401.062500 -64090.265625 7727.520020 +v -311905.000000 -64009.761719 6619.137695 +v -313176.531250 -63941.695312 5510.755859 +v -314044.125000 -63895.253906 4603.805664 +v -314848.718750 -63852.183594 3562.028320 +v -315448.000000 -63820.105469 2520.250488 +v -315841.968750 -63799.015625 1478.472900 +v -316030.687500 -63788.914062 436.695221 +v -316014.093750 -63789.804688 -605.082458 +v -315792.187500 -63801.679688 -1646.860107 +v -315365.031250 -63824.546875 -2688.637695 +v -314732.562500 -63858.402344 -3730.415527 +v -314013.062500 -63896.917969 -4639.360352 +v -313137.281250 -63943.796875 -5548.305664 +v -312105.187500 -63999.042969 -6457.250977 +v -310916.875000 -64062.656250 -7366.195801 +v -309648.156250 -64130.570312 -8226.496094 +v -309584.437500 -65173.835938 6177.856934 +v -310756.906250 -65083.242188 5291.747559 +v -311748.187500 -65006.644531 4405.638672 +v -312424.562500 -64954.378906 3680.566650 +v -313051.781250 -64905.914062 2847.705322 +v -313519.000000 -64869.812500 2014.843994 +v -313826.125000 -64846.078125 1181.982544 +v -313973.250000 -64834.710938 349.121124 +v -313960.312500 -64835.710938 -483.740265 +v -313787.343750 -64849.078125 -1316.601685 +v -313454.312500 -64874.808594 -2149.463135 +v -312961.250000 -64912.910156 -2982.324463 +v -312400.343750 -64956.250000 -3708.991455 +v -311717.562500 -65009.007812 -4435.658203 +v -310912.968750 -65071.179688 -5162.325195 +v -309986.562500 -65142.765625 -5888.992188 +v -308997.500000 -65219.191406 -6576.769531 +v -306978.187500 -67126.468750 525.595947 +v -307092.687500 -67100.273438 450.208069 +v -307189.531250 -67078.132812 374.820221 +v -307255.593750 -67063.023438 313.133026 +v -307316.843750 -67049.015625 242.275345 +v -307362.500000 -67038.578125 171.417664 +v -307392.500000 -67031.718750 100.559990 +v -307406.843750 -67028.437500 29.702314 +v -307405.593750 -67028.726562 -41.155361 +v -307388.687500 -67032.585938 -112.013039 +v -307356.156250 -67040.023438 -182.870712 +v -307308.000000 -67051.039062 -253.728394 +v -307253.218750 -67063.570312 -315.551300 +v -307186.531250 -67078.820312 -377.374237 +v -307107.937500 -67096.789062 -439.197144 +v -307017.468750 -67117.484375 -501.020081 +v -306809.500000 -67173.984375 -279.818115 +v -306858.250000 -67162.539062 -250.555649 +v -306903.937500 -67151.812500 -219.638550 +v -306943.593750 -67142.500000 -188.721466 +v -306977.250000 -67134.601562 -157.804382 +v -307004.906250 -67128.109375 -126.887291 +v -307029.218750 -67122.406250 -91.452003 +v -307045.625000 -67118.546875 -56.016716 +v -307054.156250 -67116.546875 -20.581427 +v -307054.781250 -67116.398438 14.853861 +v -307047.531250 -67118.101562 50.289150 +v -307032.406250 -67121.656250 85.724434 +v -307009.375000 -67127.062500 121.159729 +v -306978.437500 -67134.320312 156.595016 +v -306945.093750 -67142.148438 187.444229 +v -306896.250000 -67153.625000 225.145020 +v 304069.375000 92719.093750 2824.450928 +v 300644.187500 92719.093750 3087.712158 +v 297188.218750 92719.093750 3194.818115 +v 297517.718750 84972.000000 3400.765869 +v 293711.375000 84972.000000 3518.730957 +v 295956.312500 81102.921875 3557.112061 +v 291976.906250 81107.273438 3680.318115 +v 290234.531250 77224.898438 3842.643555 +v 286085.718750 77224.898438 3796.268311 +v 288496.125000 73351.351562 4004.600098 +v 284172.437500 73351.351562 3956.270020 +v 286757.687500 69477.804688 4166.556641 +v 282259.156250 69477.804688 4116.271973 +v 285019.281250 65604.257812 4328.512695 +v 280345.875000 65604.257812 4276.273438 +v 283280.843750 61730.707031 4490.469238 +v 278432.593750 61730.707031 4436.275391 +v 281542.437500 57857.160156 4652.425781 +v 276519.312500 57857.160156 4596.277344 +v 279804.031250 53983.609375 4814.381836 +v 274606.031250 53983.609375 4756.279297 +v 278065.593750 50110.062500 4976.338379 +v 272692.781250 50110.062500 4916.280762 +v 276327.187500 46236.515625 5138.294922 +v 270779.500000 46236.515625 5076.282715 +v 274588.750000 42362.964844 5300.250977 +v 268866.218750 42362.964844 5236.284668 +v 272850.343750 38489.417969 5462.207520 +v 266952.937500 38489.417969 5396.286133 +v 267632.968750 26864.025391 5948.275391 +v 261210.750000 26864.025391 5876.487793 +v 262415.562500 15238.632812 6434.342773 +v 255468.562500 15238.632812 6356.689453 +v 259806.875000 9425.936523 6677.376953 +v 252597.484375 9425.936523 6596.790039 +v 257198.187500 3613.239746 6920.410645 +v 249726.390625 3613.239746 6836.891113 +v 254589.500000 -2199.456543 7163.444336 +v 246855.296875 -2199.456543 7076.991699 +v 239219.765625 -2199.456543 6687.458984 +v 233975.000000 -2199.456543 6246.708496 +v 228848.625000 -2199.456543 5676.876465 +v 223869.468750 -2199.456543 4986.049805 +v 219066.328125 -2199.456543 4182.313477 +v 214468.062500 -2199.456543 3273.754639 +v 210103.468750 -2199.456543 2268.458740 +v 214221.437500 3613.239746 2191.496826 +v 210258.531250 3613.239746 1134.664185 +v 206001.390625 -2199.456543 1174.511841 +v 293738.843750 92719.093750 3156.260986 +v 289912.281250 84972.000000 3476.264648 +v 288005.500000 81111.632812 3635.721924 +v 281989.843750 77224.898438 3587.313477 +v 279903.937500 73351.351562 3738.508545 +v 277818.031250 69477.804688 3889.703613 +v 275732.125000 65604.257812 4040.898438 +v 273646.218750 61730.707031 4192.093262 +v 271560.312500 57857.160156 4343.288574 +v 269474.406250 53983.609375 4494.483398 +v 267388.468750 50110.062500 4645.678223 +v 265302.562500 46236.515625 4796.873047 +v 263216.656250 42362.964844 4948.068359 +v 261130.765625 38489.417969 5099.263184 +v 254870.468750 26864.025391 5553.033203 +v 248610.187500 15238.632812 6006.803711 +v 245480.046875 9425.936523 6233.688965 +v 242349.906250 3613.239746 6460.573730 +v 290333.468750 92719.093750 2982.533691 +v 286161.656250 84972.000000 3284.923584 +v 284085.187500 81115.984375 3435.434082 +v 279176.437500 77224.898438 3350.884277 +v 276971.937500 73351.351562 3492.114502 +v 274767.437500 69477.804688 3633.344727 +v 272562.968750 65604.257812 3774.574707 +v 270358.468750 61730.707031 3915.804932 +v 268154.000000 57857.160156 4057.035156 +v 265949.500000 53983.609375 4198.265137 +v 263745.031250 50110.062500 4339.495605 +v 261540.531250 46236.515625 4480.725586 +v 259336.046875 42362.964844 4621.955566 +v 257131.562500 38489.417969 4763.186035 +v 250515.406250 26864.025391 5187.049316 +v 243899.250000 15238.632812 5610.913086 +v 240591.171875 9425.936523 5822.844727 +v 237283.078125 3613.239746 6034.776367 +v 287994.375000 92719.093750 2785.963867 +v 283585.406250 84972.000000 3068.424072 +v 281392.625000 81119.031250 3208.903564 +v 278761.062500 81122.085938 2916.082764 +v 276426.500000 77224.898438 3045.212891 +v 273755.562500 77224.898438 2674.636719 +v 274106.125000 73351.351562 3173.559814 +v 271322.593750 73351.351562 2787.364990 +v 271785.750000 69477.804688 3301.906738 +v 268889.656250 69477.804688 2900.093262 +v 269465.343750 65604.257812 3430.253906 +v 266456.687500 65604.257812 3012.821533 +v 267144.968750 61730.707031 3558.600830 +v 264023.718750 61730.707031 3125.549805 +v 264824.562500 57857.160156 3686.947754 +v 261590.765625 57857.160156 3238.278076 +v 262504.187500 53983.609375 3815.294678 +v 259157.812500 53983.609375 3351.006348 +v 260183.796875 50110.062500 3943.641602 +v 256724.843750 50110.062500 3463.734619 +v 257863.421875 46236.515625 4071.988770 +v 254291.890625 46236.515625 3576.462891 +v 255543.031250 42362.964844 4200.335449 +v 251858.937500 42362.964844 3689.191162 +v 253222.640625 38489.417969 4328.682617 +v 249425.968750 38489.417969 3801.919189 +v 246258.640625 26864.025391 4713.880859 +v 242124.109375 26864.025391 4140.242188 +v 239294.640625 15238.632812 5099.079102 +v 234822.250000 15238.632812 4478.565430 +v 235812.625000 9425.936523 5291.678223 +v 231171.328125 9425.936523 4647.726562 +v 232330.625000 3613.239746 5484.277344 +v 227520.390625 3613.239746 4816.888184 +v 285708.062500 92719.093750 2531.824951 +v 283487.406250 92719.093750 2223.723633 +v 281345.250000 92719.093750 1865.266235 +v 279294.468750 92719.093750 1460.058838 +v 276262.156250 84972.000000 2054.379883 +v 274003.468750 84972.000000 1608.089722 +v 271380.343750 81131.234375 1681.478760 +v 269140.750000 81134.281250 1165.094360 +v 266371.156250 77224.898438 1216.855713 +v 264170.718750 77224.898438 630.036316 +v 263626.968750 73351.351562 1268.142700 +v 261333.765625 73351.351562 656.590576 +v 260882.781250 69477.804688 1319.429688 +v 258496.843750 69477.804688 683.144775 +v 258138.593750 65604.257812 1370.716675 +v 255659.906250 65604.257812 709.698975 +v 255394.390625 61730.707031 1422.003662 +v 252822.968750 61730.707031 736.253235 +v 252650.203125 57857.160156 1473.290649 +v 249986.031250 57857.160156 762.807434 +v 249906.015625 53983.609375 1524.577515 +v 247149.109375 53983.609375 789.361694 +v 247161.828125 50110.062500 1575.864502 +v 244312.171875 50110.062500 815.915894 +v 244417.640625 46236.515625 1627.151489 +v 241475.234375 46236.515625 842.470093 +v 241673.437500 42362.964844 1678.438477 +v 238638.296875 42362.964844 869.024353 +v 238929.250000 38489.417969 1729.725464 +v 235801.375000 38489.417969 895.578552 +v 230693.312500 26864.025391 1883.649292 +v 227287.093750 26864.025391 975.273743 +v 222457.375000 15238.632812 2037.572998 +v 218772.812500 15238.632812 1054.968994 +v 218339.406250 9425.936523 2114.534912 +v 214515.671875 9425.936523 1094.816650 +v 277347.937500 92719.093750 1011.707825 +v 271859.531250 84972.000000 1114.281738 +v 267036.125000 81137.328125 603.215576 +v 275518.437500 92719.093750 523.819458 +v 269844.562500 84972.000000 576.927917 +v 262338.500000 -2199.456543 6923.291016 +v 264684.312500 3613.239746 6688.404785 +v 267030.093750 9425.936523 6453.518555 +v 269375.875000 15238.632812 6218.632324 +v 274067.468750 26864.025391 5748.860352 +v 278759.062500 38489.417969 5279.087891 +v 280322.281250 42362.964844 5122.561035 +v 281885.500000 46236.515625 4966.034180 +v 283448.718750 50110.062500 4809.507324 +v 285011.937500 53983.609375 4652.980469 +v 286575.187500 57857.160156 4496.453613 +v 288138.406250 61730.707031 4339.926758 +v 289701.625000 65604.257812 4183.399902 +v 291264.843750 69477.804688 4026.873291 +v 292828.062500 73351.351562 3870.346436 +v 294391.281250 77224.898438 3713.819580 +v 299900.625000 81098.570312 3253.990234 +v 301290.187500 84972.000000 3110.813232 +v 278621.500000 84972.000000 2449.180176 +v 273740.125000 81128.179688 2148.210938 +v 268712.437500 77224.898438 1756.120605 +v 266066.906250 73351.351562 1830.136108 +v 263421.406250 69477.804688 1904.151489 +v 260775.890625 65604.257812 1978.166992 +v 258130.375000 61730.707031 2052.182373 +v 255484.859375 57857.160156 2126.197754 +v 252839.359375 53983.609375 2200.213379 +v 250193.843750 50110.062500 2274.228760 +v 247548.328125 46236.515625 2348.244141 +v 244902.812500 42362.964844 2422.259521 +v 242257.296875 38489.417969 2496.274902 +v 234317.515625 26864.025391 2718.412109 +v 226377.734375 15238.632812 2940.549072 +v 222407.843750 9425.936523 3051.617676 +v 218437.953125 3613.239746 3162.686279 +v 281067.281250 84972.000000 2788.519043 +v 276205.281250 81125.132812 2561.131836 +v 271179.062500 77224.898438 2243.493408 +v 268637.500000 73351.351562 2338.050293 +v 266095.937500 69477.804688 2432.607178 +v 263554.406250 65604.257812 2527.163818 +v 261012.843750 61730.707031 2621.720703 +v 258471.296875 57857.160156 2716.277588 +v 255929.734375 53983.609375 2810.834229 +v 253388.187500 50110.062500 2905.391113 +v 250846.640625 46236.515625 2999.947998 +v 248305.078125 42362.964844 3094.504639 +v 245763.531250 38489.417969 3189.061523 +v 238135.765625 26864.025391 3472.847900 +v 230507.984375 15238.632812 3756.634277 +v 226694.109375 9425.936523 3898.527344 +v 222880.218750 3613.239746 4040.420410 +v 31072.837891 -33805.414062 288000.000000 +v 30087.925781 -33779.738281 288000.000000 +v 31072.837891 -34707.203125 288000.000000 +v 30031.208984 -33885.476562 288000.000000 +v 30001.373047 -34056.851562 288000.000000 +v 30002.332031 -33977.085938 288000.000000 +v 31072.837891 -32903.621094 288000.000000 +v 30311.861328 -33513.925781 288000.000000 +v 30013.597656 -34133.929688 288000.000000 +v 30052.761719 -34220.320312 288000.000000 +v 30086.406250 -34273.609375 288000.000000 +v 30134.382812 -34328.953125 288000.000000 +v 30261.986328 -34444.062500 288000.000000 +v 30405.970703 -34529.183594 288000.000000 +v 30617.593750 -34609.835938 288000.000000 +v 29334.419922 -34017.820312 286617.937500 +v 29344.167969 -34095.582031 286703.125000 +v 28883.339844 -34017.820312 286860.031250 +v 29365.236328 -34157.632812 286765.156250 +v 29427.150391 -34264.558594 286860.031250 +v 34181.593750 -35188.410156 285612.906250 +v 33407.527344 -35483.632812 286207.281250 +v 32513.900391 -35104.382812 286232.500000 +v 31683.291016 -35025.605469 286552.687500 +v 32557.453125 -35684.859375 286860.031250 +v 31262.798828 -34974.558594 286713.187500 +v 30836.021484 -34903.800781 286860.031250 +v 29631.767578 -34017.820312 287254.250000 +v 31871.296875 -34909.980469 287386.906250 +v -53123.265625 -50418.687500 114883.710938 +v -49909.585938 -49539.171875 114883.710938 +v -54016.093750 -50494.402344 111997.085938 +v -52772.378906 -50027.207031 109110.460938 +v -55842.781250 -50866.054688 109110.460938 +v -58884.019531 -52066.812500 109110.460938 +v -56118.277344 -51233.144531 111997.085938 +v -55300.683594 -50924.378906 111997.085938 +v -54936.402344 -50795.085938 111997.085938 +v -54242.050781 -50564.792969 111997.085938 +v -60287.730469 -52909.246094 109110.460938 +v -57631.066406 -51919.546875 111997.085938 +v -57477.765625 -51840.054688 111997.085938 +v -57069.132812 -51639.421875 111997.085938 +v -55922.656250 -51537.945312 114883.710938 +v -56849.347656 -51538.160156 111997.085938 +v -54771.074219 -51020.976562 114883.710938 +v -61504.605469 -54017.953125 109110.460938 +v -59445.933594 -53200.578125 111997.085938 +v -59045.824219 -52842.914062 111997.085938 +v -58800.570312 -52649.031250 111997.085938 +v -57010.339844 -52171.171875 114883.710938 +v -61775.679688 -54339.492188 109110.460938 +v -60154.316406 -53940.820312 111997.085938 +v -59855.238281 -53603.574219 111997.085938 +v -59733.496094 -53480.320312 111997.085938 +v -58010.250000 -53000.742188 114883.710938 +v -61877.222656 -54486.828125 109110.460938 +v -60389.855469 -54297.636719 111997.085938 +v -58643.117188 -53683.707031 114883.718750 +v -58827.789062 -53977.863281 114883.710938 +v -60439.875000 -54412.757812 111997.085938 +v -58912.539062 -54203.148438 114883.710938 +v -60458.730469 -54466.089844 111997.085938 +v -60484.113281 -54547.574219 111997.085938 +v -62054.003906 -54885.160156 109110.460938 +v -62066.441406 -54990.339844 109110.460938 +v -62007.347656 -54742.855469 109110.460938 +v -60496.875000 -54670.332031 111997.085938 +v -62042.828125 -55239.492188 109110.460938 +v -60461.875000 -54945.730469 111997.085938 +v -62014.453125 -55339.281250 109110.460938 +v -60429.453125 -55027.503906 111997.085938 +v -61970.625000 -55426.507812 109110.460938 +v -60393.609375 -55096.070312 111997.085938 +v -61911.207031 -55532.722656 109110.460938 +v -60239.269531 -55321.355469 111997.085938 +v -61722.160156 -55759.539062 109110.460938 +v -60141.937500 -55421.792969 111997.085938 +v -59991.542969 -55559.390625 111997.085938 +v -58555.605469 -55089.582031 114883.710938 +v -58229.542969 -55350.539062 114883.710938 +v -59785.082031 -55711.824219 111997.085938 +v -59526.070312 -55844.480469 111997.085938 +v -61059.070312 -56216.417969 109110.460938 +v -58726.226562 -56092.097656 111997.085938 +v -60084.933594 -56496.722656 109110.460938 +v -58558.656250 -56125.066406 111997.085938 +v -58057.578125 -56222.042969 111997.085938 +v -57205.113281 -55719.359375 114883.710938 +v -56048.808594 -55935.070312 114883.710938 +v -57717.105469 -56284.218750 111997.085938 +v -57514.539062 -56316.734375 111997.085938 +v -58993.972656 -56696.234375 109110.460938 +v -57764.292969 -56833.742188 109110.460938 +v -61451.750000 -55997.476562 109110.460938 +v -52772.378906 -57025.687500 109110.460938 +v -53181.574219 -56172.648438 114883.710938 +v -56174.074219 -56463.269531 111997.085938 +v -54869.496094 -56071.203125 114883.710938 +v -49909.585938 -56260.078125 114883.710938 +v -57779.140625 -55559.902344 114883.710938 +v -58697.156250 -54942.796875 114883.710938 +v -58792.546875 -54808.332031 114883.710938 +v -58857.433594 -54687.777344 114883.710938 +v -58897.039062 -54584.269531 114883.710938 +v -58925.488281 -54384.871094 114883.710938 +v -58925.160156 -54281.890625 114883.710938 +v 31547.007812 -32612.269531 287635.906250 +v 31067.255859 -32754.183594 287017.375000 +v 30556.058594 -33009.734375 286948.656250 +v 30313.220703 -33163.585938 286942.000000 +v 32060.697266 -32381.277344 287241.468750 +v 30094.333984 -33338.222656 286965.125000 +v 29853.474609 -33589.542969 287037.593750 +v 29746.333984 -33722.339844 287085.937500 +v 29669.285156 -33848.246094 287143.968750 +v 29636.802734 -33943.296875 287200.312500 +v 26320.291016 -35019.445312 280786.812500 +v 26340.105469 -35058.140625 280786.812500 +v 26417.111328 -35170.949219 280786.812500 +v 26467.425781 -35222.292969 280786.812500 +v 26542.781250 -35290.066406 280786.812500 +v 22849.218750 -36156.613281 273573.656250 +v 23014.554688 -36262.621094 273573.656250 +v 19328.429688 -37133.937500 266360.468750 +v 19724.933594 -37271.460938 266360.468750 +v 16055.881836 -38148.695312 259147.281250 +v 16164.531250 -38171.511719 259147.281250 +v 12499.964844 -39049.691406 251934.109375 +v 12815.183594 -39110.718750 251934.109375 +v 9163.113281 -39991.320312 244720.921875 +v 9281.272461 -40013.710938 244720.921875 +v 5633.708496 -40895.164062 237507.750000 +v 5877.363281 -40935.687500 237507.750000 +v 2238.748535 -41818.628906 230294.578125 +v 2613.504150 -41867.433594 230294.578125 +v -1011.833435 -42752.101562 223081.390625 +v -885.362854 -42765.316406 223081.390625 +v -4506.372559 -43650.441406 215868.218750 +v -4108.626953 -43683.097656 215868.218750 +v -7716.476562 -44569.300781 208655.031250 +v -7226.258789 -44600.234375 208655.031250 +v -10818.409180 -45487.425781 201441.859375 +v -7956.610352 -45578.976562 201441.859375 +v -11459.956055 -46469.011719 194228.671875 +v -7170.898438 -45626.640625 201072.656250 +v -12439.426758 -46938.160156 190447.875000 +v -14963.301758 -47359.042969 187015.500000 +v -17779.986328 -48267.363281 179677.843750 +v -18466.648438 -48249.078125 179802.328125 +v -21969.994141 -49139.113281 172589.140625 +v -21594.859375 -48149.003906 179802.328125 +v -25187.009766 -49036.199219 172589.140625 +v -22147.875000 -48114.109375 179802.328125 +v -25755.724609 -49000.312500 172589.140625 +v -22611.421875 -48076.050781 179802.328125 +v -26232.431641 -48961.171875 172589.140625 +v -22763.859375 -48060.121094 179802.328125 +v -26389.195312 -48944.792969 172589.140625 +v -23231.552734 -47999.218750 179802.328125 +v -26870.167969 -48882.156250 172589.140625 +v -23546.804688 -47946.781250 179802.328125 +v -27194.369141 -48828.234375 172589.140625 +v -23705.513672 -47916.707031 179802.328125 +v -27357.582031 -48797.308594 172589.140625 +v -24145.691406 -47831.484375 179802.328125 +v -27810.257812 -48709.664062 172589.140625 +v -24303.675781 -47798.312500 179802.328125 +v -27972.726562 -48675.550781 172589.140625 +v -24905.050781 -47589.742188 179802.328125 +v -28591.173828 -48461.062500 172589.140625 +v -25167.099609 -47421.734375 179802.328125 +v -28860.662109 -48288.281250 172589.140625 +v -25292.164062 -47309.261719 179802.328125 +v -28989.277344 -48172.617188 172589.140625 +v -25375.667969 -47224.050781 179802.328125 +v -29075.152344 -48084.988281 172589.140625 +v -25503.474609 -47036.828125 179802.328125 +v -29206.587891 -47892.449219 172589.140625 +v -25536.363281 -46972.601562 179802.328125 +v -29240.410156 -47826.398438 172589.140625 +v -25558.058594 -46904.636719 179802.328125 +v -29262.720703 -47756.503906 172589.140625 +v -25575.568359 -46791.667969 179802.328125 +v -29280.726562 -47640.328125 172589.140625 +v -25577.904297 -46671.835938 179802.328125 +v -29283.130859 -47517.093750 172589.140625 +v -25560.492188 -46585.421875 179802.328125 +v -29265.224609 -47428.226562 172589.140625 +v -25536.916016 -46517.714844 179802.328125 +v -29240.978516 -47358.597656 172589.140625 +v -25508.736328 -46448.855469 179802.328125 +v -29211.998047 -47287.781250 172589.140625 +v -25386.541016 -46242.687500 179802.328125 +v -29086.333984 -47075.761719 172589.140625 +v -25143.625000 -45950.156250 179802.328125 +v -28836.521484 -46774.925781 172589.140625 +v -25004.957031 -45806.695312 179802.328125 +v -28693.917969 -46627.390625 172589.140625 +v -24856.298828 -45660.308594 179802.328125 +v -28541.037109 -46476.851562 172589.140625 +v -24565.414062 -45389.710938 179802.328125 +v -28241.894531 -46198.570312 172589.140625 +v -24130.189453 -45046.277344 179802.328125 +v -27794.314453 -45845.386719 172589.140625 +v -23180.220703 -44485.250000 179802.328125 +v -26817.378906 -45268.433594 172589.140625 +v -22949.261719 -44372.003906 179802.328125 +v -26579.863281 -45151.972656 172589.140625 +v -22690.470703 -44252.992188 179802.328125 +v -26313.724609 -45029.582031 172589.140625 +v -22099.343750 -44009.574219 179802.328125 +v -25705.814453 -44779.253906 172589.140625 +v -21590.052734 -43817.468750 179802.328125 +v -25182.066406 -44581.695312 172589.140625 +v -20496.166016 -43450.792969 179802.328125 +v -24057.126953 -44204.609375 172589.140625 +v -19396.476562 -43138.929688 179802.328125 +v -22926.218750 -43883.894531 172589.140625 +v -19114.574219 -43066.531250 179802.328125 +v -22636.312500 -43809.441406 172589.140625 +v -18631.699219 -42943.500000 177960.234375 +v -29020.917969 -45132.675781 157008.828125 +v 26296.667969 -34910.425781 280786.812500 +v 26307.218750 -34978.492188 280786.812500 +v 22616.244141 -35873.242188 273573.656250 +v 22636.992188 -35913.761719 273573.656250 +v 18933.880859 -36769.378906 266360.468750 +v 19018.142578 -36892.820312 266360.468750 +v 15318.658203 -37753.757812 259147.281250 +v 15376.084961 -37812.355469 259147.281250 +v 11678.971680 -38675.710938 251934.109375 +v 11768.530273 -38756.257812 251934.109375 +v 8074.966797 -39622.804688 244720.921875 +v 8270.060547 -39747.890625 244720.921875 +v 4583.936523 -40619.207031 237507.750000 +v 5048.729980 -40780.410156 237507.750000 +v 1379.679443 -41657.648438 230294.578125 +v 1506.268066 -41684.230469 230294.578125 +v -2158.297607 -42562.410156 223081.390625 +v -1793.095215 -42633.117188 223081.390625 +v -5445.165039 -43513.714844 215868.218750 +v -5308.983887 -43539.519531 215868.218750 +v -8956.547852 -44420.972656 208655.031250 +v -8677.095703 -44467.453125 208655.031250 +v -12315.709961 -45350.394531 201441.859375 +v -11887.845703 -45406.113281 201441.859375 +v -15513.183594 -46290.781250 194228.671875 +v -15369.402344 -46305.804688 194228.671875 +v -18990.412109 -47190.929688 187015.500000 +v -18540.025391 -47227.906250 187015.500000 +v 26295.259766 -34838.214844 280786.812500 +v 26305.750000 -34786.148438 280786.812500 +v 26319.957031 -34745.355469 280786.812500 +v 22601.019531 -35628.957031 273573.656250 +v 22615.894531 -35586.238281 273573.656250 +v 18896.287109 -36471.761719 266360.468750 +v 18911.832031 -36427.121094 266360.468750 +v 15191.555664 -37314.566406 259147.281250 +v 15207.770508 -37268.003906 259147.281250 +v 11486.824219 -38157.371094 251934.109375 +v 11503.708008 -38108.886719 251934.109375 +v 7782.092285 -39000.175781 244720.921875 +v 7799.645508 -38949.769531 244720.921875 +v 4077.360596 -39842.980469 237507.750000 +v 4095.583008 -39790.652344 237507.750000 +v 372.629028 -40685.785156 230294.578125 +v 391.520477 -40631.535156 230294.578125 +v -3332.102539 -41528.589844 223081.390625 +v -3312.541992 -41472.417969 223081.390625 +v -7036.834473 -42371.398438 215868.218750 +v -7016.604492 -42313.300781 215868.218750 +v -10741.566406 -43214.203125 208655.031250 +v -10720.666992 -43154.183594 208655.031250 +v -14446.297852 -44057.007812 201441.859375 +v -14424.729492 -43995.066406 201441.859375 +v -18151.029297 -44899.812500 194228.671875 +v -18128.791016 -44835.949219 194228.671875 +v -21855.761719 -45742.617188 187015.500000 +v -21832.853516 -45676.832031 187015.500000 +v 26336.935547 -34703.867188 280786.812500 +v 22633.673828 -35542.792969 273573.656250 +v 18930.412109 -36381.722656 266360.468750 +v 15227.149414 -37220.648438 259147.281250 +v 11523.886719 -38059.578125 251934.109375 +v 7820.624512 -38898.503906 244720.921875 +v 4117.362305 -39737.433594 237507.750000 +v 414.099792 -40576.359375 230294.578125 +v -3289.162598 -41415.289062 223081.390625 +v -6992.424805 -42254.214844 215868.218750 +v -10695.687500 -43093.144531 208655.031250 +v -14398.949219 -43932.070312 201441.859375 +v -18102.210938 -44771.000000 194228.671875 +v -21805.474609 -45609.925781 187015.500000 +v 26410.558594 -34579.644531 280786.812500 +v 29535.464844 -33781.078125 286698.906250 +v 26556.925781 -34403.375000 280786.812500 +v 29756.021484 -33572.613281 286748.000000 +v 26640.478516 -34316.933594 280786.812500 +v 26730.050781 -34228.730469 280786.812500 +v 22951.519531 -35137.628906 273573.656250 +v 23045.310547 -35045.273438 273573.656250 +v 19262.560547 -35958.328125 266360.468750 +v 19360.572266 -35861.812500 266360.468750 +v 15573.599609 -36779.023438 259147.281250 +v 15675.833008 -36678.355469 259147.281250 +v 11884.639648 -37599.722656 251934.109375 +v 11991.093750 -37494.894531 251934.109375 +v 8195.680664 -38420.417969 244720.921875 +v 8306.354492 -38311.437500 244720.921875 +v 4506.720703 -39241.117188 237507.750000 +v 4621.615234 -39127.980469 237507.750000 +v 817.760681 -40061.812500 230294.578125 +v 936.876099 -39944.519531 230294.578125 +v -2871.198975 -40882.511719 223081.390625 +v -2747.863037 -40761.062500 223081.390625 +v -6560.158691 -41703.207031 215868.218750 +v -6432.602051 -41577.601562 215868.218750 +v -10249.118164 -42523.906250 208655.031250 +v -10117.341797 -42394.144531 208655.031250 +v -13938.078125 -43344.601562 201441.859375 +v -13802.081055 -43210.683594 201441.859375 +v -17627.039062 -44165.300781 194228.671875 +v -17486.820312 -44027.226562 194228.671875 +v -21315.998047 -44985.996094 187015.500000 +v -21171.558594 -44843.769531 187015.500000 +v 26905.320312 -34065.683594 280786.812500 +v 30229.402344 -33188.296875 286803.468750 +v 27167.570312 -33858.738281 280786.812500 +v 30752.341797 -32874.109375 286775.156250 +v 27739.980469 -33520.679688 280786.812500 +v 27879.150391 -33452.441406 280786.812500 +v 24102.824219 -34303.863281 273573.656250 +v 24248.548828 -34232.410156 273573.656250 +v 20465.666016 -35087.046875 266360.468750 +v 20617.949219 -35012.378906 266360.468750 +v 16828.509766 -35870.230469 259147.281250 +v 16987.347656 -35792.347656 259147.281250 +v 13191.351562 -36653.414062 251934.109375 +v 13356.746094 -36572.316406 251934.109375 +v 9554.194336 -37436.597656 244720.921875 +v 9726.145508 -37352.285156 244720.921875 +v 5917.037109 -38219.781250 237507.750000 +v 6095.544922 -38132.253906 237507.750000 +v 2279.879883 -39002.964844 230294.578125 +v 2464.943848 -38912.222656 230294.578125 +v -1357.277466 -39786.148438 223081.390625 +v -1165.657104 -39692.191406 223081.390625 +v -4994.434570 -40569.332031 215868.218750 +v -4796.257812 -40472.160156 215868.218750 +v -8631.591797 -41352.515625 208655.031250 +v -8426.859375 -41252.128906 208655.031250 +v -12268.749023 -42135.699219 201441.859375 +v -12057.459961 -42032.097656 201441.859375 +v -15905.906250 -42918.882812 194228.671875 +v -15688.060547 -42812.066406 194228.671875 +v -19543.064453 -43702.066406 187015.500000 +v -19318.662109 -43592.035156 187015.500000 +v 28035.083984 -33380.730469 280786.812500 +v 31300.091797 -32620.474609 286685.468750 +v 28391.261719 -33234.058594 280786.812500 +v 28698.138672 -33118.300781 280786.812500 +v 24784.791016 -34003.738281 273573.656250 +v 25106.125000 -33882.527344 273573.656250 +v 21178.318359 -34773.417969 266360.468750 +v 21514.111328 -34646.753906 266360.468750 +v 17571.845703 -35543.097656 259147.281250 +v 17922.097656 -35410.980469 259147.281250 +v 13965.375000 -36312.777344 251934.109375 +v 14330.083008 -36175.207031 251934.109375 +v 10358.903320 -37082.457031 244720.921875 +v 10738.069336 -36939.433594 244720.921875 +v 6752.431152 -37852.136719 237507.750000 +v 7146.055664 -37703.660156 237507.750000 +v 3145.959229 -38621.816406 230294.578125 +v 3554.042236 -38467.886719 230294.578125 +v -460.512451 -39391.496094 223081.390625 +v -37.971493 -39232.113281 223081.390625 +v -4066.984131 -40161.175781 215868.218750 +v -3629.985107 -39996.339844 215868.218750 +v -7673.456055 -40930.855469 208655.031250 +v -7221.999023 -40760.566406 208655.031250 +v -11279.927734 -41700.535156 201441.859375 +v -10814.012695 -41524.789062 201441.859375 +v -14886.399414 -42470.214844 194228.671875 +v -14406.026367 -42289.015625 194228.671875 +v -18492.871094 -43239.894531 187015.500000 +v -17998.039062 -43053.242188 187015.500000 +v 32422.535156 -32224.605469 286415.687500 +v 29357.279297 -32897.351562 280786.812500 +v 25796.320312 -33651.167969 273573.656250 +v 22235.359375 -34404.984375 266360.468750 +v 18674.398438 -35158.800781 259147.281250 +v 15113.438477 -35912.621094 251934.109375 +v 11552.477539 -36666.437500 244720.921875 +v 7991.517090 -37420.253906 237507.750000 +v 4430.556641 -38174.070312 230294.578125 +v 869.596130 -38927.890625 223081.390625 +v -2691.364502 -39681.707031 215868.218750 +v -6252.324707 -40435.523438 208655.031250 +v -9813.285156 -41189.339844 201441.859375 +v -13374.246094 -41943.160156 194228.671875 +v -16935.207031 -42696.976562 187015.500000 +v 33577.160156 -31939.048828 286077.031250 +v 30189.775391 -32665.806641 280786.812500 +v 30019.910156 -32709.431641 280786.812500 +v 31320.515625 -32418.779297 280786.812500 +v 34593.441406 -31785.013672 285296.687500 +v 29235.933594 -32900.617188 274492.468750 +v 27852.046875 -33150.050781 273573.656250 +v 23816.144531 -34031.773438 263562.656250 +v 24383.580078 -33881.320312 266360.468750 +v 20915.113281 -34612.593750 259147.281250 +v 19624.556641 -34894.535156 259147.281250 +v 16102.818359 -35637.441406 251934.109375 +v 15900.943359 -35689.289062 251934.109375 +v 12371.201172 -36434.253906 244720.921875 +v 18417.773438 -35160.574219 252676.031250 +v 17446.646484 -35343.863281 251934.109375 +v 12581.079102 -36380.351562 244720.921875 +v 8841.458984 -37179.214844 237507.750000 +v 13121.636719 -36269.714844 241995.578125 +v 13978.178711 -36075.136719 244720.921875 +v 9059.339844 -37123.261719 237507.750000 +v 5311.717285 -37924.179688 230294.578125 +v 10509.710938 -36806.406250 237507.750000 +v 2491.921143 -38499.972656 220559.171875 +v 7041.243652 -37537.675781 230294.578125 +v 3572.776123 -38268.949219 223081.390625 +v 2015.861572 -38609.078125 223081.390625 +v -1505.877686 -39351.988281 215868.218750 +v -1747.766602 -39414.109375 215868.218750 +v -5277.508301 -40159.074219 208655.031250 +v 104.308868 -39000.218750 215868.218750 +v -8190.377930 -40745.546875 199016.718750 +v -5027.616699 -40094.898438 208655.031250 +v -8549.356445 -40837.804688 201441.859375 +v -8807.250000 -40904.035156 201441.859375 +v -12336.992188 -41649.000000 194228.671875 +v -12071.095703 -41580.714844 194228.671875 +v -13459.024414 -41854.304688 188391.718750 +v -15592.833984 -42323.625000 187015.500000 +v -39513.386719 -47345.359375 135849.203125 +v -32321.095703 -45852.441406 152752.906250 +v -29679.791016 -45295.257812 158162.781250 +v -26158.052734 -44552.351562 165375.968750 +v -29985.701172 -45373.820312 158162.781250 +v -26455.960938 -44628.855469 165375.968750 +v -31179.048828 -45712.246094 158162.781250 +v -27618.087891 -44958.429688 165375.968750 +v -32366.093750 -46110.148438 158162.781250 +v -28774.080078 -45345.921875 165375.968750 +v -32918.757812 -46318.613281 158162.781250 +v -29312.287109 -45548.933594 165375.968750 +v -33560.234375 -46582.765625 158162.781250 +v -29936.978516 -45806.175781 165375.968750 +v -33841.066406 -46711.910156 158162.781250 +v -30210.464844 -45931.941406 165375.968750 +v -34091.691406 -46834.800781 158162.781250 +v -30454.535156 -46051.617188 165375.968750 +v -35122.566406 -47443.609375 158162.781250 +v -31458.439453 -46644.496094 165375.968750 +v -35594.855469 -47816.289062 158162.781250 +v -31918.375000 -47007.429688 165375.968750 +v -35910.515625 -48109.933594 158162.781250 +v -32225.777344 -47293.390625 165375.968750 +v -36071.835938 -48268.785156 158162.781250 +v -32382.876953 -47448.089844 165375.968750 +v -36222.312500 -48424.464844 158162.781250 +v -32529.417969 -47599.695312 165375.968750 +v -36485.917969 -48741.910156 158162.781250 +v -32786.125000 -47908.835938 165375.968750 +v -36618.523438 -48965.636719 158162.781250 +v -32915.261719 -48126.710938 165375.968750 +v -36649.105469 -49040.363281 158162.781250 +v -32945.042969 -48199.480469 165375.968750 +v -36674.687500 -49113.839844 158162.781250 +v -32969.957031 -48271.031250 165375.968750 +v -36693.582031 -49207.609375 158162.781250 +v -32988.355469 -48362.351562 165375.968750 +v -36691.046875 -49337.648438 158162.781250 +v -32985.886719 -48488.988281 165375.968750 +v -36672.046875 -49460.238281 158162.781250 +v -32967.382812 -48608.371094 165375.968750 +v -36648.503906 -49533.992188 158162.781250 +v -32944.457031 -48680.195312 165375.968750 +v -36612.812500 -49603.687500 158162.781250 +v -32909.699219 -48748.066406 165375.968750 +v -36474.121094 -49806.859375 158162.781250 +v -32774.636719 -48945.921875 165375.968750 +v -36383.503906 -49899.324219 158162.781250 +v -32686.390625 -49035.968750 165375.968750 +v -36247.789062 -50021.378906 158162.781250 +v -32554.226562 -49154.828125 165375.968750 +v -35963.421875 -50203.695312 158162.781250 +v -32277.296875 -49332.378906 165375.968750 +v -35310.828125 -50430.027344 158162.781250 +v -31641.775391 -49552.789062 165375.968750 +v -35139.390625 -50466.023438 158162.781250 +v -31474.824219 -49587.843750 165375.968750 +v -34661.722656 -50558.503906 158162.781250 +v -31009.652344 -49677.906250 165375.968750 +v -34489.496094 -50591.140625 158162.781250 +v -30841.931641 -49709.687500 165375.968750 +v -34147.398438 -50648.039062 158162.781250 +v -30508.783203 -49765.097656 165375.968750 +v -33639.871094 -50714.132812 158162.781250 +v -30014.533203 -49829.460938 165375.968750 +v -33474.453125 -50731.417969 158162.781250 +v -29853.441406 -49846.296875 165375.968750 +v -32971.421875 -50772.714844 158162.781250 +v -29363.574219 -49886.515625 165375.968750 +v -32371.310547 -50810.585938 158162.781250 +v -28779.160156 -49923.390625 165375.968750 +v -28976.685547 -50919.179688 158162.781250 +v -25473.339844 -50029.144531 165375.968750 +v -28575.314453 -50953.542969 157907.453125 +v -42886.312500 -48081.167969 131113.359375 +v -40245.007812 -47523.984375 136523.250000 +v -37603.703125 -46966.804688 141933.140625 +v -40574.925781 -47608.714844 136523.250000 +v -37927.621094 -47049.988281 141933.140625 +v -41861.929688 -47973.695312 136523.250000 +v -39191.210938 -47408.335938 141933.140625 +v -43142.136719 -48402.828125 136523.250000 +v -40448.125000 -47829.656250 141933.140625 +v -43738.175781 -48627.652344 136523.250000 +v -41033.320312 -48050.394531 141933.140625 +v -44429.996094 -48912.535156 136523.250000 +v -41712.554688 -48330.093750 141933.140625 +v -44732.867188 -49051.816406 136523.250000 +v -42009.917969 -48466.839844 141933.140625 +v -45003.164062 -49184.351562 136523.250000 +v -42275.296875 -48596.964844 141933.140625 +v -46114.941406 -49840.937500 136523.250000 +v -43366.847656 -49241.605469 141933.140625 +v -46624.300781 -50242.867188 136523.250000 +v -43866.937500 -49636.222656 141933.140625 +v -46964.734375 -50559.554688 136523.250000 +v -44201.179688 -49947.152344 141933.140625 +v -47138.714844 -50730.878906 136523.250000 +v -44371.996094 -50115.355469 141933.140625 +v -47301.003906 -50898.773438 136523.250000 +v -44531.332031 -50280.195312 141933.140625 +v -47585.296875 -51241.136719 136523.250000 +v -44810.453125 -50616.328125 141933.140625 +v -47728.308594 -51482.421875 136523.250000 +v -44950.863281 -50853.226562 141933.140625 +v -47761.292969 -51563.011719 136523.250000 +v -44983.246094 -50932.347656 141933.140625 +v -47788.882812 -51642.253906 136523.250000 +v -45010.332031 -51010.148438 141933.140625 +v -47809.261719 -51743.386719 136523.250000 +v -45030.339844 -51109.441406 141933.140625 +v -47806.527344 -51883.628906 136523.250000 +v -45027.656250 -51247.136719 141933.140625 +v -47786.035156 -52015.843750 136523.250000 +v -45007.535156 -51376.941406 141933.140625 +v -47760.644531 -52095.382812 136523.250000 +v -44982.609375 -51455.035156 141933.140625 +v -47722.152344 -52170.550781 136523.250000 +v -44944.816406 -51528.835938 141933.140625 +v -47572.574219 -52389.667969 136523.250000 +v -44797.960938 -51743.964844 141933.140625 +v -47474.843750 -52489.390625 136523.250000 +v -44702.007812 -51841.875000 141933.140625 +v -47328.476562 -52621.019531 136523.250000 +v -44558.304688 -51971.109375 141933.140625 +v -47021.792969 -52817.648438 136523.250000 +v -44257.199219 -52164.160156 141933.140625 +v -46317.980469 -53061.742188 136523.250000 +v -43566.191406 -52403.812500 141933.140625 +v -46133.085938 -53100.562500 136523.250000 +v -43384.660156 -52441.929688 141933.140625 +v -45617.929688 -53200.300781 136523.250000 +v -42878.878906 -52539.851562 141933.140625 +v -45432.187500 -53235.500000 136523.250000 +v -42696.515625 -52574.410156 141933.140625 +v -45063.242188 -53296.863281 136523.250000 +v -42334.281250 -52634.656250 141933.140625 +v -44515.882812 -53368.140625 136523.250000 +v -41796.878906 -52704.640625 141933.140625 +v -44337.480469 -53386.785156 136523.250000 +v -41621.722656 -52722.941406 141933.140625 +v -43794.972656 -53431.324219 136523.250000 +v -41089.085938 -52766.671875 141933.140625 +v -43147.761719 -53472.164062 136523.250000 +v -40453.648438 -52806.769531 141933.140625 +v -39486.722656 -53589.281250 136523.250000 +v -36859.214844 -52921.757812 141933.140625 +v -39353.105469 -53634.632812 136172.437500 +v -34231.703125 -52254.230469 147343.015625 +v -31604.195312 -51586.707031 152752.906250 +v -48516.847656 -49284.882812 120293.601562 +v -48168.921875 -49195.531250 120293.601562 +v -45527.617188 -48638.347656 125703.484375 +v -45869.539062 -48726.160156 125703.484375 +v -49874.089844 -49669.785156 120293.601562 +v -47203.371094 -49104.421875 125703.484375 +v -51224.167969 -50122.335938 120293.601562 +v -48530.156250 -49549.167969 125703.484375 +v -51852.734375 -50359.433594 120293.601562 +v -49147.882812 -49782.175781 125703.484375 +v -52582.316406 -50659.863281 120293.601562 +v -49864.875000 -50077.421875 125703.484375 +v -52901.718750 -50806.750000 120293.601562 +v -50178.769531 -50221.769531 125703.484375 +v -53186.769531 -50946.515625 120293.601562 +v -50458.902344 -50359.128906 125703.484375 +v -54359.226562 -51638.933594 120293.601562 +v -51611.132812 -51039.601562 125703.484375 +v -54896.382812 -52062.800781 120293.601562 +v -52139.019531 -51456.156250 125703.484375 +v -55255.394531 -52396.773438 120293.601562 +v -52491.843750 -51784.367188 125703.484375 +v -55438.875000 -52577.445312 120293.601562 +v -52672.156250 -51961.921875 125703.484375 +v -55610.019531 -52754.507812 120293.601562 +v -52840.347656 -52135.929688 125703.484375 +v -55909.832031 -53115.554688 120293.601562 +v -53134.984375 -52490.746094 125703.484375 +v -56060.648438 -53370.011719 120293.601562 +v -53283.203125 -52740.812500 125703.484375 +v -56095.433594 -53454.996094 120293.601562 +v -53317.386719 -52824.335938 125703.484375 +v -56124.527344 -53538.566406 120293.601562 +v -53345.980469 -52906.460938 125703.484375 +v -56146.019531 -53645.218750 120293.601562 +v -53367.101562 -53011.273438 125703.484375 +v -56143.136719 -53793.117188 120293.601562 +v -53364.265625 -53156.621094 125703.484375 +v -56121.523438 -53932.542969 120293.601562 +v -53343.027344 -53293.644531 125703.484375 +v -56094.750000 -54016.425781 120293.601562 +v -53316.714844 -53376.078125 125703.484375 +v -56054.156250 -54095.695312 120293.601562 +v -53276.820312 -53453.980469 125703.484375 +v -55896.414062 -54326.773438 120293.601562 +v -53121.800781 -53681.070312 125703.484375 +v -55793.347656 -54431.937500 120293.601562 +v -53020.515625 -53784.421875 125703.484375 +v -55638.996094 -54570.753906 120293.601562 +v -52868.820312 -53920.843750 125703.484375 +v -55315.570312 -54778.109375 120293.601562 +v -52550.976562 -54124.621094 125703.484375 +v -54573.343750 -55035.523438 120293.601562 +v -51821.554688 -54377.597656 125703.484375 +v -54378.359375 -55076.464844 120293.601562 +v -51629.933594 -54417.832031 125703.484375 +v -53835.085938 -55181.648438 120293.601562 +v -51096.035156 -54521.199219 125703.484375 +v -53639.207031 -55218.765625 120293.601562 +v -50903.535156 -54557.675781 125703.484375 +v -53250.125000 -55283.480469 120293.601562 +v -50521.164062 -54621.273438 125703.484375 +v -52672.894531 -55358.648438 120293.601562 +v -49953.890625 -54695.148438 125703.484375 +v -52484.753906 -55378.308594 120293.601562 +v -49768.996094 -54714.464844 125703.484375 +v -51912.632812 -55425.281250 120293.601562 +v -49206.746094 -54760.628906 125703.484375 +v -51230.101562 -55468.347656 120293.601562 +v -48535.988281 -54802.953125 125703.484375 +v -44741.742188 -54924.332031 125703.484375 +v -47369.250000 -55591.859375 120293.601562 +v -44671.742188 -54957.472656 125446.601562 +v -42114.230469 -54256.808594 131113.359375 +v 13803.596680 -40402.261719 243370.859375 +v 2553.427246 -42908.875000 223081.390625 +v -949.918457 -43798.910156 215868.218750 +v -4453.264160 -44688.941406 208655.031250 +v -3634.108643 -43713.039062 215868.218750 +v 24256.587891 -37796.195312 264450.875000 +v 16566.810547 -39348.738281 251934.109375 +v 13063.464844 -40238.773438 244720.921875 +v 9560.119141 -41128.808594 237507.750000 +v 10734.492188 -40164.265625 244720.921875 +v 7142.342285 -41051.460938 237507.750000 +v 10322.771484 -40138.285156 244720.921875 +v 6714.921875 -41024.488281 237507.750000 +v 9977.666992 -40109.953125 244720.921875 +v 6356.656738 -40995.074219 237507.750000 +v 9864.178711 -40098.093750 244720.921875 +v 6238.841797 -40982.761719 237507.750000 +v 9515.977539 -40052.746094 244720.921875 +v 34593.441406 -35217.015625 285296.687500 +v 27076.847656 -36678.636719 273573.656250 +v 23573.501953 -37568.671875 266360.468750 +v 25103.093750 -36615.496094 273573.656250 +v 21510.943359 -37502.687500 266360.468750 +v 24754.169922 -36593.476562 273573.656250 +v 21146.320312 -37479.679688 266360.468750 +v 24461.707031 -36569.464844 273573.656250 +v 20840.697266 -37454.585938 266360.468750 +v 24365.529297 -36559.414062 273573.656250 +v 20740.191406 -37444.082031 266360.468750 +v 24070.435547 -36520.984375 273573.656250 +v 20431.822266 -37403.925781 266360.468750 +v 23871.529297 -36487.898438 273573.656250 +v 20223.964844 -37369.351562 266360.468750 +v 23771.392578 -36468.921875 273573.656250 +v 20119.322266 -37349.523438 266360.468750 +v 23493.662109 -36415.152344 273573.656250 +v 19829.095703 -37293.332031 266360.468750 +v 23393.982422 -36394.222656 273573.656250 +v 30580.193359 -35788.605469 280786.812500 +v 28695.244141 -35728.300781 280786.812500 +v 27990.867188 -35674.742188 280786.812500 +v 28082.716797 -35684.339844 280786.812500 +v 28362.019531 -35707.273438 280786.812500 +v 27519.093750 -35606.445312 280786.812500 +v 27709.050781 -35638.042969 280786.812500 +v 27158.228516 -35536.972656 280786.812500 +v 27423.460938 -35588.324219 280786.812500 +v 26700.677734 -35391.304688 280786.812500 +v 27063.033203 -35516.984375 280786.812500 +v 6056.772949 -42018.839844 230294.578125 +v 3550.191895 -41938.652344 230294.578125 +v 3107.072266 -41910.691406 230294.578125 +v 2735.646973 -41880.195312 230294.578125 +v 20070.156250 -38458.707031 259147.281250 +v 26668.035156 -33408.714844 273573.656250 +v 23146.296875 -34151.625000 266360.468750 +v 26490.167969 -33454.394531 273573.656250 +v 22960.427734 -34199.359375 266360.468750 +v 19430.685547 -34944.324219 259147.281250 +v 24411.830078 -34157.320312 273573.656250 +v 20788.576172 -34933.910156 266360.468750 +v 17165.322266 -35710.500000 259147.281250 +v 13542.069336 -36487.089844 251934.109375 +v 9918.815430 -37263.679688 244720.921875 +v 6295.561035 -38040.269531 237507.750000 +v 2672.306885 -38816.859375 230294.578125 +v -950.947021 -39593.453125 223081.390625 +v -4574.201172 -40370.042969 215868.218750 +v -8197.455078 -41146.632812 208655.031250 +v -11820.708984 -41923.222656 201441.859375 +v -15443.962891 -42699.812500 194228.671875 +v -19067.216797 -43476.402344 187015.500000 +v 23503.443359 -34657.847656 273573.656250 +v 19839.318359 -35456.957031 266360.468750 +v 16175.193359 -36256.066406 259147.281250 +v 12511.067383 -37055.175781 251934.109375 +v 8846.941406 -37854.289062 244720.921875 +v 5182.815918 -38653.398438 237507.750000 +v 1518.690430 -39452.507812 230294.578125 +v -2145.435303 -40251.617188 223081.390625 +v -5809.561035 -41050.726562 215868.218750 +v -9473.686523 -41849.835938 208655.031250 +v -13137.812500 -42648.949219 201441.859375 +v -16801.937500 -43448.058594 194228.671875 +v -20466.062500 -44247.167969 187015.500000 +v 23228.839844 -34874.542969 273573.656250 +v 19552.359375 -35683.402344 266360.468750 +v 15875.877930 -36492.261719 259147.281250 +v 12199.396484 -37301.121094 251934.109375 +v 8522.916016 -38109.980469 244720.921875 +v 4846.434570 -38918.839844 237507.750000 +v 1169.953735 -39727.699219 230294.578125 +v -2506.527100 -40536.558594 223081.390625 +v -6183.008301 -41345.417969 215868.218750 +v -9859.489258 -42154.277344 208655.031250 +v -13535.969727 -42963.132812 201441.859375 +v -17212.451172 -43771.992188 194228.671875 +v -20888.931641 -44580.851562 187015.500000 +v 22864.029297 -35228.144531 273573.656250 +v 19171.132812 -36052.917969 266360.468750 +v 15478.236328 -36877.687500 259147.281250 +v 11785.339844 -37702.457031 251934.109375 +v 8092.443359 -38527.226562 244720.921875 +v 4399.546875 -39351.996094 237507.750000 +v 706.650635 -40176.765625 230294.578125 +v -2986.245850 -41001.535156 223081.390625 +v -6679.142090 -41826.304688 215868.218750 +v -10372.039062 -42651.074219 208655.031250 +v -14064.934570 -43475.843750 201441.859375 +v -17757.832031 -44300.613281 194228.671875 +v -21450.728516 -45125.386719 187015.500000 +v 22710.765625 -35412.718750 273573.656250 +v 19010.972656 -36245.792969 266360.468750 +v 15311.180664 -37078.867188 259147.281250 +v 11611.387695 -37911.941406 251934.109375 +v 7911.595215 -38745.015625 244720.921875 +v 4211.802246 -39578.089844 237507.750000 +v 512.009399 -40411.167969 230294.578125 +v -3187.783447 -41244.242188 223081.390625 +v -6887.576172 -42077.316406 215868.218750 +v -10587.369141 -42910.390625 208655.031250 +v -14287.162109 -43743.464844 201441.859375 +v -17986.955078 -44576.539062 194228.671875 +v -21686.748047 -45409.613281 187015.500000 +v 22590.033203 -35683.472656 273573.656250 +v 18884.806641 -36528.734375 266360.468750 +v 15179.581055 -37373.992188 259147.281250 +v 11474.355469 -38219.250000 251934.109375 +v 7769.129395 -39064.507812 244720.921875 +v 4063.903320 -39909.765625 237507.750000 +v 358.677246 -40755.027344 230294.578125 +v -3346.548828 -41600.285156 223081.390625 +v -7051.774902 -42445.542969 215868.218750 +v -10757.000977 -43290.800781 208655.031250 +v -14462.226562 -44136.058594 201441.859375 +v -18167.453125 -44981.316406 194228.671875 +v -21872.679688 -45826.578125 187015.500000 +v 22591.507812 -35759.085938 273573.656250 +v 18886.349609 -36607.746094 266360.468750 +v 15181.189453 -37456.406250 259147.281250 +v 11476.029297 -38305.066406 251934.109375 +v 7770.869629 -39153.726562 244720.921875 +v 4065.710205 -40002.386719 237507.750000 +v 360.550385 -40851.046875 230294.578125 +v -3344.609375 -41699.707031 223081.390625 +v -7049.769043 -42548.367188 215868.218750 +v -10754.928711 -43397.027344 208655.031250 +v -14460.088867 -44245.687500 201441.859375 +v -18165.248047 -45094.347656 194228.671875 +v -21870.408203 -45943.007812 187015.500000 +v 22602.556641 -35830.359375 273573.656250 +v 18897.894531 -36682.226562 266360.468750 +v 15193.231445 -37534.097656 259147.281250 +v 11488.568359 -38385.964844 251934.109375 +v 7783.906250 -39237.832031 244720.921875 +v 4079.243408 -40089.699219 237507.750000 +v 374.580688 -40941.566406 230294.578125 +v -3330.082031 -41793.433594 223081.390625 +v -7034.744629 -42645.300781 215868.218750 +v -10739.407227 -43497.167969 208655.031250 +v -14444.070312 -44349.035156 201441.859375 +v -18148.732422 -45200.902344 194228.671875 +v -21853.394531 -46052.769531 187015.500000 +v 22717.626953 -36031.886719 273573.656250 +v 22770.312500 -36085.648438 273573.656250 +v 18912.197266 -36727.039062 266360.468750 +v 15230.767578 -37625.000000 259147.281250 +v 11619.173828 -38614.695312 251934.109375 +v 7981.857910 -39539.066406 244720.921875 +v 4381.403809 -40489.351562 237507.750000 +v 897.813293 -41490.523438 230294.578125 +v -2289.371094 -42534.886719 223081.390625 +v -5822.863281 -43440.589844 215868.218750 +v -9097.234375 -44394.312500 208655.031250 +v -12604.112305 -45302.425781 201441.859375 +v -15954.324219 -46233.335938 194228.671875 +v -19138.521484 -47175.453125 187015.500000 +v 19073.199219 -36949.003906 266360.468750 +v 19155.656250 -37023.160156 266360.468750 +v 17918.792969 -38389.878906 259147.281250 +v 17538.470703 -38365.882812 259147.281250 +v 14326.642578 -39277.074219 251934.109375 +v 13930.621094 -39252.082031 251934.109375 +v 17219.685547 -38339.707031 259147.281250 +v 13598.676758 -39224.828125 251934.109375 +v 17114.853516 -38328.753906 259147.281250 +v 13489.516602 -39213.421875 251934.109375 +v 16793.207031 -38286.867188 259147.281250 +v 13154.591797 -39169.808594 251934.109375 +v 16576.400391 -38250.804688 259147.281250 +v 12928.836914 -39132.257812 251934.109375 +v 16467.253906 -38230.121094 259147.281250 +v 15642.306641 -38005.257812 259147.281250 +v 15462.092773 -37889.707031 259147.281250 +v 11956.183594 -38876.574219 251934.109375 +v 15208.150391 -37580.835938 259147.281250 +v 11504.103516 -38434.632812 251934.109375 +v 7800.057129 -39288.429688 244720.921875 +v 4096.010254 -40142.226562 237507.750000 +v 391.963440 -40996.023438 230294.578125 +v -3312.083252 -41849.820312 223081.390625 +v -7016.129883 -42703.617188 215868.218750 +v -10720.176758 -43557.414062 208655.031250 +v -14424.223633 -44411.210938 201441.859375 +v -18128.269531 -45265.007812 194228.671875 +v -21832.316406 -46118.804688 187015.500000 +v 11527.654297 -38480.621094 251934.109375 +v 7919.689453 -39475.628906 244720.921875 +v 4284.744629 -40402.421875 237507.750000 +v 687.841003 -41355.898438 230294.578125 +v -2788.310059 -42361.839844 223081.390625 +v -5958.421875 -43412.125000 215868.218750 +v -9487.428711 -44318.769531 208655.031250 +v -12749.303711 -45274.914062 201441.859375 +v -16251.675781 -46183.878906 194228.671875 +v -19592.939453 -47116.277344 187015.500000 +v 12386.831055 -39025.933594 251934.109375 +v 8835.399414 -39927.871094 244720.921875 +v 5511.043945 -40871.917969 237507.750000 +v 1986.144531 -41776.613281 230294.578125 +v -1399.866089 -42701.570312 223081.390625 +v -4637.170898 -43636.773438 215868.218750 +v -8127.382812 -44535.562500 208655.031250 +v -11324.326172 -45455.500000 201441.859375 +v -14410.559570 -46374.617188 194228.671875 +v 7824.541504 -39336.242188 244720.921875 +v 4121.428223 -40191.863281 237507.750000 +v 418.315491 -41047.484375 230294.578125 +v -3284.797363 -41903.105469 223081.390625 +v -6987.910156 -42758.722656 215868.218750 +v -10691.023438 -43614.343750 208655.031250 +v -14394.135742 -44469.964844 201441.859375 +v -18097.250000 -45325.585938 194228.671875 +v -21800.361328 -46181.207031 187015.500000 +v 8717.780273 -39903.171875 244720.921875 +v 5170.833984 -40806.050781 237507.750000 +v 4220.205566 -40336.566406 237507.750000 +v 520.721069 -41197.500000 230294.578125 +v -3178.763184 -42058.437500 223081.390625 +v -6878.247559 -42919.371094 215868.218750 +v -10577.731445 -43780.308594 208655.031250 +v -14277.215820 -44641.246094 201441.859375 +v -17976.701172 -45502.179688 194228.671875 +v -21676.183594 -46363.117188 187015.500000 +v 5537.600586 -37866.167969 230294.578125 +v 1781.975342 -38669.144531 223081.390625 +v 587.631042 -41265.777344 230294.578125 +v -3005.721924 -42222.449219 223081.390625 +v -6474.433594 -43233.160156 215868.218750 +v -9627.472656 -44289.363281 208655.031250 +v -13151.995117 -45196.949219 201441.859375 +v -16401.373047 -46155.511719 194228.671875 +v -19899.240234 -47065.332031 187015.500000 +v 1858.974487 -41752.515625 230294.578125 +v -1661.419556 -42658.066406 223081.390625 +v -5038.480469 -43584.511719 215868.218750 +v -8262.508789 -44521.441406 208655.031250 +v -11748.392578 -45420.683594 201441.859375 +v -14932.175781 -46341.703125 194228.671875 +v -18002.708984 -47261.812500 187015.500000 +v -41.958431 -42825.847656 223081.390625 +v -500.777222 -42796.894531 223081.390625 +v -3109.482422 -42129.132812 223081.390625 +v -6699.285156 -43088.996094 215868.218750 +v -6806.595703 -42992.488281 215868.218750 +v -10392.847656 -43955.542969 208655.031250 +v -10503.708984 -43855.839844 208655.031250 +v -14086.411133 -44822.089844 201441.859375 +v -14200.823242 -44719.195312 201441.859375 +v -17779.974609 -45688.640625 194228.671875 +v -17897.935547 -45582.550781 194228.671875 +v -21473.537109 -46555.187500 187015.500000 +v -21595.048828 -46445.906250 187015.500000 +v -10160.556641 -44104.476562 208655.031250 +v -13296.523438 -45166.601562 201441.859375 +v -16816.560547 -46075.128906 194228.671875 +v -20053.443359 -47036.109375 187015.500000 +v -13846.680664 -44975.792969 201441.859375 +v -16965.574219 -46043.835938 194228.671875 +v -17532.804688 -45847.109375 194228.671875 +v -20634.625000 -46921.074219 187015.500000 +v -21218.927734 -46718.425781 187015.500000 +v -15866.734375 -42393.964844 187015.500000 +v -20481.126953 -46953.304688 187015.500000 +v -35065.421875 -51475.980469 152752.906250 +v -35677.312500 -51437.367188 152752.906250 +v -37759.535156 -52141.375000 147343.015625 +v -38383.199219 -52102.019531 147343.015625 +v -36190.210938 -51395.257812 152752.906250 +v -38905.964844 -52059.101562 147343.015625 +v -36358.875000 -51377.632812 152752.906250 +v -39077.878906 -52041.136719 147343.015625 +v -36876.359375 -51310.246094 152752.906250 +v -39605.320312 -51972.453125 147343.015625 +v -37225.167969 -51252.230469 152752.906250 +v -39960.843750 -51913.320312 147343.015625 +v -37400.773438 -51218.953125 152752.906250 +v -40139.828125 -51879.402344 147343.015625 +v -37887.812500 -51124.660156 152752.906250 +v -40636.238281 -51783.292969 147343.015625 +v -38062.613281 -51087.957031 152752.906250 +v -40814.402344 -51745.882812 147343.015625 +v -38728.011719 -50857.183594 152752.906250 +v -41492.605469 -51510.671875 147343.015625 +v -39017.960938 -50671.289062 152752.906250 +v -41788.132812 -51321.199219 147343.015625 +v -39156.339844 -50546.839844 152752.906250 +v -41929.175781 -51194.359375 147343.015625 +v -39248.734375 -50452.562500 152752.906250 +v -42023.347656 -51098.261719 147343.015625 +v -39390.148438 -50245.402344 152752.906250 +v -42167.484375 -50887.121094 147343.015625 +v -39426.539062 -50174.339844 152752.906250 +v -42204.574219 -50814.687500 147343.015625 +v -39450.542969 -50099.140625 152752.906250 +v -42229.039062 -50738.042969 147343.015625 +v -39469.917969 -49974.144531 152752.906250 +v -42248.785156 -50610.640625 147343.015625 +v -39472.503906 -49841.554688 152752.906250 +v -42251.421875 -50475.500000 147343.015625 +v -39453.238281 -49745.941406 152752.906250 +v -42231.785156 -50378.046875 147343.015625 +v -39427.152344 -49671.023438 152752.906250 +v -42205.199219 -50301.687500 147343.015625 +v -39395.968750 -49594.835938 152752.906250 +v -42173.417969 -50224.031250 147343.015625 +v -39260.761719 -49366.718750 152752.906250 +v -42035.609375 -49991.523438 147343.015625 +v -38991.984375 -49043.042969 152752.906250 +v -41761.656250 -49661.617188 147343.015625 +v -38838.558594 -48884.308594 152752.906250 +v -41605.277344 -49499.832031 147343.015625 +v -38674.070312 -48722.339844 152752.906250 +v -41437.625000 -49334.746094 147343.015625 +v -38352.218750 -48422.933594 152752.906250 +v -41109.578125 -49029.578125 147343.015625 +v -37870.660156 -48042.941406 152752.906250 +v -40618.753906 -48642.273438 147343.015625 +v -36819.562500 -47422.187500 152752.906250 +v -39547.429688 -48009.578125 147343.015625 +v -36564.015625 -47296.886719 152752.906250 +v -39286.964844 -47881.863281 147343.015625 +v -36277.671875 -47165.207031 152752.906250 +v -38995.113281 -47747.648438 147343.015625 +v -35623.613281 -46895.875000 152752.906250 +v -38328.464844 -47473.132812 147343.015625 +v -35060.105469 -46683.316406 152752.906250 +v -37754.113281 -47256.488281 147343.015625 +v -33849.769531 -46277.609375 152752.906250 +v -36520.488281 -46842.972656 147343.015625 +v -32633.007812 -45932.542969 152752.906250 +v -35280.316406 -46491.265625 147343.015625 +v -34962.398438 -46409.621094 147343.015625 +v -45841.875000 -54137.558594 131113.359375 +v -46500.859375 -54095.976562 131113.359375 +v -47053.238281 -54050.625000 131113.359375 +v -47234.886719 -54031.644531 131113.359375 +v -47792.203125 -53959.070312 131113.359375 +v -48167.863281 -53896.589844 131113.359375 +v -48356.984375 -53860.750000 131113.359375 +v -48881.511719 -53759.199219 131113.359375 +v -49069.765625 -53719.667969 131113.359375 +v -49786.382812 -53471.132812 131113.359375 +v -50098.648438 -53270.933594 131113.359375 +v -50247.679688 -53136.906250 131113.359375 +v -50347.187500 -53035.367188 131113.359375 +v -50499.488281 -52812.265625 131113.359375 +v -50538.679688 -52735.730469 131113.359375 +v -50564.531250 -52654.742188 131113.359375 +v -50585.394531 -52520.125000 131113.359375 +v -50588.179688 -52377.332031 131113.359375 +v -50567.429688 -52274.359375 131113.359375 +v -50539.339844 -52193.671875 131113.359375 +v -50505.757812 -52111.617188 131113.359375 +v -50360.140625 -51865.941406 131113.359375 +v -50070.675781 -51517.351562 131113.359375 +v -49905.437500 -51346.402344 131113.359375 +v -49728.289062 -51171.960938 131113.359375 +v -49381.660156 -50849.511719 131113.359375 +v -48863.035156 -50440.269531 131113.359375 +v -47731.031250 -49771.738281 131113.359375 +v -47455.820312 -49636.792969 131113.359375 +v -47147.433594 -49494.976562 131113.359375 +v -46443.027344 -49204.914062 131113.359375 +v -45836.144531 -48975.996094 131113.359375 +v -44532.652344 -48539.058594 131113.359375 +v -43222.234375 -48167.437500 131113.359375 +v 32557.453125 -31565.730469 286860.031250 +v 5325.099121 -53617.296875 -117292.484375 +v 6052.716309 -53784.113281 -117292.484375 +v 5325.099121 -54106.378906 -117292.484375 +v 5829.092773 -54087.867188 -117292.484375 +v 6333.085938 -54069.359375 -117292.484375 +v 6837.079590 -54050.847656 -117292.484375 +v 6644.710938 -54123.699219 -116671.679688 +v -62097.093750 -51714.363281 -92642.046875 +v -74669.359375 -53878.039062 -67288.195312 +v -62097.093750 -59187.457031 -92642.046875 +v -68365.281250 -60860.023438 -80001.304688 +v -74743.515625 -62561.750000 -67138.640625 +v -81032.421875 -54973.792969 -54456.121094 +v -81107.078125 -64259.398438 -54305.578125 +v -87331.242188 -56058.808594 -41753.613281 +v -87331.242188 -65919.734375 -41753.613281 +v -90660.515625 -57118.375000 -41753.613281 +v -90832.570312 -65768.757812 -41753.613281 +v -93902.820312 -58472.617188 -41753.613281 +v -92635.375000 -65642.039062 -41753.613281 +v -95441.382812 -59347.527344 -41753.613281 +v -94346.906250 -65423.691406 -41753.613281 +v -96822.414062 -60410.296875 -41753.613281 +v -95234.554688 -65258.359375 -41753.613281 +v -96019.976562 -65105.050781 -41753.613281 +v -98069.429688 -61668.062500 -41753.613281 +v -96678.132812 -64932.722656 -41753.613281 +v -97381.843750 -64646.613281 -41753.613281 +v -97788.484375 -64396.191406 -41753.613281 +v -98340.406250 -62018.398438 -41753.613281 +v -98155.484375 -64072.660156 -41753.613281 +v -98431.179688 -63756.855469 -41753.613281 +v -98558.960938 -62395.183594 -41753.613281 +v -98518.062500 -63611.933594 -41753.613281 +v -98558.632812 -63535.585938 -41753.613281 +v -98688.539062 -63080.917969 -41753.613281 +v -98637.281250 -63363.445312 -41753.613281 +v -98677.164062 -62724.164062 -41753.613281 +v -98697.281250 -62901.398438 -41753.613281 +v -64157.000000 -52408.425781 -93663.500000 +v -65962.335938 -58672.429688 -94558.710938 +v -66188.343750 -53339.976562 -94670.781250 +v -67125.226562 -53938.542969 -95135.359375 +v -67969.390625 -54682.031250 -95553.953125 +v -67804.335938 -58141.445312 -95472.109375 +v -68814.164062 -55716.027344 -95972.851562 +v -68250.718750 -57915.949219 -95693.453125 +v -68472.945312 -57761.667969 -95803.656250 +v -68691.984375 -57545.117188 -95912.265625 +v -68982.359375 -56007.859375 -96056.257812 +v -68917.726562 -57250.269531 -96024.203125 +v -69022.507812 -57048.750000 -96076.164062 +v -69078.945312 -56907.082031 -96104.156250 +v -69111.171875 -56753.804688 -96120.132812 +v -69095.054688 -56312.171875 -96112.140625 +v -69125.156250 -56474.386719 -96127.062500 +v -85353.398438 -64801.050781 -49675.675781 +v -87961.015625 -64652.507812 -49675.675781 +v -89037.515625 -64555.511719 -49675.675781 +v -89954.328125 -64434.605469 -49675.675781 +v -90255.546875 -64386.257812 -49675.675781 +v -85830.710938 -63402.695312 -57597.734375 +v -86119.382812 -63356.359375 -57597.734375 +v -81707.085938 -62370.781250 -65519.796875 +v -81983.218750 -62326.457031 -65519.796875 +v -77583.460938 -61338.867188 -73441.859375 +v -77847.054688 -61296.558594 -73441.859375 +v -73647.398438 -60353.890625 -81003.593750 +v -73899.023438 -60313.500000 -81003.593750 +v -69711.328125 -59368.910156 -88565.328125 +v -69950.984375 -59330.441406 -88565.328125 +v -70353.804688 -59256.882812 -88565.328125 +v -70946.632812 -59142.148438 -88565.328125 +v -71144.890625 -59103.144531 -88565.328125 +v -75152.562500 -60074.847656 -81003.593750 +v -76146.125000 -59767.257812 -81003.593750 +v -80201.062500 -60724.332031 -73441.859375 +v -80538.117188 -60551.707031 -73441.859375 +v -84802.304688 -61546.171875 -65519.796875 +v -85083.750000 -61338.375000 -65519.796875 +v -89360.726562 -62323.402344 -57597.734375 +v -89575.054688 -62127.316406 -57597.734375 +v -93861.343750 -63103.824219 -49675.675781 +v -94006.078125 -62954.468750 -49675.675781 +v -90761.835938 -64293.800781 -49675.675781 +v -91506.953125 -64149.597656 -49675.675781 +v -91756.132812 -64100.574219 -49675.675781 +v -92945.523438 -63732.367188 -49675.675781 +v -93330.687500 -63535.105469 -49675.675781 +v -93637.695312 -63308.433594 -49675.675781 +v -94181.304688 -62717.375000 -49675.675781 +v -94235.593750 -62619.464844 -49675.675781 +v -94288.898438 -62517.500000 -49675.675781 +v -94337.109375 -62395.898438 -49675.675781 +v -94389.148438 -61986.375000 -49675.675781 +v -94370.179688 -61803.832031 -49675.675781 +v -94332.429688 -61682.660156 -49675.675781 +v -94304.390625 -61603.351562 -49675.675781 +v -94230.007812 -61432.164062 -49675.675781 +v -89999.664062 -60689.312500 -57597.734375 +v -89928.375000 -60525.250000 -57597.734375 +v -85694.937500 -59775.269531 -65519.796875 +v -85626.742188 -59618.335938 -65519.796875 +v -81390.203125 -58861.230469 -73441.859375 +v -81325.109375 -58711.421875 -73441.859375 +v -77281.273438 -57988.761719 -81003.593750 +v -77219.132812 -57845.757812 -81003.593750 +v -73172.335938 -57116.292969 -88565.328125 +v -73113.156250 -56980.093750 -88565.328125 +v -72834.484375 -56557.933594 -88565.328125 +v -72480.640625 -56158.937500 -88565.328125 +v -72336.609375 -56013.113281 -88565.328125 +v -76403.796875 -56830.476562 -81003.593750 +v -76046.578125 -56482.980469 -81003.593750 +v -80096.781250 -57283.812500 -73441.859375 +v -79576.117188 -56818.386719 -73441.859375 +v -83794.539062 -57635.242188 -65519.796875 +v -83460.203125 -57370.937500 -65519.796875 +v -87663.445312 -58175.789062 -57597.734375 +v -85996.773438 -57136.199219 -57597.734375 +v -90127.609375 -57895.890625 -49675.675781 +v -89899.648438 -57777.687500 -49675.675781 +v -89292.007812 -57479.343750 -49675.675781 +v -88965.179688 -57328.765625 -49675.675781 +v -85195.953125 -56736.996094 -57597.734375 +v -84882.734375 -56592.687500 -57597.734375 +v -81099.906250 -55994.648438 -65519.796875 +v -80800.289062 -55856.605469 -65519.796875 +v -77003.859375 -55252.296875 -73441.859375 +v -76717.851562 -55120.527344 -73441.859375 +v -73094.109375 -54543.714844 -81003.593750 +v -72821.093750 -54417.925781 -81003.593750 +v -69184.367188 -53835.128906 -88565.328125 +v -68924.335938 -53715.328125 -88565.328125 +v -68059.390625 -53354.457031 -88565.328125 +v -67092.085938 -52989.152344 -88565.328125 +v -66661.101562 -52836.187500 -88565.328125 +v -70444.820312 -53494.875000 -81003.593750 +v -69582.296875 -53208.812500 -81003.593750 +v -73324.984375 -53853.894531 -73441.859375 +v -73030.945312 -53762.292969 -73441.859375 +v -76937.984375 -54433.757812 -65519.796875 +v -80845.023438 -55105.218750 -57597.734375 +v -84752.070312 -55776.683594 -49675.675781 +v -85088.070312 -55881.355469 -49675.675781 +v -86120.570312 -56223.796875 -49675.675781 +v -86662.265625 -56416.054688 -49675.675781 +v -82675.703125 -55717.976562 -57597.734375 +v -83840.867188 -56158.003906 -57597.734375 +v -79803.687500 -55440.804688 -65519.796875 +v -93879.750000 -60901.558594 -49675.675781 +v -89592.695312 -60016.734375 -57597.734375 +v -85305.648438 -59131.914062 -65519.796875 +v -81018.601562 -58247.089844 -73441.859375 +v -76926.546875 -57402.511719 -81003.593750 +v -93435.007812 -60400.070312 -49675.675781 +v -89166.476562 -59536.125000 -57597.734375 +v -84897.945312 -58672.179688 -65519.796875 +v -80629.406250 -57808.234375 -73441.859375 +v -76555.023438 -56983.585938 -81003.593750 +v -93253.976562 -60216.785156 -49675.675781 +v -92826.351562 -59800.796875 -49675.675781 +v -92231.382812 -59268.945312 -49675.675781 +v -88583.164062 -58961.804688 -57597.734375 +v -88012.960938 -58452.093750 -57597.734375 +v -84339.968750 -58122.808594 -65519.796875 +v -91866.679688 -58980.636719 -49675.675781 +v -87878.046875 -56875.199219 -49675.675781 +v -69301.609375 -53121.371094 -81003.593750 +v -65572.281250 -52480.449219 -88565.328125 +v -65839.609375 -52563.730469 -88565.328125 +v -69849.195312 -54166.546875 -88565.328125 +v -69667.820312 -54072.503906 -88565.328125 +v -71232.843750 -55029.601562 -88565.328125 +v -73792.148438 -54891.683594 -81003.593750 +v -73601.718750 -54792.941406 -81003.593750 +v -71996.382812 -55682.144531 -88565.328125 +v -71523.007812 -55258.988281 -88565.328125 +v -75549.562500 -56038.687500 -81003.593750 +v -75244.906250 -55797.847656 -81003.593750 +v -79256.968750 -56566.089844 -73441.859375 +v -77735.093750 -55616.820312 -73441.859375 +v -81865.937500 -56376.507812 -65519.796875 +v -81656.953125 -56268.148438 -65519.796875 +v -85778.304688 -57022.917969 -57597.734375 +v -73224.679688 -57275.800781 -88565.328125 +v -73194.648438 -57179.394531 -88565.328125 +v -73239.773438 -57421.035156 -88565.328125 +v -73198.367188 -57746.863281 -88565.328125 +v -73160.007812 -57843.609375 -88565.328125 +v -73117.601562 -57924.734375 -88565.328125 +v -73074.414062 -58002.632812 -88565.328125 +v -77223.796875 -58837.582031 -81003.593750 +v -77178.453125 -58919.371094 -81003.593750 +v -81330.000000 -59750.429688 -73441.859375 +v -81282.492188 -59836.109375 -73441.859375 +v -85631.867188 -60706.773438 -65519.796875 +v -85582.101562 -60796.531250 -65519.796875 +v -89933.726562 -61663.121094 -57597.734375 +v -89881.703125 -61756.953125 -57597.734375 +v -72935.000000 -58191.269531 -88565.328125 +v -77032.078125 -59117.429688 -81003.593750 +v -81129.156250 -60043.589844 -73441.859375 +v -85421.460938 -61013.882812 -65519.796875 +v -89713.773438 -61984.175781 -57597.734375 +v -72819.843750 -58310.101562 -88565.328125 +v -72641.906250 -58472.894531 -88565.328125 +v -72397.640625 -58653.238281 -88565.328125 +v -76724.343750 -59413.121094 -81003.593750 +v -76467.875000 -59602.472656 -81003.593750 +v -80806.781250 -60353.347656 -73441.859375 +v -72091.195312 -58810.187500 -88565.328125 +v -68125.406250 -59542.281250 -88565.328125 +v -68981.890625 -59465.105469 -88565.328125 +v -66050.710938 -59660.464844 -88565.328125 +v -69803.945312 -60660.007812 -81003.593750 +v -73557.171875 -61659.546875 -73441.859375 +v -75839.109375 -61529.554688 -73441.859375 +v -79879.750000 -62570.539062 -65519.796875 +v -80866.601562 -62481.617188 -65519.796875 +v -84952.062500 -63518.562500 -57597.734375 +v -77489.250000 -62706.714844 -65519.796875 +v -83920.382812 -63611.523438 -57597.734375 +v -81421.320312 -63753.882812 -57597.734375 +v -81167.039062 -55205.535156 -57597.734375 +v -77246.007812 -54529.714844 -65519.796875 +v -82156.562500 -55533.722656 -57597.734375 +v -78192.546875 -54843.644531 -65519.796875 +v -74228.531250 -54153.566406 -73441.859375 +v -88992.976562 -59360.472656 -57597.734375 +v -84731.984375 -58504.156250 -65519.796875 +v -80470.984375 -57647.843750 -73441.859375 +v -90026.539062 -60765.316406 -57597.734375 +v -85720.640625 -59847.976562 -65519.796875 +v -81414.742188 -58930.632812 -73441.859375 +v -77304.695312 -58055.011719 -81003.593750 +v -90062.710938 -60881.445312 -57597.734375 +v -85755.242188 -59959.054688 -65519.796875 +v -81447.773438 -59036.667969 -73441.859375 +v -77336.226562 -58156.234375 -81003.593750 +v -90080.890625 -61056.386719 -57597.734375 +v -85772.632812 -60126.398438 -65519.796875 +v -81464.375000 -59196.414062 -73441.859375 +v -77352.078125 -58308.722656 -81003.593750 +v -90031.015625 -61448.863281 -57597.734375 +v -85724.921875 -60501.824219 -65519.796875 +v -81418.835938 -59554.789062 -73441.859375 +v -77308.601562 -58650.828125 -81003.593750 +v -89984.812500 -61565.398438 -57597.734375 +v -85680.726562 -60613.300781 -65519.796875 +v -81376.648438 -59661.199219 -73441.859375 +v -77268.328125 -58752.406250 -81003.593750 +v -89066.492188 -62540.636719 -57597.734375 +v -88697.367188 -62729.687500 -57597.734375 +v -87557.500000 -63082.566406 -57597.734375 +v -87318.687500 -63129.550781 -57597.734375 +v -86604.593750 -63267.750000 -57597.734375 +v -78689.132812 -55019.894531 -65519.796875 +v -75766.507812 -54723.609375 -73441.859375 +v -85288.773438 -61150.804688 -65519.796875 +v -81002.492188 -60174.292969 -73441.859375 +v -76911.164062 -59242.199219 -81003.593750 +v -84449.210938 -61727.011719 -65519.796875 +v -83358.859375 -62064.558594 -65519.796875 +v -83130.429688 -62109.500000 -65519.796875 +v -82447.359375 -62241.699219 -65519.796875 +v -74702.570312 -54321.812500 -73441.859375 +v -70897.328125 -53655.480469 -81003.593750 +v -71912.953125 -54039.035156 -81003.593750 +v -77535.609375 -55513.382812 -73441.859375 +v -79160.226562 -61046.554688 -73441.859375 +v -78942.164062 -61089.453125 -73441.859375 +v -74944.398438 -60115.800781 -81003.593750 +v -78290.117188 -61215.648438 -73441.859375 +v -74321.960938 -60236.265625 -81003.593750 +v -76781.148438 -61444.671875 -73441.859375 +v -72881.515625 -60454.886719 -81003.593750 +v -71982.257812 -60535.917969 -81003.593750 +v 34593.441406 -35217.015625 -285296.687500 +v 34181.593750 -35188.410156 -285612.906250 +v 34593.441406 -31785.013672 -285296.687500 +v 33577.160156 -31939.048828 -286077.031250 +v 33407.527344 -35483.632812 -286207.281250 +v 32060.697266 -32381.277344 -287241.468750 +v 31871.296875 -34909.980469 -287386.906250 +v 31547.007812 -32612.269531 -287635.906250 +v 31072.837891 -33805.414062 -288000.000000 +v 31072.837891 -32903.621094 -288000.000000 +v 32557.453125 -35684.859375 -286860.031250 +v 31072.837891 -34707.203125 -288000.000000 +v 32557.453125 -31565.730469 -286860.031250 +v -52772.378906 -57025.687500 -109110.460938 +v -49909.585938 -56260.078125 -114883.710938 +v -52772.378906 -50027.207031 -109110.460938 +v -44671.742188 -54957.472656 -125446.601562 +v -39353.105469 -53634.632812 -136172.437500 +v -28575.314453 -50953.542969 -157907.453125 +v -39513.386719 -47345.359375 -135849.203125 +v -49909.585938 -49539.171875 -114883.710938 +v -29020.917969 -45132.675781 -157008.828125 +v -17779.986328 -48267.363281 -179677.843750 +v -12439.426758 -46938.160156 -190447.875000 +v -18631.699219 -42943.500000 -177960.234375 +v -7170.898438 -45626.640625 -201072.656250 +v -13459.024414 -41854.304688 -188391.718750 +v -8190.377930 -40745.546875 -199016.718750 +v 13803.596680 -40402.261719 -243370.859375 +v 2491.921143 -38499.972656 -220559.171875 +v 13121.636719 -36269.714844 -241995.578125 +v 24256.587891 -37796.195312 -264450.875000 +v 18417.773438 -35160.574219 -252676.031250 +v 23816.144531 -34031.773438 -263562.656250 +v 29235.933594 -32900.617188 -274492.468750 +v -55842.781250 -50866.054688 -109110.460938 +v -58884.019531 -52066.812500 -109110.460938 +v -57764.292969 -56833.742188 -109110.460938 +v -60287.730469 -52909.246094 -109110.460938 +v -58993.972656 -56696.234375 -109110.460938 +v -60084.933594 -56496.722656 -109110.460938 +v -61504.605469 -54017.953125 -109110.460938 +v -61059.070312 -56216.417969 -109110.460938 +v -61775.679688 -54339.492188 -109110.460938 +v -61451.750000 -55997.476562 -109110.460938 +v -61877.222656 -54486.828125 -109110.460938 +v -61722.160156 -55759.539062 -109110.460938 +v -61911.207031 -55532.722656 -109110.460938 +v -61970.625000 -55426.507812 -109110.460938 +v -62042.828125 -55239.492188 -109110.460938 +v -62014.453125 -55339.281250 -109110.460938 +v -62007.347656 -54742.855469 -109110.460938 +v -62066.441406 -54990.339844 -109110.460938 +v -62054.003906 -54885.160156 -109110.460938 +v -53181.574219 -56172.648438 -114883.710938 +v -56174.074219 -56463.269531 -111997.085938 +v -57514.539062 -56316.734375 -111997.085938 +v -54869.496094 -56071.203125 -114883.710938 +v -56048.808594 -55935.070312 -114883.710938 +v -57717.105469 -56284.218750 -111997.085938 +v -58057.578125 -56222.042969 -111997.085938 +v -58726.226562 -56092.097656 -111997.085938 +v -58558.656250 -56125.066406 -111997.085938 +v -57205.113281 -55719.359375 -114883.710938 +v -59785.082031 -55711.824219 -111997.085938 +v -59526.070312 -55844.480469 -111997.085938 +v -57779.140625 -55559.902344 -114883.710938 +v -59991.542969 -55559.390625 -111997.085938 +v -60141.937500 -55421.792969 -111997.085938 +v -60239.269531 -55321.355469 -111997.085938 +v -58555.605469 -55089.582031 -114883.710938 +v -58697.156250 -54942.796875 -114883.710938 +v -58792.546875 -54808.332031 -114883.710938 +v -60393.609375 -55096.070312 -111997.085938 +v -58857.433594 -54687.777344 -114883.710938 +v -60429.453125 -55027.503906 -111997.085938 +v -60461.875000 -54945.730469 -111997.085938 +v -60496.875000 -54670.332031 -111997.085938 +v -60484.113281 -54547.574219 -111997.085938 +v -60458.730469 -54466.089844 -111997.085938 +v -60439.875000 -54412.757812 -111997.085938 +v -60389.855469 -54297.636719 -111997.085938 +v -58827.789062 -53977.863281 -114883.710938 +v -58643.117188 -53683.707031 -114883.718750 +v -60154.316406 -53940.820312 -111997.085938 +v -59855.238281 -53603.574219 -111997.085938 +v -59733.496094 -53480.320312 -111997.085938 +v -59445.933594 -53200.578125 -111997.085938 +v -58010.250000 -53000.742188 -114883.710938 +v -59045.824219 -52842.914062 -111997.085938 +v -57010.339844 -52171.171875 -114883.710938 +v -58800.570312 -52649.031250 -111997.085938 +v -57631.066406 -51919.546875 -111997.085938 +v -56118.277344 -51233.144531 -111997.085938 +v -56849.347656 -51538.160156 -111997.085938 +v -57069.132812 -51639.421875 -111997.085938 +v -55922.656250 -51537.945312 -114883.710938 +v -57477.765625 -51840.054688 -111997.085938 +v -54016.093750 -50494.402344 -111997.085938 +v -54242.050781 -50564.792969 -111997.085938 +v -54936.402344 -50795.085938 -111997.085938 +v -53123.265625 -50418.687500 -114883.710938 +v -55300.683594 -50924.378906 -111997.085938 +v -54771.074219 -51020.976562 -114883.710938 +v -58912.539062 -54203.148438 -114883.710938 +v -58925.160156 -54281.890625 -114883.710938 +v -58925.488281 -54384.871094 -114883.710938 +v -58897.039062 -54584.269531 -114883.710938 +v -58229.542969 -55350.539062 -114883.710938 +v 32422.535156 -32224.605469 -286415.687500 +v 31300.091797 -32620.474609 -286685.468750 +v 30752.341797 -32874.109375 -286775.156250 +v 30229.402344 -33188.296875 -286803.468750 +v 28883.339844 -34017.820312 -286860.031250 +v 29756.021484 -33572.613281 -286748.000000 +v 29535.464844 -33781.078125 -286698.906250 +v 29334.419922 -34017.820312 -286617.937500 +v 31067.255859 -32754.183594 -287017.375000 +v 30556.058594 -33009.734375 -286948.656250 +v 30313.220703 -33163.585938 -286942.000000 +v 30094.333984 -33338.222656 -286965.125000 +v 29853.474609 -33589.542969 -287037.593750 +v 29746.333984 -33722.339844 -287085.937500 +v 29669.285156 -33848.246094 -287143.968750 +v 29636.802734 -33943.296875 -287200.312500 +v 29631.767578 -34017.820312 -287254.250000 +v 27076.847656 -36678.636719 -273573.656250 +v 30580.193359 -35788.605469 -280786.812500 +v 32513.900391 -35104.382812 -286232.500000 +v 20070.156250 -38458.707031 -259147.281250 +v 23573.501953 -37568.671875 -266360.468750 +v 21510.943359 -37502.687500 -266360.468750 +v 25103.093750 -36615.496094 -273573.656250 +v 21146.320312 -37479.679688 -266360.468750 +v 24754.169922 -36593.476562 -273573.656250 +v 20840.697266 -37454.585938 -266360.468750 +v 24461.707031 -36569.464844 -273573.656250 +v 20740.191406 -37444.082031 -266360.468750 +v 24365.529297 -36559.414062 -273573.656250 +v 20431.822266 -37403.925781 -266360.468750 +v 24070.435547 -36520.984375 -273573.656250 +v 20223.964844 -37369.351562 -266360.468750 +v 23871.529297 -36487.898438 -273573.656250 +v 20119.322266 -37349.523438 -266360.468750 +v 23771.392578 -36468.921875 -273573.656250 +v 19829.095703 -37293.332031 -266360.468750 +v 23493.662109 -36415.152344 -273573.656250 +v 19724.933594 -37271.460938 -266360.468750 +v 23393.982422 -36394.222656 -273573.656250 +v 19328.429688 -37133.937500 -266360.468750 +v 23014.554688 -36262.621094 -273573.656250 +v 19155.656250 -37023.160156 -266360.468750 +v 22849.218750 -36156.613281 -273573.656250 +v 19073.199219 -36949.003906 -266360.468750 +v 22770.312500 -36085.648438 -273573.656250 +v 19018.142578 -36892.820312 -266360.468750 +v 22717.626953 -36031.886719 -273573.656250 +v 18933.880859 -36769.378906 -266360.468750 +v 22636.992188 -35913.761719 -273573.656250 +v 18912.197266 -36727.039062 -266360.468750 +v 22616.244141 -35873.242188 -273573.656250 +v 18897.894531 -36682.226562 -266360.468750 +v 22602.556641 -35830.359375 -273573.656250 +v 18886.349609 -36607.746094 -266360.468750 +v 22591.507812 -35759.085938 -273573.656250 +v 18884.806641 -36528.734375 -266360.468750 +v 22590.033203 -35683.472656 -273573.656250 +v 18896.287109 -36471.761719 -266360.468750 +v 22601.019531 -35628.957031 -273573.656250 +v 18911.832031 -36427.121094 -266360.468750 +v 22615.894531 -35586.238281 -273573.656250 +v 18930.412109 -36381.722656 -266360.468750 +v 22633.673828 -35542.792969 -273573.656250 +v 19010.972656 -36245.792969 -266360.468750 +v 22710.765625 -35412.718750 -273573.656250 +v 19171.132812 -36052.917969 -266360.468750 +v 22864.029297 -35228.144531 -273573.656250 +v 19262.560547 -35958.328125 -266360.468750 +v 22951.519531 -35137.628906 -273573.656250 +v 19360.572266 -35861.812500 -266360.468750 +v 23045.310547 -35045.273438 -273573.656250 +v 19552.359375 -35683.402344 -266360.468750 +v 23228.839844 -34874.542969 -273573.656250 +v 19839.318359 -35456.957031 -266360.468750 +v 23503.443359 -34657.847656 -273573.656250 +v 20465.666016 -35087.046875 -266360.468750 +v 24102.824219 -34303.863281 -273573.656250 +v 20617.949219 -35012.378906 -266360.468750 +v 24248.548828 -34232.410156 -273573.656250 +v 20788.576172 -34933.910156 -266360.468750 +v 24411.830078 -34157.320312 -273573.656250 +v 21178.318359 -34773.417969 -266360.468750 +v 24784.791016 -34003.738281 -273573.656250 +v 21514.111328 -34646.753906 -266360.468750 +v 25106.125000 -33882.527344 -273573.656250 +v 22235.359375 -34404.984375 -266360.468750 +v 25796.320312 -33651.167969 -273573.656250 +v 22960.427734 -34199.359375 -266360.468750 +v 26490.167969 -33454.394531 -273573.656250 +v 23146.296875 -34151.625000 -266360.468750 +v 26668.035156 -33408.714844 -273573.656250 +v 24383.580078 -33881.320312 -266360.468750 +v 27852.046875 -33150.050781 -273573.656250 +v 9560.119141 -41128.808594 -237507.750000 +v 13063.464844 -40238.773438 -244720.921875 +v 16566.810547 -39348.738281 -251934.109375 +v 10734.492188 -40164.265625 -244720.921875 +v 14326.642578 -39277.074219 -251934.109375 +v 10322.771484 -40138.285156 -244720.921875 +v 13930.621094 -39252.082031 -251934.109375 +v 9977.666992 -40109.953125 -244720.921875 +v 13598.676758 -39224.828125 -251934.109375 +v 9864.178711 -40098.093750 -244720.921875 +v 13489.516602 -39213.421875 -251934.109375 +v 9515.977539 -40052.746094 -244720.921875 +v 13154.591797 -39169.808594 -251934.109375 +v 9281.272461 -40013.710938 -244720.921875 +v 12928.836914 -39132.257812 -251934.109375 +v 9163.113281 -39991.320312 -244720.921875 +v 12815.183594 -39110.718750 -251934.109375 +v 8835.399414 -39927.871094 -244720.921875 +v 12499.964844 -39049.691406 -251934.109375 +v 8717.780273 -39903.171875 -244720.921875 +v 12386.831055 -39025.933594 -251934.109375 +v 8270.060547 -39747.890625 -244720.921875 +v 11956.183594 -38876.574219 -251934.109375 +v 8074.966797 -39622.804688 -244720.921875 +v 11768.530273 -38756.257812 -251934.109375 +v 7981.857910 -39539.066406 -244720.921875 +v 11678.971680 -38675.710938 -251934.109375 +v 7919.689453 -39475.628906 -244720.921875 +v 11619.173828 -38614.695312 -251934.109375 +v 7824.541504 -39336.242188 -244720.921875 +v 11527.654297 -38480.621094 -251934.109375 +v 7800.057129 -39288.429688 -244720.921875 +v 11504.103516 -38434.632812 -251934.109375 +v 7783.906250 -39237.832031 -244720.921875 +v 11488.568359 -38385.964844 -251934.109375 +v 7770.869629 -39153.726562 -244720.921875 +v 11476.029297 -38305.066406 -251934.109375 +v 7769.129395 -39064.507812 -244720.921875 +v 11474.355469 -38219.250000 -251934.109375 +v 7782.092285 -39000.175781 -244720.921875 +v 11486.824219 -38157.371094 -251934.109375 +v 7799.645508 -38949.769531 -244720.921875 +v 11503.708008 -38108.886719 -251934.109375 +v 7820.624512 -38898.503906 -244720.921875 +v 11523.886719 -38059.578125 -251934.109375 +v 7911.595215 -38745.015625 -244720.921875 +v 11611.387695 -37911.941406 -251934.109375 +v 8092.443359 -38527.226562 -244720.921875 +v 11785.339844 -37702.457031 -251934.109375 +v 8195.680664 -38420.417969 -244720.921875 +v 11884.639648 -37599.722656 -251934.109375 +v 8306.354492 -38311.437500 -244720.921875 +v 11991.093750 -37494.894531 -251934.109375 +v 8522.916016 -38109.980469 -244720.921875 +v 12199.396484 -37301.121094 -251934.109375 +v 8846.941406 -37854.289062 -244720.921875 +v 12511.067383 -37055.175781 -251934.109375 +v 9554.194336 -37436.597656 -244720.921875 +v 13191.351562 -36653.414062 -251934.109375 +v 9726.145508 -37352.285156 -244720.921875 +v 13356.746094 -36572.316406 -251934.109375 +v 9918.815430 -37263.679688 -244720.921875 +v 13542.069336 -36487.089844 -251934.109375 +v 10358.903320 -37082.457031 -244720.921875 +v 13965.375000 -36312.777344 -251934.109375 +v 10738.069336 -36939.433594 -244720.921875 +v 14330.083008 -36175.207031 -251934.109375 +v 11552.477539 -36666.437500 -244720.921875 +v 15113.438477 -35912.621094 -251934.109375 +v 12371.201172 -36434.253906 -244720.921875 +v 15900.943359 -35689.289062 -251934.109375 +v 12581.079102 -36380.351562 -244720.921875 +v 16102.818359 -35637.441406 -251934.109375 +v 13978.178711 -36075.136719 -244720.921875 +v 17446.646484 -35343.863281 -251934.109375 +v 20915.113281 -34612.593750 -259147.281250 +v -11459.956055 -46469.011719 -194228.671875 +v -7956.610352 -45578.976562 -201441.859375 +v -4453.264160 -44688.941406 -208655.031250 +v -10818.409180 -45487.425781 -201441.859375 +v -7226.258789 -44600.234375 -208655.031250 +v -11324.326172 -45455.500000 -201441.859375 +v -7716.476562 -44569.300781 -208655.031250 +v -11748.392578 -45420.683594 -201441.859375 +v -8127.382812 -44535.562500 -208655.031250 +v -11887.845703 -45406.113281 -201441.859375 +v -8262.508789 -44521.441406 -208655.031250 +v -12315.709961 -45350.394531 -201441.859375 +v -8677.095703 -44467.453125 -208655.031250 +v -12604.112305 -45302.425781 -201441.859375 +v -8956.547852 -44420.972656 -208655.031250 +v -12749.303711 -45274.914062 -201441.859375 +v -9097.234375 -44394.312500 -208655.031250 +v -13151.995117 -45196.949219 -201441.859375 +v -9487.428711 -44318.769531 -208655.031250 +v -13296.523438 -45166.601562 -201441.859375 +v -9627.472656 -44289.363281 -208655.031250 +v -13846.680664 -44975.792969 -201441.859375 +v -10160.556641 -44104.476562 -208655.031250 +v -14086.411133 -44822.089844 -201441.859375 +v -10392.847656 -43955.542969 -208655.031250 +v -14200.823242 -44719.195312 -201441.859375 +v -10503.708984 -43855.839844 -208655.031250 +v -14277.215820 -44641.246094 -201441.859375 +v -10577.731445 -43780.308594 -208655.031250 +v -14394.135742 -44469.964844 -201441.859375 +v -10691.023438 -43614.343750 -208655.031250 +v -14424.223633 -44411.210938 -201441.859375 +v -10720.176758 -43557.414062 -208655.031250 +v -14444.070312 -44349.035156 -201441.859375 +v -10739.407227 -43497.167969 -208655.031250 +v -14460.088867 -44245.687500 -201441.859375 +v -10754.928711 -43397.027344 -208655.031250 +v -14462.226562 -44136.058594 -201441.859375 +v -10757.000977 -43290.800781 -208655.031250 +v -14446.297852 -44057.007812 -201441.859375 +v -10741.566406 -43214.203125 -208655.031250 +v -14424.729492 -43995.066406 -201441.859375 +v -10720.666992 -43154.183594 -208655.031250 +v -14398.949219 -43932.070312 -201441.859375 +v -10695.687500 -43093.144531 -208655.031250 +v -14287.162109 -43743.464844 -201441.859375 +v -10587.369141 -42910.390625 -208655.031250 +v -14064.934570 -43475.843750 -201441.859375 +v -10372.039062 -42651.074219 -208655.031250 +v -13938.078125 -43344.601562 -201441.859375 +v -10249.118164 -42523.906250 -208655.031250 +v -13802.081055 -43210.683594 -201441.859375 +v -10117.341797 -42394.144531 -208655.031250 +v -13535.969727 -42963.132812 -201441.859375 +v -9859.489258 -42154.277344 -208655.031250 +v -13137.812500 -42648.949219 -201441.859375 +v -9473.686523 -41849.835938 -208655.031250 +v -12268.749023 -42135.699219 -201441.859375 +v -8631.591797 -41352.515625 -208655.031250 +v -12057.459961 -42032.097656 -201441.859375 +v -8426.859375 -41252.128906 -208655.031250 +v -11820.708984 -41923.222656 -201441.859375 +v -8197.455078 -41146.632812 -208655.031250 +v -11279.927734 -41700.535156 -201441.859375 +v -7673.456055 -40930.855469 -208655.031250 +v -10814.012695 -41524.789062 -201441.859375 +v -7221.999023 -40760.566406 -208655.031250 +v -9813.285156 -41189.339844 -201441.859375 +v -6252.324707 -40435.523438 -208655.031250 +v -8807.250000 -40904.035156 -201441.859375 +v -5277.508301 -40159.074219 -208655.031250 +v -8549.356445 -40837.804688 -201441.859375 +v -5027.616699 -40094.898438 -208655.031250 +v 104.308868 -39000.218750 -215868.218750 +v 3572.776123 -38268.949219 -223081.390625 +v 7041.243652 -37537.675781 -230294.578125 +v 5537.600586 -37866.167969 -230294.578125 +v 9059.339844 -37123.261719 -237507.750000 +v 8841.458984 -37179.214844 -237507.750000 +v -14963.301758 -47359.042969 -187015.500000 +v -18466.648438 -48249.078125 -179802.328125 +v -21969.994141 -49139.113281 -172589.140625 +v -25187.009766 -49036.199219 -172589.140625 +v -28779.160156 -49923.390625 -165375.968750 +v -29363.574219 -49886.515625 -165375.968750 +v -32971.421875 -50772.714844 -158162.781250 +v -33474.453125 -50731.417969 -158162.781250 +v -36190.210938 -51395.257812 -152752.906250 +v -36358.875000 -51377.632812 -152752.906250 +v -39077.878906 -52041.136719 -147343.015625 +v -39605.320312 -51972.453125 -147343.015625 +v -42334.281250 -52634.656250 -141933.140625 +v -42696.515625 -52574.410156 -141933.140625 +v -45432.187500 -53235.500000 -136523.250000 +v -45617.929688 -53200.300781 -136523.250000 +v -48356.984375 -53860.750000 -131113.359375 +v -48881.511719 -53759.199219 -131113.359375 +v -51629.933594 -54417.832031 -125703.484375 +v -51821.554688 -54377.597656 -125703.484375 +v -54573.343750 -55035.523438 -120293.601562 +v -55315.570312 -54778.109375 -120293.601562 +v -25473.339844 -50029.144531 -165375.968750 +v -32371.310547 -50810.585938 -158162.781250 +v -35677.312500 -51437.367188 -152752.906250 +v -38905.964844 -52059.101562 -147343.015625 +v -41796.878906 -52704.640625 -141933.140625 +v -45063.242188 -53296.863281 -136523.250000 +v -48167.863281 -53896.589844 -131113.359375 +v -51096.035156 -54521.199219 -125703.484375 +v -54378.359375 -55076.464844 -120293.601562 +v -31604.195312 -51586.707031 -152752.906250 +v -28976.685547 -50919.179688 -158162.781250 +v -42114.230469 -54256.808594 -131113.359375 +v -39486.722656 -53589.281250 -136523.250000 +v -36859.214844 -52921.757812 -141933.140625 +v -43147.761719 -53472.164062 -136523.250000 +v -40453.648438 -52806.769531 -141933.140625 +v -43794.972656 -53431.324219 -136523.250000 +v -41089.085938 -52766.671875 -141933.140625 +v -44337.480469 -53386.785156 -136523.250000 +v -41621.722656 -52722.941406 -141933.140625 +v -44515.882812 -53368.140625 -136523.250000 +v -47369.250000 -55591.859375 -120293.601562 +v -44741.742188 -54924.332031 -125703.484375 +v -48535.988281 -54802.953125 -125703.484375 +v -45841.875000 -54137.558594 -131113.359375 +v -49206.746094 -54760.628906 -125703.484375 +v -46500.859375 -54095.976562 -131113.359375 +v -49768.996094 -54714.464844 -125703.484375 +v -47053.238281 -54050.625000 -131113.359375 +v -49953.890625 -54695.148438 -125703.484375 +v -47234.886719 -54031.644531 -131113.359375 +v -50521.164062 -54621.273438 -125703.484375 +v -47792.203125 -53959.070312 -131113.359375 +v -50903.535156 -54557.675781 -125703.484375 +v -51230.101562 -55468.347656 -120293.601562 +v -52672.894531 -55358.648438 -120293.601562 +v -52484.753906 -55378.308594 -120293.601562 +v -51912.632812 -55425.281250 -120293.601562 +v -53639.207031 -55218.765625 -120293.601562 +v -53250.125000 -55283.480469 -120293.601562 +v -55638.996094 -54570.753906 -120293.601562 +v -55793.347656 -54431.937500 -120293.601562 +v -55896.414062 -54326.773438 -120293.601562 +v -53020.515625 -53784.421875 -125703.484375 +v -53121.800781 -53681.070312 -125703.484375 +v -50247.679688 -53136.906250 -131113.359375 +v -50347.187500 -53035.367188 -131113.359375 +v -47474.843750 -52489.390625 -136523.250000 +v -47572.574219 -52389.667969 -136523.250000 +v -44702.007812 -51841.875000 -141933.140625 +v -44797.960938 -51743.964844 -141933.140625 +v -41929.175781 -51194.359375 -147343.015625 +v -42023.347656 -51098.261719 -147343.015625 +v -39156.339844 -50546.839844 -152752.906250 +v -39248.734375 -50452.562500 -152752.906250 +v -36383.503906 -49899.324219 -158162.781250 +v -36474.121094 -49806.859375 -158162.781250 +v -32686.390625 -49035.968750 -165375.968750 +v -32774.636719 -48945.921875 -165375.968750 +v -28989.277344 -48172.617188 -172589.140625 +v -29075.152344 -48084.988281 -172589.140625 +v -25292.164062 -47309.261719 -179802.328125 +v -25375.667969 -47224.050781 -179802.328125 +v -21595.048828 -46445.906250 -187015.500000 +v -21676.183594 -46363.117188 -187015.500000 +v -17897.935547 -45582.550781 -194228.671875 +v -17976.701172 -45502.179688 -194228.671875 +v -56054.156250 -54095.695312 -120293.601562 +v -56094.750000 -54016.425781 -120293.601562 +v -56121.523438 -53932.542969 -120293.601562 +v -56143.136719 -53793.117188 -120293.601562 +v -53343.027344 -53293.644531 -125703.484375 +v -53364.265625 -53156.621094 -125703.484375 +v -50564.531250 -52654.742188 -131113.359375 +v -50585.394531 -52520.125000 -131113.359375 +v -47786.035156 -52015.843750 -136523.250000 +v -47806.527344 -51883.628906 -136523.250000 +v -45007.535156 -51376.941406 -141933.140625 +v -45027.656250 -51247.136719 -141933.140625 +v -42229.039062 -50738.042969 -147343.015625 +v -42248.785156 -50610.640625 -147343.015625 +v -39450.542969 -50099.140625 -152752.906250 +v -39469.917969 -49974.144531 -152752.906250 +v -36672.046875 -49460.238281 -158162.781250 +v -36691.046875 -49337.648438 -158162.781250 +v -32967.382812 -48608.371094 -165375.968750 +v -32985.886719 -48488.988281 -165375.968750 +v -29262.720703 -47756.503906 -172589.140625 +v -29280.726562 -47640.328125 -172589.140625 +v -25558.058594 -46904.636719 -179802.328125 +v -25575.568359 -46791.667969 -179802.328125 +v -21853.394531 -46052.769531 -187015.500000 +v -21870.408203 -45943.007812 -187015.500000 +v -18148.732422 -45200.902344 -194228.671875 +v -18165.248047 -45094.347656 -194228.671875 +v -56146.019531 -53645.218750 -120293.601562 +v -53367.101562 -53011.273438 -125703.484375 +v -50588.179688 -52377.332031 -131113.359375 +v -47809.261719 -51743.386719 -136523.250000 +v -45030.339844 -51109.441406 -141933.140625 +v -42251.421875 -50475.500000 -147343.015625 +v -39472.503906 -49841.554688 -152752.906250 +v -36693.582031 -49207.609375 -158162.781250 +v -32988.355469 -48362.351562 -165375.968750 +v -29283.130859 -47517.093750 -172589.140625 +v -25577.904297 -46671.835938 -179802.328125 +v -21872.679688 -45826.578125 -187015.500000 +v -18167.453125 -44981.316406 -194228.671875 +v -56124.527344 -53538.566406 -120293.601562 +v -56095.433594 -53454.996094 -120293.601562 +v -53345.980469 -52906.460938 -125703.484375 +v -53317.386719 -52824.335938 -125703.484375 +v -50567.429688 -52274.359375 -131113.359375 +v -50539.339844 -52193.671875 -131113.359375 +v -47788.882812 -51642.253906 -136523.250000 +v -47761.292969 -51563.011719 -136523.250000 +v -45010.332031 -51010.148438 -141933.140625 +v -44983.246094 -50932.347656 -141933.140625 +v -42231.785156 -50378.046875 -147343.015625 +v -42205.199219 -50301.687500 -147343.015625 +v -39453.238281 -49745.941406 -152752.906250 +v -39427.152344 -49671.023438 -152752.906250 +v -36674.687500 -49113.839844 -158162.781250 +v -36649.105469 -49040.363281 -158162.781250 +v -32969.957031 -48271.031250 -165375.968750 +v -32945.042969 -48199.480469 -165375.968750 +v -29265.224609 -47428.226562 -172589.140625 +v -29240.978516 -47358.597656 -172589.140625 +v -25560.492188 -46585.421875 -179802.328125 +v -25536.916016 -46517.714844 -179802.328125 +v -21855.761719 -45742.617188 -187015.500000 +v -21832.853516 -45676.832031 -187015.500000 +v -18151.029297 -44899.812500 -194228.671875 +v -18128.791016 -44835.949219 -194228.671875 +v -56060.648438 -53370.011719 -120293.601562 +v -53283.203125 -52740.812500 -125703.484375 +v -50505.757812 -52111.617188 -131113.359375 +v -47728.308594 -51482.421875 -136523.250000 +v -44950.863281 -50853.226562 -141933.140625 +v -42173.417969 -50224.031250 -147343.015625 +v -39395.968750 -49594.835938 -152752.906250 +v -36618.523438 -48965.636719 -158162.781250 +v -32915.261719 -48126.710938 -165375.968750 +v -29211.998047 -47287.781250 -172589.140625 +v -25508.736328 -46448.855469 -179802.328125 +v -21805.474609 -45609.925781 -187015.500000 +v -18102.210938 -44771.000000 -194228.671875 +v -55909.832031 -53115.554688 -120293.601562 +v -55610.019531 -52754.507812 -120293.601562 +v -55438.875000 -52577.445312 -120293.601562 +v -55255.394531 -52396.773438 -120293.601562 +v -52672.156250 -51961.921875 -125703.484375 +v -52491.843750 -51784.367188 -125703.484375 +v -49905.437500 -51346.402344 -131113.359375 +v -49728.289062 -51171.960938 -131113.359375 +v -47138.714844 -50730.878906 -136523.250000 +v -46964.734375 -50559.554688 -136523.250000 +v -44371.996094 -50115.355469 -141933.140625 +v -44201.179688 -49947.152344 -141933.140625 +v -41605.277344 -49499.832031 -147343.015625 +v -41437.625000 -49334.746094 -147343.015625 +v -38838.558594 -48884.308594 -152752.906250 +v -38674.070312 -48722.339844 -152752.906250 +v -36071.835938 -48268.785156 -158162.781250 +v -35910.515625 -48109.933594 -158162.781250 +v -32382.876953 -47448.089844 -165375.968750 +v -32225.777344 -47293.390625 -165375.968750 +v -28693.917969 -46627.390625 -172589.140625 +v -28541.037109 -46476.851562 -172589.140625 +v -25004.957031 -45806.695312 -179802.328125 +v -24856.298828 -45660.308594 -179802.328125 +v -21315.998047 -44985.996094 -187015.500000 +v -21171.558594 -44843.769531 -187015.500000 +v -17627.039062 -44165.300781 -194228.671875 +v -17486.820312 -44027.226562 -194228.671875 +v -54896.382812 -52062.800781 -120293.601562 +v -54359.226562 -51638.933594 -120293.601562 +v -53186.769531 -50946.515625 -120293.601562 +v -51611.132812 -51039.601562 -125703.484375 +v -50458.902344 -50359.128906 -125703.484375 +v -48863.035156 -50440.269531 -131113.359375 +v -47731.031250 -49771.738281 -131113.359375 +v -46114.941406 -49840.937500 -136523.250000 +v -45003.164062 -49184.351562 -136523.250000 +v -43366.847656 -49241.605469 -141933.140625 +v -42275.296875 -48596.964844 -141933.140625 +v -40618.753906 -48642.273438 -147343.015625 +v -39547.429688 -48009.578125 -147343.015625 +v -37870.660156 -48042.941406 -152752.906250 +v -36819.562500 -47422.187500 -152752.906250 +v -35122.566406 -47443.609375 -158162.781250 +v -34091.691406 -46834.800781 -158162.781250 +v -31458.439453 -46644.496094 -165375.968750 +v -30454.535156 -46051.617188 -165375.968750 +v -27794.314453 -45845.386719 -172589.140625 +v -26817.378906 -45268.433594 -172589.140625 +v -24130.189453 -45046.277344 -179802.328125 +v -23180.220703 -44485.250000 -179802.328125 +v -20466.062500 -44247.167969 -187015.500000 +v -19543.064453 -43702.066406 -187015.500000 +v -16801.937500 -43448.058594 -194228.671875 +v -15905.906250 -42918.882812 -194228.671875 +v -52901.718750 -50806.750000 -120293.601562 +v -50178.769531 -50221.769531 -125703.484375 +v -47455.820312 -49636.792969 -131113.359375 +v -44732.867188 -49051.816406 -136523.250000 +v -42009.917969 -48466.839844 -141933.140625 +v -39286.964844 -47881.863281 -147343.015625 +v -36564.015625 -47296.886719 -152752.906250 +v -33841.066406 -46711.910156 -158162.781250 +v -30210.464844 -45931.941406 -165375.968750 +v -26579.863281 -45151.972656 -172589.140625 +v -22949.261719 -44372.003906 -179802.328125 +v -19318.662109 -43592.035156 -187015.500000 +v -15688.060547 -42812.066406 -194228.671875 +v -52582.316406 -50659.863281 -120293.601562 +v -51852.734375 -50359.433594 -120293.601562 +v -51224.167969 -50122.335938 -120293.601562 +v -49147.882812 -49782.175781 -125703.484375 +v -48530.156250 -49549.167969 -125703.484375 +v -46443.027344 -49204.914062 -131113.359375 +v -45836.144531 -48975.996094 -131113.359375 +v -43738.175781 -48627.652344 -136523.250000 +v -43142.136719 -48402.828125 -136523.250000 +v -41033.320312 -48050.394531 -141933.140625 +v -40448.125000 -47829.656250 -141933.140625 +v -38328.464844 -47473.132812 -147343.015625 +v -37754.113281 -47256.488281 -147343.015625 +v -35623.613281 -46895.875000 -152752.906250 +v -35060.105469 -46683.316406 -152752.906250 +v -32918.757812 -46318.613281 -158162.781250 +v -32366.093750 -46110.148438 -158162.781250 +v -29312.287109 -45548.933594 -165375.968750 +v -28774.080078 -45345.921875 -165375.968750 +v -25705.814453 -44779.253906 -172589.140625 +v -25182.066406 -44581.695312 -172589.140625 +v -22099.343750 -44009.574219 -179802.328125 +v -21590.052734 -43817.468750 -179802.328125 +v -18492.871094 -43239.894531 -187015.500000 +v -17998.039062 -43053.242188 -187015.500000 +v -14886.399414 -42470.214844 -194228.671875 +v -14406.026367 -42289.015625 -194228.671875 +v -49874.089844 -49669.785156 -120293.601562 +v -47203.371094 -49104.421875 -125703.484375 +v -44532.652344 -48539.058594 -131113.359375 +v -41861.929688 -47973.695312 -136523.250000 +v -39191.210938 -47408.335938 -141933.140625 +v -36520.488281 -46842.972656 -147343.015625 +v -33849.769531 -46277.609375 -152752.906250 +v -31179.048828 -45712.246094 -158162.781250 +v -27618.087891 -44958.429688 -165375.968750 +v -24057.126953 -44204.609375 -172589.140625 +v -20496.166016 -43450.792969 -179802.328125 +v -16935.207031 -42696.976562 -187015.500000 +v -13374.246094 -41943.160156 -194228.671875 +v -48516.847656 -49284.882812 -120293.601562 +v -48168.921875 -49195.531250 -120293.601562 +v -45527.617188 -48638.347656 -125703.484375 +v -45869.539062 -48726.160156 -125703.484375 +v -43222.234375 -48167.437500 -131113.359375 +v -42886.312500 -48081.167969 -131113.359375 +v -40574.925781 -47608.714844 -136523.250000 +v -34962.398438 -46409.621094 -147343.015625 +v -37603.703125 -46966.804688 -141933.140625 +v -40245.007812 -47523.984375 -136523.250000 +v -37927.621094 -47049.988281 -141933.140625 +v -26158.052734 -44552.351562 -165375.968750 +v -29679.791016 -45295.257812 -158162.781250 +v -32321.095703 -45852.441406 -152752.906250 +v -29985.701172 -45373.820312 -158162.781250 +v -32633.007812 -45932.542969 -152752.906250 +v -15592.833984 -42323.625000 -187015.500000 +v -19114.574219 -43066.531250 -179802.328125 +v -22636.312500 -43809.441406 -172589.140625 +v -19396.476562 -43138.929688 -179802.328125 +v -22926.218750 -43883.894531 -172589.140625 +v -12071.095703 -41580.714844 -194228.671875 +v 10509.710938 -36806.406250 -237507.750000 +v 31320.515625 -32418.779297 -280786.812500 +v 30189.775391 -32665.806641 -280786.812500 +v 30019.910156 -32709.431641 -280786.812500 +v 29357.279297 -32897.351562 -280786.812500 +v 28698.138672 -33118.300781 -280786.812500 +v 28391.261719 -33234.058594 -280786.812500 +v 28035.083984 -33380.730469 -280786.812500 +v 27879.150391 -33452.441406 -280786.812500 +v 27167.570312 -33858.738281 -280786.812500 +v 27739.980469 -33520.679688 -280786.812500 +v 26905.320312 -34065.683594 -280786.812500 +v 26730.050781 -34228.730469 -280786.812500 +v 26640.478516 -34316.933594 -280786.812500 +v 26556.925781 -34403.375000 -280786.812500 +v 26410.558594 -34579.644531 -280786.812500 +v 26336.935547 -34703.867188 -280786.812500 +v 26319.957031 -34745.355469 -280786.812500 +v 29344.167969 -34095.582031 -286703.125000 +v 26305.750000 -34786.148438 -280786.812500 +v 26295.259766 -34838.214844 -280786.812500 +v 29365.236328 -34157.632812 -286765.156250 +v 26296.667969 -34910.425781 -280786.812500 +v 29427.150391 -34264.558594 -286860.031250 +v 26307.218750 -34978.492188 -280786.812500 +v 26320.291016 -35019.445312 -280786.812500 +v 30001.373047 -34056.851562 -288000.000000 +v 30013.597656 -34133.929688 -288000.000000 +v 30052.761719 -34220.320312 -288000.000000 +v 30031.208984 -33885.476562 -288000.000000 +v 30002.332031 -33977.085938 -288000.000000 +v 30087.925781 -33779.738281 -288000.000000 +v 30311.861328 -33513.925781 -288000.000000 +v 30086.406250 -34273.609375 -288000.000000 +v 26340.105469 -35058.140625 -280786.812500 +v 26417.111328 -35170.949219 -280786.812500 +v 30134.382812 -34328.953125 -288000.000000 +v 26467.425781 -35222.292969 -280786.812500 +v 30261.986328 -34444.062500 -288000.000000 +v 26542.781250 -35290.066406 -280786.812500 +v 26700.677734 -35391.304688 -280786.812500 +v 30405.970703 -34529.183594 -288000.000000 +v 30617.593750 -34609.835938 -288000.000000 +v 27063.033203 -35516.984375 -280786.812500 +v 27158.228516 -35536.972656 -280786.812500 +v 27423.460938 -35588.324219 -280786.812500 +v 30836.021484 -34903.800781 -286860.031250 +v 27519.093750 -35606.445312 -280786.812500 +v 31262.798828 -34974.558594 -286713.187500 +v 27990.867188 -35674.742188 -280786.812500 +v 27709.050781 -35638.042969 -280786.812500 +v 31683.291016 -35025.605469 -286552.687500 +v 28695.244141 -35728.300781 -280786.812500 +v 28362.019531 -35707.273438 -280786.812500 +v 28082.716797 -35684.339844 -280786.812500 +v -35280.316406 -46491.265625 -147343.015625 +v -26455.960938 -44628.855469 -165375.968750 +v 2553.427246 -42908.875000 -223081.390625 +v 6056.772949 -42018.839844 -230294.578125 +v -41.958431 -42825.847656 -223081.390625 +v 3550.191895 -41938.652344 -230294.578125 +v -500.777222 -42796.894531 -223081.390625 +v 3107.072266 -41910.691406 -230294.578125 +v -885.362854 -42765.316406 -223081.390625 +v 2735.646973 -41880.195312 -230294.578125 +v -1011.833435 -42752.101562 -223081.390625 +v 2613.504150 -41867.433594 -230294.578125 +v -1399.866089 -42701.570312 -223081.390625 +v 2238.748535 -41818.628906 -230294.578125 +v -1661.419556 -42658.066406 -223081.390625 +v 1986.144531 -41776.613281 -230294.578125 +v -1793.095215 -42633.117188 -223081.390625 +v 1858.974487 -41752.515625 -230294.578125 +v -2158.297607 -42562.410156 -223081.390625 +v 1506.268066 -41684.230469 -230294.578125 +v -2289.371094 -42534.886719 -223081.390625 +v 1379.679443 -41657.648438 -230294.578125 +v -2788.310059 -42361.839844 -223081.390625 +v 897.813293 -41490.523438 -230294.578125 +v -3005.721924 -42222.449219 -223081.390625 +v 687.841003 -41355.898438 -230294.578125 +v -3109.482422 -42129.132812 -223081.390625 +v 587.631042 -41265.777344 -230294.578125 +v -3178.763184 -42058.437500 -223081.390625 +v 520.721069 -41197.500000 -230294.578125 +v -3284.797363 -41903.105469 -223081.390625 +v 418.315491 -41047.484375 -230294.578125 +v -3312.083252 -41849.820312 -223081.390625 +v 391.963440 -40996.023438 -230294.578125 +v -3330.082031 -41793.433594 -223081.390625 +v 374.580688 -40941.566406 -230294.578125 +v -3344.609375 -41699.707031 -223081.390625 +v 360.550385 -40851.046875 -230294.578125 +v -3346.548828 -41600.285156 -223081.390625 +v 358.677246 -40755.027344 -230294.578125 +v -3332.102539 -41528.589844 -223081.390625 +v 372.629028 -40685.785156 -230294.578125 +v -3312.541992 -41472.417969 -223081.390625 +v 391.520477 -40631.535156 -230294.578125 +v -3289.162598 -41415.289062 -223081.390625 +v 414.099792 -40576.359375 -230294.578125 +v -3187.783447 -41244.242188 -223081.390625 +v 512.009399 -40411.167969 -230294.578125 +v -2986.245850 -41001.535156 -223081.390625 +v 706.650635 -40176.765625 -230294.578125 +v -2871.198975 -40882.511719 -223081.390625 +v 817.760681 -40061.812500 -230294.578125 +v -2747.863037 -40761.062500 -223081.390625 +v 936.876099 -39944.519531 -230294.578125 +v -2506.527100 -40536.558594 -223081.390625 +v 1169.953735 -39727.699219 -230294.578125 +v -2145.435303 -40251.617188 -223081.390625 +v 1518.690430 -39452.507812 -230294.578125 +v -1357.277466 -39786.148438 -223081.390625 +v 2279.879883 -39002.964844 -230294.578125 +v -1165.657104 -39692.191406 -223081.390625 +v 2464.943848 -38912.222656 -230294.578125 +v -950.947021 -39593.453125 -223081.390625 +v 2672.306885 -38816.859375 -230294.578125 +v -460.512451 -39391.496094 -223081.390625 +v 3145.959229 -38621.816406 -230294.578125 +v -37.971493 -39232.113281 -223081.390625 +v 3554.042236 -38467.886719 -230294.578125 +v 869.596130 -38927.890625 -223081.390625 +v 4430.556641 -38174.070312 -230294.578125 +v 1781.975342 -38669.144531 -223081.390625 +v 5311.717285 -37924.179688 -230294.578125 +v 2015.861572 -38609.078125 -223081.390625 +v 7142.342285 -41051.460938 -237507.750000 +v 6714.921875 -41024.488281 -237507.750000 +v 6356.656738 -40995.074219 -237507.750000 +v 6238.841797 -40982.761719 -237507.750000 +v 5877.363281 -40935.687500 -237507.750000 +v 5633.708496 -40895.164062 -237507.750000 +v 5511.043945 -40871.917969 -237507.750000 +v 5170.833984 -40806.050781 -237507.750000 +v 5048.729980 -40780.410156 -237507.750000 +v 4583.936523 -40619.207031 -237507.750000 +v 4381.403809 -40489.351562 -237507.750000 +v 4284.744629 -40402.421875 -237507.750000 +v 4220.205566 -40336.566406 -237507.750000 +v 4121.428223 -40191.863281 -237507.750000 +v 4096.010254 -40142.226562 -237507.750000 +v 4079.243408 -40089.699219 -237507.750000 +v 4065.710205 -40002.386719 -237507.750000 +v 4063.903320 -39909.765625 -237507.750000 +v 4077.360596 -39842.980469 -237507.750000 +v 4095.583008 -39790.652344 -237507.750000 +v 4117.362305 -39737.433594 -237507.750000 +v 4211.802246 -39578.089844 -237507.750000 +v 4399.546875 -39351.996094 -237507.750000 +v 4506.720703 -39241.117188 -237507.750000 +v 4621.615234 -39127.980469 -237507.750000 +v 4846.434570 -38918.839844 -237507.750000 +v 5182.815918 -38653.398438 -237507.750000 +v 5917.037109 -38219.781250 -237507.750000 +v 6095.544922 -38132.253906 -237507.750000 +v 6295.561035 -38040.269531 -237507.750000 +v 6752.431152 -37852.136719 -237507.750000 +v 7146.055664 -37703.660156 -237507.750000 +v 7991.517090 -37420.253906 -237507.750000 +v 19624.556641 -34894.535156 -259147.281250 +v 19430.685547 -34944.324219 -259147.281250 +v 18674.398438 -35158.800781 -259147.281250 +v 17922.097656 -35410.980469 -259147.281250 +v 17571.845703 -35543.097656 -259147.281250 +v 17165.322266 -35710.500000 -259147.281250 +v 16987.347656 -35792.347656 -259147.281250 +v 16828.509766 -35870.230469 -259147.281250 +v 16175.193359 -36256.066406 -259147.281250 +v 15875.877930 -36492.261719 -259147.281250 +v 15675.833008 -36678.355469 -259147.281250 +v 15573.599609 -36779.023438 -259147.281250 +v 15478.236328 -36877.687500 -259147.281250 +v 15311.180664 -37078.867188 -259147.281250 +v 15227.149414 -37220.648438 -259147.281250 +v 15207.770508 -37268.003906 -259147.281250 +v 15191.555664 -37314.566406 -259147.281250 +v 15179.581055 -37373.992188 -259147.281250 +v 15181.189453 -37456.406250 -259147.281250 +v 15193.231445 -37534.097656 -259147.281250 +v 15208.150391 -37580.835938 -259147.281250 +v 15230.767578 -37625.000000 -259147.281250 +v 15318.658203 -37753.757812 -259147.281250 +v 15376.084961 -37812.355469 -259147.281250 +v 15462.092773 -37889.707031 -259147.281250 +v 15642.306641 -38005.257812 -259147.281250 +v 16055.881836 -38148.695312 -259147.281250 +v 16164.531250 -38171.511719 -259147.281250 +v 16467.253906 -38230.121094 -259147.281250 +v 16576.400391 -38250.804688 -259147.281250 +v 16793.207031 -38286.867188 -259147.281250 +v 17114.853516 -38328.753906 -259147.281250 +v 17219.685547 -38339.707031 -259147.281250 +v 17538.470703 -38365.882812 -259147.281250 +v 17918.792969 -38389.878906 -259147.281250 +v -12336.992188 -41649.000000 -194228.671875 +v -15866.734375 -42393.964844 -187015.500000 +v -15443.962891 -42699.812500 -194228.671875 +v -19067.216797 -43476.402344 -187015.500000 +v -22690.470703 -44252.992188 -179802.328125 +v -26313.724609 -45029.582031 -172589.140625 +v -29936.978516 -45806.175781 -165375.968750 +v -33560.234375 -46582.765625 -158162.781250 +v -36277.671875 -47165.207031 -152752.906250 +v -38995.113281 -47747.648438 -147343.015625 +v -41712.554688 -48330.093750 -141933.140625 +v -44429.996094 -48912.535156 -136523.250000 +v -47147.433594 -49494.976562 -131113.359375 +v -49864.875000 -50077.421875 -125703.484375 +v -17212.451172 -43771.992188 -194228.671875 +v -20888.931641 -44580.851562 -187015.500000 +v -24565.414062 -45389.710938 -179802.328125 +v -28241.894531 -46198.570312 -172589.140625 +v -31918.375000 -47007.429688 -165375.968750 +v -35594.855469 -47816.289062 -158162.781250 +v -38352.218750 -48422.933594 -152752.906250 +v -41109.578125 -49029.578125 -147343.015625 +v -43866.937500 -49636.222656 -141933.140625 +v -46624.300781 -50242.867188 -136523.250000 +v -49381.660156 -50849.511719 -131113.359375 +v -52139.019531 -51456.156250 -125703.484375 +v -17757.832031 -44300.613281 -194228.671875 +v -21450.728516 -45125.386719 -187015.500000 +v -25143.625000 -45950.156250 -179802.328125 +v -28836.521484 -46774.925781 -172589.140625 +v -32529.417969 -47599.695312 -165375.968750 +v -36222.312500 -48424.464844 -158162.781250 +v -38991.984375 -49043.042969 -152752.906250 +v -41761.656250 -49661.617188 -147343.015625 +v -44531.332031 -50280.195312 -141933.140625 +v -47301.003906 -50898.773438 -136523.250000 +v -50070.675781 -51517.351562 -131113.359375 +v -52840.347656 -52135.929688 -125703.484375 +v -17986.955078 -44576.539062 -194228.671875 +v -21686.748047 -45409.613281 -187015.500000 +v -25386.541016 -46242.687500 -179802.328125 +v -29086.333984 -47075.761719 -172589.140625 +v -32786.125000 -47908.835938 -165375.968750 +v -36485.917969 -48741.910156 -158162.781250 +v -39260.761719 -49366.718750 -152752.906250 +v -42035.609375 -49991.523438 -147343.015625 +v -44810.453125 -50616.328125 -141933.140625 +v -47585.296875 -51241.136719 -136523.250000 +v -50360.140625 -51865.941406 -131113.359375 +v -53134.984375 -52490.746094 -125703.484375 +v -18128.269531 -45265.007812 -194228.671875 +v -21832.316406 -46118.804688 -187015.500000 +v -25536.363281 -46972.601562 -179802.328125 +v -29240.410156 -47826.398438 -172589.140625 +v -32944.457031 -48680.195312 -165375.968750 +v -36648.503906 -49533.992188 -158162.781250 +v -39426.539062 -50174.339844 -152752.906250 +v -42204.574219 -50814.687500 -147343.015625 +v -44982.609375 -51455.035156 -141933.140625 +v -47760.644531 -52095.382812 -136523.250000 +v -50538.679688 -52735.730469 -131113.359375 +v -53316.714844 -53376.078125 -125703.484375 +v -18097.250000 -45325.585938 -194228.671875 +v -21800.361328 -46181.207031 -187015.500000 +v -25503.474609 -47036.828125 -179802.328125 +v -29206.587891 -47892.449219 -172589.140625 +v -32909.699219 -48748.066406 -165375.968750 +v -36612.812500 -49603.687500 -158162.781250 +v -39390.148438 -50245.402344 -152752.906250 +v -42167.484375 -50887.121094 -147343.015625 +v -44944.816406 -51528.835938 -141933.140625 +v -47722.152344 -52170.550781 -136523.250000 +v -50499.488281 -52812.265625 -131113.359375 +v -53276.820312 -53453.980469 -125703.484375 +v -17779.974609 -45688.640625 -194228.671875 +v -21473.537109 -46555.187500 -187015.500000 +v -25167.099609 -47421.734375 -179802.328125 +v -28860.662109 -48288.281250 -172589.140625 +v -32554.226562 -49154.828125 -165375.968750 +v -36247.789062 -50021.378906 -158162.781250 +v -39017.960938 -50671.289062 -152752.906250 +v -41788.132812 -51321.199219 -147343.015625 +v -44558.304688 -51971.109375 -141933.140625 +v -47328.476562 -52621.019531 -136523.250000 +v -50098.648438 -53270.933594 -131113.359375 +v -52868.820312 -53920.843750 -125703.484375 +v -17532.804688 -45847.109375 -194228.671875 +v -21218.927734 -46718.425781 -187015.500000 +v -24905.050781 -47589.742188 -179802.328125 +v -28591.173828 -48461.062500 -172589.140625 +v -32277.296875 -49332.378906 -165375.968750 +v -35963.421875 -50203.695312 -158162.781250 +v -38728.011719 -50857.183594 -152752.906250 +v -41492.605469 -51510.671875 -147343.015625 +v -44257.199219 -52164.160156 -141933.140625 +v -47021.792969 -52817.648438 -136523.250000 +v -49786.382812 -53471.132812 -131113.359375 +v -52550.976562 -54124.621094 -125703.484375 +v -16965.574219 -46043.835938 -194228.671875 +v -20634.625000 -46921.074219 -187015.500000 +v -24303.675781 -47798.312500 -179802.328125 +v -27972.726562 -48675.550781 -172589.140625 +v -31641.775391 -49552.789062 -165375.968750 +v -35310.828125 -50430.027344 -158162.781250 +v -38062.613281 -51087.957031 -152752.906250 +v -40814.402344 -51745.882812 -147343.015625 +v -43566.191406 -52403.812500 -141933.140625 +v -46317.980469 -53061.742188 -136523.250000 +v -49069.765625 -53719.667969 -131113.359375 +v -16816.560547 -46075.128906 -194228.671875 +v -20481.126953 -46953.304688 -187015.500000 +v -24145.691406 -47831.484375 -179802.328125 +v -27810.257812 -48709.664062 -172589.140625 +v -31474.824219 -49587.843750 -165375.968750 +v -35139.390625 -50466.023438 -158162.781250 +v -37887.812500 -51124.660156 -152752.906250 +v -40636.238281 -51783.292969 -147343.015625 +v -43384.660156 -52441.929688 -141933.140625 +v -46133.085938 -53100.562500 -136523.250000 +v -16401.373047 -46155.511719 -194228.671875 +v -20053.443359 -47036.109375 -187015.500000 +v -23705.513672 -47916.707031 -179802.328125 +v -27357.582031 -48797.308594 -172589.140625 +v -31009.652344 -49677.906250 -165375.968750 +v -34661.722656 -50558.503906 -158162.781250 +v -37400.773438 -51218.953125 -152752.906250 +v -40139.828125 -51879.402344 -147343.015625 +v -42878.878906 -52539.851562 -141933.140625 +v -16251.675781 -46183.878906 -194228.671875 +v -19899.240234 -47065.332031 -187015.500000 +v -23546.804688 -47946.781250 -179802.328125 +v -27194.369141 -48828.234375 -172589.140625 +v -30841.931641 -49709.687500 -165375.968750 +v -34489.496094 -50591.140625 -158162.781250 +v -37225.167969 -51252.230469 -152752.906250 +v -39960.843750 -51913.320312 -147343.015625 +v -15954.324219 -46233.335938 -194228.671875 +v -19592.939453 -47116.277344 -187015.500000 +v -23231.552734 -47999.218750 -179802.328125 +v -26870.167969 -48882.156250 -172589.140625 +v -30508.783203 -49765.097656 -165375.968750 +v -34147.398438 -50648.039062 -158162.781250 +v -36876.359375 -51310.246094 -152752.906250 +v -15513.183594 -46290.781250 -194228.671875 +v -19138.521484 -47175.453125 -187015.500000 +v -22763.859375 -48060.121094 -179802.328125 +v -26389.195312 -48944.792969 -172589.140625 +v -30014.533203 -49829.460938 -165375.968750 +v -33639.871094 -50714.132812 -158162.781250 +v -15369.402344 -46305.804688 -194228.671875 +v -18990.412109 -47190.929688 -187015.500000 +v -22611.421875 -48076.050781 -179802.328125 +v -26232.431641 -48961.171875 -172589.140625 +v -29853.441406 -49846.296875 -165375.968750 +v -14932.175781 -46341.703125 -194228.671875 +v -18540.025391 -47227.906250 -187015.500000 +v -22147.875000 -48114.109375 -179802.328125 +v -25755.724609 -49000.312500 -172589.140625 +v -14410.559570 -46374.617188 -194228.671875 +v -18002.708984 -47261.812500 -187015.500000 +v -21594.859375 -48149.003906 -179802.328125 +v -949.918457 -43798.910156 -215868.218750 +v -3634.108643 -43713.039062 -215868.218750 +v -4108.626953 -43683.097656 -215868.218750 +v -4506.372559 -43650.441406 -215868.218750 +v -4637.170898 -43636.773438 -215868.218750 +v -5038.480469 -43584.511719 -215868.218750 +v -5308.983887 -43539.519531 -215868.218750 +v -5445.165039 -43513.714844 -215868.218750 +v -5822.863281 -43440.589844 -215868.218750 +v -5958.421875 -43412.125000 -215868.218750 +v -6474.433594 -43233.160156 -215868.218750 +v -6699.285156 -43088.996094 -215868.218750 +v -6806.595703 -42992.488281 -215868.218750 +v -6878.247559 -42919.371094 -215868.218750 +v -6987.910156 -42758.722656 -215868.218750 +v -7016.129883 -42703.617188 -215868.218750 +v -7034.744629 -42645.300781 -215868.218750 +v -7049.769043 -42548.367188 -215868.218750 +v -7051.774902 -42445.542969 -215868.218750 +v -7036.834473 -42371.398438 -215868.218750 +v -7016.604492 -42313.300781 -215868.218750 +v -6992.424805 -42254.214844 -215868.218750 +v -6887.576172 -42077.316406 -215868.218750 +v -6679.142090 -41826.304688 -215868.218750 +v -6560.158691 -41703.207031 -215868.218750 +v -6432.602051 -41577.601562 -215868.218750 +v -6183.008301 -41345.417969 -215868.218750 +v -5809.561035 -41050.726562 -215868.218750 +v -4994.434570 -40569.332031 -215868.218750 +v -4796.257812 -40472.160156 -215868.218750 +v -4574.201172 -40370.042969 -215868.218750 +v -4066.984131 -40161.175781 -215868.218750 +v -3629.985107 -39996.339844 -215868.218750 +v -2691.364502 -39681.707031 -215868.218750 +v -1747.766602 -39414.109375 -215868.218750 +v -1505.877686 -39351.988281 -215868.218750 +v -35065.421875 -51475.980469 -152752.906250 +v -37759.535156 -52141.375000 -147343.015625 +v -34231.703125 -52254.230469 -147343.015625 +v -38383.199219 -52102.019531 -147343.015625 +v -53835.085938 -55181.648438 -120293.601562 +v -90660.515625 -57118.375000 41753.613281 +v -85088.070312 -55881.355469 49675.675781 +v -87331.242188 -56058.808594 41753.613281 +v -84752.070312 -55776.683594 49675.675781 +v -81032.421875 -54973.792969 54456.121094 +v -80845.023438 -55105.218750 57597.734375 +v -76937.984375 -54433.757812 65519.796875 +v -81167.039062 -55205.535156 57597.734375 +v -77246.007812 -54529.714844 65519.796875 +v -82156.562500 -55533.722656 57597.734375 +v -78192.546875 -54843.644531 65519.796875 +v -82675.703125 -55717.976562 57597.734375 +v -78689.132812 -55019.894531 65519.796875 +v -83840.867188 -56158.003906 57597.734375 +v -79803.687500 -55440.804688 65519.796875 +v -84882.734375 -56592.687500 57597.734375 +v -80800.289062 -55856.605469 65519.796875 +v -85195.953125 -56736.996094 57597.734375 +v -81099.906250 -55994.648438 65519.796875 +v -85778.304688 -57022.917969 57597.734375 +v -81656.953125 -56268.148438 65519.796875 +v -85996.773438 -57136.199219 57597.734375 +v -81865.937500 -56376.507812 65519.796875 +v -87663.445312 -58175.789062 57597.734375 +v -83460.203125 -57370.937500 65519.796875 +v -88012.960938 -58452.093750 57597.734375 +v -83794.539062 -57635.242188 65519.796875 +v -88583.164062 -58961.804688 57597.734375 +v -84339.968750 -58122.808594 65519.796875 +v -88992.976562 -59360.472656 57597.734375 +v -84731.984375 -58504.156250 65519.796875 +v -89166.476562 -59536.125000 57597.734375 +v -84897.945312 -58672.179688 65519.796875 +v -89592.695312 -60016.734375 57597.734375 +v -85305.648438 -59131.914062 65519.796875 +v -89928.375000 -60525.250000 57597.734375 +v -85626.742188 -59618.335938 65519.796875 +v -89999.664062 -60689.312500 57597.734375 +v -85694.937500 -59775.269531 65519.796875 +v -90026.539062 -60765.316406 57597.734375 +v -85720.640625 -59847.976562 65519.796875 +v -90062.710938 -60881.445312 57597.734375 +v -85755.242188 -59959.054688 65519.796875 +v -90080.890625 -61056.386719 57597.734375 +v -85772.632812 -60126.398438 65519.796875 +v -90031.015625 -61448.863281 57597.734375 +v -85724.921875 -60501.824219 65519.796875 +v -89984.812500 -61565.398438 57597.734375 +v -85680.726562 -60613.300781 65519.796875 +v -89933.726562 -61663.121094 57597.734375 +v -85631.867188 -60706.773438 65519.796875 +v -89881.703125 -61756.953125 57597.734375 +v -85582.101562 -60796.531250 65519.796875 +v -89713.773438 -61984.175781 57597.734375 +v -85421.460938 -61013.882812 65519.796875 +v -89575.054688 -62127.316406 57597.734375 +v -85288.773438 -61150.804688 65519.796875 +v -89360.726562 -62323.402344 57597.734375 +v -85083.750000 -61338.375000 65519.796875 +v -89066.492188 -62540.636719 57597.734375 +v -84802.304688 -61546.171875 65519.796875 +v -88697.367188 -62729.687500 57597.734375 +v -84449.210938 -61727.011719 65519.796875 +v -87557.500000 -63082.566406 57597.734375 +v -83358.859375 -62064.558594 65519.796875 +v -87318.687500 -63129.550781 57597.734375 +v -83130.429688 -62109.500000 65519.796875 +v -86604.593750 -63267.750000 57597.734375 +v -82447.359375 -62241.699219 65519.796875 +v -86119.382812 -63356.359375 57597.734375 +v -81983.218750 -62326.457031 65519.796875 +v -85830.710938 -63402.695312 57597.734375 +v -81707.085938 -62370.781250 65519.796875 +v -84952.062500 -63518.562500 57597.734375 +v -80866.601562 -62481.617188 65519.796875 +v -83920.382812 -63611.523438 57597.734375 +v -79879.750000 -62570.539062 65519.796875 +v -81421.320312 -63753.882812 57597.734375 +v -77489.250000 -62706.714844 65519.796875 +v -74743.515625 -62561.750000 67138.640625 +v -73557.171875 -61659.546875 73441.859375 +v -68365.281250 -60860.023438 80001.304688 +v -69803.945312 -60660.007812 81003.593750 +v -66050.710938 -59660.464844 88565.328125 +v -68125.406250 -59542.281250 88565.328125 +v -65962.335938 -58672.429688 94558.710938 +v -68981.890625 -59465.105469 88565.328125 +v -69711.328125 -59368.910156 88565.328125 +v -72881.515625 -60454.886719 81003.593750 +v -73647.398438 -60353.890625 81003.593750 +v -76781.148438 -61444.671875 73441.859375 +v -77583.460938 -61338.867188 73441.859375 +v -93902.820312 -58472.617188 41753.613281 +v -87878.046875 -56875.199219 49675.675781 +v -86662.265625 -56416.054688 49675.675781 +v -86120.570312 -56223.796875 49675.675781 +v -95441.382812 -59347.527344 41753.613281 +v -90127.609375 -57895.890625 49675.675781 +v -89899.648438 -57777.687500 49675.675781 +v -89292.007812 -57479.343750 49675.675781 +v -91866.679688 -58980.636719 49675.675781 +v -96822.414062 -60410.296875 41753.613281 +v -92231.382812 -59268.945312 49675.675781 +v -92826.351562 -59800.796875 49675.675781 +v -93253.976562 -60216.785156 49675.675781 +v -98069.429688 -61668.062500 41753.613281 +v -93435.007812 -60400.070312 49675.675781 +v -93879.750000 -60901.558594 49675.675781 +v -98340.406250 -62018.398438 41753.613281 +v -94230.007812 -61432.164062 49675.675781 +v -98558.960938 -62395.183594 41753.613281 +v -94304.390625 -61603.351562 49675.675781 +v -94332.429688 -61682.660156 49675.675781 +v -98677.164062 -62724.164062 41753.613281 +v -94370.179688 -61803.832031 49675.675781 +v -98697.281250 -62901.398438 41753.613281 +v -94389.148438 -61986.375000 49675.675781 +v -98688.539062 -63080.917969 41753.613281 +v -94337.109375 -62395.898438 49675.675781 +v -98637.281250 -63363.445312 41753.613281 +v -94288.898438 -62517.500000 49675.675781 +v -98558.632812 -63535.585938 41753.613281 +v -94235.593750 -62619.464844 49675.675781 +v -98518.062500 -63611.933594 41753.613281 +v -94181.304688 -62717.375000 49675.675781 +v -98431.179688 -63756.855469 41753.613281 +v -94006.078125 -62954.468750 49675.675781 +v -98155.484375 -64072.660156 41753.613281 +v -93861.343750 -63103.824219 49675.675781 +v -93637.695312 -63308.433594 49675.675781 +v -97788.484375 -64396.191406 41753.613281 +v -93330.687500 -63535.105469 49675.675781 +v -97381.843750 -64646.613281 41753.613281 +v -92945.523438 -63732.367188 49675.675781 +v -96678.132812 -64932.722656 41753.613281 +v -91756.132812 -64100.574219 49675.675781 +v -96019.976562 -65105.050781 41753.613281 +v -91506.953125 -64149.597656 49675.675781 +v -95234.554688 -65258.359375 41753.613281 +v -90761.835938 -64293.800781 49675.675781 +v -94346.906250 -65423.691406 41753.613281 +v -90255.546875 -64386.257812 49675.675781 +v -92635.375000 -65642.039062 41753.613281 +v -89037.515625 -64555.511719 49675.675781 +v -89954.328125 -64434.605469 49675.675781 +v -87961.015625 -64652.507812 49675.675781 +v -90832.570312 -65768.757812 41753.613281 +v -85353.398438 -64801.050781 49675.675781 +v -87331.242188 -65919.734375 41753.613281 +v -81107.078125 -64259.398438 54305.578125 +v -62097.093750 -59187.457031 92642.046875 +v -67804.335938 -58141.445312 95472.109375 +v -70353.804688 -59256.882812 88565.328125 +v -69950.984375 -59330.441406 88565.328125 +v -68250.718750 -57915.949219 95693.453125 +v -72091.195312 -58810.187500 88565.328125 +v -71144.890625 -59103.144531 88565.328125 +v -70946.632812 -59142.148438 88565.328125 +v -74944.398438 -60115.800781 81003.593750 +v -74321.960938 -60236.265625 81003.593750 +v -78290.117188 -61215.648438 73441.859375 +v -77847.054688 -61296.558594 73441.859375 +v -68472.945312 -57761.667969 95803.656250 +v -72397.640625 -58653.238281 88565.328125 +v -76146.125000 -59767.257812 81003.593750 +v -76467.875000 -59602.472656 81003.593750 +v -80201.062500 -60724.332031 73441.859375 +v -80538.117188 -60551.707031 73441.859375 +v -68691.984375 -57545.117188 95912.265625 +v -72641.906250 -58472.894531 88565.328125 +v -76724.343750 -59413.121094 81003.593750 +v -80806.781250 -60353.347656 73441.859375 +v -72819.843750 -58310.101562 88565.328125 +v -68917.726562 -57250.269531 96024.203125 +v -72935.000000 -58191.269531 88565.328125 +v -73074.414062 -58002.632812 88565.328125 +v -77032.078125 -59117.429688 81003.593750 +v -77178.453125 -58919.371094 81003.593750 +v -81129.156250 -60043.589844 73441.859375 +v -81282.492188 -59836.109375 73441.859375 +v -69022.507812 -57048.750000 96076.164062 +v -73117.601562 -57924.734375 88565.328125 +v -77223.796875 -58837.582031 81003.593750 +v -81330.000000 -59750.429688 73441.859375 +v -73160.007812 -57843.609375 88565.328125 +v -69078.945312 -56907.082031 96104.156250 +v -73198.367188 -57746.863281 88565.328125 +v -69111.171875 -56753.804688 96120.132812 +v -73239.773438 -57421.035156 88565.328125 +v -69125.156250 -56474.386719 96127.062500 +v -73224.679688 -57275.800781 88565.328125 +v -69095.054688 -56312.171875 96112.140625 +v -73194.648438 -57179.394531 88565.328125 +v -73172.335938 -57116.292969 88565.328125 +v -77304.695312 -58055.011719 81003.593750 +v -77281.273438 -57988.761719 81003.593750 +v -81414.742188 -58930.632812 73441.859375 +v -81390.203125 -58861.230469 73441.859375 +v -73113.156250 -56980.093750 88565.328125 +v -68982.359375 -56007.859375 96056.257812 +v -72834.484375 -56557.933594 88565.328125 +v -68814.164062 -55716.027344 95972.851562 +v -72480.640625 -56158.937500 88565.328125 +v -72336.609375 -56013.113281 88565.328125 +v -76555.023438 -56983.585938 81003.593750 +v -76403.796875 -56830.476562 81003.593750 +v -80629.406250 -57808.234375 73441.859375 +v -80470.984375 -57647.843750 73441.859375 +v -67969.390625 -54682.031250 95553.953125 +v -71996.382812 -55682.144531 88565.328125 +v -76046.578125 -56482.980469 81003.593750 +v -80096.781250 -57283.812500 73441.859375 +v -67125.226562 -53938.542969 95135.359375 +v -71232.843750 -55029.601562 88565.328125 +v -71523.007812 -55258.988281 88565.328125 +v -69849.195312 -54166.546875 88565.328125 +v -66188.343750 -53339.976562 94670.781250 +v -69667.820312 -54072.503906 88565.328125 +v -69184.367188 -53835.128906 88565.328125 +v -73601.718750 -54792.941406 81003.593750 +v -73094.109375 -54543.714844 81003.593750 +v -77535.609375 -55513.382812 73441.859375 +v -77003.859375 -55252.296875 73441.859375 +v -64157.000000 -52408.425781 93663.500000 +v -68059.390625 -53354.457031 88565.328125 +v -68924.335938 -53715.328125 88565.328125 +v -62097.093750 -51714.363281 92642.046875 +v -65572.281250 -52480.449219 88565.328125 +v -65839.609375 -52563.730469 88565.328125 +v -66661.101562 -52836.187500 88565.328125 +v -70444.820312 -53494.875000 81003.593750 +v -70897.328125 -53655.480469 81003.593750 +v -74702.570312 -54321.812500 73441.859375 +v -75766.507812 -54723.609375 73441.859375 +v -74669.359375 -53878.039062 67288.195312 +v -69301.609375 -53121.371094 81003.593750 +v -69582.296875 -53208.812500 81003.593750 +v -73324.984375 -53853.894531 73441.859375 +v -74228.531250 -54153.566406 73441.859375 +v -73030.945312 -53762.292969 73441.859375 +v -88965.179688 -57328.765625 49675.675781 +v -75839.109375 -61529.554688 73441.859375 +v -71982.257812 -60535.917969 81003.593750 +v -73899.023438 -60313.500000 81003.593750 +v -78942.164062 -61089.453125 73441.859375 +v -79160.226562 -61046.554688 73441.859375 +v -75152.562500 -60074.847656 81003.593750 +v -81002.492188 -60174.292969 73441.859375 +v -76911.164062 -59242.199219 81003.593750 +v -81376.648438 -59661.199219 73441.859375 +v -77268.328125 -58752.406250 81003.593750 +v -81418.835938 -59554.789062 73441.859375 +v -77308.601562 -58650.828125 81003.593750 +v -81464.375000 -59196.414062 73441.859375 +v -77352.078125 -58308.722656 81003.593750 +v -81447.773438 -59036.667969 73441.859375 +v -77336.226562 -58156.234375 81003.593750 +v -81325.109375 -58711.421875 73441.859375 +v -77219.132812 -57845.757812 81003.593750 +v -81018.601562 -58247.089844 73441.859375 +v -76926.546875 -57402.511719 81003.593750 +v -79576.117188 -56818.386719 73441.859375 +v -75549.562500 -56038.687500 81003.593750 +v -79256.968750 -56566.089844 73441.859375 +v -75244.906250 -55797.847656 81003.593750 +v -77735.093750 -55616.820312 73441.859375 +v -73792.148438 -54891.683594 81003.593750 +v -76717.851562 -55120.527344 73441.859375 +v -72821.093750 -54417.925781 81003.593750 +v -71912.953125 -54039.035156 81003.593750 +v -67092.085938 -52989.152344 88565.328125 +v 52883.812500 -18000.000000 286860.031250 +v 53157.375000 -18000.000000 287004.750000 +v 63030.687500 -18000.000000 286330.343750 +v 64417.265625 -18000.000000 287004.750000 +v 64883.812500 -18000.000000 286860.031250 +v 54030.687500 -18000.000000 286330.343750 +v 61278.457031 -18000.000000 285952.000000 +v 55278.457031 -18000.000000 285952.000000 +v 59627.117188 -18000.000000 285724.968750 +v 56627.117188 -18000.000000 285724.968750 +v 58076.667969 -18000.000000 285649.312500 +v 62745.246094 -22282.853516 287004.750000 +v 63324.644531 -21985.718750 286860.031250 +v 61912.035156 -24415.437500 287004.750000 +v 61765.476562 -25971.435547 286860.031250 +v 61162.687500 -26332.849609 287004.750000 +v 58236.207031 -33818.464844 287004.750000 +v 58647.144531 -33942.871094 286860.031250 +v 47930.453125 -29301.490234 284417.000000 +v 48681.390625 -29975.890625 284430.750000 +v 47893.808594 -32323.316406 284310.031250 +v 49226.429688 -31959.382812 284475.406250 +v 50635.250000 -32689.021484 284719.437500 +v 50421.609375 -31959.382812 284654.406250 +v 51639.476562 -31959.382812 284867.406250 +v 53037.976562 -29975.890625 285026.781250 +v 55341.496094 -29975.890625 285512.656250 +v 55940.613281 -28984.146484 285571.218750 +v 58223.847656 -28984.146484 286155.718750 +v 58719.203125 -27992.400391 286187.750000 +v 59709.906250 -26008.910156 286251.750000 +v 60709.968750 -24006.681641 286316.375000 +v 57737.960938 -26008.910156 285746.937500 +v 58947.511719 -24006.681641 285865.187500 +v 55834.980469 -26008.910156 285345.562500 +v 57246.691406 -24006.681641 285506.437500 +v 54909.351562 -26008.910156 285183.656250 +v 56419.398438 -24006.681641 285361.750000 +v 54000.968750 -26008.910156 285047.625000 +v 55607.511719 -24006.681641 285240.156250 +v 52235.921875 -26008.910156 284853.156250 +v 54029.976562 -24006.681641 285066.343750 +v 50539.843750 -26008.910156 284762.125000 +v 52514.078125 -24006.681641 284985.000000 +v 48912.730469 -26008.910156 284774.562500 +v 51059.820312 -24006.681641 284996.093750 +v 48051.640625 -26300.242188 284770.718750 +v 49667.203125 -24006.681641 285099.687500 +v 48158.808594 -24828.035156 285083.531250 +v 48308.433594 -23390.375000 285520.281250 +v 48584.082031 -27992.400391 284541.343750 +v 49570.023438 -28984.146484 284536.343750 +v 51613.699219 -28984.146484 284761.531250 +v 50817.941406 -29975.890625 284666.156250 +v 52665.480469 -28984.146484 284919.031250 +v 51917.523438 -29975.890625 284830.812500 +v 53737.226562 -28984.146484 285106.468750 +v 48509.070312 -22018.660156 286105.937500 +v 49260.171875 -22017.750000 285852.843750 +v 50575.734375 -22016.224609 285522.593750 +v 51967.988281 -22014.701172 285307.843750 +v 53197.296875 -22013.419922 285216.656250 +v 54480.734375 -22012.140625 285207.000000 +v 55818.292969 -22010.859375 285278.875000 +v 57209.949219 -22009.578125 285432.218750 +v 57926.062500 -22008.937500 285539.437500 +v 58655.695312 -22008.296875 285667.031250 +v 60155.511719 -22007.015625 285983.281250 +v 61709.390625 -22005.736328 286380.937500 +v 62710.093750 -20002.226562 286445.625000 +v 61366.613281 -20002.226562 286101.687500 +v 60070.117188 -20002.226562 285828.218750 +v 59439.488281 -20002.226562 285717.906250 +v 48767.417969 -20747.265625 286860.031250 +v 50886.128906 -20002.226562 286374.875000 +v 51955.035156 -20002.226562 285989.500000 +v 50825.617188 -19373.632812 286860.031250 +v 53090.472656 -20002.226562 285703.937500 +v 54292.441406 -20002.226562 285518.156250 +v 55354.000000 -20002.226562 285439.187500 +v 56462.550781 -20002.226562 285430.750000 +v 57618.085938 -20002.226562 285492.750000 +v 58820.605469 -20002.226562 285625.250000 +v 57728.496094 -29975.890625 286123.718750 +v 56737.792969 -31959.382812 286059.718750 +v 53344.847656 -33084.375000 285301.406250 +v 54143.265625 -31959.382812 285395.500000 +v 52409.453125 -27992.400391 284856.906250 +v 50458.656250 -27992.400391 284641.968750 +v 53413.437500 -27992.400391 285007.250000 +v 54436.480469 -27992.400391 285186.156250 +v 56539.726562 -27992.400391 285629.781250 +v 59425.621094 -34134.613281 287004.750000 +v 58099.089844 -34509.335938 283255.437500 +v 58915.714844 -33976.847656 287004.750000 +v 57802.253906 -34426.648438 283255.437500 +v 57734.808594 -34411.453125 283255.437500 +v 56559.839844 -34847.390625 279506.093750 +v 56471.960938 -34827.761719 279506.093750 +v 55294.859375 -35263.218750 275756.750000 +v 55116.230469 -35221.828125 275756.750000 +v 53934.890625 -35656.304688 272007.406250 +v 53828.625000 -35630.824219 272007.406250 +v 52644.824219 -36064.710938 268258.062500 +v 52136.527344 -35946.152344 268258.062500 +v 50941.222656 -36377.355469 264508.750000 +v 50211.410156 -36209.878906 264508.750000 +v 49173.015625 -36576.304688 261295.015625 +v 47746.078125 -36261.660156 261295.015625 +v 46681.113281 -36622.226562 258081.296875 +v 43758.113281 -36023.511719 258081.296875 +v 42639.718750 -36373.136719 254867.578125 +v 37105.734375 -35753.394531 252820.515625 +v 41521.324219 -36722.757812 251653.859375 +v 40402.925781 -37072.378906 248440.140625 +v 44551.187500 -37343.359375 251653.859375 +v 43486.222656 -37703.925781 248440.140625 +v 46057.828125 -37675.578125 251653.859375 +v 45019.433594 -38042.003906 248440.140625 +v 46843.027344 -37855.765625 251653.859375 +v 45818.480469 -38225.367188 248440.140625 +v 47402.281250 -37986.210938 251653.859375 +v 46387.593750 -38358.113281 248440.140625 +v 47521.906250 -38014.894531 251653.859375 +v 46509.332031 -38387.304688 248440.140625 +v 47727.757812 -38062.593750 251653.859375 +v 46718.812500 -38435.843750 248440.140625 +v 47831.492188 -38085.761719 251653.859375 +v 46824.375000 -38459.421875 248440.140625 +v 47913.082031 -38104.144531 251653.859375 +v 46907.402344 -38478.128906 248440.140625 +v 48272.191406 -38204.175781 251653.859375 +v 47272.847656 -38579.921875 248440.140625 +v 47226.687500 -38754.570312 247636.718750 +v 46273.500000 -38955.667969 245226.421875 +v 45483.984375 -39414.562500 242012.703125 +v 45901.726562 -38852.113281 245226.421875 +v 44278.054688 -39071.921875 242069.062500 +v 45817.257812 -38833.078125 245226.421875 +v 45709.867188 -38809.093750 245226.421875 +v 58554.265625 -34464.609375 284192.750000 +v 57682.914062 -34794.605469 281380.750000 +v 56933.187500 -34947.707031 279506.093750 +v 56811.562500 -35124.605469 278568.750000 +v 55767.285156 -35386.078125 275756.750000 +v 55940.210938 -35454.601562 275756.750000 +v 54601.378906 -35824.449219 272007.406250 +v 54197.507812 -36114.593750 270132.750000 +v 53435.476562 -36262.820312 268258.062500 +v 52454.800781 -36774.589844 264508.750000 +v 52269.574219 -36701.191406 264508.750000 +v 51270.230469 -37076.937500 261295.015625 +v 50930.117188 -36982.199219 261295.015625 +v 49924.437500 -37356.179688 258081.296875 +v 49845.726562 -37338.445312 258081.296875 +v 48838.609375 -37712.105469 254867.578125 +v 48736.707031 -37689.343750 254867.578125 +v 50712.097656 -37434.582031 258884.734375 +v 50270.882812 -37452.683594 258081.296875 +v 48918.761719 -37730.164062 254867.578125 +v 49271.539062 -37828.429688 254867.578125 +v 48969.394531 -38094.574219 253260.718750 +v 42938.316406 -38751.609375 242131.656250 +v 44793.929688 -38594.972656 245226.421875 +v 45372.906250 -38730.015625 245226.421875 +v 45496.753906 -38759.710938 245226.421875 +v 43981.035156 -38408.429688 245226.421875 +v 41561.472656 -38435.718750 242196.000000 +v 42421.257812 -38064.492188 245226.421875 +v 39997.910156 -38092.144531 242269.062500 +v 39284.531250 -37422.003906 245226.421875 +v 33593.414062 -36872.433594 242568.343750 +v 40705.460938 -34607.500000 263327.843750 +v 44876.507812 -35673.890625 261295.015625 +v 48811.042969 -35901.093750 264508.750000 +v 51422.871094 -35782.382812 268258.062500 +v 53331.835938 -35514.949219 272007.406250 +v 55012.425781 -35196.937500 275756.750000 +v 56297.570312 -34787.351562 279506.093750 +v 57649.066406 -34392.300781 283255.437500 +v 44324.265625 -33456.792969 273890.812500 +v 47299.699219 -34916.375000 268258.062500 +v 45994.902344 -35324.269531 264508.750000 +v 49909.289062 -34100.589844 275756.750000 +v 48604.492188 -34508.484375 272007.406250 +v 52538.421875 -34639.109375 275756.750000 +v 51295.960938 -35059.769531 272007.406250 +v 53845.792969 -34927.390625 275756.750000 +v 52634.332031 -35354.886719 272007.406250 +v 54527.144531 -35083.746094 275756.750000 +v 52518.875000 -33284.804688 283255.437500 +v 51214.082031 -33692.699219 279506.093750 +v 53780.878906 -34218.449219 279506.093750 +v 55057.253906 -34499.894531 279506.093750 +v 55722.449219 -34652.542969 279506.093750 +v 56196.226562 -34763.050781 279506.093750 +v 55023.335938 -33797.789062 283255.437500 +v 56268.714844 -34072.398438 283255.437500 +v 56917.757812 -34221.339844 283255.437500 +v 57478.910156 -34352.875000 283255.437500 +v 50053.503906 -35480.433594 268258.062500 +v 56628.960938 -34862.964844 279506.093750 +v 55455.671875 -35299.277344 275756.750000 +v 54282.378906 -35735.589844 272007.406250 +v 53109.085938 -36171.902344 268258.062500 +v 51935.796875 -36608.214844 264508.750000 +v 57380.027344 -34329.164062 283255.437500 +v 55384.871094 -35283.324219 275756.750000 +v 54117.753906 -35698.675781 272007.406250 +v 52753.554688 -36090.785156 268258.062500 +v 51461.023438 -36498.597656 264508.750000 +v 49916.675781 -36746.957031 261295.015625 +v 48134.617188 -36942.730469 258081.296875 +v 45616.152344 -36982.792969 254867.578125 +v 54209.898438 -35719.257812 272007.406250 +v 53034.929688 -36155.195312 268258.062500 +v 51859.960938 -36591.128906 264508.750000 +v 50852.843750 -36964.789062 261295.015625 +v 52940.648438 -36134.132812 268258.062500 +v 51572.214844 -36525.261719 264508.750000 +v 50446.339844 -36870.500000 261295.015625 +v 48892.125000 -37116.562500 258081.296875 +v 47096.222656 -37309.152344 254867.578125 +v 51763.546875 -36569.593750 264508.750000 +v 50754.597656 -36942.843750 261295.015625 +v 49745.652344 -37316.093750 258081.296875 +v 50559.636719 -36897.667969 261295.015625 +v 49431.652344 -37242.402344 258081.296875 +v 47867.578125 -37486.164062 254867.578125 +v 49547.058594 -37270.078125 258081.296875 +v 48534.484375 -37642.484375 254867.578125 +v 48416.964844 -37614.308594 254867.578125 +v 59249.812500 -34141.070312 287004.750000 +v 59074.007812 -34147.527344 287004.750000 +v 58898.203125 -34153.984375 287004.750000 +v 58722.394531 -34160.441406 287004.750000 +v 58654.250000 -34178.281250 286860.031250 +v 51333.882812 -36815.753906 264508.750000 +v 43997.664062 -39461.789062 242082.156250 +v 58546.589844 -34166.894531 287004.750000 +v 58370.785156 -34173.351562 287004.750000 +v 58194.980469 -34179.808594 287004.750000 +v 50662.015625 -36840.429688 264508.750000 +v 53344.695312 -34532.304688 285359.343750 +v 49850.183594 -36870.242188 264508.750000 +v 46683.464844 -36986.539062 264508.750000 +v 39538.699219 -39603.464844 242290.515625 +v 33593.414062 -39792.367188 242568.343750 +v 40751.929688 -37315.156250 263463.468750 +v 50643.203125 -34692.429688 284784.593750 +v 47910.445312 -34837.945312 284358.593750 +v 42511.343750 -39509.011719 242151.609375 +v 59769.031250 -39089.140625 286860.031250 +v 59298.382812 -39050.527344 287004.750000 +v 59844.070312 -41464.339844 287004.750000 +v 60414.800781 -44000.000000 287004.750000 +v 60883.812500 -44000.000000 286860.031250 +v 48817.003906 -20895.058594 287004.750000 +v 50984.125000 -19449.468750 287004.750000 +v 48767.417969 -43039.738281 286860.031250 +v 48578.832031 -42419.160156 286309.562500 +v 50883.812500 -44000.000000 286860.031250 +v 51839.542969 -44000.000000 286418.625000 +v 48418.593750 -41714.464844 285841.843750 +v 52879.347656 -44000.000000 286103.343750 +v 48703.074219 -41504.453125 285655.625000 +v 49440.429688 -41504.453125 285524.937500 +v 48282.718750 -40908.703125 285445.218750 +v 48248.171875 -40256.683594 285194.968750 +v 48169.453125 -39990.253906 285114.625000 +v 49164.406250 -40256.683594 285128.343750 +v 48077.011719 -38944.609375 284844.781250 +v 50363.492188 -40256.683594 285105.375000 +v 48709.273438 -39008.910156 284856.625000 +v 50130.421875 -39008.910156 284908.500000 +v 48003.546875 -37748.406250 284630.343750 +v 48700.167969 -37801.253906 284673.968750 +v 47948.269531 -36384.937500 284469.000000 +v 50350.429688 -37801.253906 284819.593750 +v 49097.218750 -36593.597656 284600.687500 +v 50989.109375 -36593.597656 284858.781250 +v 50454.152344 -35989.769531 284761.843750 +v 52505.406250 -35989.769531 285134.031250 +v 52065.226562 -35385.941406 285054.281250 +v 54282.105469 -35385.941406 285549.937500 +v 56569.828125 -35385.941406 286151.843750 +v 48470.613281 -35989.769531 284491.218750 +v 49919.195312 -35385.941406 284664.906250 +v 58515.738281 -40256.683594 286404.125000 +v 58017.242188 -39008.910156 286339.500000 +v 57534.769531 -37801.253906 286276.937500 +v 56335.734375 -39008.910156 285897.093750 +v 55651.191406 -37801.253906 285781.375000 +v 54706.296875 -39008.910156 285532.781250 +v 53825.941406 -37801.253906 285373.281250 +v 53128.933594 -39008.910156 285246.562500 +v 52059.019531 -37801.253906 285052.687500 +v 51603.640625 -39008.910156 285038.468750 +v 59014.234375 -41504.453125 286468.750000 +v 59339.542969 -44000.000000 286418.625000 +v 57750.296875 -41504.453125 286136.218750 +v 56525.496094 -41504.453125 285862.375000 +v 57043.015625 -40256.683594 286016.656250 +v 55615.898438 -40256.683594 285697.562500 +v 57879.347656 -44000.000000 286103.343750 +v 55339.839844 -41504.453125 285647.250000 +v 54234.386719 -40256.683594 285446.906250 +v 56503.230469 -44000.000000 285914.156250 +v 54193.324219 -41504.453125 285490.812500 +v 52898.480469 -40256.683594 285264.656250 +v 53085.945312 -41504.453125 285393.125000 +v 55211.195312 -44000.000000 285851.093750 +v 52017.710938 -41504.453125 285354.125000 +v 50988.613281 -41504.453125 285373.843750 +v 54003.230469 -44000.000000 285914.156250 +v 50202.273438 -41504.453125 285431.031250 +v 56811.062500 -35989.769531 286183.125000 +v 54624.375000 -35989.769531 285607.781250 +v 51608.183594 -40256.683594 285150.812500 +v 57052.296875 -36593.597656 286214.406250 +v 54966.648438 -36593.597656 285665.656250 +v 52945.585938 -36593.597656 285213.781250 +v 48817.003906 -42938.160156 287004.750000 +v 51159.839844 -44000.000000 287004.750000 +v 50984.125000 -19449.468750 -287004.750000 +v 58236.207031 -33818.464844 -287004.750000 +v 48817.003906 -20895.058594 -287004.750000 +v 58194.980469 -34179.808594 -287004.750000 +v 48817.003906 -42938.160156 -287004.750000 +v 51159.839844 -44000.000000 -287004.750000 +v 59298.382812 -39050.527344 -287004.750000 +v 59844.070312 -41464.339844 -287004.750000 +v 53157.375000 -18000.000000 -287004.750000 +v 61162.687500 -26332.849609 -287004.750000 +v 61912.035156 -24415.437500 -287004.750000 +v 62745.246094 -22282.853516 -287004.750000 +v 64417.265625 -18000.000000 -287004.750000 +v 58915.714844 -33976.847656 -287004.750000 +v 58722.394531 -34160.441406 -287004.750000 +v 58546.589844 -34166.894531 -287004.750000 +v 58370.785156 -34173.351562 -287004.750000 +v 59425.621094 -34134.613281 -287004.750000 +v 59249.812500 -34141.070312 -287004.750000 +v 59074.007812 -34147.527344 -287004.750000 +v 58898.203125 -34153.984375 -287004.750000 +v 60414.800781 -44000.000000 -287004.750000 +v 45483.984375 -39414.562500 -242012.703125 +v 44278.054688 -39071.921875 -242069.062500 +v 43997.664062 -39461.789062 -242082.156250 +v 42511.343750 -39509.011719 -242151.609375 +v 42938.316406 -38751.609375 -242131.656250 +v 39538.699219 -39603.464844 -242290.515625 +v 41561.472656 -38435.718750 -242196.000000 +v 39997.910156 -38092.144531 -242269.062500 +v 33593.414062 -36872.433594 -242568.343750 +v 33593.414062 -39792.367188 -242568.343750 +v 48767.417969 -20747.265625 -286860.031250 +v 48509.070312 -22018.660156 -286105.937500 +v 48308.433594 -23390.375000 -285520.281250 +v 48158.808594 -24828.035156 -285083.531250 +v 48051.640625 -26300.242188 -284770.718750 +v 47930.453125 -29301.490234 -284417.000000 +v 47893.808594 -32323.316406 -284310.031250 +v 47910.445312 -34837.945312 -284358.593750 +v 47948.269531 -36384.937500 -284469.000000 +v 48003.546875 -37748.406250 -284630.343750 +v 48077.011719 -38944.609375 -284844.781250 +v 48169.453125 -39990.253906 -285114.625000 +v 48282.718750 -40908.703125 -285445.218750 +v 48418.593750 -41714.464844 -285841.843750 +v 48578.832031 -42419.160156 -286309.562500 +v 48767.417969 -43039.738281 -286860.031250 +v 44324.265625 -33456.792969 -273890.812500 +v 40751.929688 -37315.156250 -263463.468750 +v 40705.460938 -34607.500000 -263327.843750 +v 37105.734375 -35753.394531 -252820.515625 +v 64883.812500 -18000.000000 -286860.031250 +v 63030.687500 -18000.000000 -286330.343750 +v 52883.812500 -18000.000000 -286860.031250 +v 54030.687500 -18000.000000 -286330.343750 +v 61278.457031 -18000.000000 -285952.000000 +v 55278.457031 -18000.000000 -285952.000000 +v 59627.117188 -18000.000000 -285724.968750 +v 56627.117188 -18000.000000 -285724.968750 +v 58076.667969 -18000.000000 -285649.312500 +v 50825.617188 -19373.632812 -286860.031250 +v 58647.144531 -33942.871094 -286860.031250 +v 61765.476562 -25971.435547 -286860.031250 +v 63324.644531 -21985.718750 -286860.031250 +v 50886.128906 -20002.226562 -286374.875000 +v 51955.035156 -20002.226562 -285989.500000 +v 49260.171875 -22017.750000 -285852.843750 +v 50575.734375 -22016.224609 -285522.593750 +v 49667.203125 -24006.681641 -285099.687500 +v 48912.730469 -26008.910156 -284774.562500 +v 48584.082031 -27992.400391 -284541.343750 +v 50539.843750 -26008.910156 -284762.125000 +v 50458.656250 -27992.400391 -284641.968750 +v 52235.921875 -26008.910156 -284853.156250 +v 52409.453125 -27992.400391 -284856.906250 +v 54000.968750 -26008.910156 -285047.625000 +v 53413.437500 -27992.400391 -285007.250000 +v 54909.351562 -26008.910156 -285183.656250 +v 54436.480469 -27992.400391 -285186.156250 +v 55834.980469 -26008.910156 -285345.562500 +v 56539.726562 -27992.400391 -285629.781250 +v 57737.960938 -26008.910156 -285746.937500 +v 58719.203125 -27992.400391 -286187.750000 +v 59709.906250 -26008.910156 -286251.750000 +v 60709.968750 -24006.681641 -286316.375000 +v 61709.390625 -22005.736328 -286380.937500 +v 62710.093750 -20002.226562 -286445.625000 +v 61366.613281 -20002.226562 -286101.687500 +v 49570.023438 -28984.146484 -284536.343750 +v 51613.699219 -28984.146484 -284761.531250 +v 52665.480469 -28984.146484 -284919.031250 +v 53737.226562 -28984.146484 -285106.468750 +v 55940.613281 -28984.146484 -285571.218750 +v 58223.847656 -28984.146484 -286155.718750 +v 48681.390625 -29975.890625 -284430.750000 +v 49226.429688 -31959.382812 -284475.406250 +v 50635.250000 -32689.021484 -284719.437500 +v 50421.609375 -31959.382812 -284654.406250 +v 51639.476562 -31959.382812 -284867.406250 +v 51917.523438 -29975.890625 -284830.812500 +v 53037.976562 -29975.890625 -285026.781250 +v 53344.847656 -33084.375000 -285301.406250 +v 54143.265625 -31959.382812 -285395.500000 +v 55341.496094 -29975.890625 -285512.656250 +v 56737.792969 -31959.382812 -286059.718750 +v 58820.605469 -20002.226562 -285625.250000 +v 59439.488281 -20002.226562 -285717.906250 +v 60070.117188 -20002.226562 -285828.218750 +v 58655.695312 -22008.296875 -285667.031250 +v 60155.511719 -22007.015625 -285983.281250 +v 58947.511719 -24006.681641 -285865.187500 +v 56462.550781 -20002.226562 -285430.750000 +v 57618.085938 -20002.226562 -285492.750000 +v 57209.949219 -22009.578125 -285432.218750 +v 57926.062500 -22008.937500 -285539.437500 +v 56419.398438 -24006.681641 -285361.750000 +v 57246.691406 -24006.681641 -285506.437500 +v 55354.000000 -20002.226562 -285439.187500 +v 54292.441406 -20002.226562 -285518.156250 +v 53090.472656 -20002.226562 -285703.937500 +v 51967.988281 -22014.701172 -285307.843750 +v 57728.496094 -29975.890625 -286123.718750 +v 55818.292969 -22010.859375 -285278.875000 +v 54480.734375 -22012.140625 -285207.000000 +v 54029.976562 -24006.681641 -285066.343750 +v 52514.078125 -24006.681641 -284985.000000 +v 53197.296875 -22013.419922 -285216.656250 +v 51059.820312 -24006.681641 -284996.093750 +v 55607.511719 -24006.681641 -285240.156250 +v 50817.941406 -29975.890625 -284666.156250 +v 50883.812500 -44000.000000 -286860.031250 +v 59339.542969 -44000.000000 -286418.625000 +v 60883.812500 -44000.000000 -286860.031250 +v 51839.542969 -44000.000000 -286418.625000 +v 57879.347656 -44000.000000 -286103.343750 +v 52879.347656 -44000.000000 -286103.343750 +v 56503.230469 -44000.000000 -285914.156250 +v 54003.230469 -44000.000000 -285914.156250 +v 55211.195312 -44000.000000 -285851.093750 +v 58654.250000 -34178.281250 -286860.031250 +v 51333.882812 -36815.753906 -264508.750000 +v 50662.015625 -36840.429688 -264508.750000 +v 57682.914062 -34794.605469 -281380.750000 +v 56811.562500 -35124.605469 -278568.750000 +v 55940.210938 -35454.601562 -275756.750000 +v 58554.265625 -34464.609375 -284192.750000 +v 54197.507812 -36114.593750 -270132.750000 +v 52454.800781 -36774.589844 -264508.750000 +v 50712.097656 -37434.582031 -258884.734375 +v 48969.394531 -38094.574219 -253260.718750 +v 47226.687500 -38754.570312 -247636.718750 +v 49850.183594 -36870.242188 -264508.750000 +v 46683.464844 -36986.539062 -264508.750000 +v 50643.203125 -34692.429688 -284784.593750 +v 53344.695312 -34532.304688 -285359.343750 +v 58099.089844 -34509.335938 -283255.437500 +v 56933.187500 -34947.707031 -279506.093750 +v 55767.285156 -35386.078125 -275756.750000 +v 54601.378906 -35824.449219 -272007.406250 +v 53435.476562 -36262.820312 -268258.062500 +v 52269.574219 -36701.191406 -264508.750000 +v 51270.230469 -37076.937500 -261295.015625 +v 51935.796875 -36608.214844 -264508.750000 +v 50930.117188 -36982.199219 -261295.015625 +v 51859.960938 -36591.128906 -264508.750000 +v 50852.843750 -36964.789062 -261295.015625 +v 51763.546875 -36569.593750 -264508.750000 +v 50754.597656 -36942.843750 -261295.015625 +v 51572.214844 -36525.261719 -264508.750000 +v 50559.636719 -36897.667969 -261295.015625 +v 51461.023438 -36498.597656 -264508.750000 +v 50446.339844 -36870.500000 -261295.015625 +v 50941.222656 -36377.355469 -264508.750000 +v 49916.675781 -36746.957031 -261295.015625 +v 50211.410156 -36209.878906 -264508.750000 +v 49173.015625 -36576.304688 -261295.015625 +v 48811.042969 -35901.093750 -264508.750000 +v 47746.078125 -36261.660156 -261295.015625 +v 45994.902344 -35324.269531 -264508.750000 +v 44876.507812 -35673.890625 -261295.015625 +v 57649.066406 -34392.300781 -283255.437500 +v 57734.808594 -34411.453125 -283255.437500 +v 56559.839844 -34847.390625 -279506.093750 +v 56628.960938 -34862.964844 -279506.093750 +v 55455.671875 -35299.277344 -275756.750000 +v 55023.335938 -33797.789062 -283255.437500 +v 56268.714844 -34072.398438 -283255.437500 +v 56917.757812 -34221.339844 -283255.437500 +v 55722.449219 -34652.542969 -279506.093750 +v 56196.226562 -34763.050781 -279506.093750 +v 55012.425781 -35196.937500 -275756.750000 +v 55116.230469 -35221.828125 -275756.750000 +v 53934.890625 -35656.304688 -272007.406250 +v 54117.753906 -35698.675781 -272007.406250 +v 52940.648438 -36134.132812 -268258.062500 +v 53034.929688 -36155.195312 -268258.062500 +v 52518.875000 -33284.804688 -283255.437500 +v 51214.082031 -33692.699219 -279506.093750 +v 49909.289062 -34100.589844 -275756.750000 +v 52538.421875 -34639.109375 -275756.750000 +v 51295.960938 -35059.769531 -272007.406250 +v 52634.332031 -35354.886719 -272007.406250 +v 51422.871094 -35782.382812 -268258.062500 +v 52136.527344 -35946.152344 -268258.062500 +v 48604.492188 -34508.484375 -272007.406250 +v 47299.699219 -34916.375000 -268258.062500 +v 41521.324219 -36722.757812 -251653.859375 +v 42639.718750 -36373.136719 -254867.578125 +v 43758.113281 -36023.511719 -258081.296875 +v 45616.152344 -36982.792969 -254867.578125 +v 46681.113281 -36622.226562 -258081.296875 +v 47096.222656 -37309.152344 -254867.578125 +v 48134.617188 -36942.730469 -258081.296875 +v 47867.578125 -37486.164062 -254867.578125 +v 48892.125000 -37116.562500 -258081.296875 +v 48416.964844 -37614.308594 -254867.578125 +v 49431.652344 -37242.402344 -258081.296875 +v 48534.484375 -37642.484375 -254867.578125 +v 49547.058594 -37270.078125 -258081.296875 +v 48736.707031 -37689.343750 -254867.578125 +v 49745.652344 -37316.093750 -258081.296875 +v 48838.609375 -37712.105469 -254867.578125 +v 49845.726562 -37338.445312 -258081.296875 +v 48918.761719 -37730.164062 -254867.578125 +v 49924.437500 -37356.179688 -258081.296875 +v 49271.539062 -37828.429688 -254867.578125 +v 50270.882812 -37452.683594 -258081.296875 +v 39284.531250 -37422.003906 -245226.421875 +v 40402.925781 -37072.378906 -248440.140625 +v 43486.222656 -37703.925781 -248440.140625 +v 44551.187500 -37343.359375 -251653.859375 +v 45019.433594 -38042.003906 -248440.140625 +v 46057.828125 -37675.578125 -251653.859375 +v 45818.480469 -38225.367188 -248440.140625 +v 46843.027344 -37855.765625 -251653.859375 +v 46387.593750 -38358.113281 -248440.140625 +v 47402.281250 -37986.210938 -251653.859375 +v 46509.332031 -38387.304688 -248440.140625 +v 47521.906250 -38014.894531 -251653.859375 +v 46718.812500 -38435.843750 -248440.140625 +v 47727.757812 -38062.593750 -251653.859375 +v 46824.375000 -38459.421875 -248440.140625 +v 47831.492188 -38085.761719 -251653.859375 +v 46907.402344 -38478.128906 -248440.140625 +v 47913.082031 -38104.144531 -251653.859375 +v 47272.847656 -38579.921875 -248440.140625 +v 48272.191406 -38204.175781 -251653.859375 +v 42421.257812 -38064.492188 -245226.421875 +v 43981.035156 -38408.429688 -245226.421875 +v 44793.929688 -38594.972656 -245226.421875 +v 45372.906250 -38730.015625 -245226.421875 +v 45496.753906 -38759.710938 -245226.421875 +v 45901.726562 -38852.113281 -245226.421875 +v 45817.257812 -38833.078125 -245226.421875 +v 45709.867188 -38809.093750 -245226.421875 +v 46273.500000 -38955.667969 -245226.421875 +v 53780.878906 -34218.449219 -279506.093750 +v 55057.253906 -34499.894531 -279506.093750 +v 53845.792969 -34927.390625 -275756.750000 +v 57380.027344 -34329.164062 -283255.437500 +v 57478.910156 -34352.875000 -283255.437500 +v 56471.960938 -34827.761719 -279506.093750 +v 55384.871094 -35283.324219 -275756.750000 +v 54282.378906 -35735.589844 -272007.406250 +v 56297.570312 -34787.351562 -279506.093750 +v 57802.253906 -34426.648438 -283255.437500 +v 55294.859375 -35263.218750 -275756.750000 +v 54209.898438 -35719.257812 -272007.406250 +v 54527.144531 -35083.746094 -275756.750000 +v 53828.625000 -35630.824219 -272007.406250 +v 53331.835938 -35514.949219 -272007.406250 +v 52644.824219 -36064.710938 -268258.062500 +v 50053.503906 -35480.433594 -268258.062500 +v 52753.554688 -36090.785156 -268258.062500 +v 53109.085938 -36171.902344 -268258.062500 +v 59769.031250 -39089.140625 -286860.031250 +v 48470.613281 -35989.769531 -284491.218750 +v 49919.195312 -35385.941406 -284664.906250 +v 52065.226562 -35385.941406 -285054.281250 +v 54282.105469 -35385.941406 -285549.937500 +v 56569.828125 -35385.941406 -286151.843750 +v 56811.062500 -35989.769531 -286183.125000 +v 57052.296875 -36593.597656 -286214.406250 +v 57534.769531 -37801.253906 -286276.937500 +v 58017.242188 -39008.910156 -286339.500000 +v 55651.191406 -37801.253906 -285781.375000 +v 56335.734375 -39008.910156 -285897.093750 +v 53825.941406 -37801.253906 -285373.281250 +v 54706.296875 -39008.910156 -285532.781250 +v 52059.019531 -37801.253906 -285052.687500 +v 53128.933594 -39008.910156 -285246.562500 +v 50350.429688 -37801.253906 -284819.593750 +v 51603.640625 -39008.910156 -285038.468750 +v 48700.167969 -37801.253906 -284673.968750 +v 50130.421875 -39008.910156 -284908.500000 +v 48709.273438 -39008.910156 -284856.625000 +v 50363.492188 -40256.683594 -285105.375000 +v 49164.406250 -40256.683594 -285128.343750 +v 52017.710938 -41504.453125 -285354.125000 +v 50988.613281 -41504.453125 -285373.843750 +v 50202.273438 -41504.453125 -285431.031250 +v 49440.429688 -41504.453125 -285524.937500 +v 48703.074219 -41504.453125 -285655.625000 +v 49097.218750 -36593.597656 -284600.687500 +v 50989.109375 -36593.597656 -284858.781250 +v 52945.585938 -36593.597656 -285213.781250 +v 54966.648438 -36593.597656 -285665.656250 +v 48248.171875 -40256.683594 -285194.968750 +v 53085.945312 -41504.453125 -285393.125000 +v 54193.324219 -41504.453125 -285490.812500 +v 55339.839844 -41504.453125 -285647.250000 +v 56525.496094 -41504.453125 -285862.375000 +v 54234.386719 -40256.683594 -285446.906250 +v 55615.898438 -40256.683594 -285697.562500 +v 57750.296875 -41504.453125 -286136.218750 +v 57043.015625 -40256.683594 -286016.656250 +v 59014.234375 -41504.453125 -286468.750000 +v 58515.738281 -40256.683594 -286404.125000 +v 52505.406250 -35989.769531 -285134.031250 +v 50454.152344 -35989.769531 -284761.843750 +v 54624.375000 -35989.769531 -285607.781250 +v 51608.183594 -40256.683594 -285150.812500 +v 52898.480469 -40256.683594 -285264.656250 +v 4457.780762 -62315.804688 46896.535156 +v 4234.404297 -63407.761719 37596.039062 +v 3910.121582 -62142.292969 46553.761719 +v 2708.080078 -62913.503906 37596.039062 +v 3041.671387 -61896.265625 46547.738281 +v 2765.009277 -61833.406250 46545.851562 +v 3058.663818 -60804.175781 55518.949219 +v 2258.821045 -61720.105469 46542.464844 +v 2576.073242 -60695.761719 55518.949219 +v 2361.559570 -60645.980469 55518.949219 +v 2892.794189 -59673.136719 64480.402344 +v 2688.703125 -59625.773438 64480.402344 +v 3209.515137 -58650.511719 73441.859375 +v 3015.846436 -58605.566406 73441.859375 +v 3550.201172 -57550.507812 83081.390625 +v 3367.743652 -57508.164062 83081.390625 +v 3891.343018 -56449.031250 92733.820312 +v 3720.158447 -56409.148438 92735.109375 +v 4231.573730 -55350.496094 102360.460938 +v 4071.538086 -55313.359375 102360.460938 +v 4584.066895 -54253.195312 112000.000000 +v 3930.004639 -54098.011719 112000.000000 +v 3143.163086 -55093.421875 102360.460938 +v 3389.179932 -53972.058594 112000.000000 +v 2576.694580 -54963.054688 102360.460938 +v 1882.892700 -54803.218750 102360.460938 +v 1379.237549 -55861.593750 92750.789062 +v -1529.247314 -55208.886719 92766.476562 +v -2228.277588 -56232.738281 83081.390625 +v -5176.266602 -55624.917969 82885.835938 +v -5176.266602 -56218.308594 77974.195312 +v -5176.266602 -56794.457031 73209.421875 +v -2924.020752 -57251.773438 73441.859375 +v -5176.266602 -57900.214844 64075.855469 +v -3570.822754 -58199.125000 64480.402344 +v -5176.266602 -58970.144531 55251.609375 +v -4217.624512 -59146.476562 55518.949219 +v -5176.266602 -60032.269531 46502.929688 +v -4868.259277 -60099.441406 46504.394531 +v -5176.266602 -61114.625000 37596.039062 +v -1043.635498 -60953.000000 46522.679688 +v 693.744873 -62444.746094 37596.039062 +v -68.078766 -61177.191406 46527.250000 +v 728.437805 -61359.941406 46531.824219 +v 357.850555 -60176.433594 55518.949219 +v 1117.152954 -60351.175781 55518.949219 +v 1504.757812 -59345.292969 64480.402344 +v 1781.309692 -62703.722656 37596.039062 +v 2033.812866 -61668.070312 46540.964844 +v -5176.266602 -54430.671875 92786.226562 +v -836.791321 -54194.667969 102360.460938 +v 1808.814819 -53608.976562 112000.000000 +v -5176.266602 -52123.000000 112000.000000 +v -2376.303467 -52696.121094 112000.000000 +v 299.893097 -53272.445312 112000.000000 +v 6021.416992 -54672.097656 112000.000000 +v 4788.387695 -55476.253906 102360.460938 +v 4591.604980 -55431.378906 102360.460938 +v 5406.118652 -55651.785156 102360.460938 +v 5909.728516 -55218.074219 107349.750000 +v 5798.040527 -55764.054688 102699.507812 +v 5686.352051 -56310.035156 98049.257812 +v 5147.799805 -56772.523438 92724.132812 +v 4486.970703 -56584.105469 92729.296875 +v 4185.029297 -57693.882812 83081.390625 +v 3960.675781 -57642.718750 83081.390625 +v 3645.211182 -58748.390625 73441.859375 +v 5574.663574 -56856.011719 93399.007812 +v 5462.975586 -57401.992188 88748.765625 +v 4889.309082 -57894.007812 83081.390625 +v 5351.287109 -57947.972656 84098.515625 +v 5239.598633 -58493.949219 79448.265625 +v 4630.904297 -59015.117188 73441.859375 +v 5127.910645 -59039.929688 74798.023438 +v 5016.222168 -59585.906250 70147.773438 +v 4390.676758 -60057.363281 64480.402344 +v 4904.533691 -60131.886719 65497.523438 +v 4792.845703 -60677.867188 60847.277344 +v 4150.449219 -61099.613281 55518.949219 +v 4681.157227 -61223.843750 56197.031250 +v 4569.469238 -61769.824219 51546.781250 +v 3322.434570 -60864.328125 55518.949219 +v 3602.892334 -59833.511719 64480.402344 +v 3351.937500 -59776.285156 64480.402344 +v 3883.350342 -58802.695312 73441.859375 +v -572.129822 -59962.183594 55518.949219 +v -102.448769 -58975.199219 64480.402344 +v 367.232269 -57988.214844 73441.859375 +v 872.452393 -56926.550781 83081.390625 +v 782.347290 -59179.039062 64480.402344 +v 1206.843994 -58181.644531 73441.859375 +v 1663.460815 -57108.781250 83081.390625 +v 2121.306396 -56033.031250 92746.867188 +v 1892.362671 -58339.410156 73441.859375 +v 2309.296143 -57257.414062 83081.390625 +v 2727.182129 -56172.945312 92742.945312 +v 4276.467285 -56535.902344 92730.914062 +v -5176.266602 -61585.859375 56197.031250 +v -5176.266602 -63753.367188 37596.039062 +v -1484.341675 -59440.792969 73441.859375 +v -2823.598877 -63666.968750 37596.039062 +v 572.086304 -59365.269531 73441.859375 +v -470.931091 -63580.566406 37596.039062 +v 1545.200439 -59329.531250 73441.859375 +v 2279.071045 -59302.585938 73441.859375 +v 3221.996338 -54774.910156 112000.000000 +v 422.575378 -54877.714844 112000.000000 +v -5176.266602 -55083.332031 112000.000000 +v -5176.266602 -56167.085938 102699.507812 +v -5176.266602 -57250.839844 93399.007812 +v -5176.266602 -59418.351562 74798.023438 +v -5176.266602 -63753.367188 -37596.039062 +v -2823.598877 -63666.968750 -37596.039062 +v -5176.266602 -61114.625000 -37596.039062 +v 693.744873 -62444.746094 -37596.039062 +v -470.931091 -63580.566406 -37596.039062 +v 1781.309692 -62703.722656 -37596.039062 +v 2708.080078 -62913.503906 -37596.039062 +v 4234.404297 -63407.761719 -37596.039062 +v 6021.416992 -54672.097656 -112000.000000 +v 3221.996338 -54774.910156 -112000.000000 +v 4584.066895 -54253.195312 -112000.000000 +v 3930.004639 -54098.011719 -112000.000000 +v 3389.179932 -53972.058594 -112000.000000 +v 422.575378 -54877.714844 -112000.000000 +v 1808.814819 -53608.976562 -112000.000000 +v 299.893097 -53272.445312 -112000.000000 +v -5176.266602 -55083.332031 -112000.000000 +v -2376.303467 -52696.121094 -112000.000000 +v -5176.266602 -52123.000000 -112000.000000 +v -5176.266602 -54430.671875 -92786.226562 +v -5176.266602 -56167.085938 -102699.507812 +v -5176.266602 -57250.839844 -93399.007812 +v -5176.266602 -59418.351562 -74798.023438 +v -5176.266602 -56794.457031 -73209.421875 +v -5176.266602 -56218.308594 -77974.195312 +v -5176.266602 -55624.917969 -82885.835938 +v -5176.266602 -61585.859375 -56197.031250 +v -5176.266602 -58970.144531 -55251.609375 +v -5176.266602 -57900.214844 -64075.855469 +v -5176.266602 -60032.269531 -46502.929688 +v 4457.780762 -62315.804688 -46896.535156 +v 4569.469238 -61769.824219 -51546.781250 +v 4681.157227 -61223.843750 -56197.031250 +v 4792.845703 -60677.867188 -60847.277344 +v 4904.533691 -60131.886719 -65497.523438 +v 5016.222168 -59585.906250 -70147.773438 +v 2279.071045 -59302.585938 -73441.859375 +v 5127.910645 -59039.929688 -74798.023438 +v 5239.598633 -58493.949219 -79448.265625 +v 5351.287109 -57947.972656 -84098.515625 +v 5462.975586 -57401.992188 -88748.765625 +v 5574.663574 -56856.011719 -93399.007812 +v 5686.352051 -56310.035156 -98049.257812 +v 5798.040527 -55764.054688 -102699.507812 +v 5909.728516 -55218.074219 -107349.750000 +v 572.086304 -59365.269531 -73441.859375 +v 1545.200439 -59329.531250 -73441.859375 +v -1484.341675 -59440.792969 -73441.859375 +v -1043.635498 -60953.000000 -46522.679688 +v -4868.259277 -60099.441406 -46504.394531 +v -4217.624512 -59146.476562 -55518.949219 +v -3570.822754 -58199.125000 -64480.402344 +v -2924.020752 -57251.773438 -73441.859375 +v -2228.277588 -56232.738281 -83081.390625 +v -1529.247314 -55208.886719 -92766.476562 +v -836.791321 -54194.667969 -102360.460938 +v 1882.892700 -54803.218750 -102360.460938 +v 2576.694580 -54963.054688 -102360.460938 +v 3143.163086 -55093.421875 -102360.460938 +v 2727.182129 -56172.945312 -92742.945312 +v 4071.538086 -55313.359375 -102360.460938 +v 3720.158447 -56409.148438 -92735.109375 +v 3891.343018 -56449.031250 -92733.820312 +v 3367.743652 -57508.164062 -83081.390625 +v 3550.201172 -57550.507812 -83081.390625 +v 3209.515137 -58650.511719 -73441.859375 +v 3645.211182 -58748.390625 -73441.859375 +v 3351.937500 -59776.285156 -64480.402344 +v 3602.892334 -59833.511719 -64480.402344 +v 3322.434570 -60864.328125 -55518.949219 +v 4150.449219 -61099.613281 -55518.949219 +v 3910.121582 -62142.292969 -46553.761719 +v 3041.671387 -61896.265625 -46547.738281 +v 2765.009277 -61833.406250 -46545.851562 +v 3058.663818 -60804.175781 -55518.949219 +v 2576.073242 -60695.761719 -55518.949219 +v 2892.794189 -59673.136719 -64480.402344 +v 2688.703125 -59625.773438 -64480.402344 +v 3015.846436 -58605.566406 -73441.859375 +v 1892.362671 -58339.410156 -73441.859375 +v 2309.296143 -57257.414062 -83081.390625 +v 1663.460815 -57108.781250 -83081.390625 +v 2121.306396 -56033.031250 -92746.867188 +v 1379.237549 -55861.593750 -92750.789062 +v 2033.812866 -61668.070312 -46540.964844 +v 728.437805 -61359.941406 -46531.824219 +v -68.078766 -61177.191406 -46527.250000 +v 357.850555 -60176.433594 -55518.949219 +v -572.129822 -59962.183594 -55518.949219 +v -102.448769 -58975.199219 -64480.402344 +v 2258.821045 -61720.105469 -46542.464844 +v 4390.676758 -60057.363281 -64480.402344 +v 4630.904297 -59015.117188 -73441.859375 +v 4889.309082 -57894.007812 -83081.390625 +v 5147.799805 -56772.523438 -92724.132812 +v 5406.118652 -55651.785156 -102360.460938 +v 4788.387695 -55476.253906 -102360.460938 +v 4591.604980 -55431.378906 -102360.460938 +v 4486.970703 -56584.105469 -92729.296875 +v 4276.467285 -56535.902344 -92730.914062 +v 3960.675781 -57642.718750 -83081.390625 +v 4231.573730 -55350.496094 -102360.460938 +v 2361.559570 -60645.980469 -55518.949219 +v 1117.152954 -60351.175781 -55518.949219 +v 1504.757812 -59345.292969 -64480.402344 +v 782.347290 -59179.039062 -64480.402344 +v 3883.350342 -58802.695312 -73441.859375 +v 1206.843994 -58181.644531 -73441.859375 +v 367.232269 -57988.214844 -73441.859375 +v 4185.029297 -57693.882812 -83081.390625 +v 872.452393 -56926.550781 -83081.390625 +v -5176.266602 -57817.738281 88534.031250 +v -5176.266602 -54943.253906 88534.031250 +v -5176.266602 -56450.535156 100267.015625 +v -5176.266602 -53517.390625 100375.226562 +v -10094.458984 -56631.156250 100267.015625 +v -7382.199707 -55164.343750 112000.000000 +v -9588.133789 -55245.355469 112000.000000 +v -11794.066406 -55326.371094 112000.000000 +v -14000.000000 -56774.589844 100267.015625 +v -14000.000000 -58141.792969 88534.031250 +v -14000.000000 -55407.390625 112000.000000 +v -12235.252930 -58076.980469 88534.031250 +v -10470.506836 -58012.171875 88534.031250 +v -8705.759766 -57947.359375 88534.031250 +v -6941.013184 -57882.550781 88534.031250 +v -14000.000000 -51880.710938 100281.007812 +v -14000.000000 -50535.273438 112000.000000 +v -9282.450195 -52032.027344 106133.507812 +v -11790.331055 -50900.593750 112000.000000 +v -9579.896484 -51287.855469 112000.000000 +v -7372.600586 -51696.019531 112000.000000 +v -6953.722168 -54578.929688 88534.031250 +v -8729.212891 -54225.925781 88534.031250 +v -10086.958008 -52574.160156 100274.804688 +v -10485.395508 -53887.757812 88534.031250 +v -10490.816406 -52846.308594 97333.765625 +v -10893.605469 -53117.738281 94400.523438 +v -14000.000000 -53244.921875 88534.031250 +v -11296.393555 -53389.164062 91467.273438 +v -12240.661133 -53561.007812 88534.031250 +v -14000.000000 -58141.792969 -88534.031250 +v -14000.000000 -53244.921875 -88534.031250 +v -14000.000000 -56774.589844 -100267.015625 +v -14000.000000 -51880.710938 -100281.007812 +v -14000.000000 -55407.390625 -112000.000000 +v -14000.000000 -50535.273438 -112000.000000 +v -11790.331055 -50900.593750 -112000.000000 +v -11794.066406 -55326.371094 -112000.000000 +v -9579.896484 -51287.855469 -112000.000000 +v -9588.133789 -55245.355469 -112000.000000 +v -7372.600586 -51696.019531 -112000.000000 +v -7382.199707 -55164.343750 -112000.000000 +v -5176.266602 -57817.738281 -88534.031250 +v -5176.266602 -54943.253906 -88534.031250 +v -6941.013184 -57882.550781 -88534.031250 +v -6953.722168 -54578.929688 -88534.031250 +v -8705.759766 -57947.359375 -88534.031250 +v -8729.212891 -54225.925781 -88534.031250 +v -10470.506836 -58012.171875 -88534.031250 +v -10485.395508 -53887.757812 -88534.031250 +v -12235.252930 -58076.980469 -88534.031250 +v -12240.661133 -53561.007812 -88534.031250 +v -5176.266602 -56450.535156 -100267.015625 +v -5176.266602 -53517.390625 -100375.226562 +v -10094.458984 -56631.156250 -100267.015625 +v -11296.393555 -53389.164062 -91467.273438 +v -10893.605469 -53117.738281 -94400.523438 +v -10490.816406 -52846.308594 -97333.765625 +v -10086.958008 -52574.160156 -100274.804688 +v -9282.450195 -52032.027344 -106133.507812 +v 27411.441406 -43930.859375 205658.328125 +v -2862.041504 -54407.046875 117292.484375 +v 16118.583008 -49251.203125 159367.171875 +v 1987.519165 -54228.949219 117292.484375 +v 3199.909180 -54184.425781 117292.484375 +v 17281.601562 -49208.496094 159367.171875 +v 4412.299316 -54139.898438 117292.484375 +v 18215.609375 -49174.195312 159367.171875 +v 16860.267578 -50254.882812 149639.046875 +v 18530.798828 -49622.222656 155030.125000 +v 6837.079590 -54050.847656 117292.484375 +v 8507.611328 -53418.187500 122683.578125 +v 10178.142578 -52785.527344 128074.671875 +v 11848.673828 -52152.867188 133465.765625 +v 13519.205078 -51520.207031 138856.859375 +v 15189.736328 -50887.542969 144247.953125 +v 20201.330078 -48989.562500 160421.218750 +v 21871.861328 -48356.902344 165812.312500 +v 23542.392578 -47724.242188 171203.406250 +v 25212.923828 -47091.582031 176594.500000 +v 26883.455078 -46458.921875 181985.593750 +v 28553.986328 -45826.261719 187376.687500 +v 30224.519531 -45193.601562 192767.781250 +v 31895.050781 -44560.941406 198158.875000 +v 31508.791016 -44227.218750 201441.859375 +v 33565.582031 -43928.277344 203549.968750 +v 32027.046875 -43928.925781 204077.062500 +v 30726.316406 -44255.957031 201441.859375 +v 30488.511719 -43929.570312 204604.140625 +v 29731.896484 -44292.472656 201441.859375 +v 4590.242188 -53442.597656 117292.484375 +v 6689.892578 -53433.855469 119922.148438 +v 7308.589844 -53606.195312 119922.148438 +v 8126.317383 -53298.734375 122551.820312 +v 8944.044922 -52991.273438 125181.484375 +v 7512.802246 -53127.839844 122551.820312 +v 8335.711914 -52821.824219 125181.484375 +v 7373.411621 -53096.433594 122551.820312 +v 8197.499023 -52790.683594 125181.484375 +v 7196.192871 -53056.851562 122551.820312 +v 8021.776855 -52751.433594 125181.484375 +v 6844.505859 -52975.359375 122551.820312 +v 7673.060059 -52670.632812 125181.484375 +v 6640.131836 -52926.355469 122551.820312 +v 7470.412598 -52622.039062 125181.484375 +v 6573.956055 -52910.453125 122551.820312 +v 7404.795410 -52606.273438 125181.484375 +v 5866.848633 -52745.406250 122551.820312 +v 6703.660645 -52442.617188 125181.484375 +v 4881.116211 -52518.449219 122551.820312 +v 5726.253906 -52217.582031 125181.484375 +v 2896.331299 -52073.722656 122551.820312 +v 3758.233154 -51776.609375 125181.484375 +v 4706.328613 -49385.496094 139383.937500 +v 4620.135254 -51479.496094 127811.156250 +v 5482.036621 -51182.386719 130440.820312 +v 7416.529297 -51615.843750 130440.820312 +v 8261.666992 -51314.972656 133070.484375 +v 9214.096680 -51534.261719 133070.484375 +v 10050.908203 -51231.472656 135700.156250 +v 10728.153320 -51389.550781 135700.156250 +v 11558.993164 -51085.371094 138329.828125 +v 11621.815430 -51100.468750 138329.828125 +v 12452.095703 -50796.152344 140959.500000 +v 12644.385742 -50842.261719 140959.500000 +v 13472.940430 -50537.531250 143589.156250 +v 13800.863281 -50613.519531 143589.156250 +v 14626.447266 -50308.101562 146218.828125 +v 14790.194336 -50344.675781 146218.828125 +v 15614.281250 -50038.925781 148848.500000 +v 15741.899414 -50067.679688 148848.500000 +v 16564.808594 -49761.660156 151478.171875 +v 17121.322266 -49916.679688 151478.171875 +v 17939.050781 -49609.218750 154107.828125 +v 18756.777344 -49301.757812 156737.500000 +v 19574.505859 -48994.300781 159367.171875 +v 20392.234375 -48686.839844 161996.843750 +v 19033.537109 -48843.613281 159367.171875 +v 19856.447266 -48537.597656 161996.843750 +v 18910.628906 -48815.917969 159367.171875 +v 19734.716797 -48510.167969 161996.843750 +v 18754.367188 -48781.015625 159367.171875 +v 19579.951172 -48475.601562 161996.843750 +v 18444.265625 -48709.164062 159367.171875 +v 19272.820312 -48404.433594 161996.843750 +v 18264.058594 -48665.953125 159367.171875 +v 19094.339844 -48361.636719 161996.843750 +v 18205.708984 -48651.929688 159367.171875 +v 19036.548828 -48347.750000 161996.843750 +v 17582.216797 -48506.398438 159367.171875 +v 18419.027344 -48203.613281 161996.843750 +v 16713.044922 -48306.281250 159367.171875 +v 17558.183594 -48005.410156 161996.843750 +v 14962.957031 -47914.144531 159367.171875 +v 15824.858398 -47617.031250 161996.843750 +v 12274.699219 -46958.617188 161475.406250 +v 19843.070312 -44531.750000 183566.859375 +v 3271.339355 -53138.679688 117292.484375 +v 5030.036621 -53048.191406 119922.148438 +v 5743.116699 -53214.632812 119922.148438 +v 5809.851074 -53230.667969 119922.148438 +v 4035.978516 -52819.320312 119922.148438 +v 2090.325928 -52870.910156 117292.484375 +v 2034.429565 -52370.835938 119922.148438 +v -2862.041504 -51812.390625 117292.484375 +v 8929.644531 -49993.933594 140959.500000 +v 8067.742188 -50291.046875 138329.828125 +v 7205.840332 -50588.160156 135700.156250 +v 9951.942383 -50713.234375 138329.828125 +v 9106.804688 -51014.105469 135700.156250 +v 10887.720703 -50928.687500 138329.828125 +v 27411.441406 -42104.902344 205658.328125 +v 29774.634766 -42754.460938 204848.718750 +v 23581.974609 -44943.015625 185663.843750 +v 22720.072266 -45240.128906 183034.187500 +v 25164.421875 -45297.589844 185663.843750 +v 24319.285156 -45598.457031 183034.187500 +v 25950.335938 -45478.539062 185663.843750 +v 25113.523438 -45781.324219 183034.187500 +v 26514.103516 -45610.128906 185663.843750 +v 25683.263672 -45914.308594 183034.187500 +v 26566.865234 -45622.808594 185663.843750 +v 25736.583984 -45927.121094 183034.187500 +v 26729.810547 -45661.878906 185663.843750 +v 25901.255859 -45966.609375 183034.187500 +v 27010.205078 -45726.851562 185663.843750 +v 26184.621094 -46032.265625 183034.187500 +v 27151.500000 -45758.410156 185663.843750 +v 26327.412109 -46064.160156 183034.187500 +v 27262.634766 -45783.449219 185663.843750 +v 26439.724609 -46089.464844 183034.187500 +v 27751.783203 -45919.703125 185663.843750 +v 26934.054688 -46227.160156 183034.187500 +v 26116.328125 -46534.621094 180404.515625 +v 25298.599609 -46842.082031 177774.843750 +v 24480.873047 -47149.539062 175145.171875 +v 23970.996094 -47007.515625 175145.171875 +v 23148.085938 -47313.531250 172515.515625 +v 23031.064453 -47287.164062 172515.515625 +v 22206.978516 -47592.914062 169885.843750 +v 22056.703125 -47559.351562 169885.843750 +v 21231.119141 -47864.765625 167256.171875 +v 20929.929688 -47794.976562 167256.171875 +v 20101.375000 -48099.707031 164626.500000 +v 19924.621094 -48057.324219 164626.500000 +v 31975.943359 -43393.335938 204094.562500 +v 30912.783203 -43251.171875 203550.015625 +v 29444.367188 -42922.144531 203550.046875 +v 28753.384766 -43160.335938 201441.859375 +v 30235.250000 -43492.375000 201441.859375 +v 31642.062500 -43419.082031 203550.015625 +v 30971.207031 -43661.820312 201441.859375 +v 32165.203125 -43541.195312 203550.000000 +v 31499.140625 -43785.046875 201441.859375 +v 32214.164062 -43552.960938 203550.000000 +v 31548.548828 -43796.921875 201441.859375 +v 32365.365234 -43589.214844 203550.000000 +v 31701.136719 -43833.507812 201441.859375 +v 32625.554688 -43649.507812 203549.984375 +v 31963.708984 -43894.351562 201441.859375 +v 32756.667969 -43678.792969 203549.984375 +v 32096.021484 -43923.902344 201441.859375 +v 32859.792969 -43702.027344 203549.984375 +v 32200.093750 -43947.351562 201441.859375 +v 33313.691406 -43828.464844 203549.968750 +v 32658.148438 -44074.945312 201441.859375 +v 32864.078125 -43658.023438 203790.296875 +v 31022.693359 -44689.863281 196182.515625 +v 31840.421875 -44382.402344 198812.187500 +v 31377.183594 -44253.367188 198812.187500 +v 31271.935547 -44229.656250 198812.187500 +v 31138.125000 -44199.765625 198812.187500 +v 30872.582031 -44138.238281 198812.187500 +v 30718.267578 -44101.234375 198812.187500 +v 30668.300781 -44089.226562 198812.187500 +v 30134.396484 -43964.609375 198812.187500 +v 29390.111328 -43793.242188 198812.187500 +v 27891.484375 -43457.449219 198812.187500 +v 29387.238281 -45304.781250 190923.187500 +v 30204.966797 -44997.324219 193552.859375 +v 29731.363281 -44865.402344 193552.859375 +v 30554.273438 -44559.386719 196182.515625 +v 29623.761719 -44841.156250 193552.859375 +v 30447.847656 -44535.406250 196182.515625 +v 29486.957031 -44810.601562 193552.859375 +v 30312.541016 -44505.183594 196182.515625 +v 29215.472656 -44747.695312 193552.859375 +v 30044.027344 -44442.964844 196182.515625 +v 29057.707031 -44709.863281 193552.859375 +v 29887.986328 -44405.550781 196182.515625 +v 29006.621094 -44697.589844 193552.859375 +v 29837.460938 -44393.406250 196182.515625 +v 28460.771484 -44570.179688 193552.859375 +v 29297.583984 -44267.394531 196182.515625 +v 27699.835938 -44394.980469 193552.859375 +v 28544.972656 -44094.113281 196182.515625 +v 26167.679688 -44051.675781 193552.859375 +v 27029.582031 -43754.562500 196182.515625 +v 28569.511719 -45612.242188 188293.515625 +v 28085.544922 -45477.433594 188293.515625 +v 28908.455078 -45171.417969 190923.187500 +v 27975.585938 -45452.660156 188293.515625 +v 28799.673828 -45146.906250 190923.187500 +v 27835.789062 -45421.433594 188293.515625 +v 28661.373047 -45116.015625 190923.187500 +v 27558.363281 -45357.152344 188293.515625 +v 28386.917969 -45052.421875 190923.187500 +v 27397.144531 -45318.492188 188293.515625 +v 28227.425781 -45014.179688 190923.187500 +v 27344.943359 -45305.949219 188293.515625 +v 28175.783203 -45001.769531 190923.187500 +v 26787.148438 -45175.753906 188293.515625 +v 27623.958984 -44872.964844 190923.187500 +v 26009.560547 -44996.718750 188293.515625 +v 26854.697266 -44695.851562 190923.187500 +v 24443.876953 -44645.902344 188293.515625 +v 25305.779297 -44348.789062 190923.187500 +v 23663.144531 -47457.000000 172515.515625 +v 22325.175781 -47619.546875 169885.843750 +v 21382.890625 -47898.667969 167256.171875 +v 20405.535156 -48170.183594 164626.500000 +v 22027.689453 -48071.917969 167256.171875 +v 22845.416016 -47764.460938 169885.843750 +v 21209.960938 -48379.378906 164626.500000 +v 20679.357422 -48231.582031 164626.500000 +v 21502.267578 -47925.562500 167256.171875 +v 20558.804688 -48204.417969 164626.500000 +v 16303.594727 -50224.136719 148848.500000 +v 14918.989258 -50373.695312 146218.828125 +v 13966.107422 -50650.425781 143589.156250 +v 12975.280273 -50918.933594 140959.500000 +v 11815.832031 -51146.988281 138329.828125 +v 10791.534180 -51404.781250 135700.156250 +v 9897.313477 -51693.730469 133070.484375 +v 8377.284180 -51837.046875 130440.820312 +v 6571.391602 -51916.710938 127811.156250 +v 15485.867188 -50531.597656 146218.828125 +v 14668.139648 -50839.058594 143589.156250 +v 13850.412109 -51146.515625 140959.500000 +v 13273.169922 -50985.726562 140959.500000 +v 12450.260742 -51291.742188 138329.828125 +v 12317.933594 -51261.929688 138329.828125 +v 11493.846680 -51567.679688 135700.156250 +v 11324.112305 -51529.769531 135700.156250 +v 10498.528320 -51835.183594 133070.484375 +v 10158.722656 -51756.445312 133070.484375 +v 9330.168945 -52061.175781 130440.820312 +v 9130.973633 -52013.410156 130440.820312 +v 8300.693359 -52317.726562 127811.156250 +v 8235.634766 -52302.093750 127811.156250 +v 13032.683594 -51453.976562 138329.828125 +v 11627.350586 -51597.757812 135700.156250 +v 10669.759766 -51873.429688 133070.484375 +v 9672.944336 -52140.601562 130440.820312 +v 8501.614258 -52365.902344 127811.156250 +v 12214.956055 -51761.437500 135700.156250 +v 11397.228516 -52068.894531 133070.484375 +v 10579.500977 -52376.355469 130440.820312 +v 9981.531250 -52209.792969 130440.820312 +v 9158.622070 -52515.808594 127811.156250 +v 9021.585938 -52484.933594 127811.156250 +v 9761.773438 -52683.816406 127811.156250 +v 10653.447266 -49399.707031 146218.828125 +v 11515.349609 -49102.593750 148848.500000 +v 12377.250977 -48805.480469 151478.171875 +v 14177.631836 -49208.890625 151478.171875 +v 15022.769531 -48908.019531 154107.828125 +v 15908.591797 -49111.972656 154107.828125 +v 16745.404297 -48809.183594 156737.500000 +v 17374.869141 -48956.109375 156737.500000 +v 14101.054688 -48211.257812 156737.500000 +v 15867.907227 -48607.152344 156737.500000 +v 16686.759766 -47319.917969 164626.500000 +v 18403.320312 -47704.542969 164626.500000 +v 19255.839844 -47900.828125 164626.500000 +v 19867.386719 -48043.570312 164626.500000 +v 18410.564453 -46725.691406 169885.843750 +v 19272.464844 -46428.578125 172515.515625 +v 20134.367188 -46131.464844 175145.171875 +v 21783.871094 -46501.066406 175145.171875 +v 22629.009766 -46200.195312 177774.843750 +v 23439.900391 -46386.894531 177774.843750 +v 24276.710938 -46084.109375 180404.515625 +v 24852.423828 -46218.488281 180404.515625 +v 21858.171875 -45537.238281 180404.515625 +v 23474.146484 -45899.328125 180404.515625 +v 6015.951172 -53280.089844 119922.148438 +v 6370.608887 -53362.269531 119922.148438 +v 6549.324707 -53402.183594 119922.148438 +v 12149.696289 -51224.351562 138329.828125 +v 13142.020508 -50956.175781 140959.500000 +v 10987.277344 -51451.718750 135700.156250 +v 9961.253906 -51709.097656 133070.484375 +v 9066.474609 -51997.910156 130440.820312 +v 7540.472656 -52139.832031 127811.156250 +v 12389.832031 -50781.191406 140959.500000 +v 11724.532227 -50625.902344 140959.500000 +v 13220.671875 -50477.011719 143589.156250 +v 12561.343750 -50323.117188 143589.156250 +v 14051.510742 -50172.832031 146218.828125 +v 13398.156250 -50020.328125 146218.828125 +v 14882.350586 -49868.652344 148848.500000 +v 14234.967773 -49717.542969 148848.500000 +v 15713.190430 -49564.468750 151478.171875 +v 15071.780273 -49414.757812 151478.171875 +v 16544.029297 -49260.289062 154107.828125 +v 10797.080078 -50412.367188 140959.500000 +v 11642.218750 -50111.496094 143589.156250 +v 12487.356445 -49810.628906 146218.828125 +v 13332.494141 -49509.757812 148848.500000 +v 9791.545898 -49696.820312 143589.156250 +v 6343.938477 -50885.273438 133070.484375 +v 13282.375977 -50491.839844 143589.156250 +v 14301.495117 -50232.804688 146218.828125 +v 15452.031250 -50002.683594 148848.500000 +v 16438.369141 -49733.171875 151478.171875 +v 17387.718750 -49455.644531 154107.828125 +v 14096.080078 -50679.710938 143589.156250 +v 18210.628906 -49149.628906 156737.500000 +v 18086.542969 -49121.671875 156737.500000 +v 17262.455078 -49427.421875 154107.828125 +v 17928.783203 -49086.433594 156737.500000 +v 17103.199219 -49391.851562 154107.828125 +v 16277.615234 -49697.265625 151478.171875 +v 17615.712891 -49013.890625 156737.500000 +v 16787.158203 -49318.621094 154107.828125 +v 15958.603516 -49623.347656 151478.171875 +v 15130.048828 -49928.078125 148848.500000 +v 17433.779297 -48970.265625 156737.500000 +v 16603.498047 -49274.582031 154107.828125 +v 15773.217773 -49578.894531 151478.171875 +v 14942.937500 -49883.210938 148848.500000 +v 14112.657227 -50187.523438 146218.828125 +v 13239.153320 -48508.367188 154107.828125 +v 25616.816406 -46395.484375 180404.515625 +v 24793.906250 -46701.500000 177774.843750 +v 25503.326172 -46369.910156 180404.515625 +v 24679.238281 -46675.664062 177774.843750 +v 23855.152344 -46981.414062 175145.171875 +v 25359.037109 -46337.683594 180404.515625 +v 24533.453125 -46643.101562 177774.843750 +v 23707.869141 -46948.515625 175145.171875 +v 22882.287109 -47253.933594 172515.515625 +v 25072.701172 -46271.335938 180404.515625 +v 24244.146484 -46576.062500 177774.843750 +v 23415.591797 -46880.792969 175145.171875 +v 22587.039062 -47185.519531 172515.515625 +v 21758.484375 -47490.250000 169885.843750 +v 24906.304688 -46231.437500 180404.515625 +v 24076.023438 -46535.750000 177774.843750 +v 23245.742188 -46840.066406 175145.171875 +v 22415.462891 -47144.378906 172515.515625 +v 21585.181641 -47448.695312 169885.843750 +v 20754.900391 -47753.007812 167256.171875 +v 20996.269531 -45834.351562 177774.843750 +v 24021.583984 -46522.667969 177774.843750 +v 22603.087891 -46689.683594 175145.171875 +v 20938.734375 -46801.933594 172515.515625 +v 23190.746094 -46826.847656 175145.171875 +v 22359.906250 -47131.027344 172515.515625 +v 21529.066406 -47435.210938 169885.843750 +v 20698.226562 -47739.390625 167256.171875 +v 21766.275391 -46992.468750 172515.515625 +v 20093.595703 -47102.804688 169885.843750 +v 17548.662109 -47022.804688 167256.171875 +v 20929.464844 -47295.253906 169885.843750 +v 20092.652344 -47598.039062 167256.171875 +v 19248.458984 -47403.671875 167256.171875 +v 10804.441406 -51903.777344 133070.484375 +v 9845.672852 -52179.179688 130440.820312 +v 8847.360352 -52446.019531 127811.156250 +v -2862.041504 -51812.390625 -117292.484375 +v 4706.328613 -49385.496094 -139383.937500 +v -2862.041504 -54407.046875 -117292.484375 +v 12274.699219 -46958.617188 -161475.406250 +v 27411.441406 -43930.859375 -205658.328125 +v 19843.070312 -44531.750000 -183566.859375 +v 27411.441406 -42104.902344 -205658.328125 +v 30587.513672 -42986.089844 -204570.234375 +v 30488.511719 -43929.570312 -204604.140625 +v 32124.884766 -43437.539062 -204043.531250 +v 32027.046875 -43928.925781 -204077.062500 +v 32456.041016 -43538.234375 -203930.078125 +v 32912.160156 -43671.945312 -203773.828125 +v 33565.582031 -43928.277344 -203549.968750 +v 5760.527832 -53715.824219 -117292.484375 +v 4412.299316 -54139.898438 -117292.484375 +v 4745.364746 -53479.015625 -117292.484375 +v 3199.909180 -54184.425781 -117292.484375 +v 2255.916260 -52907.921875 -117292.484375 +v 1987.519165 -54228.949219 -117292.484375 +v -384.913696 -52329.871094 -117292.484375 +v 8507.611328 -53418.187500 -122683.578125 +v 10178.142578 -52785.527344 -128074.671875 +v 11848.673828 -52152.867188 -133465.765625 +v 13519.205078 -51520.207031 -138856.859375 +v 15189.736328 -50887.542969 -144247.953125 +v 16860.267578 -50254.882812 -149639.046875 +v 18530.798828 -49622.222656 -155030.125000 +v 18215.609375 -49174.195312 -159367.171875 +v 20201.330078 -48989.562500 -160421.218750 +v 21871.861328 -48356.902344 -165812.312500 +v 23542.392578 -47724.242188 -171203.406250 +v 25212.923828 -47091.582031 -176594.500000 +v 26883.455078 -46458.921875 -181985.593750 +v 28553.986328 -45826.261719 -187376.687500 +v 30224.519531 -45193.601562 -192767.781250 +v 31895.050781 -44560.941406 -198158.875000 +v 31508.791016 -44227.218750 -201441.859375 +v 30726.316406 -44255.957031 -201441.859375 +v 29731.896484 -44292.472656 -201441.859375 +v 16118.583008 -49251.203125 -159367.171875 +v 17281.601562 -49208.496094 -159367.171875 +v 2896.331299 -52073.722656 -122551.820312 +v 3758.233154 -51776.609375 -125181.484375 +v 4620.134766 -51479.496094 -127811.156250 +v 5726.253906 -52217.582031 -125181.484375 +v 6571.391602 -51916.710938 -127811.156250 +v 6703.660156 -52442.617188 -125181.484375 +v 7540.472168 -52139.832031 -127811.156250 +v 7404.795410 -52606.273438 -125181.484375 +v 8235.634766 -52302.093750 -127811.156250 +v 7470.412109 -52622.039062 -125181.484375 +v 8300.692383 -52317.726562 -127811.156250 +v 7673.060059 -52670.632812 -125181.484375 +v 8501.614258 -52365.902344 -127811.156250 +v 8021.776855 -52751.433594 -125181.484375 +v 8847.360352 -52446.019531 -127811.156250 +v 8197.498047 -52790.683594 -125181.484375 +v 9021.585938 -52484.933594 -127811.156250 +v 8335.711914 -52821.824219 -125181.484375 +v 9158.621094 -52515.808594 -127811.156250 +v 8944.044922 -52991.273438 -125181.484375 +v 9761.772461 -52683.816406 -127811.156250 +v 10579.500977 -52376.355469 -130440.820312 +v 11397.228516 -52068.894531 -133070.484375 +v 12214.956055 -51761.437500 -135700.156250 +v 11627.350586 -51597.757812 -135700.156250 +v 12450.260742 -51291.742188 -138329.828125 +v 12317.933594 -51261.929688 -138329.828125 +v 13142.020508 -50956.175781 -140959.500000 +v 12975.280273 -50918.933594 -140959.500000 +v 13800.863281 -50613.519531 -143589.156250 +v 13472.940430 -50537.531250 -143589.156250 +v 14301.495117 -50232.804688 -146218.828125 +v 14112.656250 -50187.523438 -146218.828125 +v 14942.937500 -49883.210938 -148848.500000 +v 14882.350586 -49868.652344 -148848.500000 +v 15713.190430 -49564.468750 -151478.171875 +v 15071.780273 -49414.757812 -151478.171875 +v 15908.591797 -49111.972656 -154107.828125 +v 15022.769531 -48908.019531 -154107.828125 +v 15867.907227 -48607.152344 -156737.500000 +v 14101.054688 -48211.257812 -156737.500000 +v 14962.957031 -47914.144531 -159367.171875 +v 15824.858398 -47617.031250 -161996.843750 +v 16686.759766 -47319.917969 -164626.500000 +v 17558.181641 -48005.410156 -161996.843750 +v 18403.320312 -47704.542969 -164626.500000 +v 18419.027344 -48203.613281 -161996.843750 +v 19255.839844 -47900.828125 -164626.500000 +v 19036.548828 -48347.750000 -161996.843750 +v 19867.386719 -48043.570312 -164626.500000 +v 19094.339844 -48361.636719 -161996.843750 +v 19924.621094 -48057.324219 -164626.500000 +v 19272.820312 -48404.433594 -161996.843750 +v 20101.375000 -48099.707031 -164626.500000 +v 19579.951172 -48475.601562 -161996.843750 +v 20405.535156 -48170.183594 -164626.500000 +v 19734.716797 -48510.167969 -161996.843750 +v 20558.802734 -48204.417969 -164626.500000 +v 19856.447266 -48537.597656 -161996.843750 +v 20679.357422 -48231.582031 -164626.500000 +v 20392.234375 -48686.839844 -161996.843750 +v 21209.960938 -48379.378906 -164626.500000 +v 22027.689453 -48071.917969 -167256.171875 +v 22845.416016 -47764.460938 -169885.843750 +v 23663.144531 -47457.000000 -172515.515625 +v 23148.085938 -47313.531250 -172515.515625 +v 23970.996094 -47007.515625 -175145.171875 +v 23855.152344 -46981.414062 -175145.171875 +v 24679.238281 -46675.664062 -177774.843750 +v 24533.453125 -46643.101562 -177774.843750 +v 25359.037109 -46337.683594 -180404.515625 +v 25072.701172 -46271.335938 -180404.515625 +v 25901.255859 -45966.609375 -183034.187500 +v 25736.583984 -45927.121094 -183034.187500 +v 26566.865234 -45622.808594 -185663.843750 +v 26514.103516 -45610.128906 -185663.843750 +v 27344.943359 -45305.949219 -188293.515625 +v 26787.148438 -45175.753906 -188293.515625 +v 27623.958984 -44872.964844 -190923.187500 +v 26854.697266 -44695.851562 -190923.187500 +v 27699.835938 -44394.980469 -193552.859375 +v 26167.679688 -44051.675781 -193552.859375 +v 27029.582031 -43754.562500 -196182.515625 +v 27891.484375 -43457.449219 -198812.187500 +v 28753.384766 -43160.335938 -201441.859375 +v 29390.111328 -43793.242188 -198812.187500 +v 30235.250000 -43492.375000 -201441.859375 +v 30134.396484 -43964.609375 -198812.187500 +v 30971.207031 -43661.820312 -201441.859375 +v 30668.300781 -44089.226562 -198812.187500 +v 31499.140625 -43785.046875 -201441.859375 +v 30718.267578 -44101.234375 -198812.187500 +v 31548.548828 -43796.921875 -201441.859375 +v 30872.582031 -44138.238281 -198812.187500 +v 31701.136719 -43833.507812 -201441.859375 +v 31138.125000 -44199.765625 -198812.187500 +v 31963.708984 -43894.351562 -201441.859375 +v 31271.935547 -44229.656250 -198812.187500 +v 32096.021484 -43923.902344 -201441.859375 +v 31377.183594 -44253.367188 -198812.187500 +v 32200.093750 -43947.351562 -201441.859375 +v 31840.421875 -44382.402344 -198812.187500 +v 32658.148438 -44074.945312 -201441.859375 +v 33313.691406 -43828.464844 -203549.968750 +v 32859.792969 -43702.027344 -203549.984375 +v 32756.667969 -43678.792969 -203549.984375 +v 2034.429443 -52370.835938 -119922.148438 +v 4035.978271 -52819.320312 -119922.148438 +v 5030.036133 -53048.191406 -119922.148438 +v 5743.116211 -53214.632812 -119922.148438 +v 5866.848145 -52745.406250 -122551.820312 +v 6573.955566 -52910.453125 -122551.820312 +v 6015.951172 -53280.089844 -119922.148438 +v 5809.851074 -53230.667969 -119922.148438 +v 7308.589844 -53606.195312 -119922.148438 +v 6689.892578 -53433.855469 -119922.148438 +v 6549.324219 -53402.183594 -119922.148438 +v 7373.411621 -53096.433594 -122551.820312 +v 7196.192871 -53056.851562 -122551.820312 +v 8126.317383 -53298.734375 -122551.820312 +v 7512.802246 -53127.839844 -122551.820312 +v 13032.683594 -51453.976562 -138329.828125 +v 13273.169922 -50985.726562 -140959.500000 +v 13966.107422 -50650.425781 -143589.156250 +v 14626.447266 -50308.101562 -146218.828125 +v 15130.048828 -49928.078125 -148848.500000 +v 15773.217773 -49578.894531 -151478.171875 +v 16544.029297 -49260.289062 -154107.828125 +v 16745.404297 -48809.183594 -156737.500000 +v 16713.044922 -48306.281250 -159367.171875 +v 13850.411133 -51146.515625 -140959.500000 +v 14668.139648 -50839.058594 -143589.156250 +v 15485.867188 -50531.597656 -146218.828125 +v 14918.989258 -50373.695312 -146218.828125 +v 15741.899414 -50067.679688 -148848.500000 +v 15614.281250 -50038.925781 -148848.500000 +v 16438.369141 -49733.171875 -151478.171875 +v 16277.615234 -49697.265625 -151478.171875 +v 17103.199219 -49391.851562 -154107.828125 +v 16787.158203 -49318.621094 -154107.828125 +v 17615.712891 -49013.890625 -156737.500000 +v 17433.779297 -48970.265625 -156737.500000 +v 18264.058594 -48665.953125 -159367.171875 +v 18205.708984 -48651.929688 -159367.171875 +v 16303.594727 -50224.136719 -148848.500000 +v 16564.808594 -49761.660156 -151478.171875 +v 17262.455078 -49427.421875 -154107.828125 +v 17928.783203 -49086.433594 -156737.500000 +v 18444.265625 -48709.164062 -159367.171875 +v 17121.322266 -49916.679688 -151478.171875 +v 17939.050781 -49609.218750 -154107.828125 +v 18756.777344 -49301.757812 -156737.500000 +v 18210.628906 -49149.628906 -156737.500000 +v 19033.537109 -48843.613281 -159367.171875 +v 18910.628906 -48815.921875 -159367.171875 +v 19574.505859 -48994.300781 -159367.171875 +v 24480.871094 -47149.539062 -175145.171875 +v 24793.906250 -46701.500000 -177774.843750 +v 25503.326172 -46369.910156 -180404.515625 +v 26184.621094 -46032.265625 -183034.187500 +v 26729.810547 -45661.878906 -185663.843750 +v 27397.144531 -45318.492188 -188293.515625 +v 28175.783203 -45001.769531 -190923.187500 +v 28460.771484 -44570.179688 -193552.859375 +v 28544.972656 -44094.113281 -196182.515625 +v 25298.599609 -46842.082031 -177774.843750 +v 26116.328125 -46534.621094 -180404.515625 +v 26934.054688 -46227.160156 -183034.187500 +v 26439.724609 -46089.464844 -183034.187500 +v 27262.634766 -45783.449219 -185663.843750 +v 27151.500000 -45758.410156 -185663.843750 +v 27975.585938 -45452.660156 -188293.515625 +v 27835.789062 -45421.433594 -188293.515625 +v 28661.373047 -45116.015625 -190923.187500 +v 28386.917969 -45052.421875 -190923.187500 +v 29215.472656 -44747.695312 -193552.859375 +v 29057.707031 -44709.863281 -193552.859375 +v 29887.986328 -44405.550781 -196182.515625 +v 29837.460938 -44393.406250 -196182.515625 +v 27751.783203 -45919.703125 -185663.843750 +v 28085.544922 -45477.433594 -188293.515625 +v 28799.673828 -45146.906250 -190923.187500 +v 29486.957031 -44810.601562 -193552.859375 +v 30044.027344 -44442.964844 -196182.515625 +v 28569.509766 -45612.242188 -188293.515625 +v 29387.238281 -45304.781250 -190923.187500 +v 30204.966797 -44997.324219 -193552.859375 +v 29731.363281 -44865.402344 -193552.859375 +v 30554.273438 -44559.386719 -196182.515625 +v 30447.847656 -44535.406250 -196182.515625 +v 31022.693359 -44689.863281 -196182.515625 +v 32625.554688 -43649.507812 -203549.984375 +v 32365.365234 -43589.214844 -203550.000000 +v 32214.164062 -43552.960938 -203550.000000 +v 32165.203125 -43541.195312 -203550.000000 +v 31642.062500 -43419.082031 -203550.015625 +v 30912.783203 -43251.171875 -203550.015625 +v 29444.367188 -42922.144531 -203550.046875 +v 25305.779297 -44348.789062 -190923.187500 +v 26009.560547 -44996.718750 -188293.515625 +v 25950.335938 -45478.539062 -185663.843750 +v 25683.263672 -45914.308594 -183034.187500 +v 24906.304688 -46231.437500 -180404.515625 +v 24244.146484 -46576.062500 -177774.843750 +v 23707.869141 -46948.515625 -175145.171875 +v 23031.064453 -47287.164062 -172515.515625 +v 22325.175781 -47619.546875 -169885.843750 +v 19272.464844 -46428.578125 -172515.515625 +v 20134.367188 -46131.464844 -175145.171875 +v 20996.269531 -45834.351562 -177774.843750 +v 21783.871094 -46501.066406 -175145.171875 +v 22629.009766 -46200.195312 -177774.843750 +v 22603.087891 -46689.683594 -175145.171875 +v 23439.900391 -46386.898438 -177774.843750 +v 23190.746094 -46826.847656 -175145.171875 +v 24021.583984 -46522.667969 -177774.843750 +v 23245.742188 -46840.066406 -175145.171875 +v 24076.023438 -46535.750000 -177774.843750 +v 23415.591797 -46880.792969 -175145.171875 +v 12377.250977 -48805.480469 -151478.171875 +v 13239.153320 -48508.367188 -154107.828125 +v 5482.036621 -51182.386719 -130440.820312 +v 6343.938477 -50885.273438 -133070.484375 +v 7416.529297 -51615.843750 -130440.820312 +v 8261.666992 -51314.972656 -133070.484375 +v 8377.284180 -51837.046875 -130440.820312 +v 9214.096680 -51534.261719 -133070.484375 +v 9066.474609 -51997.910156 -130440.820312 +v 9897.313477 -51693.730469 -133070.484375 +v 9130.973633 -52013.410156 -130440.820312 +v 9961.253906 -51709.097656 -133070.484375 +v 9330.168945 -52061.175781 -130440.820312 +v 10158.722656 -51756.445312 -133070.484375 +v 9672.944336 -52140.601562 -130440.820312 +v 10498.528320 -51835.183594 -133070.484375 +v 9845.672852 -52179.179688 -130440.820312 +v 10669.759766 -51873.429688 -133070.484375 +v 9981.531250 -52209.792969 -130440.820312 +v 10804.440430 -51903.777344 -133070.484375 +v 7205.840332 -50588.160156 -135700.156250 +v 8067.742188 -50291.046875 -138329.828125 +v 9106.804688 -51014.105469 -135700.156250 +v 9951.942383 -50713.234375 -138329.828125 +v 10050.908203 -51231.472656 -135700.156250 +v 10887.719727 -50928.687500 -138329.828125 +v 10728.153320 -51389.550781 -135700.156250 +v 11558.992188 -51085.371094 -138329.828125 +v 10791.534180 -51404.781250 -135700.156250 +v 11621.815430 -51100.468750 -138329.828125 +v 10987.277344 -51451.718750 -135700.156250 +v 11815.832031 -51146.988281 -138329.828125 +v 11324.112305 -51529.769531 -135700.156250 +v 12149.696289 -51224.351562 -138329.828125 +v 11493.846680 -51567.679688 -135700.156250 +v 9791.545898 -49696.820312 -143589.156250 +v 8929.643555 -49993.933594 -140959.500000 +v 11515.349609 -49102.593750 -148848.500000 +v 13332.494141 -49509.757812 -148848.500000 +v 14177.631836 -49208.890625 -151478.171875 +v 14234.967773 -49717.542969 -148848.500000 +v 18410.564453 -46725.691406 -169885.843750 +v 20093.595703 -47102.804688 -169885.843750 +v 20938.734375 -46801.933594 -172515.515625 +v 20929.462891 -47295.253906 -169885.843750 +v 21766.275391 -46992.468750 -172515.515625 +v 21529.066406 -47435.210938 -169885.843750 +v 22359.906250 -47131.031250 -172515.515625 +v 21585.181641 -47448.695312 -169885.843750 +v 22415.462891 -47144.378906 -172515.515625 +v 21758.484375 -47490.250000 -169885.843750 +v 22587.039062 -47185.519531 -172515.515625 +v 22056.703125 -47559.351562 -169885.843750 +v 22882.285156 -47253.933594 -172515.515625 +v 22206.978516 -47592.914062 -169885.843750 +v 21858.171875 -45537.238281 -180404.515625 +v 23474.146484 -45899.328125 -180404.515625 +v 24276.710938 -46084.109375 -180404.515625 +v 24852.423828 -46218.488281 -180404.515625 +v 24443.876953 -44645.902344 -188293.515625 +v 23581.974609 -44943.015625 -185663.843750 +v 22720.072266 -45240.128906 -183034.187500 +v 24319.285156 -45598.457031 -183034.187500 +v 6370.608887 -53362.269531 -119922.148438 +v 6844.505371 -52975.359375 -122551.820312 +v 6640.131836 -52926.355469 -122551.820312 +v 4881.116211 -52518.449219 -122551.820312 +v 14096.080078 -50679.710938 -143589.156250 +v 14790.194336 -50344.675781 -146218.828125 +v 15452.031250 -50002.683594 -148848.500000 +v 15958.603516 -49623.347656 -151478.171875 +v 16603.498047 -49274.582031 -154107.828125 +v 17374.869141 -48956.109375 -156737.500000 +v 17582.216797 -48506.398438 -159367.171875 +v 12644.385742 -50842.261719 -140959.500000 +v 12452.095703 -50796.152344 -140959.500000 +v 13282.375977 -50491.839844 -143589.156250 +v 12389.832031 -50781.191406 -140959.500000 +v 13220.671875 -50477.011719 -143589.156250 +v 14051.510742 -50172.832031 -146218.828125 +v 11724.532227 -50625.902344 -140959.500000 +v 12561.343750 -50323.117188 -143589.156250 +v 13398.156250 -50020.328125 -146218.828125 +v 10797.080078 -50412.367188 -140959.500000 +v 11642.217773 -50111.496094 -143589.156250 +v 12487.355469 -49810.628906 -146218.828125 +v 10653.447266 -49399.707031 -146218.828125 +v 17387.718750 -49455.644531 -154107.828125 +v 18086.542969 -49121.671875 -156737.500000 +v 18754.367188 -48781.015625 -159367.171875 +v 17548.662109 -47022.804688 -167256.171875 +v 19248.458984 -47403.671875 -167256.171875 +v 20092.652344 -47598.039062 -167256.171875 +v 20698.226562 -47739.390625 -167256.171875 +v 20754.900391 -47753.007812 -167256.171875 +v 20929.929688 -47794.976562 -167256.171875 +v 21231.119141 -47864.765625 -167256.171875 +v 21382.890625 -47898.667969 -167256.171875 +v 21502.267578 -47925.562500 -167256.171875 +v 25616.814453 -46395.484375 -180404.515625 +v 26327.412109 -46064.160156 -183034.187500 +v 27010.205078 -45726.851562 -185663.843750 +v 27558.363281 -45357.152344 -188293.515625 +v 28227.425781 -45014.179688 -190923.187500 +v 29006.621094 -44697.589844 -193552.859375 +v 29297.583984 -44267.394531 -196182.515625 +v 25113.523438 -45781.324219 -183034.187500 +v 25164.421875 -45297.589844 -185663.843750 +v 28908.455078 -45171.417969 -190923.187500 +v 29623.761719 -44841.156250 -193552.859375 +v 30312.541016 -44505.183594 -196182.515625 +v 4100.000000 -64064.785156 32000.000000 +v 1504.463623 -64160.113281 32000.000000 +v 2844.944092 -63632.843750 32000.000000 +v 1556.923462 -63336.105469 32000.000000 +v 318.832458 -63041.812500 32000.000000 +v -371.441711 -62882.589844 32000.000000 +v -1231.917480 -62684.433594 32000.000000 +v -103100.976562 -62477.960938 32000.000000 +v -102334.312500 -61711.304688 32000.000000 +v 251.040436 -64206.140625 32000.000000 +v -103955.242188 -63774.042969 32000.000000 +v -103702.929688 -63234.945312 32000.000000 +v -466.052917 -64232.472656 32000.000000 +v -1356.806519 -64265.183594 32000.000000 +v -8737.813477 -64536.253906 32000.000000 +v -23365.287109 -65073.449219 32000.000000 +v -52621.671875 -66148.195312 32000.000000 +v -81878.351562 -67194.976562 32000.000000 +v -89192.945312 -67266.476562 32000.000000 +v -103298.554688 -65401.703125 32000.000000 +v -103623.976562 -65072.523438 32000.000000 +v -103822.484375 -64774.628906 32000.000000 +v -92860.164062 -67187.640625 32000.000000 +v -102519.429688 -65926.062500 32000.000000 +v -102937.679688 -65694.085938 32000.000000 +v -101940.406250 -66157.914062 32000.000000 +v -94653.359375 -67112.726562 32000.000000 +v -96581.289062 -67002.679688 32000.000000 +v -99374.093750 -66702.468750 32000.000000 +v -97437.718750 -66939.039062 32000.000000 +v -98121.312500 -66872.679688 32000.000000 +v -103933.929688 -64545.246094 32000.000000 +v -103972.976562 -64377.273438 32000.000000 +v -103999.851562 -64136.902344 32000.000000 +v -103992.023438 -63920.000000 32000.000000 +v -101213.476562 -60752.890625 32000.000000 +v -8534.253906 -61067.605469 32000.000000 +v -15774.988281 -59591.933594 32000.000000 +v -98815.109375 -59321.187500 32000.000000 +v -97601.992188 -58766.191406 32000.000000 +v -96815.156250 -58447.652344 32000.000000 +v -30297.441406 -57048.531250 32000.000000 +v -23030.027344 -58249.386719 32000.000000 +v -95893.968750 -58096.980469 32000.000000 +v -94055.359375 -57459.023438 32000.000000 +v -37577.019531 -56008.027344 32000.000000 +v -92302.296875 -56930.234375 32000.000000 +v -88688.406250 -56022.351562 32000.000000 +v -44869.500000 -55169.992188 32000.000000 +v -85062.406250 -55321.054688 32000.000000 +v -52172.914062 -54552.476562 32000.000000 +v -81422.140625 -54813.796875 32000.000000 +v -77771.468750 -54485.199219 32000.000000 +v -74115.953125 -54286.265625 32000.000000 +v -66800.664062 -54103.492188 32000.000000 +v -59484.535156 -54179.718750 32000.000000 +v -7101.151367 -54817.992188 114883.710938 +v -21370.292969 -55341.984375 114883.710938 +v -26465.882812 -56736.335938 104523.250000 +v -26189.785156 -56603.660156 105574.820312 +v -35639.425781 -55864.960938 114883.710938 +v -25105.775391 -56082.757812 109703.484375 +v 39.014427 -54555.769531 114883.710938 +v 3578.241943 -54425.792969 114883.710938 +v 6090.677246 -54333.523438 114883.710938 +v -42773.906250 -56129.964844 114883.710938 +v -41202.730469 -56673.820312 109703.484375 +v -42249.968750 -57028.308594 106991.367188 +v -43202.988281 -57350.906250 104523.250000 +v -51572.367188 -57618.171875 104523.250000 +v -50149.578125 -57196.730469 107699.640625 +v -49252.003906 -56930.863281 109703.484375 +v -54064.339844 -57155.617188 108053.781250 +v -55754.781250 -57624.203125 104523.250000 +v -56228.234375 -58997.269531 94129.000000 +v -47213.765625 -58708.550781 94136.218750 +v -51204.023438 -60059.253906 83802.320312 +v -31906.308594 -59350.660156 83802.320312 +v -34626.523438 -60657.820312 73441.859375 +v -14048.511719 -59902.210938 73441.859375 +v -14768.466797 -60532.285156 68261.625000 +v -5176.266602 -59301.648438 75799.531250 +v -5176.266602 -60785.554688 63065.035156 +v -15490.367188 -61164.066406 63067.390625 +v -16208.376953 -61792.437500 57901.160156 +v -38706.843750 -62618.566406 57901.160156 +v -16928.332031 -62422.511719 52720.929688 +v -40066.949219 -63272.144531 52720.929688 +v -18368.242188 -63682.660156 42360.464844 +v -42787.164062 -64579.308594 42360.464844 +v -43612.039062 -64975.691406 39218.757812 +v -44038.093750 -65180.425781 37596.039062 +v -44648.597656 -65473.796875 35270.820312 +v -58106.761719 -56804.726562 109110.460938 +v -58443.433594 -56890.675781 108454.906250 +v -58004.722656 -56934.898438 108407.914062 +v -60462.601562 -57406.171875 104523.250000 +v -59986.093750 -57445.355469 104523.250000 +v -59224.234375 -56659.492188 109110.460938 +v -59492.894531 -56726.386719 108595.890625 +v -58797.578125 -56844.292969 108501.906250 +v -61619.246094 -57255.847656 104523.250000 +v -60852.332031 -57364.730469 104523.250000 +v -60460.480469 -56512.585938 108724.867188 +v -62687.308594 -57052.507812 104523.250000 +v -61224.304688 -56245.308594 108830.179688 +v -61581.402344 -56007.902344 108906.570312 +v -61471.449219 -55982.449219 109110.460938 +v -61803.292969 -55674.906250 109110.460938 +v -61803.296875 -55674.906250 109110.460938 +v -61872.371094 -55690.523438 108982.968750 +v -64443.886719 -56013.636719 104523.250000 +v -61991.117188 -55467.792969 109040.632812 +v -61953.203125 -55459.355469 109110.460938 +v -64524.328125 -55839.187500 104523.250000 +v -64553.234375 -55679.246094 104523.250000 +v -64559.214844 -55492.453125 104523.250000 +v -64501.046875 -55275.082031 104523.250000 +v -64394.488281 -55055.363281 104523.250000 +v -64198.808594 -54775.578125 104523.250000 +v -62030.921875 -55290.812500 109110.460938 +v -62037.527344 -55292.265625 109098.304688 +v -62064.625000 -54955.824219 109110.460938 +v -62008.425781 -54745.812500 109110.460938 +v -61905.476562 -54533.539062 109110.460938 +v -60332.136719 -52942.300781 109110.460938 +v -63542.300781 -54081.289062 104523.250000 +v -59136.253906 -52196.359375 109110.460938 +v -61528.183594 -52636.253906 104523.250000 +v -62765.992188 -53408.343750 104523.250000 +v -57646.691406 -51517.140625 109110.460938 +v -58336.898438 -51806.371094 109110.460938 +v -60700.808594 -52232.593750 104523.250000 +v -59986.402344 -51933.222656 104523.250000 +v -64270.140625 -52495.003906 94173.070312 +v -62806.777344 -52005.167969 94172.773438 +v -60740.402344 -51428.582031 94172.335938 +v -65707.742188 -52266.515625 83802.320312 +v -58662.246094 -50959.398438 94171.906250 +v -63481.554688 -51763.925781 83802.320312 +v -56569.542969 -50579.562500 94171.476562 +v -61239.796875 -51357.039062 83802.320312 +v -54470.773438 -50292.371094 94171.046875 +v -58991.554688 -51049.386719 83802.320312 +v -50260.890625 -49957.148438 94170.187500 +v -54481.890625 -50690.261719 83802.320312 +v -46045.179688 -49811.964844 94169.328125 +v -49966.035156 -50534.687500 83802.320312 +v -41828.234375 -49780.238281 94168.468750 +v -45448.914062 -50500.640625 83802.320312 +v -37611.878906 -49886.437500 94167.609375 +v -40932.476562 -50614.324219 83802.320312 +v -33398.273438 -50129.492188 94166.750000 +v -36419.039062 -50874.593750 83802.320312 +v -29188.615234 -50485.714844 94165.890625 +v -31909.880859 -51256.074219 83802.320312 +v -24850.375000 -50962.960938 94165.000000 +v -27263.046875 -51767.167969 83802.320312 +v -20518.537109 -51546.742188 94164.117188 +v -22623.130859 -52392.363281 83802.320312 +v -13363.392578 -53912.683594 83802.320312 +v -53584.894531 -50221.527344 109110.460938 +v -55439.734375 -50739.070312 109110.460938 +v -57702.074219 -51127.875000 104523.250000 +v -55782.214844 -50592.191406 104523.250000 +v -51443.886719 -49754.378906 109703.484375 +v -53851.417969 -50156.289062 104523.250000 +v -49573.949219 -49414.976562 109703.484375 +v -46351.777344 -48894.890625 114883.710938 +v -47698.609375 -49158.355469 109703.484375 +v -42772.683594 -48546.589844 114883.710938 +v -43936.925781 -48858.792969 109703.484375 +v -40170.078125 -48729.019531 109703.484375 +v -46045.917969 -49225.085938 104523.250000 +v -42129.269531 -49090.152344 104523.250000 +v -35599.324219 -48337.371094 114883.710938 +v -36402.175781 -48700.621094 109703.484375 +v -38211.523438 -49060.625000 104523.250000 +v -32634.843750 -48795.449219 109703.484375 +v -28426.435547 -48567.714844 114883.710938 +v -28870.015625 -49012.550781 109703.484375 +v -25108.755859 -49330.753906 109703.484375 +v -30379.820312 -49384.960938 104523.250000 +v -26468.980469 -49715.820312 104523.250000 +v -21265.693359 -49208.175781 114883.710938 +v -21232.656250 -49757.078125 109703.484375 +v -22438.734375 -50159.097656 104523.250000 +v -17362.324219 -50278.578125 109703.484375 +v -14123.918945 -50187.574219 114883.710938 +v -9197.881836 -51266.917969 112766.765625 +v -7001.773926 -51424.468750 114883.710938 +v 106.540283 -52879.425781 114883.710938 +v 3611.335205 -53670.796875 114883.710938 +v -18414.486328 -50701.335938 104523.250000 +v -5176.266602 -55777.421875 81623.062500 +v -14853.378906 -54859.062500 73441.859375 +v -5176.266602 -56593.652344 74869.640625 +v -15598.372070 -55332.253906 68261.625000 +v -5448.136230 -57335.378906 68261.625000 +v -16343.365234 -55805.441406 63081.394531 +v -5886.897461 -57869.000000 63081.394531 +v -17088.359375 -56278.632812 57901.160156 +v -6325.658203 -58402.625000 57901.160156 +v -17833.351562 -56751.820312 52720.929688 +v -6764.418945 -58936.250000 52720.929688 +v -19323.337891 -57698.203125 42360.464844 +v -7641.940430 -60003.496094 42360.464844 +v -8045.482422 -60494.289062 37596.039062 +v -2074.320557 -61807.042969 37596.039062 +v -515.900452 -62165.519531 37596.039062 +v 672.859924 -62439.847656 37596.039062 +v -5176.266602 -57375.343750 68409.492188 +v -5176.266602 -58133.152344 62153.613281 +v -5176.266602 -59614.937500 49939.308594 +v -20008.531250 -58133.410156 37596.039062 +v -32008.125000 -56163.246094 37596.039062 +v -38020.941406 -55353.058594 37596.039062 +v -44042.722656 -54690.734375 37596.039062 +v -49886.089844 -54196.382812 37596.039062 +v -55735.003906 -53859.101562 37596.039062 +v -48497.476562 -53853.867188 42360.464844 +v -54208.687500 -53524.527344 42360.464844 +v -45477.867188 -53109.050781 52720.929688 +v -50889.632812 -52796.976562 52720.929688 +v -43968.062500 -52736.640625 57901.160156 +v -49230.105469 -52433.199219 57901.160156 +v -42458.257812 -52364.230469 63081.394531 +v -47570.582031 -52069.425781 63081.394531 +v -40948.453125 -51991.824219 68261.625000 +v -45911.054688 -51705.652344 68261.625000 +v -39438.648438 -51619.414062 73441.859375 +v -44251.527344 -51341.875000 73441.859375 +v -61587.808594 -53711.777344 37596.039062 +v -59923.695312 -53380.667969 42360.464844 +v -56305.000000 -52660.660156 52720.929688 +v -54495.652344 -52300.656250 57901.160156 +v -52686.304688 -51940.656250 63081.394531 +v -50876.957031 -51580.652344 68261.625000 +v -49067.609375 -51220.648438 73441.859375 +v -67441.500000 -53755.894531 37596.039062 +v -65639.570312 -53423.750000 42360.464844 +v -73293.546875 -53957.503906 37596.039062 +v -71353.835938 -53620.609375 42360.464844 +v -79137.570312 -54422.890625 37596.039062 +v -77060.273438 -54075.042969 42360.464844 +v -82051.039062 -54821.570312 37596.039062 +v -79905.148438 -54464.335938 42360.464844 +v -82741.828125 -54979.203125 42360.464844 +v -75238.812500 -53687.511719 52720.929688 +v -77926.757812 -54175.382812 52720.929688 +v -72905.640625 -53299.097656 57901.160156 +v -75519.226562 -53773.472656 57901.160156 +v -70572.476562 -52910.687500 63081.394531 +v -73111.687500 -53371.562500 63081.394531 +v -68239.304688 -52522.273438 68261.625000 +v -70704.156250 -52969.656250 68261.625000 +v -65906.132812 -52133.863281 73441.859375 +v -68296.625000 -52567.746094 73441.859375 +v -84956.109375 -55348.851562 37596.039062 +v -87841.000000 -56000.148438 37596.039062 +v -85558.796875 -55615.167969 42360.464844 +v -90709.554688 -56800.539062 37596.039062 +v -88659.109375 -56448.148438 41753.613281 +v -90648.828125 -57114.136719 41753.613281 +v -92741.015625 -57480.496094 37596.039062 +v -94122.679688 -58003.839844 37596.039062 +v -92002.101562 -57626.730469 41753.613281 +v -93047.617188 -58064.847656 41753.613281 +v -95190.125000 -58451.148438 37596.039062 +v -96426.343750 -59054.269531 37596.039062 +v -98275.820312 -60207.882812 37596.039062 +v -99435.750000 -61213.359375 37596.039062 +v -100416.679688 -62250.742188 37596.039062 +v -100709.062500 -62668.789062 37596.039062 +v -100868.281250 -62997.089844 37596.039062 +v -100955.203125 -63321.882812 37596.039062 +v -98694.250000 -62835.511719 41753.613281 +v -100946.265625 -63600.976562 37596.039062 +v -100903.078125 -63839.953125 37596.039062 +v -100782.875000 -64100.617188 37596.039062 +v -103553.382812 -65112.671875 32054.777344 +v -100551.031250 -64433.980469 37596.039062 +v -100037.820312 -64909.601562 37596.039062 +v -97837.812500 -64400.355469 41675.554688 +v -97795.718750 -64390.613281 41753.613281 +v -102987.242188 -65592.320312 32126.865234 +v -102317.296875 -65944.359375 32198.955078 +v -99423.148438 -65261.261719 37596.039062 +v -98158.250000 -65652.843750 37596.039062 +v -100966.000000 -66333.609375 32298.330078 +v -99264.835938 -66629.562500 32420.037109 +v -98043.843750 -66784.804688 32508.726562 +v -97424.109375 -66842.468750 32553.070312 +v -96671.757812 -66896.648438 32597.416016 +v -87800.015625 -66507.031250 37596.039062 +v -94122.218750 -66239.812500 37596.039062 +v -94834.203125 -66181.265625 37596.039062 +v -95416.523438 -66119.343750 37596.039062 +v -96562.406250 -65956.664062 37596.039062 +v -90033.390625 -67126.109375 32931.589844 +v -81550.875000 -66498.015625 37596.039062 +v -80122.195312 -66074.828125 40785.578125 +v -68015.875000 -65750.054688 40263.304688 +v -67206.093750 -65475.945312 42360.464844 +v -63205.574219 -64121.773438 52720.929688 +v -61205.316406 -63444.687500 57901.160156 +v -37349.101562 -61966.121094 63072.386719 +v -35986.628906 -61311.402344 68261.625000 +v -83490.523438 -67072.554688 33265.765625 +v -70459.781250 -66577.320312 33934.117188 +v -69045.789062 -66098.679688 37596.039062 +v -19167.792969 -64382.394531 36607.519531 +v -19030.406250 -64262.160156 37596.039062 +v -18950.052734 -64191.835938 38174.210938 +v -6524.723145 -63796.375000 37651.937500 +v -6529.039062 -63803.046875 37596.039062 +v -6553.757812 -63841.265625 37275.871094 +v -6161.198730 -63234.359375 42360.464844 +v -5176.266602 -62269.460938 50330.539062 +v -5361.313965 -61997.710938 52720.929688 +v -12608.601562 -58642.062500 83802.320312 +v -12096.903320 -58194.246094 87484.101562 +v -29189.281250 -58045.031250 94150.648438 +v -86147.804688 -66049.039062 41046.714844 +v -85518.773438 -65874.679688 42360.464844 +v -79416.757812 -65865.875000 42360.464844 +v -80558.109375 -64499.597656 52720.929688 +v -74776.031250 -64491.257812 52720.929688 +v -78077.773438 -63812.058594 57901.160156 +v -72455.664062 -63803.949219 57901.160156 +v -70135.976562 -63116.839844 63079.882812 +v -59206.605469 -62768.121094 63077.382812 +v -57204.800781 -62090.511719 68261.625000 +v -55204.539062 -61413.425781 73441.859375 +v -92001.656250 -65693.492188 41753.613281 +v -92229.015625 -65752.070312 41307.851562 +v -92699.015625 -65636.148438 41753.613281 +v -92910.148438 -65690.054688 41342.503906 +v -94391.710938 -65416.160156 41753.613281 +v -94552.078125 -65456.089844 41446.460938 +v -93463.789062 -65624.742188 41377.156250 +v -95954.765625 -65118.582031 41753.613281 +v -95954.773438 -65118.582031 41753.613281 +v -96067.148438 -65145.828125 41541.566406 +v -97193.671875 -64735.042969 41753.613281 +v -97265.742188 -64752.054688 41619.222656 +v -98298.390625 -63924.761719 41753.613281 +v -98310.156250 -63927.421875 41731.886719 +v -98525.468750 -63598.246094 41753.613281 +v -98643.195312 -63342.937500 41753.613281 +v -98685.500000 -63108.871094 41753.613281 +v -98453.171875 -62195.839844 41753.613281 +v -98166.796875 -61786.378906 41753.613281 +v -97206.015625 -60770.308594 41753.613281 +v -96069.921875 -59785.488281 41753.613281 +v -78114.648438 -54359.421875 57901.160156 +v -80596.031250 -54778.003906 52720.929688 +v -73151.890625 -53522.261719 68261.625000 +v -75633.265625 -53940.839844 63081.394531 +v -64288.722656 -56236.750000 104523.250000 +v -63945.246094 -56555.070312 104523.250000 +v -63533.867188 -56790.425781 104523.250000 +v -65676.117188 -60374.359375 83802.320312 +v -60733.355469 -59004.242188 94125.390625 +v -70636.781250 -61749.437500 73441.859375 +v -73117.109375 -62436.980469 68261.625000 +v -75597.570312 -63124.554688 63081.132812 +v -67814.929688 -62429.332031 68261.625000 +v -70670.507812 -53103.679688 73441.859375 +v -58483.292969 -56764.687500 109110.460938 +v -34294.371094 -49159.226562 104523.250000 +v -49957.199219 -49536.562500 104523.250000 +v -51907.121094 -49803.390625 104523.250000 +v -59061.691406 -51582.960938 104523.250000 +v -56753.300781 -51178.742188 109110.460938 +v -60853.832031 -60367.406250 83802.320312 +v -65494.566406 -61742.023438 73441.859375 +v -24727.453125 -53237.878906 73441.859375 +v -25779.613281 -53660.636719 68261.625000 +v -26831.773438 -54083.394531 63081.394531 +v -27883.935547 -54506.148438 57901.160156 +v -28936.095703 -54928.906250 52720.929688 +v -31040.417969 -55774.421875 42360.464844 +v -29675.203125 -52571.203125 73441.859375 +v -30881.281250 -52973.222656 68261.625000 +v -32087.359375 -53375.238281 63081.394531 +v -33293.437500 -53777.257812 57901.160156 +v -34499.515625 -54179.273438 52720.929688 +v -36911.671875 -54983.308594 42360.464844 +v -34630.332031 -52026.199219 73441.859375 +v -35990.554688 -52411.261719 68261.625000 +v -37350.781250 -52796.328125 63081.394531 +v -38711.003906 -53181.390625 57901.160156 +v -40071.230469 -53566.453125 52720.929688 +v -42791.679688 -54336.582031 42360.464844 +v -53884.417969 -51256.953125 73441.859375 +v -55843.609375 -51618.085938 68261.625000 +v -57802.800781 -51979.218750 63081.394531 +v -59761.992188 -52340.351562 57901.160156 +v -61721.183594 -52701.484375 52720.929688 +v -58699.878906 -51422.847656 73441.859375 +v -60808.871094 -51789.140625 68261.625000 +v -62917.863281 -52155.437500 63081.394531 +v -65026.859375 -52521.730469 57901.160156 +v -67135.851562 -52888.023438 52720.929688 +v -63508.734375 -51805.800781 73441.859375 +v -65767.328125 -52184.007812 68261.625000 +v -68025.914062 -52562.214844 63081.394531 +v -70284.507812 -52940.421875 57901.160156 +v -72543.093750 -53318.628906 52720.929688 +v 31769.748047 -32556.226562 288000.000000 +v 32781.707031 -32186.025391 288000.000000 +v 34828.757812 -31680.013672 288000.000000 +v 55096.207031 -32952.121094 288000.000000 +v 54697.164062 -34017.820312 288000.000000 +v 57659.714844 -33499.390625 288000.000000 +v 57476.308594 -34100.734375 288000.000000 +v 58330.015625 -33652.570312 288000.000000 +v 58182.281250 -34074.808594 288000.000000 +v 58832.527344 -33769.171875 288000.000000 +v 58767.449219 -34053.316406 288000.000000 +v 59734.011719 -34017.820312 288000.000000 +v 54733.554688 -34201.460938 288000.000000 +v 59005.875000 -44000.000000 287382.843750 +v 52064.656250 -44000.000000 287382.843750 +v 57668.964844 -44000.000000 287652.906250 +v 53041.484375 -44000.000000 287652.906250 +v 56404.070312 -44000.000000 287814.937500 +v 54090.332031 -44000.000000 287814.937500 +v 55211.195312 -44000.000000 287868.968750 +v 33214.460938 -34881.691406 288000.000000 +v 31976.720703 -34821.554688 288000.000000 +v 44443.101562 -34994.578125 284081.593750 +v 45763.558594 -35880.683594 284265.468750 +v 47050.882812 -36923.425781 284470.750000 +v 47694.546875 -37444.796875 284573.406250 +v 45053.503906 -37444.796875 284575.093750 +v 45815.734375 -37966.167969 284677.687500 +v 47340.195312 -39008.910156 284882.843750 +v 45280.531250 -39008.910156 285083.875000 +v 46960.308594 -40016.617188 285261.968750 +v 45224.449219 -40016.617188 285618.750000 +v 47097.691406 -41024.324219 285757.093750 +v 45659.496094 -41024.324219 286230.406250 +v 46741.171875 -42120.378906 286860.031250 +v 44714.925781 -41201.019531 286860.031250 +v 42688.679688 -40281.656250 286860.031250 +v 43605.859375 -40016.617188 286151.437500 +v 40662.437500 -39362.296875 286860.031250 +v 41552.222656 -39008.910156 286072.468750 +v 39427.191406 -37966.167969 285990.750000 +v 41412.843750 -37966.167969 285337.281250 +v 40443.660156 -37444.796875 285265.687500 +v 42673.269531 -37444.796875 284807.437500 +v 41804.183594 -36923.425781 284715.281250 +v 44291.273438 -36923.425781 284472.531250 +v 42766.812500 -35880.683594 284267.375000 +v 36609.945312 -37523.578125 286860.031250 +v 38364.675781 -37444.796875 285949.906250 +v 39474.476562 -36923.425781 285194.125000 +v 40066.007812 -35880.683594 284531.000000 +v 40966.992188 -35114.410156 284157.187500 +v 35177.125000 -35880.683594 285827.312500 +v 37302.156250 -36923.425781 285909.031250 +v 37536.109375 -35880.683594 285050.968750 +v 37526.312500 -35187.796875 284654.781250 +v 43542.359375 -37966.167969 284899.593750 +v 43351.210938 -39008.910156 285480.406250 +v 31284.037109 -34017.820312 288000.000000 +v 46741.171875 -22099.574219 286860.031250 +v 46084.746094 -23382.771484 286247.125000 +v 44714.925781 -23451.880859 286860.031250 +v 42354.847656 -26008.910156 286147.906250 +v 40662.437500 -26156.498047 286860.031250 +v 40112.761719 -27587.511719 286088.250000 +v 36609.945312 -28861.113281 286860.031250 +v 37870.679688 -29166.113281 286028.625000 +v 36749.636719 -29955.414062 285998.781250 +v 39702.421875 -29166.113281 285368.218750 +v 38647.085938 -29955.414062 285314.718750 +v 40661.046875 -29166.113281 285102.156250 +v 39640.097656 -29955.414062 285039.125000 +v 41648.175781 -29166.113281 284878.843750 +v 40662.632812 -29955.414062 284807.781250 +v 42663.808594 -29166.113281 284698.312500 +v 41714.695312 -29955.414062 284620.750000 +v 43707.945312 -29166.113281 284560.500000 +v 42796.285156 -29955.414062 284478.031250 +v 45324.531250 -29166.113281 284434.125000 +v 44470.859375 -29955.414062 284347.093750 +v 47005.011719 -29166.113281 284403.562500 +v 46211.617188 -29955.414062 284315.437500 +v 47287.738281 -30744.714844 284297.312500 +v 46556.914062 -31534.015625 284211.531250 +v 44260.835938 -31921.982422 284096.187500 +v 44624.828125 -31534.015625 284139.218750 +v 42763.511719 -31534.015625 284173.062500 +v 45418.222656 -30744.714844 284227.343750 +v 43617.183594 -30744.714844 284260.093750 +v 48132.648438 -23389.798828 285563.625000 +v 47428.800781 -23387.457031 285760.000000 +v 45590.351562 -26008.910156 285163.125000 +v 44744.855469 -26008.910156 285354.375000 +v 43923.773438 -26008.910156 285582.281250 +v 47354.585938 -26008.910156 284890.437500 +v 46460.261719 -26008.910156 285008.468750 +v 43619.265625 -27587.511719 285021.000000 +v 42702.953125 -27587.511719 285228.281250 +v 47031.878906 -27587.511719 284608.156250 +v 45531.265625 -27587.511719 284725.468750 +v 40617.519531 -31660.279297 284323.718750 +v 40972.964844 -31534.015625 284313.062500 +v 41884.625000 -30744.714844 284395.531250 +v 38811.640625 -31610.734375 284616.218750 +v 39816.468750 -31534.015625 284465.687500 +v 37031.296875 -31615.384766 285027.718750 +v 37598.191406 -31534.015625 284913.000000 +v 38691.546875 -31534.015625 284665.656250 +v 39677.089844 -30744.714844 284736.718750 +v 38619.144531 -30744.714844 284976.062500 +v 37591.746094 -30744.714844 285261.218750 +v 36536.406250 -31534.015625 285207.687500 +v 35292.976562 -31693.285156 285538.843750 +v 34507.550781 -31534.015625 285939.156250 +v 35628.593750 -30744.714844 285968.968750 +v 44562.035156 -27587.511719 284853.375000 +v 41813.097656 -27587.511719 285475.250000 +v 40765.582031 -30744.714844 284543.218750 +v 6644.710938 -54123.699219 116671.679688 +v 5325.099121 -53617.296875 117292.484375 +v 4390.800781 -53396.425781 117292.484375 +v 3257.631592 -53135.531250 117292.484375 +v 1307.632080 -52697.675781 117292.484375 +v -837.382080 -52233.589844 117292.484375 +v -1725.659912 -51447.996094 120609.492188 +v -6678.824707 -50091.816406 122939.687500 +v -11680.443359 -48879.945312 125292.687500 +v -14663.270508 -48396.703125 125703.484375 +v -10464.235352 -47290.824219 136523.250000 +v -20320.232422 -47770.875000 125703.484375 +v -15922.594727 -46686.964844 136523.250000 +v -25987.617188 -47378.792969 125703.484375 +v -21391.009766 -46308.648438 136523.250000 +v -31661.167969 -47274.976562 125703.484375 +v -26865.376953 -46208.476562 136523.250000 +v -37333.988281 -47447.109375 125703.484375 +v -32339.039062 -46374.566406 136523.250000 +v -41006.710938 -47780.914062 125703.484375 +v -35882.820312 -46696.656250 136523.250000 +v -25635.037109 -44528.132812 158162.781250 +v -30758.927734 -45612.394531 147343.015625 +v -27344.089844 -45302.027344 147343.015625 +v -22069.585938 -45141.976562 147343.015625 +v -16794.404297 -45238.503906 147343.015625 +v -11524.957031 -45603.054688 147343.015625 +v -6265.199219 -46184.941406 147343.015625 +v -6703.148926 -47421.500000 139047.500000 +v -15387.255859 -42359.609375 179802.328125 +v -20511.146484 -43443.871094 168982.546875 +v -17354.189453 -43156.941406 168982.546875 +v -22349.138672 -44229.484375 158162.781250 +v -12478.002930 -43008.976562 168982.546875 +v -17273.792969 -44075.476562 158162.781250 +v -7601.191406 -43098.214844 168982.546875 +v -12197.797852 -44168.359375 158162.781250 +v -2729.680420 -43435.234375 168982.546875 +v -7127.318848 -44519.144531 158162.781250 +v 2132.872559 -43973.179688 168982.546875 +v -2066.163330 -45079.062500 158162.781250 +v 3365.556885 -44472.187500 166872.515625 +v -1671.604370 -45947.476562 152952.250000 +v -10263.365234 -41275.347656 190622.093750 +v -5139.474609 -40191.085938 201441.859375 +v -129.415619 -39130.910156 212021.250000 +v 4880.643555 -38070.738281 222600.656250 +v 7398.628418 -37841.882812 222600.656250 +v 12282.611328 -36793.167969 233180.046875 +v 15977.116211 -36681.062500 233180.046875 +v 20666.365234 -35638.253906 243759.453125 +v 24166.583984 -35702.300781 243759.453125 +v 28661.072266 -34655.929688 254338.843750 +v 31962.939453 -34884.359375 254338.843750 +v 36262.878906 -33824.527344 264918.250000 +v 39364.484375 -34167.660156 264918.250000 +v 43470.234375 -33086.343750 275497.656250 +v 40562.820312 -32764.699219 275497.656250 +v 37650.050781 -32563.189453 275497.656250 +v 33155.562500 -33609.558594 264918.250000 +v 30044.861328 -33552.640625 264918.250000 +v 25355.613281 -34595.449219 254338.843750 +v 22050.578125 -34695.738281 254338.843750 +v 17166.595703 -35744.453125 243759.453125 +v 14900.761719 -35950.390625 243759.453125 +v 9890.703125 -37010.566406 233180.046875 +v 19910.820312 -34890.218750 254338.843750 +v 26934.560547 -33647.023438 264918.250000 +v 34734.109375 -32509.835938 275497.656250 +v 24920.880859 -33830.042969 264918.250000 +v 31818.544922 -32598.306641 275497.656250 +v 29930.939453 -32769.871094 275497.656250 +v 35258.734375 -35248.972656 254338.843750 +v 27662.998047 -35944.187500 243759.453125 +v 19672.093750 -36748.671875 233180.046875 +v 11287.868164 -37723.867188 222600.656250 +v 2514.645020 -38890.597656 212021.250000 +v 31152.982422 -36330.285156 243759.453125 +v 23363.056641 -37004.015625 233180.046875 +v 15177.605469 -37795.042969 222600.656250 +v 6598.619141 -38766.671875 212021.250000 +v -2369.338135 -39939.312500 201441.859375 +v 28684.201172 -37065.890625 236840.921875 +v 27047.232422 -37411.597656 233180.046875 +v 23626.857422 -38543.621094 222864.890625 +v 22941.482422 -38492.910156 222600.656250 +v 18835.730469 -39574.222656 212021.250000 +v 14763.174805 -39123.675781 212021.250000 +v 10463.234375 -40183.507812 201441.859375 +v 6188.627930 -39887.781250 201441.859375 +v 1592.021484 -40957.925781 190622.093750 +v -2886.420410 -40875.980469 190622.093750 +v -7682.211426 -41942.480469 179802.328125 +v -12359.238281 -42084.398438 179802.328125 +v 33342.429688 -38324.371094 233645.000000 +v 34517.132812 -38622.230469 233180.046875 +v 38237.097656 -39374.738281 233180.046875 +v 37827.277344 -39766.160156 230568.046875 +v 40087.527344 -39781.679688 233180.046875 +v 36669.121094 -40987.917969 222600.656250 +v 41038.062500 -39999.855469 233180.046875 +v 37669.761719 -41217.593750 222600.656250 +v 41701.187500 -40155.656250 233180.046875 +v 38367.835938 -41381.609375 222600.656250 +v 41927.910156 -40208.191406 233180.046875 +v 38606.507812 -41436.910156 222600.656250 +v 42132.019531 -40253.957031 233180.046875 +v 38821.375000 -41485.089844 222600.656250 +v 42527.531250 -40364.125000 233180.046875 +v 39237.738281 -41601.066406 222600.656250 +v 42504.382812 -40542.992188 232397.015625 +v 41014.582031 -41107.207031 227589.171875 +v 43994.183594 -39978.777344 237204.859375 +v 39524.781250 -41671.421875 222781.328125 +v 38034.984375 -42235.636719 217973.500000 +v 35947.945312 -42838.003906 212021.250000 +v 36545.183594 -42799.851562 213165.656250 +v 35055.382812 -43364.066406 208357.812500 +v 35034.488281 -42607.558594 212021.250000 +v 35285.109375 -42665.628906 212021.250000 +v 35510.734375 -42716.218750 212021.250000 +v 33250.714844 -42194.156250 212021.250000 +v 34301.457031 -42435.332031 212021.250000 +v 31205.214844 -41744.316406 212021.250000 +v 32641.007812 -40927.582031 218164.953125 +v 34721.156250 -40559.527344 222600.656250 +v 35202.695312 -40353.011719 224291.296875 +v 18498.519531 -40043.117188 208692.656250 +v 14729.980469 -40655.535156 201441.859375 +v 6065.595703 -41267.414062 190622.093750 +v -3004.584961 -42028.070312 179802.328125 +v 13381.936523 -41540.003906 194552.906250 +v 10530.944336 -41761.417969 190622.093750 +v 1667.957642 -42351.324219 179802.328125 +v 8359.702148 -43009.941406 180673.890625 +v 6331.908691 -42867.296875 179802.328125 +v -7364.288086 -41011.855469 190622.093750 +v 1909.370605 -39809.480469 201441.859375 +v 10683.117188 -38841.410156 212021.250000 +v 19063.115234 -38063.847656 222600.656250 +v 56132.980469 -33016.707031 287715.687500 +v 56635.980469 -32015.591797 287682.562500 +v 57138.980469 -31014.478516 287649.437500 +v 54962.726562 -31014.478516 288210.031250 +v 55557.066406 -30013.365234 288153.375000 +v 53535.570312 -30013.365234 288595.312500 +v 54901.367188 -28011.136719 288443.250000 +v 53114.859375 -28011.136719 288759.687500 +v 54652.218750 -26008.910156 288577.250000 +v 53089.582031 -26008.910156 288784.812500 +v 54792.949219 -24006.681641 288580.343750 +v 53443.066406 -24006.681641 288695.718750 +v 55306.878906 -22004.455078 288477.531250 +v 54158.640625 -22004.455078 288517.406250 +v 58076.667969 -18000.000000 288070.750000 +v 53051.597656 -22004.455078 288495.500000 +v 56713.597656 -18000.000000 288004.125000 +v 52186.273438 -22004.455078 288432.562500 +v 51347.906250 -22004.455078 288329.218750 +v 49901.507812 -24006.681641 288644.687500 +v 48950.042969 -24006.681641 288527.375000 +v 47616.738281 -26008.910156 288856.812500 +v 46552.183594 -26008.910156 288725.562500 +v 45331.968750 -28011.136719 289068.937500 +v 44154.324219 -28011.136719 288923.750000 +v 43047.199219 -30013.365234 289281.062500 +v 41756.464844 -30013.365234 289121.937500 +v 41904.816406 -31014.478516 289387.125000 +v 40557.535156 -31014.478516 289221.031250 +v 40762.433594 -32015.591797 289493.218750 +v 39358.601562 -32015.591797 289320.125000 +v 39620.046875 -33016.707031 289599.281250 +v 38159.671875 -33016.707031 289419.218750 +v 36998.640625 -34017.820312 289523.968750 +v 36746.246094 -33016.707031 289168.750000 +v 35002.683594 -34017.820312 289152.593750 +v 35379.773438 -33016.707031 288847.843750 +v 33097.816406 -34017.820312 288644.625000 +v 36686.339844 -32015.591797 288770.875000 +v 37992.910156 -31014.478516 288693.906250 +v 35601.539062 -31014.478516 287906.906250 +v 37008.476562 -30013.365234 287862.968750 +v 39822.343750 -28011.136719 287775.093750 +v 42636.214844 -26008.910156 287687.218750 +v 45450.082031 -24006.681641 287599.343750 +v 44525.750000 -26008.910156 288309.062500 +v 47138.886719 -24006.681641 288155.125000 +v 45521.855469 -26008.910156 288543.000000 +v 48029.171875 -24006.681641 288364.218750 +v 59653.988281 -26008.910156 287483.781250 +v 58647.988281 -28011.136719 287550.031250 +v 57641.984375 -30013.365234 287616.312500 +v 56745.746094 -28011.136719 288040.062500 +v 60659.992188 -24006.681641 287417.500000 +v 61665.996094 -22004.455078 287351.250000 +v 62698.871094 -18000.000000 287471.125000 +v 61069.304688 -18000.000000 287804.250000 +v 58998.765625 -22004.455078 287987.125000 +v 60311.781250 -22004.455078 287700.093750 +v 59528.570312 -18000.000000 288004.125000 +v 56496.312500 -22004.455078 288375.875000 +v 57726.941406 -22004.455078 288212.406250 +v 57632.964844 -24006.681641 288139.187500 +v 59123.105469 -24006.681641 287813.406250 +v 57934.425781 -26008.910156 287926.718750 +v 55439.359375 -18000.000000 287804.250000 +v 50536.488281 -22004.455078 288185.406250 +v 49752.023438 -22004.455078 288001.187500 +v 54253.953125 -18000.000000 287471.125000 +v 48263.953125 -22004.455078 287511.468750 +v 39085.683594 -34017.820312 289758.687500 +v 41127.375000 -33016.707031 289708.875000 +v 42211.394531 -32015.591797 289598.593750 +v 43295.414062 -31014.478516 289488.281250 +v 44379.433594 -30013.365234 289377.968750 +v 46547.476562 -28011.136719 289157.343750 +v 48715.515625 -26008.910156 288936.718750 +v 50883.558594 -24006.681641 288716.125000 +v 41263.812500 -34017.820312 289856.781250 +v 43055.757812 -33016.707031 289747.062500 +v 44065.109375 -32015.591797 289635.281250 +v 45074.464844 -31014.478516 289523.500000 +v 46083.816406 -30013.365234 289411.687500 +v 48102.523438 -28011.136719 289188.125000 +v 50121.230469 -26008.910156 288964.562500 +v 52139.937500 -24006.681641 288740.968750 +v 43533.031250 -34017.820312 289818.250000 +v 45055.898438 -33016.707031 289677.593750 +v 45987.804688 -32015.591797 289568.500000 +v 46919.714844 -31014.478516 289459.406250 +v 47851.621094 -30013.365234 289350.312500 +v 49715.437500 -28011.136719 289132.125000 +v 51579.250000 -26008.910156 288913.906250 +v 45893.339844 -34017.820312 289643.062500 +v 47127.796875 -33016.707031 289500.500000 +v 47979.480469 -32015.591797 289398.250000 +v 48831.164062 -31014.478516 289296.000000 +v 49682.847656 -30013.365234 289193.781250 +v 51386.214844 -28011.136719 288989.281250 +v 48344.734375 -34017.820312 289331.281250 +v 49271.457031 -33016.707031 289215.750000 +v 50040.136719 -32015.591797 289124.531250 +v 50808.816406 -31014.478516 289033.312500 +v 51577.496094 -30013.365234 288942.093750 +v 51486.871094 -33016.707031 288823.375000 +v 51453.390625 -34017.820312 288766.968750 +v 53774.046875 -33016.707031 288323.343750 +v 41912.613281 -28011.136719 288463.000000 +v 39299.476562 -30013.365234 288616.937500 +v 43014.539062 -28011.136719 288721.781250 +v 40507.222656 -30013.365234 288900.562500 +v 39253.562500 -31014.478516 288989.968750 +v 37999.906250 -32015.591797 289079.343750 +v 56267.167969 -26008.910156 288291.218750 +v 56189.582031 -24006.681641 288394.812500 +v 52852.671875 -31014.478516 288671.312500 +v 52169.773438 -32015.591797 288747.343750 +v 54368.386719 -32015.591797 288266.687500 +v 58659.292969 -41504.453125 287349.531250 +v 58102.164062 -40256.683594 287430.406250 +v 57545.035156 -39008.910156 287511.250000 +v 56430.777344 -36513.363281 287672.968750 +v 54143.539062 -36513.363281 288245.718750 +v 51935.070312 -36513.363281 288700.312500 +v 50860.375000 -36513.363281 288883.281250 +v 49805.371094 -36513.363281 289036.750000 +v 53082.750000 -39008.910156 288480.812500 +v 52237.617188 -39008.910156 288603.718750 +v 54193.937500 -40256.683594 288279.562500 +v 53453.742188 -40256.683594 288387.218750 +v 55305.125000 -41504.453125 288078.312500 +v 54669.863281 -41504.453125 288170.718750 +v 54046.460938 -41504.453125 288245.312500 +v 53434.917969 -41504.453125 288302.156250 +v 52014.800781 -40256.683594 288540.375000 +v 50631.125000 -40256.683594 288610.593750 +v 49014.847656 -39008.910156 288858.781250 +v 47498.113281 -39008.910156 288844.343750 +v 43888.910156 -36513.363281 289337.093750 +v 42074.296875 -36513.363281 289200.906250 +v 48770.062500 -36513.363281 289160.656250 +v 51408.261719 -39008.910156 288703.000000 +v 52727.363281 -40256.683594 288474.156250 +v 47754.445312 -36513.363281 289255.000000 +v 45782.292969 -36513.363281 289355.125000 +v 39977.496094 -36513.363281 288876.812500 +v 37996.753906 -36513.363281 288378.656250 +v 36132.074219 -36513.363281 287706.375000 +v 41284.343750 -39008.910156 287538.031250 +v 42778.082031 -39008.910156 288076.562500 +v 45168.746094 -40256.683594 287925.500000 +v 46558.445312 -40256.683594 288275.031250 +v 48752.093750 -41504.453125 288074.406250 +v 50014.667969 -41504.453125 288269.562500 +v 43860.476562 -40256.683594 287453.843750 +v 47559.410156 -41504.453125 287774.437500 +v 46436.609375 -41504.453125 287369.656250 +v 51107.320312 -41504.453125 288351.562500 +v 52247.402344 -41504.453125 288362.437500 +v 55952.242188 -41504.453125 287968.125000 +v 57282.054688 -41504.453125 287694.406250 +v 56497.425781 -40256.683594 287832.218750 +v 55712.796875 -39008.910156 287970.062500 +v 54947.949219 -40256.683594 288151.187500 +v 53943.656250 -39008.910156 288334.218750 +v 49302.714844 -40256.683594 288597.937500 +v 48029.574219 -40256.683594 288502.406250 +v 50594.683594 -39008.910156 288778.593750 +v 46044.480469 -39008.910156 288735.218750 +v 44364.796875 -39008.910156 288475.625000 +v -1725.659912 -54013.800781 120609.492188 +v 5325.099121 -54106.378906 117292.484375 +v 4301.706543 -54143.964844 117292.484375 +v 3278.313965 -54181.550781 117292.484375 +v 1231.528809 -54256.714844 117292.484375 +v -6184.351562 -54211.023438 120293.601562 +v -11680.443359 -53883.121094 125292.687500 +v 8501.878906 -47231.371094 181066.796875 +v -19018.771484 -54108.976562 125703.484375 +v -21194.744141 -54762.191406 120293.601562 +v -34238.648438 -55240.035156 120293.601562 +v -40760.550781 -55481.480469 120293.601562 +v -38247.046875 -54815.859375 125703.484375 +v -35733.542969 -54150.238281 131113.359375 +v -31837.654297 -54578.578125 125703.484375 +v -29436.660156 -53917.125000 131113.359375 +v -16842.796875 -53455.765625 131113.359375 +v -14666.824219 -52802.550781 136523.250000 +v -10314.876953 -51496.125000 147343.015625 +v -22233.679688 -51932.753906 147343.015625 +v -17431.691406 -50609.843750 158162.781250 +v -23166.029297 -50822.132812 158162.781250 +v -13159.509766 -48172.222656 179700.109375 +v -3058.007324 -45497.164062 201441.859375 +v 16432.250000 -40335.789062 243391.296875 +v 18593.039062 -43905.496094 208953.859375 +v 11444.859375 -44964.000000 201441.859375 +v 2730.664795 -47579.941406 179776.718750 +v -5962.929688 -50189.703125 158162.781250 +v -7861.750000 -47973.394531 179725.640625 +v 28684.201172 -40579.617188 236840.921875 +v 28355.154297 -39887.640625 243484.062500 +v 20407.818359 -40185.335938 243422.218750 +v 33255.738281 -40744.093750 233704.484375 +v 37827.277344 -40908.582031 230568.046875 +v 1776.256958 -45318.195312 201441.859375 +v -28193.035156 -52153.375000 147343.015625 +v -27035.666016 -53255.667969 136523.250000 +v -33220.042969 -53484.617188 136523.250000 +v 19087.734375 -39870.789062 -210320.953125 +v 23919.619141 -38458.046875 -223673.937500 +v 19087.734375 -43742.453125 -210320.953125 +v 28684.201172 -40579.617188 -236840.921875 +v 28684.201172 -37065.890625 -236840.921875 +v 33342.429688 -38324.371094 -233645.000000 +v 33255.738281 -40744.093750 -233704.484375 +v 37827.277344 -39766.160156 -230568.046875 +v 37827.277344 -40908.582031 -230568.046875 +v 35144.742188 -40365.988281 -224152.703125 +v 32584.943359 -40940.175781 -218030.875000 +v 23225.947266 -40900.167969 -208002.890625 +v 24519.484375 -40864.292969 -209556.156250 +v 25218.148438 -40656.078125 -211505.062500 +v 25916.810547 -40447.863281 -213453.984375 +v 27314.138672 -40031.429688 -217351.796875 +v 28711.464844 -39615.000000 -221249.625000 +v 31506.119141 -38782.136719 -229045.281250 +v 28700.740234 -42231.253906 -221249.625000 +v 6052.593262 -53784.078125 117292.484375 +v 5829.092773 -54087.867188 117292.484375 +v 6333.085938 -54069.359375 117292.484375 +v 8145.031250 -50598.031250 149421.234375 +v -2007.465698 -52318.335938 136706.171875 +v -1725.659912 -50602.195312 152802.859375 +v 8145.031250 -48282.839844 149421.234375 +v -6730.015625 -47429.371094 138973.265625 +v -1725.659912 -45963.312500 152802.859375 +v 895.781006 -47717.554688 144754.515625 +v 3210.331543 -47044.656250 151111.828125 +v -6344.674316 -49862.335938 124633.664062 +v -5620.628906 -49647.859375 126645.750000 +v -4896.583496 -49433.382812 128657.835938 +v -3448.492188 -49004.425781 132682.000000 +v -2000.401245 -48575.468750 136706.171875 +v -11680.443359 -48879.945312 -125292.687500 +v -6649.156738 -50099.492188 -122925.734375 +v -11680.443359 -53883.121094 -125292.687500 +v -1725.659912 -51447.996094 -120609.492188 +v -1725.659912 -54013.800781 -120609.492188 +v 23626.857422 -38543.621094 -222864.890625 +v 18498.519531 -40043.117188 -208692.656250 +v 18593.039062 -43905.496094 -208953.859375 +v 13381.936523 -41540.003906 -194552.906250 +v 8359.702148 -43009.941406 -180673.890625 +v 8501.878906 -47231.371094 -181066.796875 +v 3365.556885 -44472.187500 -166872.515625 +v -1671.604370 -45947.476562 -152952.250000 +v -6703.148926 -47421.500000 -139047.500000 +v 41014.582031 -41107.207031 -227589.171875 +v 42504.382812 -40542.992188 -232397.015625 +v 43994.183594 -39978.777344 -237204.859375 +v 28355.154297 -39887.640625 -243484.062500 +v 11444.859375 -44964.000000 -201441.859375 +v 20407.818359 -40185.335938 -243422.218750 +v 1776.256958 -45318.195312 -201441.859375 +v 16432.250000 -40335.789062 -243391.296875 +v -3058.007324 -45497.164062 -201441.859375 +v -13159.509766 -48172.222656 -179700.109375 +v -23166.029297 -50822.132812 -158162.781250 +v -28193.035156 -52153.375000 -147343.015625 +v -33220.042969 -53484.617188 -136523.250000 +v -22233.679688 -51932.753906 -147343.015625 +v -27035.666016 -53255.667969 -136523.250000 +v -10314.876953 -51496.125000 -147343.015625 +v -14666.824219 -52802.550781 -136523.250000 +v -16842.796875 -53455.765625 -131113.359375 +v -19018.771484 -54108.976562 -125703.484375 +v -31837.654297 -54578.578125 -125703.484375 +v -34238.648438 -55240.035156 -120293.601562 +v -40760.550781 -55481.480469 -120293.601562 +v -42773.906250 -56129.964844 -114883.710938 +v 2730.664795 -47579.941406 -179776.718750 +v -5962.929688 -50189.703125 -158162.781250 +v -7861.750000 -47973.394531 -179725.640625 +v -17431.691406 -50609.843750 -158162.781250 +v -6184.351562 -54211.023438 -120293.601562 +v -21194.744141 -54762.191406 -120293.601562 +v -7101.151367 -54817.992188 -114883.710938 +v -21370.292969 -55341.984375 -114883.710938 +v 39.014427 -54555.769531 -114883.710938 +v 1231.528809 -54256.714844 -117292.484375 +v 3278.313965 -54181.550781 -117292.484375 +v 4301.706543 -54143.964844 -117292.484375 +v 3578.241943 -54425.792969 -114883.710938 +v 6090.677246 -54333.523438 -114883.710938 +v -35639.425781 -55864.960938 -114883.710938 +v -38247.046875 -54815.859375 -125703.484375 +v -29436.660156 -53917.125000 -131113.359375 +v -35733.542969 -54150.238281 -131113.359375 +v 37526.312500 -35187.796875 -284654.781250 +v 40966.992188 -35114.410156 -284157.187500 +v 44443.101562 -34994.578125 -284081.593750 +v 39524.781250 -41671.421875 -222781.328125 +v 38034.984375 -42235.636719 -217973.500000 +v 36545.183594 -42799.851562 -213165.656250 +v 35055.382812 -43364.066406 -208357.812500 +v 4533.138184 -53429.320312 -117292.484375 +v 3407.125244 -53169.921875 -117292.484375 +v 1341.459229 -52705.121094 -117292.484375 +v 199.140900 -52455.484375 -117292.484375 +v -808.044495 -52239.808594 -117292.484375 +v 36669.121094 -40987.917969 -222600.656250 +v 40087.527344 -39781.679688 -233180.046875 +v 38237.097656 -39374.738281 -233180.046875 +v 34721.156250 -40559.527344 -222600.656250 +v 31205.214844 -41744.316406 -212021.250000 +v 34301.457031 -42435.332031 -212021.250000 +v 33250.714844 -42194.156250 -212021.250000 +v 35034.488281 -42607.558594 -212021.250000 +v 35285.109375 -42665.628906 -212021.250000 +v 35510.734375 -42716.218750 -212021.250000 +v 35947.945312 -42838.003906 -212021.250000 +v 38821.375000 -41485.089844 -222600.656250 +v 39237.738281 -41601.066406 -222600.656250 +v 42132.019531 -40253.957031 -233180.046875 +v 42527.531250 -40364.125000 -233180.046875 +v 41927.910156 -40208.191406 -233180.046875 +v 38606.507812 -41436.910156 -222600.656250 +v 41038.062500 -39999.855469 -233180.046875 +v 41701.187500 -40155.656250 -233180.046875 +v 34517.132812 -38622.230469 -233180.046875 +v 31152.982422 -36330.285156 -243759.453125 +v 35258.734375 -35248.972656 -254338.843750 +v 39364.484375 -34167.660156 -264918.250000 +v 43470.234375 -33086.343750 -275497.656250 +v 44260.835938 -31921.982422 -284096.187500 +v 40617.519531 -31660.279297 -284323.718750 +v 37650.050781 -32563.189453 -275497.656250 +v 40562.820312 -32764.699219 -275497.656250 +v 34734.109375 -32509.835938 -275497.656250 +v 38811.640625 -31610.734375 -284616.218750 +v 37031.296875 -31615.384766 -285027.718750 +v 31818.544922 -32598.306641 -275497.656250 +v 35292.976562 -31693.285156 -285538.843750 +v 29930.939453 -32769.871094 -275497.656250 +v 24920.880859 -33830.042969 -264918.250000 +v 19910.820312 -34890.218750 -254338.843750 +v 14900.761719 -35950.390625 -243759.453125 +v 9890.703125 -37010.566406 -233180.046875 +v 4880.643555 -38070.738281 -222600.656250 +v -129.415619 -39130.910156 -212021.250000 +v 2514.645020 -38890.597656 -212021.250000 +v -2369.338135 -39939.312500 -201441.859375 +v 1909.370605 -39809.480469 -201441.859375 +v -2886.420410 -40875.980469 -190622.093750 +v 1592.021484 -40957.925781 -190622.093750 +v -3004.584961 -42028.070312 -179802.328125 +v 1667.957642 -42351.324219 -179802.328125 +v -2729.680420 -43435.234375 -168982.546875 +v 2132.872559 -43973.179688 -168982.546875 +v -2066.163330 -45079.062500 -158162.781250 +v -6265.199219 -46184.941406 -147343.015625 +v -10464.235352 -47290.824219 -136523.250000 +v -14663.270508 -48396.703125 -125703.484375 +v -15922.594727 -46686.964844 -136523.250000 +v -20320.232422 -47770.875000 -125703.484375 +v -21391.009766 -46308.648438 -136523.250000 +v -25987.617188 -47378.792969 -125703.484375 +v -26865.376953 -46208.476562 -136523.250000 +v -31661.167969 -47274.976562 -125703.484375 +v -32339.039062 -46374.566406 -136523.250000 +v -37333.988281 -47447.109375 -125703.484375 +v -35882.820312 -46696.656250 -136523.250000 +v -41006.710938 -47780.914062 -125703.484375 +v -46351.777344 -48894.890625 -114883.710938 +v -5139.474609 -40191.085938 -201441.859375 +v -7364.288086 -41011.855469 -190622.093750 +v -7682.211426 -41942.480469 -179802.328125 +v -7601.191406 -43098.214844 -168982.546875 +v -7127.318848 -44519.144531 -158162.781250 +v -10263.365234 -41275.347656 -190622.093750 +v -15387.255859 -42359.609375 -179802.328125 +v -20511.146484 -43443.871094 -168982.546875 +v -25635.037109 -44528.132812 -158162.781250 +v -30758.927734 -45612.394531 -147343.015625 +v -27344.089844 -45302.027344 -147343.015625 +v -42772.683594 -48546.589844 -114883.710938 +v -35599.324219 -48337.371094 -114883.710938 +v -28426.435547 -48567.714844 -114883.710938 +v -21265.693359 -49208.175781 -114883.710938 +v -14123.918945 -50187.574219 -114883.710938 +v -7001.773926 -51424.468750 -114883.710938 +v 106.540283 -52879.425781 -114883.710938 +v 3611.335205 -53670.796875 -114883.710938 +v 6331.908691 -42867.296875 -179802.328125 +v 6065.595703 -41267.414062 -190622.093750 +v 6188.627930 -39887.781250 -201441.859375 +v 6598.619141 -38766.671875 -212021.250000 +v 7398.628418 -37841.882812 -222600.656250 +v 10530.944336 -41761.417969 -190622.093750 +v 14729.980469 -40655.535156 -201441.859375 +v 18835.730469 -39574.222656 -212021.250000 +v 22941.482422 -38492.910156 -222600.656250 +v 27047.232422 -37411.597656 -233180.046875 +v 23363.056641 -37004.015625 -233180.046875 +v 27662.998047 -35944.187500 -243759.453125 +v 24166.583984 -35702.300781 -243759.453125 +v 28661.072266 -34655.929688 -254338.843750 +v 25355.613281 -34595.449219 -254338.843750 +v 30044.861328 -33552.640625 -264918.250000 +v 26934.560547 -33647.023438 -264918.250000 +v 31962.939453 -34884.359375 -254338.843750 +v 33155.562500 -33609.558594 -264918.250000 +v 37669.761719 -41217.593750 -222600.656250 +v 38367.835938 -41381.609375 -222600.656250 +v 20666.365234 -35638.253906 -243759.453125 +v 19672.093750 -36748.671875 -233180.046875 +v 15977.116211 -36681.062500 -233180.046875 +v 15177.605469 -37795.042969 -222600.656250 +v 11287.868164 -37723.867188 -222600.656250 +v 10683.117188 -38841.410156 -212021.250000 +v 17166.595703 -35744.453125 -243759.453125 +v 12282.611328 -36793.167969 -233180.046875 +v 22050.578125 -34695.738281 -254338.843750 +v 19063.115234 -38063.847656 -222600.656250 +v 36262.878906 -33824.527344 -264918.250000 +v 14763.174805 -39123.675781 -212021.250000 +v 10463.234375 -40183.507812 -201441.859375 +v -12359.238281 -42084.398438 -179802.328125 +v -12478.002930 -43008.976562 -168982.546875 +v -12197.797852 -44168.359375 -158162.781250 +v -11524.957031 -45603.054688 -147343.015625 +v -17354.189453 -43156.941406 -168982.546875 +v -17273.792969 -44075.476562 -158162.781250 +v -16794.404297 -45238.503906 -147343.015625 +v -22349.138672 -44229.484375 -158162.781250 +v -22069.585938 -45141.976562 -147343.015625 +v -88659.109375 -56448.148438 -41753.613281 +v -90709.554688 -56800.539062 -37596.039062 +v -87841.000000 -56000.148438 -37596.039062 +v -92302.296875 -56930.234375 -32000.000000 +v -88688.406250 -56022.351562 -32000.000000 +v -92002.101562 -57626.730469 -41753.613281 +v -94122.679688 -58003.839844 -37596.039062 +v -92741.015625 -57480.496094 -37596.039062 +v -95893.968750 -58096.980469 -32000.000000 +v -94055.359375 -57459.023438 -32000.000000 +v -96426.343750 -59054.269531 -37596.039062 +v -95190.125000 -58451.148438 -37596.039062 +v -93047.617188 -58064.847656 -41753.613281 +v -96069.921875 -59785.488281 -41753.613281 +v -98275.820312 -60207.882812 -37596.039062 +v -101213.476562 -60752.890625 -32000.000000 +v -98815.109375 -59321.187500 -32000.000000 +v -97206.015625 -60770.308594 -41753.613281 +v -99435.750000 -61213.359375 -37596.039062 +v -102334.312500 -61711.304688 -32000.000000 +v -98166.796875 -61786.378906 -41753.613281 +v -100416.679688 -62250.742188 -37596.039062 +v -103100.976562 -62477.960938 -32000.000000 +v -98453.171875 -62195.839844 -41753.613281 +v -100709.062500 -62668.789062 -37596.039062 +v -103702.929688 -63234.945312 -32000.000000 +v -100868.281250 -62997.089844 -37596.039062 +v -98694.250000 -62835.511719 -41753.613281 +v -100955.203125 -63321.882812 -37596.039062 +v -100946.265625 -63600.976562 -37596.039062 +v -98685.500000 -63108.871094 -41753.613281 +v -98643.195312 -63342.937500 -41753.613281 +v -100903.078125 -63839.953125 -37596.039062 +v -103972.976562 -64377.273438 -32000.000000 +v -103999.851562 -64136.902344 -32000.000000 +v -100782.875000 -64100.617188 -37596.039062 +v -103933.929688 -64545.246094 -32000.000000 +v -103822.484375 -64774.628906 -32000.000000 +v -103623.976562 -65072.523438 -32000.000000 +v -103553.460938 -65112.691406 -32054.640625 +v -103298.554688 -65401.703125 -32000.000000 +v -100551.031250 -64433.980469 -37596.039062 +v -100037.820312 -64909.601562 -37596.039062 +v -97837.812500 -64400.355469 -41675.554688 +v -97795.718750 -64390.613281 -41753.613281 +v -98525.468750 -63598.246094 -41753.613281 +v -98310.156250 -63927.421875 -41731.886719 +v -98298.390625 -63924.761719 -41753.613281 +v -97193.671875 -64735.042969 -41753.613281 +v -97265.742188 -64752.054688 -41619.222656 +v -99423.148438 -65261.257812 -37596.039062 +v -96067.148438 -65145.828125 -41541.566406 +v -98158.250000 -65652.843750 -37596.039062 +v -101940.406250 -66157.914062 -32000.000000 +v -102317.562500 -65944.421875 -32198.458984 +v -102519.429688 -65926.062500 -32000.000000 +v -102937.679688 -65694.085938 -32000.000000 +v -95954.765625 -65118.582031 -41753.613281 +v -95954.773438 -65118.582031 -41753.613281 +v -96562.406250 -65956.664062 -37596.039062 +v -99265.382812 -66629.695312 -32418.988281 +v -95416.523438 -66119.343750 -37596.039062 +v -98044.500000 -66784.968750 -32507.455078 +v -94834.203125 -66181.265625 -37596.039062 +v -97424.820312 -66842.648438 -32551.689453 +v -94122.218750 -66239.812500 -37596.039062 +v -96672.515625 -66896.843750 -32595.923828 +v -94653.359375 -67112.726562 -32000.000000 +v -96581.289062 -67002.679688 -32000.000000 +v -94391.710938 -65416.160156 -41753.613281 +v -94552.078125 -65456.089844 -41446.460938 +v -93463.789062 -65624.742188 -41377.156250 +v -92910.148438 -65690.054688 -41342.503906 +v -92229.015625 -65752.070312 -41307.851562 +v -92699.015625 -65636.148438 -41753.613281 +v -92001.656250 -65693.492188 -41753.613281 +v -85518.773438 -65874.679688 -42360.464844 +v -86147.804688 -66049.039062 -41046.714844 +v -87800.015625 -66507.031250 -37596.039062 +v -80122.195312 -66074.828125 -40785.578125 +v -81550.875000 -66498.015625 -37596.039062 +v -68015.875000 -65750.054688 -40263.304688 +v -81878.351562 -67194.976562 -32000.000000 +v -69045.789062 -66098.679688 -37596.039062 +v -70461.648438 -66577.945312 -33929.289062 +v -52621.671875 -66148.195312 -32000.000000 +v -78077.773438 -63812.058594 -57901.160156 +v -80558.109375 -64499.597656 -52720.929688 +v -74776.031250 -64491.257812 -52720.929688 +v -79416.757812 -65865.875000 -42360.464844 +v -63205.574219 -64121.773438 -52720.929688 +v -67206.093750 -65475.945312 -42360.464844 +v -73117.109375 -62436.980469 -68261.625000 +v -75597.570312 -63124.554688 -63081.132812 +v -70135.976562 -63116.839844 -63079.882812 +v -72455.664062 -63803.949219 -57901.160156 +v -59206.605469 -62768.121094 -63077.382812 +v -61205.316406 -63444.687500 -57901.160156 +v -37349.101562 -61966.121094 -63072.386719 +v -38706.843750 -62618.566406 -57901.160156 +v -15490.367188 -61164.066406 -63067.390625 +v -16208.376953 -61792.437500 -57901.160156 +v -5176.266602 -60785.554688 -63065.035156 +v -5361.313965 -61997.710938 -52720.929688 +v -5176.266602 -62269.460938 -50330.539062 +v -6161.198730 -63234.359375 -42360.464844 +v -6524.723145 -63796.375000 -37651.937500 +v -6529.039062 -63803.046875 -37596.039062 +v -8737.813477 -64536.253906 -32000.000000 +v -6554.774902 -63842.835938 -37262.699219 +v -1356.806519 -64265.183594 -32000.000000 +v -65676.117188 -60374.359375 -83802.320312 +v -70636.781250 -61749.437500 -73441.859375 +v -65494.566406 -61742.023438 -73441.859375 +v -67814.929688 -62429.332031 -68261.625000 +v -55204.539062 -61413.425781 -73441.859375 +v -57204.800781 -62090.511719 -68261.625000 +v -34626.523438 -60657.820312 -73441.859375 +v -35986.628906 -61311.402344 -68261.625000 +v -14048.511719 -59902.210938 -73441.859375 +v -14768.466797 -60532.285156 -68261.625000 +v -5176.266602 -59301.648438 -75799.531250 +v -59986.093750 -57445.355469 -104523.250000 +v -60733.355469 -59004.242188 -94125.390625 +v -60853.832031 -60367.406250 -83802.320312 +v -61619.246094 -57255.847656 -104523.250000 +v -60852.332031 -57364.730469 -104523.250000 +v -60462.601562 -57406.171875 -104523.250000 +v -58443.433594 -56890.675781 -108454.906250 +v -58004.722656 -56934.898438 -108407.914062 +v -54064.339844 -57155.617188 -108053.781250 +v -55754.781250 -57624.203125 -104523.250000 +v -51572.367188 -57618.171875 -104523.250000 +v -56228.234375 -58997.269531 -94129.000000 +v -51204.023438 -60059.253906 -83802.320312 +v -62687.308594 -57052.507812 -104523.250000 +v -63533.867188 -56790.425781 -104523.250000 +v -63945.246094 -56555.070312 -104523.250000 +v -64288.722656 -56236.750000 -104523.250000 +v -64443.886719 -56013.636719 -104523.250000 +v -64524.328125 -55839.187500 -104523.250000 +v -64553.234375 -55679.246094 -104523.250000 +v -64559.214844 -55492.453125 -104523.250000 +v -64501.046875 -55275.082031 -104523.250000 +v -64394.488281 -55055.363281 -104523.250000 +v -64198.808594 -54775.578125 -104523.250000 +v -63542.300781 -54081.289062 -104523.250000 +v -62765.992188 -53408.343750 -104523.250000 +v -61528.183594 -52636.253906 -104523.250000 +v -64270.140625 -52495.003906 -94173.070312 +v -59986.402344 -51933.222656 -104523.250000 +v -60700.808594 -52232.593750 -104523.250000 +v -58336.898438 -51806.371094 -109110.460938 +v -59061.691406 -51582.960938 -104523.250000 +v -57702.074219 -51127.875000 -104523.250000 +v -62806.777344 -52005.167969 -94172.773438 +v -60740.402344 -51428.582031 -94172.335938 +v -65707.742188 -52266.515625 -83802.320312 +v -70670.507812 -53103.679688 -73441.859375 +v -73151.890625 -53522.261719 -68261.625000 +v -70704.156250 -52969.656250 -68261.625000 +v -73111.687500 -53371.562500 -63081.394531 +v -70572.476562 -52910.687500 -63081.394531 +v -72905.640625 -53299.097656 -57901.160156 +v -70284.507812 -52940.421875 -57901.160156 +v -72543.093750 -53318.628906 -52720.929688 +v -67135.851562 -52888.023438 -52720.929688 +v -71353.835938 -53620.609375 -42360.464844 +v -65639.570312 -53423.750000 -42360.464844 +v -67441.500000 -53755.894531 -37596.039062 +v -61587.808594 -53711.777344 -37596.039062 +v -66800.664062 -54103.492188 -32000.000000 +v -59484.535156 -54179.718750 -32000.000000 +v -75633.265625 -53940.839844 -63081.394531 +v -78114.648438 -54359.421875 -57901.160156 +v -80596.031250 -54778.003906 -52720.929688 +v -77926.757812 -54175.382812 -52720.929688 +v -82741.828125 -54979.203125 -42360.464844 +v -79905.148438 -54464.335938 -42360.464844 +v -82051.039062 -54821.570312 -37596.039062 +v -79137.570312 -54422.890625 -37596.039062 +v -81422.140625 -54813.796875 -32000.000000 +v -77771.468750 -54485.199219 -32000.000000 +v -85558.796875 -55615.167969 -42360.464844 +v -84956.109375 -55348.851562 -37596.039062 +v -85062.406250 -55321.054688 -32000.000000 +v -5176.266602 -55777.421875 -81623.062500 +v -13363.392578 -53912.683594 -83802.320312 +v -22623.130859 -52392.363281 -83802.320312 +v -14853.378906 -54859.062500 -73441.859375 +v -24727.453125 -53237.878906 -73441.859375 +v -15598.372070 -55332.253906 -68261.625000 +v -25779.613281 -53660.636719 -68261.625000 +v -16343.365234 -55805.441406 -63081.394531 +v -26831.773438 -54083.394531 -63081.394531 +v -17088.359375 -56278.632812 -57901.160156 +v -27883.935547 -54506.148438 -57901.160156 +v -17833.351562 -56751.820312 -52720.929688 +v -28936.095703 -54928.906250 -52720.929688 +v -19323.337891 -57698.203125 -42360.464844 +v -31040.417969 -55774.421875 -42360.464844 +v -20008.531250 -58133.410156 -37596.039062 +v -32008.125000 -56163.246094 -37596.039062 +v -30297.441406 -57048.531250 -32000.000000 +v -37577.019531 -56008.027344 -32000.000000 +v -38020.941406 -55353.058594 -37596.039062 +v -44869.500000 -55169.992188 -32000.000000 +v -44042.722656 -54690.734375 -37596.039062 +v -49886.089844 -54196.382812 -37596.039062 +v -48497.476562 -53853.867188 -42360.464844 +v -54208.687500 -53524.527344 -42360.464844 +v -50889.632812 -52796.976562 -52720.929688 +v -56305.000000 -52660.660156 -52720.929688 +v -54495.652344 -52300.656250 -57901.160156 +v -59761.992188 -52340.351562 -57901.160156 +v -57802.800781 -51979.218750 -63081.394531 +v -62917.863281 -52155.437500 -63081.394531 +v -60808.871094 -51789.140625 -68261.625000 +v -65767.328125 -52184.007812 -68261.625000 +v -63508.734375 -51805.800781 -73441.859375 +v -65906.132812 -52133.863281 -73441.859375 +v -61239.796875 -51357.039062 -83802.320312 +v -63481.554688 -51763.925781 -83802.320312 +v -56569.542969 -50579.562500 -94171.476562 +v -58662.246094 -50959.398438 -94171.906250 +v -53851.417969 -50156.289062 -104523.250000 +v -55782.214844 -50592.191406 -104523.250000 +v -55439.734375 -50739.070312 -109110.460938 +v -53584.894531 -50221.527344 -109110.460938 +v -20518.537109 -51546.742188 -94164.117188 +v -27263.046875 -51767.167969 -83802.320312 +v -24850.375000 -50962.960938 -94165.000000 +v -31909.880859 -51256.074219 -83802.320312 +v -29188.615234 -50485.714844 -94165.890625 +v -36419.039062 -50874.593750 -83802.320312 +v -33398.273438 -50129.492188 -94166.750000 +v -40932.476562 -50614.324219 -83802.320312 +v -37611.878906 -49886.437500 -94167.609375 +v -45448.914062 -50500.640625 -83802.320312 +v -41828.234375 -49780.238281 -94168.468750 +v -49966.035156 -50534.687500 -83802.320312 +v -46045.179688 -49811.964844 -94169.328125 +v -54481.890625 -50690.261719 -83802.320312 +v -50260.890625 -49957.148438 -94170.187500 +v -58991.554688 -51049.386719 -83802.320312 +v -54470.773438 -50292.371094 -94171.046875 +v -18414.486328 -50701.335938 -104523.250000 +v -17362.324219 -50278.578125 -109703.484375 +v -9223.745117 -51283.343750 -112586.921875 +v -25108.755859 -49330.753906 -109703.484375 +v -21232.656250 -49757.078125 -109703.484375 +v -32634.843750 -48795.449219 -109703.484375 +v -28870.015625 -49012.550781 -109703.484375 +v -26468.980469 -49715.820312 -104523.250000 +v -22438.734375 -50159.097656 -104523.250000 +v -40170.078125 -48729.019531 -109703.484375 +v -36402.175781 -48700.621094 -109703.484375 +v -34294.371094 -49159.226562 -104523.250000 +v -30379.820312 -49384.960938 -104523.250000 +v -47698.609375 -49158.355469 -109703.484375 +v -43936.925781 -48858.792969 -109703.484375 +v -42129.269531 -49090.152344 -104523.250000 +v -38211.523438 -49060.625000 -104523.250000 +v -49573.949219 -49414.976562 -109703.484375 +v -51443.886719 -49754.378906 -109703.484375 +v -59136.253906 -52196.359375 -109110.460938 +v -61905.476562 -54533.539062 -109110.460938 +v -62008.425781 -54745.812500 -109110.460938 +v -62064.625000 -54955.824219 -109110.460938 +v -62030.921875 -55290.812500 -109110.460938 +v -62037.527344 -55292.265625 -109098.304688 +v -61991.117188 -55467.792969 -109040.632812 +v -61953.203125 -55459.355469 -109110.460938 +v -61803.292969 -55674.906250 -109110.460938 +v -61803.296875 -55674.906250 -109110.460938 +v -61872.371094 -55690.523438 -108982.968750 +v -61581.402344 -56007.902344 -108906.570312 +v -61224.304688 -56245.308594 -108830.179688 +v -60460.480469 -56512.585938 -108724.867188 +v -59492.894531 -56726.386719 -108595.890625 +v -59224.234375 -56659.492188 -109110.460938 +v -61471.449219 -55982.449219 -109110.460938 +v -58106.761719 -56804.726562 -109110.460938 +v -58483.292969 -56764.687500 -109110.460938 +v -58797.578125 -56844.292969 -108501.906250 +v -49252.003906 -56930.863281 -109703.484375 +v -50149.578125 -57196.730469 -107699.640625 +v -43202.988281 -57350.906250 -104523.250000 +v -42249.968750 -57028.308594 -106991.367188 +v -41202.730469 -56673.820312 -109703.484375 +v -25105.775391 -56082.757812 -109703.484375 +v -26189.785156 -56603.660156 -105574.820312 +v -26465.882812 -56736.335938 -104523.250000 +v -29189.281250 -58045.031250 -94150.648438 +v -31906.308594 -59350.660156 -83802.320312 +v -12608.601562 -58642.062500 -83802.320312 +v 1504.463623 -64160.113281 -32000.000000 +v 251.040436 -64206.140625 -32000.000000 +v -466.052917 -64232.472656 -32000.000000 +v 4100.000000 -64064.785156 -32000.000000 +v -23365.287109 -65073.449219 -32000.000000 +v -19169.392578 -64383.792969 -36596.015625 +v -19030.406250 -64262.160156 -37596.039062 +v -18950.052734 -64191.835938 -38174.210938 +v -18368.242188 -63682.660156 -42360.464844 +v -42787.164062 -64579.308594 -42360.464844 +v -16928.332031 -62422.511719 -52720.929688 +v -40066.949219 -63272.144531 -52720.929688 +v -44650.742188 -65474.824219 -35262.652344 +v -44038.093750 -65180.425781 -37596.039062 +v -43612.039062 -64975.691406 -39218.757812 +v -83491.937500 -67072.968750 -33262.605469 +v -89192.945312 -67266.476562 -32000.000000 +v -90034.500000 -67126.421875 -32929.265625 +v -92860.164062 -67187.640625 -32000.000000 +v -97437.718750 -66939.039062 -32000.000000 +v -98121.312500 -66872.679688 -32000.000000 +v -99374.093750 -66702.468750 -32000.000000 +v -100966.398438 -66333.703125 -32297.583984 +v -102987.414062 -65592.359375 -32126.548828 +v -103992.023438 -63920.000000 -32000.000000 +v -103955.242188 -63774.042969 -32000.000000 +v -97601.992188 -58766.191406 -32000.000000 +v -96815.156250 -58447.652344 -32000.000000 +v -73293.546875 -53957.503906 -37596.039062 +v -74115.953125 -54286.265625 -32000.000000 +v -55735.003906 -53859.101562 -37596.039062 +v -52172.914062 -54552.476562 -32000.000000 +v -23030.027344 -58249.386719 -32000.000000 +v -15774.988281 -59591.933594 -32000.000000 +v -7641.940430 -60003.496094 -42360.464844 +v -6764.418945 -58936.250000 -52720.929688 +v -6325.658203 -58402.625000 -57901.160156 +v -5886.897461 -57869.000000 -63081.394531 +v -5448.136230 -57335.378906 -68261.625000 +v -5176.266602 -56593.652344 -74869.640625 +v -5176.266602 -57375.343750 -68409.492188 +v -5176.266602 -58133.152344 -62153.613281 +v -8045.482422 -60494.289062 -37596.039062 +v -8534.253906 -61067.605469 -32000.000000 +v -1231.917480 -62684.433594 -32000.000000 +v -371.441711 -62882.589844 -32000.000000 +v 318.832458 -63041.812500 -32000.000000 +v 1556.923462 -63336.105469 -32000.000000 +v 2844.944092 -63632.843750 -32000.000000 +v -5176.266602 -59614.937500 -49939.308594 +v -90648.828125 -57114.136719 -41753.613281 +v -77060.273438 -54075.042969 -42360.464844 +v -59923.695312 -53380.667969 -42360.464844 +v -42791.679688 -54336.582031 -42360.464844 +v -36911.671875 -54983.308594 -42360.464844 +v -40071.230469 -53566.453125 -52720.929688 +v -34499.515625 -54179.273438 -52720.929688 +v -38711.003906 -53181.390625 -57901.160156 +v -33293.437500 -53777.257812 -57901.160156 +v -37350.781250 -52796.328125 -63081.394531 +v -32087.359375 -53375.238281 -63081.394531 +v -35990.554688 -52411.261719 -68261.625000 +v -30881.281250 -52973.222656 -68261.625000 +v -34630.332031 -52026.199219 -73441.859375 +v -29675.203125 -52571.203125 -73441.859375 +v -45477.867188 -53109.050781 -52720.929688 +v -49230.105469 -52433.199219 -57901.160156 +v -52686.304688 -51940.656250 -63081.394531 +v -55843.609375 -51618.085938 -68261.625000 +v -58699.878906 -51422.847656 -73441.859375 +v -61721.183594 -52701.484375 -52720.929688 +v -65026.859375 -52521.730469 -57901.160156 +v -68025.914062 -52562.214844 -63081.394531 +v -68239.304688 -52522.273438 -68261.625000 +v -68296.625000 -52567.746094 -73441.859375 +v -75238.812500 -53687.511719 -52720.929688 +v -75519.226562 -53773.472656 -57901.160156 +v -47213.765625 -58708.550781 -94136.218750 +v -46045.917969 -49225.085938 -104523.250000 +v -49957.199219 -49536.562500 -104523.250000 +v -51907.121094 -49803.390625 -104523.250000 +v -53884.417969 -51256.953125 -73441.859375 +v -49067.609375 -51220.648438 -73441.859375 +v -44251.527344 -51341.875000 -73441.859375 +v -39438.648438 -51619.414062 -73441.859375 +v -47570.582031 -52069.425781 -63081.394531 +v -50876.957031 -51580.652344 -68261.625000 +v -45911.054688 -51705.652344 -68261.625000 +v -42458.257812 -52364.230469 -63081.394531 +v -40948.453125 -51991.824219 -68261.625000 +v -43968.062500 -52736.640625 -57901.160156 +v 59005.875000 -44000.000000 -287382.843750 +v 52064.656250 -44000.000000 -287382.843750 +v 57668.964844 -44000.000000 -287652.906250 +v 53041.484375 -44000.000000 -287652.906250 +v 56404.070312 -44000.000000 -287814.937500 +v 54090.332031 -44000.000000 -287814.937500 +v 55211.195312 -44000.000000 -287868.968750 +v 54733.554688 -34201.460938 -288000.000000 +v 56430.777344 -36513.363281 -287672.968750 +v 57545.035156 -39008.910156 -287511.250000 +v 58102.164062 -40256.683594 -287430.406250 +v 56497.425781 -40256.683594 -287832.218750 +v 57282.054688 -41504.453125 -287694.406250 +v 55952.242188 -41504.453125 -287968.125000 +v 58659.292969 -41504.453125 -287349.531250 +v 54669.863281 -41504.453125 -288170.718750 +v 55305.125000 -41504.453125 -288078.312500 +v 54947.949219 -40256.683594 -288151.187500 +v 55712.796875 -39008.910156 -287970.062500 +v 52247.402344 -41504.453125 -288362.437500 +v 53434.917969 -41504.453125 -288302.156250 +v 54046.460938 -41504.453125 -288245.312500 +v 52727.363281 -40256.683594 -288474.156250 +v 53453.742188 -40256.683594 -288387.218750 +v 52237.617188 -39008.910156 -288603.718750 +v 53082.750000 -39008.910156 -288480.812500 +v 50860.375000 -36513.363281 -288883.281250 +v 51935.070312 -36513.363281 -288700.312500 +v 48344.734375 -34017.820312 -289331.281250 +v 51453.390625 -34017.820312 -288766.968750 +v 51107.320312 -41504.453125 -288351.562500 +v 50014.667969 -41504.453125 -288269.562500 +v 48752.093750 -41504.453125 -288074.406250 +v 47559.410156 -41504.453125 -287774.437500 +v 46558.445312 -40256.683594 -288275.031250 +v 45168.746094 -40256.683594 -287925.500000 +v 44364.796875 -39008.910156 -288475.625000 +v 42778.082031 -39008.910156 -288076.562500 +v 39977.496094 -36513.363281 -288876.812500 +v 37996.753906 -36513.363281 -288378.656250 +v 35002.683594 -34017.820312 -289152.593750 +v 33097.816406 -34017.820312 -288644.625000 +v 33214.460938 -34881.691406 -288000.000000 +v 31284.037109 -34017.820312 -288000.000000 +v 46436.609375 -41504.453125 -287369.656250 +v 43860.476562 -40256.683594 -287453.843750 +v 41284.343750 -39008.910156 -287538.031250 +v 36132.074219 -36513.363281 -287706.375000 +v 36609.945312 -37523.578125 -286860.031250 +v 40662.437500 -39362.296875 -286860.031250 +v 42688.679688 -40281.656250 -286860.031250 +v 44714.925781 -41201.019531 -286860.031250 +v 46741.171875 -42120.378906 -286860.031250 +v 36998.640625 -34017.820312 -289523.968750 +v 42074.296875 -36513.363281 -289200.906250 +v 46044.480469 -39008.910156 -288735.218750 +v 48029.574219 -40256.683594 -288502.406250 +v 39085.683594 -34017.820312 -289758.687500 +v 43888.910156 -36513.363281 -289337.093750 +v 47498.113281 -39008.910156 -288844.343750 +v 49302.714844 -40256.683594 -288597.937500 +v 41263.812500 -34017.820312 -289856.781250 +v 45782.292969 -36513.363281 -289355.125000 +v 49014.847656 -39008.910156 -288858.781250 +v 50631.125000 -40256.683594 -288610.593750 +v 43533.031250 -34017.820312 -289818.250000 +v 47754.445312 -36513.363281 -289255.000000 +v 50594.683594 -39008.910156 -288778.593750 +v 52014.800781 -40256.683594 -288540.375000 +v 45893.339844 -34017.820312 -289643.062500 +v 48770.062500 -36513.363281 -289160.656250 +v 51408.261719 -39008.910156 -288703.000000 +v 49805.371094 -36513.363281 -289036.750000 +v 54143.539062 -36513.363281 -288245.718750 +v 54697.164062 -34017.820312 -288000.000000 +v 53943.656250 -39008.910156 -288334.218750 +v 54193.937500 -40256.683594 -288279.562500 +v 58832.527344 -33769.171875 -288000.000000 +v 58330.015625 -33652.570312 -288000.000000 +v 57659.714844 -33499.390625 -288000.000000 +v 59734.011719 -34017.820312 -288000.000000 +v 55096.207031 -32952.121094 -288000.000000 +v 45659.496094 -41024.324219 -286230.406250 +v 43605.859375 -40016.617188 -286151.437500 +v 41552.222656 -39008.910156 -286072.468750 +v 39427.191406 -37966.167969 -285990.750000 +v 43351.210938 -39008.910156 -285480.406250 +v 41412.843750 -37966.167969 -285337.281250 +v 45280.531250 -39008.910156 -285083.875000 +v 43542.359375 -37966.167969 -284899.593750 +v 47340.195312 -39008.910156 -284882.843750 +v 45815.734375 -37966.167969 -284677.687500 +v 47097.691406 -41024.324219 -285757.093750 +v 45224.449219 -40016.617188 -285618.750000 +v 46960.308594 -40016.617188 -285261.968750 +v 47694.546875 -37444.796875 -284573.406250 +v 45053.503906 -37444.796875 -284575.093750 +v 42673.269531 -37444.796875 -284807.437500 +v 40443.660156 -37444.796875 -285265.687500 +v 38364.675781 -37444.796875 -285949.906250 +v 45763.558594 -35880.683594 -284265.468750 +v 47050.882812 -36923.425781 -284470.750000 +v 44291.273438 -36923.425781 -284472.531250 +v 41804.183594 -36923.425781 -284715.281250 +v 39474.476562 -36923.425781 -285194.125000 +v 37302.156250 -36923.425781 -285909.031250 +v 42766.812500 -35880.683594 -284267.375000 +v 40066.007812 -35880.683594 -284531.000000 +v 37536.109375 -35880.683594 -285050.968750 +v 35177.125000 -35880.683594 -285827.312500 +v 58767.449219 -34053.316406 -288000.000000 +v 58182.281250 -34074.808594 -288000.000000 +v 57476.308594 -34100.734375 -288000.000000 +v 47287.738281 -30744.714844 -284297.312500 +v 46556.914062 -31534.015625 -284211.531250 +v 44624.828125 -31534.015625 -284139.218750 +v 42763.511719 -31534.015625 -284173.062500 +v 43617.183594 -30744.714844 -284260.093750 +v 41884.625000 -30744.714844 -284395.531250 +v 42796.285156 -29955.414062 -284478.031250 +v 41714.695312 -29955.414062 -284620.750000 +v 42663.808594 -29166.113281 -284698.312500 +v 41648.175781 -29166.113281 -284878.843750 +v 43619.265625 -27587.511719 -285021.000000 +v 42702.953125 -27587.511719 -285228.281250 +v 44744.855469 -26008.910156 -285354.375000 +v 43923.773438 -26008.910156 -285582.281250 +v 48132.648438 -23389.798828 -285563.625000 +v 47428.800781 -23387.457031 -285760.000000 +v 46084.746094 -23382.771484 -286247.125000 +v 46741.171875 -22099.574219 -286860.031250 +v 47031.878906 -27587.511719 -284608.156250 +v 47005.011719 -29166.113281 -284403.562500 +v 46211.617188 -29955.414062 -284315.437500 +v 45324.531250 -29166.113281 -284434.125000 +v 44470.859375 -29955.414062 -284347.093750 +v 43707.945312 -29166.113281 -284560.500000 +v 47354.585938 -26008.910156 -284890.437500 +v 45531.265625 -27587.511719 -284725.468750 +v 45590.351562 -26008.910156 -285163.125000 +v 46460.261719 -26008.910156 -285008.468750 +v 44562.035156 -27587.511719 -284853.375000 +v 44714.925781 -23451.880859 -286860.031250 +v 42354.847656 -26008.910156 -286147.906250 +v 40662.437500 -26156.498047 -286860.031250 +v 40112.761719 -27587.511719 -286088.250000 +v 41813.097656 -27587.511719 -285475.250000 +v 39702.421875 -29166.113281 -285368.218750 +v 40661.046875 -29166.113281 -285102.156250 +v 39640.097656 -29955.414062 -285039.125000 +v 40662.632812 -29955.414062 -284807.781250 +v 39677.089844 -30744.714844 -284736.718750 +v 40765.582031 -30744.714844 -284543.218750 +v 39816.468750 -31534.015625 -284465.687500 +v 36609.945312 -28861.113281 -286860.031250 +v 37870.679688 -29166.113281 -286028.625000 +v 38647.085938 -29955.414062 -285314.718750 +v 38619.144531 -30744.714844 -284976.062500 +v 38691.546875 -31534.015625 -284665.656250 +v 37598.191406 -31534.015625 -284913.000000 +v 37591.746094 -30744.714844 -285261.218750 +v 36749.636719 -29955.414062 -285998.781250 +v 35628.593750 -30744.714844 -285968.968750 +v 36536.406250 -31534.015625 -285207.687500 +v 34507.550781 -31534.015625 -285939.156250 +v 40972.964844 -31534.015625 -284313.062500 +v 45418.222656 -30744.714844 -284227.343750 +v 62698.871094 -18000.000000 -287471.125000 +v 61665.996094 -22004.455078 -287351.250000 +v 60659.992188 -24006.681641 -287417.500000 +v 59653.988281 -26008.910156 -287483.781250 +v 58647.988281 -28011.136719 -287550.031250 +v 57641.984375 -30013.365234 -287616.312500 +v 55557.066406 -30013.365234 -288153.375000 +v 54962.726562 -31014.478516 -288210.031250 +v 52852.671875 -31014.478516 -288671.312500 +v 52169.773438 -32015.591797 -288747.343750 +v 50040.136719 -32015.591797 -289124.531250 +v 49271.457031 -33016.707031 -289215.750000 +v 47127.796875 -33016.707031 -289500.500000 +v 57138.980469 -31014.478516 -287649.437500 +v 54368.386719 -32015.591797 -288266.687500 +v 51486.871094 -33016.707031 -288823.375000 +v 56132.980469 -33016.707031 -287715.687500 +v 56635.980469 -32015.591797 -287682.562500 +v 53774.046875 -33016.707031 -288323.343750 +v 45055.898438 -33016.707031 -289677.593750 +v 43055.757812 -33016.707031 -289747.062500 +v 41127.375000 -33016.707031 -289708.875000 +v 39620.046875 -33016.707031 -289599.281250 +v 38159.671875 -33016.707031 -289419.218750 +v 36746.246094 -33016.707031 -289168.750000 +v 39358.601562 -32015.591797 -289320.125000 +v 37999.906250 -32015.591797 -289079.343750 +v 40557.535156 -31014.478516 -289221.031250 +v 39253.562500 -31014.478516 -288989.968750 +v 41756.464844 -30013.365234 -289121.937500 +v 40507.222656 -30013.365234 -288900.562500 +v 44154.324219 -28011.136719 -288923.750000 +v 43014.539062 -28011.136719 -288721.781250 +v 46552.183594 -26008.910156 -288725.562500 +v 45521.855469 -26008.910156 -288543.000000 +v 48950.042969 -24006.681641 -288527.375000 +v 48029.171875 -24006.681641 -288364.218750 +v 51347.906250 -22004.455078 -288329.218750 +v 50536.488281 -22004.455078 -288185.406250 +v 55439.359375 -18000.000000 -287804.250000 +v 49752.023438 -22004.455078 -288001.187500 +v 54253.953125 -18000.000000 -287471.125000 +v 48263.953125 -22004.455078 -287511.468750 +v 35379.773438 -33016.707031 -288847.843750 +v 36686.339844 -32015.591797 -288770.875000 +v 37992.910156 -31014.478516 -288693.906250 +v 39299.476562 -30013.365234 -288616.937500 +v 41912.613281 -28011.136719 -288463.000000 +v 44525.750000 -26008.910156 -288309.062500 +v 47138.886719 -24006.681641 -288155.125000 +v 34828.757812 -31680.013672 -288000.000000 +v 35601.539062 -31014.478516 -287906.906250 +v 37008.476562 -30013.365234 -287862.968750 +v 39822.343750 -28011.136719 -287775.093750 +v 42636.214844 -26008.910156 -287687.218750 +v 45450.082031 -24006.681641 -287599.343750 +v 56713.597656 -18000.000000 -288004.125000 +v 52186.273438 -22004.455078 -288432.562500 +v 49901.507812 -24006.681641 -288644.687500 +v 47616.738281 -26008.910156 -288856.812500 +v 45331.968750 -28011.136719 -289068.937500 +v 43047.199219 -30013.365234 -289281.062500 +v 41904.816406 -31014.478516 -289387.125000 +v 40762.433594 -32015.591797 -289493.218750 +v 53051.597656 -22004.455078 -288495.500000 +v 58076.667969 -18000.000000 -288070.750000 +v 54158.640625 -22004.455078 -288517.406250 +v 55306.878906 -22004.455078 -288477.531250 +v 52139.937500 -24006.681641 -288740.968750 +v 53443.066406 -24006.681641 -288695.718750 +v 50121.230469 -26008.910156 -288964.562500 +v 51579.250000 -26008.910156 -288913.906250 +v 48102.523438 -28011.136719 -289188.125000 +v 49715.437500 -28011.136719 -289132.125000 +v 46083.816406 -30013.365234 -289411.687500 +v 47851.621094 -30013.365234 -289350.312500 +v 45074.464844 -31014.478516 -289523.500000 +v 46919.714844 -31014.478516 -289459.406250 +v 44065.109375 -32015.591797 -289635.281250 +v 45987.804688 -32015.591797 -289568.500000 +v 59528.570312 -18000.000000 -288004.125000 +v 56496.312500 -22004.455078 -288375.875000 +v 54792.949219 -24006.681641 -288580.343750 +v 53089.582031 -26008.910156 -288784.812500 +v 51386.214844 -28011.136719 -288989.281250 +v 49682.847656 -30013.365234 -289193.781250 +v 48831.164062 -31014.478516 -289296.000000 +v 47979.480469 -32015.591797 -289398.250000 +v 61069.304688 -18000.000000 -287804.250000 +v 57726.941406 -22004.455078 -288212.406250 +v 56189.582031 -24006.681641 -288394.812500 +v 54652.218750 -26008.910156 -288577.250000 +v 53114.859375 -28011.136719 -288759.687500 +v 51577.496094 -30013.365234 -288942.093750 +v 50808.816406 -31014.478516 -289033.312500 +v 58998.765625 -22004.455078 -287987.125000 +v 60311.781250 -22004.455078 -287700.093750 +v 59123.105469 -24006.681641 -287813.406250 +v 57934.425781 -26008.910156 -287926.718750 +v 56745.746094 -28011.136719 -288040.062500 +v 57632.964844 -24006.681641 -288139.187500 +v 56267.167969 -26008.910156 -288291.218750 +v 54901.367188 -28011.136719 -288443.250000 +v 53535.570312 -30013.365234 -288595.312500 +v 50883.558594 -24006.681641 -288716.125000 +v 48715.515625 -26008.910156 -288936.718750 +v 46547.476562 -28011.136719 -289157.343750 +v 44379.433594 -30013.365234 -289377.968750 +v 43295.414062 -31014.478516 -289488.281250 +v 42211.394531 -32015.591797 -289598.593750 +v 31976.720703 -34821.554688 -288000.000000 +v 31769.748047 -32556.226562 -288000.000000 +v 32781.707031 -32186.025391 -288000.000000 +v 18374.775391 -47058.011719 179281.031250 +v 20828.810547 -44619.437500 201441.859375 +v 19087.734375 -43742.453125 210320.953125 +v 9015.900391 -47061.960938 182487.312500 +v 18374.775391 -45002.570312 179281.031250 +v 9015.900391 -42817.847656 182487.312500 +v 13665.297852 -43823.726562 180894.453125 +v 14010.412109 -41356.101562 196289.718750 +v 19087.734375 -39870.789062 210320.953125 +v 20835.845703 -41594.445312 201441.859375 +v 23223.824219 -40899.593750 208004.078125 +v 13819.856445 -43654.679688 182051.125000 +v 14320.998047 -43507.519531 183436.187500 +v 14822.140625 -43360.359375 184821.234375 +v 15824.424805 -43066.039062 187591.343750 +v 16826.708984 -42771.722656 190361.437500 +v 18831.277344 -42183.082031 195901.656250 +v 8275.919922 -48841.171875 165954.265625 +v 13259.903320 -46642.703125 164351.125000 +v 6791.993164 -45855.132812 161821.015625 +v 8283.063477 -45415.207031 165954.265625 +v 3670.870361 -44382.781250 167716.250000 +v 11265.203125 -44535.351562 174220.796875 +v 3064.317871 -46954.953125 151487.859375 +v 3809.852783 -46734.992188 153554.500000 +v 4555.387695 -46515.027344 155621.125000 +v 5300.922852 -46295.062500 157687.750000 +v 28700.740234 -42231.253906 221249.625000 +v 24519.484375 -40864.292969 209556.156250 +v 25218.148438 -40656.078125 211505.062500 +v 25916.810547 -40447.863281 213453.984375 +v 27314.138672 -40031.429688 217351.796875 +v 23919.619141 -38458.046875 223673.937500 +v 28711.464844 -39615.000000 221249.625000 +v 31506.119141 -38782.136719 229045.281250 +v 9015.900391 -42817.847656 -182487.312500 +v 14010.412109 -41356.101562 -196289.718750 +v 9015.900391 -47061.960938 -182487.312500 +v 18374.775391 -47058.011719 -179281.031250 +v 20828.810547 -44619.437500 -201441.859375 +v 18374.775391 -45002.570312 -179281.031250 +v 13683.518555 -43827.988281 -180888.218750 +v 13819.856445 -43654.679688 -182051.125000 +v 14320.998047 -43507.519531 -183436.187500 +v 14822.140625 -43360.359375 -184821.234375 +v 20835.845703 -41594.445312 -201441.859375 +v 18831.277344 -42183.082031 -195901.656250 +v 16826.708984 -42771.722656 -190361.437500 +v 15824.424805 -43066.039062 -187591.343750 +v -1725.659912 -45963.312500 -152802.859375 +v 3203.127930 -47042.960938 -151114.296875 +v -1725.659912 -50602.195312 -152802.859375 +v 8145.031250 -48282.839844 -149421.234375 +v 8145.031250 -50598.031250 -149421.234375 +v -2007.465698 -52318.335938 -136706.171875 +v 895.781006 -47717.554688 -144754.515625 +v -2000.401245 -48575.468750 -136706.171875 +v -3448.492188 -49004.425781 -132682.000000 +v -4896.583496 -49433.382812 -128657.835938 +v -5620.628906 -49647.859375 -126645.750000 +v -6730.015625 -47429.371094 -138973.265625 +v -6344.674316 -49862.335938 -124633.664062 +v 3670.870361 -44382.781250 -167716.250000 +v 8275.919922 -48841.171875 -165954.265625 +v 13259.903320 -46642.703125 -164351.125000 +v 11265.203125 -44535.351562 -174220.796875 +v 8283.063477 -45415.207031 -165954.265625 +v 6791.993164 -45855.132812 -161821.015625 +v 5300.922852 -46295.062500 -157687.750000 +v 4555.387695 -46515.027344 -155621.125000 +v 3809.852783 -46734.992188 -153554.500000 +v 3064.317871 -46954.953125 -151487.859375 +v 296000.000000 -24088.480469 16000.000000 +v 294374.125000 -24366.945312 16000.000000 +v 294385.656250 -23683.744141 16000.000000 +v 292895.906250 -24614.916016 16000.000000 +v 292912.437500 -23382.195312 16000.000000 +v 291411.218750 -23136.914062 16000.000000 +v 291392.656250 -24858.296875 16000.000000 +v 289612.343750 -22870.210938 16000.000000 +v 289590.843750 -25137.636719 16000.000000 +v 287434.531250 -22547.496094 16000.000000 +v 287409.906250 -25463.015625 16000.000000 +v 285047.656250 -25801.650391 16000.000000 +v 280551.843750 -26398.125000 16000.000000 +v 280575.718750 -21602.972656 16000.000000 +v 285073.500000 -22202.708984 16000.000000 +v 276221.406250 -21088.015625 16000.000000 +v 276197.062500 -26916.052734 16000.000000 +v 240000.015625 -23993.312500 16000.000000 +v 240035.656250 -24295.857422 16000.000000 +v 240138.921875 -24586.144531 16000.000000 +v 240292.093750 -24852.996094 16000.000000 +v 271673.156250 -27382.960938 16000.000000 +v 240472.578125 -25087.884766 16000.000000 +v 240838.500000 -25449.083984 16000.000000 +v 241180.890625 -25699.919922 16000.000000 +v 267287.750000 -27762.251953 16000.000000 +v 242083.828125 -26176.937500 16000.000000 +v 243249.140625 -26654.832031 16000.000000 +v 262836.375000 -28042.771484 16000.000000 +v 260444.218750 -28133.445312 16000.000000 +v 258170.484375 -28186.402344 16000.000000 +v 246806.031250 -27504.345703 16000.000000 +v 245377.625000 -27229.607422 16000.000000 +v 256271.953125 -28201.939453 16000.000000 +v 254712.375000 -28181.191406 16000.000000 +v 248457.125000 -27749.359375 16000.000000 +v 251599.296875 -28042.208984 16000.000000 +v 240038.875000 -23691.046875 16000.000000 +v 240144.765625 -23401.570312 16000.000000 +v 240299.609375 -23135.968750 16000.000000 +v 271697.968750 -20618.785156 16000.000000 +v 240480.781250 -22902.623047 16000.000000 +v 240846.140625 -22544.492188 16000.000000 +v 241188.640625 -22295.162109 16000.000000 +v 267311.281250 -20239.720703 16000.000000 +v 242096.062500 -21817.326172 16000.000000 +v 243261.546875 -21340.888672 16000.000000 +v 245391.109375 -20767.410156 16000.000000 +v 260470.421875 -19867.250000 16000.000000 +v 262862.250000 -19958.468750 16000.000000 +v 246823.609375 -20492.697266 16000.000000 +v 258193.734375 -19813.917969 16000.000000 +v 256290.500000 -19798.046875 16000.000000 +v 254728.765625 -19818.400391 16000.000000 +v 248475.156250 -20248.308594 16000.000000 +v 251616.687500 -19956.712891 16000.000000 +v 316214.593750 -15627.880859 107728.507812 +v 316104.312500 -15671.785156 108235.007812 +v 316862.531250 -15733.635742 107728.507812 +v 317157.218750 -15822.080078 107996.406250 +v 317664.281250 -15917.489258 107866.117188 +v 317707.500000 -15943.754883 107978.968750 +v 317950.125000 -15988.420898 107855.406250 +v 317969.031250 -16001.648438 107900.046875 +v 318081.875000 -16019.416016 107814.843750 +v 318089.031250 -16025.837891 107830.992188 +v 318194.031250 -16038.069336 107728.507812 +v 315437.250000 -15512.653320 107728.507812 +v 314756.000000 -15490.083984 108444.328125 +v 316200.875000 -15747.798828 108650.398438 +v 314949.031250 -15601.458008 109031.382812 +v 316276.312500 -15821.807617 108974.671875 +v 315099.968750 -15710.979492 109489.664062 +v 316330.656250 -15893.811523 109207.835938 +v 315208.812500 -15818.646484 109819.195312 +v 316350.156250 -15929.578125 109291.296875 +v 315247.937500 -15872.568359 109937.148438 +v 316364.187500 -15964.829102 109351.304688 +v 315276.218750 -15926.011719 110021.953125 +v 316369.187500 -15982.260742 109372.515625 +v 315286.312500 -15952.555664 110051.929688 +v 316372.812500 -15999.563477 109387.859375 +v 315293.687500 -15978.979492 110073.609375 +v 316375.093750 -16016.736328 109397.335938 +v 315298.343750 -16005.284180 110087.007812 +v 316375.718750 -16025.275391 109399.882812 +v 315299.656250 -16018.391602 110090.601562 +v 316376.000000 -16033.781250 109400.953125 +v 315300.312500 -16031.468750 110092.117188 +v 316375.968750 -16042.254883 109400.562500 +v 315300.250000 -16044.516602 110091.562500 +v 316375.562500 -16050.696289 109398.703125 +v 315299.531250 -16057.535156 110088.937500 +v 316374.843750 -16059.106445 109395.382812 +v 315298.156250 -16070.523438 110084.242188 +v 316373.781250 -16067.483398 109390.593750 +v 315296.093750 -16083.482422 110077.476562 +v 316370.593750 -16084.140625 109376.617188 +v 315289.906250 -16109.309570 110057.726562 +v 316366.093750 -16100.668945 109356.773438 +v 315281.031250 -16135.017578 110029.679688 +v 316352.968750 -16133.337891 109299.500000 +v 315255.125000 -16186.076172 109948.742188 +v 316334.406250 -16165.490234 109218.773438 +v 315218.406250 -16236.658203 109834.648438 +v 316281.000000 -16228.247070 108986.945312 +v 315112.437500 -16336.390625 109507.015625 +v 316205.875000 -16288.938477 108661.289062 +v 314963.156250 -16434.214844 109046.781250 +v 316108.968750 -16347.565430 108241.812500 +v 314770.500000 -16530.128906 108453.945312 +v 315368.625000 -16499.773438 107728.507812 +v 313548.656250 -16765.783203 107728.507812 +v 313253.000000 -16726.880859 108636.390625 +v 310011.343750 -17216.330078 107728.507812 +v 310305.406250 -17047.699219 108912.250000 +v 306433.906250 -17570.625000 107728.507812 +v 307238.687500 -17308.734375 109069.390625 +v 304701.218750 -17698.169922 107728.507812 +v 304146.718750 -17476.242188 109107.804688 +v 302822.281250 -17780.630859 107728.507812 +v 302573.406250 -17510.314453 109082.492188 +v 301917.593750 -17801.234375 107728.507812 +v 301153.343750 -17807.964844 107728.507812 +v 301287.468750 -17508.017578 109027.500000 +v 299919.312500 -17781.615234 107728.507812 +v 298898.750000 -17405.673828 108828.468750 +v 297383.375000 -17563.912109 107728.507812 +v 297690.906250 -17280.833984 108684.437500 +v 296237.000000 -17348.863281 107728.507812 +v 296627.968750 -17120.222656 108510.718750 +v 296425.625000 -17084.904297 108466.679688 +v 296761.875000 -16875.503906 109069.921875 +v 296208.812500 -16797.775391 108861.078125 +v 296419.656250 -16606.589844 109256.476562 +v 296216.031250 -16580.482422 109155.109375 +v 296355.312500 -16396.880859 109417.914062 +v 295335.812500 -16287.846680 108769.484375 +v 295368.843750 -16223.782227 108825.875000 +v 294893.250000 -16183.257812 108452.546875 +v 294907.750000 -16132.946289 108478.945312 +v 294675.281250 -16113.522461 108277.304688 +v 294678.656250 -16093.433594 108283.992188 +v 294450.781250 -16074.644531 108074.382812 +v 294452.125000 -16061.342773 108077.312500 +v 294274.343750 -16050.110352 107904.679688 +v 294274.531250 -16046.666016 107905.187500 +v 294100.968750 -16038.069336 107728.507812 +v 313230.281250 -15288.492188 108624.359375 +v 311539.468750 -14966.412109 107728.507812 +v 310267.750000 -14965.700195 108896.562500 +v 307709.406250 -14542.520508 107728.507812 +v 307187.531250 -14702.209961 109051.617188 +v 303896.500000 -14259.262695 107728.507812 +v 304075.875000 -14534.671875 109089.523438 +v 301887.562500 -14198.267578 107728.507812 +v 302505.843750 -14501.624023 109064.539062 +v 301075.000000 -14192.140625 107728.507812 +v 300405.312500 -14201.651367 107728.507812 +v 297704.531250 -14391.215820 107728.507812 +v 298833.718750 -14612.370117 108813.890625 +v 301231.000000 -14505.442383 109010.281250 +v 303190.593750 -14806.406250 110160.242188 +v 304718.687500 -14833.092773 110205.703125 +v 305221.812500 -15129.915039 111077.070312 +v 308195.406250 -15232.003906 110983.804688 +v 308514.656250 -15494.340820 111592.890625 +v 311346.750000 -15602.879883 111140.031250 +v 311440.062500 -15709.061523 111332.507812 +v 314044.562500 -15809.954102 110492.632812 +v 314091.375000 -15883.442383 110598.765625 +v 297619.218750 -14742.133789 108671.765625 +v 296385.781250 -14616.572266 107728.507812 +v 296577.125000 -14904.392578 108500.351562 +v 296376.750000 -14940.116211 108456.898438 +v 296946.312500 -15129.613281 109133.343750 +v 296718.312500 -15158.338867 109054.257812 +v 297235.531250 -15353.537109 109627.500000 +v 296985.875000 -15375.256836 109520.593750 +v 297444.718750 -15576.162109 109982.820312 +v 297179.468750 -15590.869141 109855.898438 +v 297520.281250 -15688.625000 110110.007812 +v 297249.437500 -15699.770508 109975.929688 +v 297575.218750 -15800.752930 110201.445312 +v 297300.312500 -15808.334961 110062.226562 +v 297594.968750 -15856.691406 110233.765625 +v 297318.625000 -15862.491211 110092.718750 +v 297609.562500 -15912.545898 110257.148438 +v 297332.187500 -15916.563477 110114.789062 +v 297619.031250 -15968.318359 110271.593750 +v 297340.968750 -15970.552734 110128.421875 +v 297621.812500 -15996.171875 110275.468750 +v 297343.562500 -15997.514648 110132.070312 +v 297623.312500 -16024.005859 110277.101562 +v 297344.968750 -16024.457031 110133.617188 +v 297623.531250 -16051.818359 110276.507812 +v 297345.218750 -16051.377930 110133.054688 +v 297622.468750 -16079.610352 110273.679688 +v 297344.250000 -16078.277344 110130.382812 +v 297620.125000 -16107.380859 110268.609375 +v 297342.093750 -16105.156250 110125.609375 +v 297616.468750 -16135.131836 110261.312500 +v 297338.750000 -16132.013672 110118.718750 +v 297605.343750 -16190.568359 110240.015625 +v 297328.500000 -16185.666016 110098.617188 +v 297589.031250 -16245.922852 110209.781250 +v 297313.468750 -16239.234375 110070.085938 +v 297541.000000 -16356.379883 110122.500000 +v 297269.156250 -16346.119141 109987.718750 +v 297472.343750 -16466.501953 109999.484375 +v 297205.781250 -16452.667969 109871.625000 +v 297273.281250 -16685.746094 109646.203125 +v 297021.906250 -16664.757812 109538.242188 +v 296991.812500 -16903.652344 109149.953125 +v 295469.406250 -14867.552734 107728.507812 +v 295881.812500 -15042.036133 108343.492188 +v 296161.968750 -15240.000977 108847.843750 +v 296381.750000 -15436.782227 109241.578125 +v 296541.156250 -15632.379883 109524.679688 +v 296598.968750 -15731.171875 109626.023438 +v 296641.218750 -15829.659180 109698.882812 +v 296656.500000 -15878.789062 109724.632812 +v 296667.906250 -15927.842773 109743.265625 +v 296675.437500 -15976.819336 109754.773438 +v 296677.750000 -16001.279297 109757.859375 +v 296679.093750 -16025.720703 109759.164062 +v 296679.437500 -16050.142578 109758.687500 +v 296678.843750 -16074.544922 109756.429688 +v 296677.250000 -16098.928711 109752.398438 +v 296674.687500 -16123.293945 109746.585938 +v 296666.687500 -16171.965820 109729.609375 +v 296654.781250 -16220.562500 109705.523438 +v 296619.312500 -16317.526367 109635.984375 +v 296568.312500 -16414.185547 109537.960938 +v 295705.031250 -15088.457031 108302.687500 +v 294967.718750 -15076.786133 107728.507812 +v 294883.968750 -15370.453125 108082.304688 +v 294588.937500 -15280.694336 107728.507812 +v 294441.125000 -15393.002930 107728.507812 +v 294568.281250 -15516.088867 107961.945312 +v 294282.218750 -15556.641602 107728.507812 +v 294407.875000 -15625.515625 107899.226562 +v 294206.468750 -15661.806641 107728.507812 +v 294257.218750 -15767.708008 107834.804688 +v 294145.156250 -15779.965820 107728.507812 +v 294161.812500 -15899.128906 107782.195312 +v 294107.750000 -15907.073242 107728.507812 +v 294123.187500 -16158.046875 107728.507812 +v 294181.218750 -16173.703125 107782.921875 +v 294169.218750 -16272.411133 107728.507812 +v 294290.187500 -16298.738281 107836.234375 +v 294304.937500 -16470.412109 107728.507812 +v 294447.000000 -16430.230469 107901.515625 +v 294451.406250 -16615.892578 107728.507812 +v 294605.312500 -16529.060547 107965.085938 +v 294587.968750 -16718.664062 107728.507812 +v 294924.625000 -16666.134766 108087.062500 +v 295394.000000 -17105.066406 107728.507812 +v 295761.937500 -16944.300781 108310.406250 +v 295935.812500 -16987.742188 108351.757812 +v 296018.250000 -16762.957031 108785.937500 +v 316720.187500 -16287.332031 107728.507812 +v 317157.031250 -16201.551758 108000.000000 +v 317224.968750 -16172.357422 108221.867188 +v 317277.718750 -16141.170898 108394.109375 +v 317315.312500 -16107.993164 108516.726562 +v 317328.406250 -16090.657227 108559.429688 +v 317337.750000 -16072.823242 108589.718750 +v 317340.968750 -16063.719727 108600.210938 +v 317343.281250 -16054.491211 108607.601562 +v 317344.062500 -16049.831055 108610.140625 +v 317344.625000 -16045.138672 108611.898438 +v 317344.937500 -16040.416016 108612.875000 +v 317345.000000 -16035.662109 108613.085938 +v 317344.843750 -16030.876953 108612.515625 +v 317344.468750 -16026.060547 108611.171875 +v 317342.968750 -16016.333984 108606.156250 +v 317340.500000 -16006.483398 108598.046875 +v 317337.125000 -15996.508789 108586.828125 +v 317327.468750 -15976.185547 108555.085938 +v 317314.062500 -15955.364258 108510.945312 +v 317276.500000 -15912.870117 108387.617188 +v 317224.218750 -15868.442383 108216.109375 +v 317421.531250 -16170.252930 107728.507812 +v 317663.625000 -16124.600586 107867.968750 +v 317707.562500 -16109.640625 107981.929688 +v 317741.718750 -16093.375977 108070.406250 +v 317766.062500 -16075.807617 108133.390625 +v 317774.562500 -16066.533203 108155.320312 +v 317780.593750 -16056.933594 108170.882812 +v 317782.687500 -16052.011719 108176.273438 +v 317784.187500 -16047.007812 108180.070312 +v 317784.718750 -16044.475586 108181.375000 +v 317785.062500 -16041.921875 108182.273438 +v 317785.281250 -16039.348633 108182.781250 +v 317785.343750 -16036.755859 108182.882812 +v 317785.250000 -16034.141602 108182.593750 +v 317785.000000 -16031.506836 108181.906250 +v 317784.031250 -16026.176758 108179.328125 +v 317782.468750 -16020.765625 108175.156250 +v 317780.281250 -16015.272461 108169.398438 +v 317774.093750 -16004.041992 108153.093750 +v 317765.437500 -15992.485352 108130.421875 +v 317741.250000 -15968.752930 108067.070312 +v 318058.875000 -16060.669922 107764.070312 +v 317925.437500 -16082.622070 107799.164062 +v 294200.437500 -15926.488281 107826.226562 +v 294230.968750 -15953.806641 107860.601562 +v 294253.468750 -15981.085938 107885.312500 +v 294261.781250 -15994.911133 107894.156250 +v 294268.031250 -16008.726562 107900.515625 +v 294270.375000 -16015.630859 107902.765625 +v 294272.218750 -16022.532227 107904.390625 +v 294273.531250 -16029.430664 107905.398438 +v 294274.000000 -16032.878906 107905.664062 +v 294274.312500 -16036.326172 107905.781250 +v 294274.531250 -16039.773438 107905.742188 +v 294274.593750 -16043.219727 107905.546875 +v 294273.593750 -16056.999023 107903.203125 +v 294272.312500 -16063.884766 107901.101562 +v 294268.187500 -16077.648438 107895.031250 +v 294261.968750 -16091.401367 107886.468750 +v 294243.343750 -16118.876953 107861.898438 +v 294216.437500 -16146.310547 107827.382812 +v 318071.875000 -16056.851562 107793.132812 +v 318082.000000 -16052.647461 107815.687500 +v 318089.187500 -16048.056641 107831.750000 +v 318091.718750 -16045.617188 107837.343750 +v 318093.500000 -16043.081055 107841.312500 +v 318094.125000 -16041.776367 107842.687500 +v 318094.562500 -16040.448242 107843.656250 +v 318094.718750 -16039.775391 107843.984375 +v 318094.843750 -16039.095703 107844.218750 +v 318094.906250 -16038.410156 107844.343750 +v 318094.906250 -16037.718750 107844.375000 +v 318094.906250 -16037.021484 107844.296875 +v 318094.812500 -16036.318359 107844.117188 +v 318094.531250 -16034.893555 107843.460938 +v 318094.062500 -16033.444336 107842.398438 +v 318093.437500 -16031.970703 107840.929688 +v 318091.593750 -16028.952148 107836.773438 +v 318071.906250 -16012.619141 107792.375000 +v 318059.125000 -16005.448242 107763.601562 +v 294324.156250 -15821.208984 107921.976562 +v 294377.093750 -15874.503906 107990.031250 +v 294416.062500 -15927.590820 108038.960938 +v 294430.468750 -15954.448242 108056.476562 +v 294441.281250 -15981.251953 108069.070312 +v 294445.343750 -15994.633789 108073.523438 +v 294448.500000 -16008.001953 108076.742188 +v 294450.781250 -16021.357422 108078.734375 +v 294451.562500 -16028.029297 108079.265625 +v 294452.125000 -16034.699219 108079.492188 +v 294452.468750 -16041.365234 108079.406250 +v 294452.593750 -16048.027344 108079.015625 +v 294452.468750 -16054.686523 108078.320312 +v 294502.281250 -15707.608398 108039.226562 +v 294576.781250 -15789.164062 108148.523438 +v 294631.406250 -15870.181641 108227.109375 +v 294651.531250 -15911.083984 108255.242188 +v 294666.500000 -15951.848633 108275.460938 +v 294672.093750 -15972.178711 108282.609375 +v 294676.375000 -15992.474609 108287.781250 +v 294679.406250 -16012.735352 108290.976562 +v 294680.437500 -16022.853516 108291.835938 +v 294681.125000 -16032.961914 108292.195312 +v 294681.531250 -16043.062500 108292.062500 +v 294681.593750 -16053.154297 108291.437500 +v 294681.343750 -16063.237305 108290.320312 +v 294680.750000 -16073.311523 108288.703125 +v 294689.687500 -15620.375000 108153.390625 +v 294785.218750 -15723.777344 108302.843750 +v 294854.906250 -15826.294922 108410.304688 +v 294880.343750 -15877.972656 108448.773438 +v 294899.156250 -15929.422852 108476.429688 +v 294906.062500 -15955.062500 108486.203125 +v 294911.281250 -15980.645508 108493.273438 +v 294914.875000 -16006.171875 108497.640625 +v 294916.031250 -16018.913086 108498.812500 +v 294916.781250 -16031.640625 108499.304688 +v 294917.093750 -16044.353516 108499.125000 +v 294917.031250 -16057.052734 108498.273438 +v 294916.531250 -16069.737305 108496.742188 +v 294915.593750 -16082.407227 108494.531250 +v 294912.500000 -16107.705078 108488.093750 +v 295067.375000 -15503.829102 108372.460938 +v 295211.343750 -15636.077148 108598.976562 +v 295315.937500 -15767.197266 108761.843750 +v 295353.906250 -15833.295898 108820.140625 +v 295381.781250 -15899.102539 108862.062500 +v 295391.875000 -15931.897461 108876.875000 +v 295399.468750 -15964.620117 108887.593750 +v 295404.500000 -15997.269531 108894.210938 +v 295406.093750 -16013.566406 108895.984375 +v 295407.031250 -16029.845703 108896.742188 +v 295407.343750 -16046.107422 108896.468750 +v 295407.000000 -16062.350586 108895.171875 +v 295406.031250 -16078.575195 108892.843750 +v 295404.437500 -16094.782227 108889.500000 +v 295399.343750 -16127.140625 108879.742188 +v 295391.718750 -16159.427734 108865.882812 +v 295969.281250 -15277.129883 108773.585938 +v 296176.718750 -15464.706055 109141.195312 +v 296327.343750 -15651.185547 109405.515625 +v 296382.031250 -15745.385742 109500.132812 +v 296422.093750 -15839.302734 109568.156250 +v 296436.656250 -15886.155273 109592.203125 +v 296447.531250 -15932.937500 109609.593750 +v 296454.781250 -15979.649414 109620.343750 +v 296457.031250 -16002.978516 109623.218750 +v 296458.343750 -16026.291016 109624.437500 +v 296458.781250 -16049.584961 109623.992188 +v 296458.281250 -16072.861328 109621.890625 +v 296456.875000 -16096.120117 109618.125000 +v 296454.531250 -16119.361328 109612.695312 +v 296447.156250 -16165.791016 109596.851562 +v 296436.093750 -16212.150391 109574.359375 +v 296403.031250 -16304.656250 109509.429688 +v 298064.281250 -14999.126953 109445.335938 +v 298413.125000 -15254.862305 110049.234375 +v 298665.718750 -15509.340820 110483.460938 +v 298757.125000 -15637.980469 110638.898438 +v 298823.718750 -15766.295898 110750.648438 +v 298847.750000 -15830.333008 110790.140625 +v 298865.562500 -15894.288086 110818.718750 +v 298877.187500 -15958.163086 110836.367188 +v 298880.687500 -15990.070312 110841.101562 +v 298882.625000 -16021.957031 110843.101562 +v 298883.031250 -16053.823242 110842.375000 +v 298881.875000 -16085.668945 110838.914062 +v 298879.187500 -16117.495117 110832.726562 +v 298874.937500 -16149.300781 110823.804688 +v 298861.781250 -16212.852539 110797.781250 +v 298842.468750 -16276.322266 110760.828125 +v 298785.218750 -16403.019531 110654.171875 +v 298703.187500 -16529.392578 110503.828125 +v 298464.843750 -16781.167969 110072.093750 +v 298127.406250 -17031.648438 109465.625000 +v 299318.625000 -14895.064453 109704.023438 +v 299698.375000 -15176.390625 110398.914062 +v 299973.031250 -15456.349609 110898.562500 +v 300072.187500 -15597.875000 111077.421875 +v 300144.312500 -15739.048828 111206.007812 +v 300170.218750 -15809.503906 111251.460938 +v 300189.343750 -15879.871094 111284.335938 +v 300201.718750 -15950.149414 111304.648438 +v 300205.375000 -15985.255859 111310.093750 +v 300207.312500 -16020.340820 111312.398438 +v 300207.593750 -16055.403320 111311.562500 +v 300206.156250 -16090.443359 111307.578125 +v 300203.031250 -16125.461914 111300.460938 +v 300198.250000 -16160.458008 111290.195312 +v 300183.562500 -16230.384766 111260.242188 +v 300162.093750 -16300.223633 111217.726562 +v 300098.906250 -16439.636719 111095.000000 +v 300008.625000 -16578.699219 110922.000000 +v 299746.906250 -16855.765625 110425.210938 +v 299376.937500 -17131.423828 109727.367188 +v 301857.406250 -14809.356445 110061.476562 +v 302347.406250 -15111.791992 110882.101562 +v 302701.031250 -15412.748047 111472.164062 +v 302828.281250 -15564.885742 111683.382812 +v 302920.437500 -15716.641602 111835.234375 +v 302953.343750 -15792.376953 111888.906250 +v 302977.468750 -15868.017578 111927.734375 +v 302992.812500 -15943.562500 111951.726562 +v 302997.218750 -15981.299805 111958.156250 +v 302999.406250 -16019.012695 111960.875000 +v 302999.406250 -16056.702148 111959.882812 +v 302997.187500 -16094.367188 111955.187500 +v 302992.812500 -16132.008789 111946.773438 +v 302986.218750 -16169.626953 111934.656250 +v 302966.468750 -16244.791016 111899.281250 +v 302937.906250 -16319.860352 111849.070312 +v 302854.500000 -16469.712891 111704.132812 +v 302735.968750 -16619.183594 111499.835938 +v 302393.593750 -16916.984375 110913.164062 +v 301910.750000 -17213.263672 110089.046875 +v 307753.031250 -14967.959961 110136.710938 +v 310727.625000 -15179.874023 109854.500000 +v 313549.843750 -15439.566406 109359.054688 +v 317925.875000 -15974.483398 107798.226562 +v 317950.093750 -16075.038086 107856.906250 +v 317969.250000 -16066.721680 107901.734375 +v 317982.906250 -16057.673828 107933.640625 +v 317987.687500 -16052.875977 107944.757812 +v 317991.062500 -16047.894531 107952.640625 +v 317992.250000 -16045.335938 107955.367188 +v 317993.093750 -16042.730469 107957.296875 +v 317993.375000 -16041.411133 107957.953125 +v 317993.593750 -16040.080078 107958.414062 +v 317993.718750 -16038.737305 107958.664062 +v 317993.750000 -16037.383789 107958.718750 +v 317993.687500 -16036.017578 107958.570312 +v 317993.562500 -16034.641602 107958.226562 +v 317993.031250 -16031.853516 107956.921875 +v 317992.156250 -16029.019531 107954.804688 +v 317990.937500 -16026.139648 107951.890625 +v 317987.437500 -16020.244141 107943.625000 +v 317982.593750 -16014.165039 107932.140625 +v 313572.187500 -16591.232422 109378.328125 +v 313819.625000 -16453.615234 109954.312500 +v 313995.250000 -16314.027344 110364.351562 +v 314056.125000 -16243.494141 110507.140625 +v 314099.062500 -16172.468750 110608.437500 +v 314113.812500 -16136.771484 110643.531250 +v 314124.062500 -16100.951172 110668.250000 +v 314127.500000 -16082.995117 110676.726562 +v 314129.843750 -16065.007812 110682.601562 +v 314131.031250 -16046.989258 110685.882812 +v 314131.125000 -16028.940430 110686.578125 +v 314130.062500 -16010.861328 110684.679688 +v 314127.906250 -15992.750977 110680.179688 +v 314120.218750 -15956.437500 110663.414062 +v 314108.031250 -15920.001953 110636.281250 +v 310763.750000 -16846.798828 109879.625000 +v 311118.906250 -16644.064453 110630.625000 +v 311370.875000 -16439.496094 111165.250000 +v 311458.156250 -16336.523438 111351.421875 +v 311519.656250 -16233.092773 111483.500000 +v 311540.718750 -16181.205078 111529.257812 +v 311555.312500 -16129.203125 111561.484375 +v 311560.218750 -16103.159180 111572.531250 +v 311563.500000 -16077.086914 111580.195312 +v 311565.156250 -16050.985352 111584.476562 +v 311565.218750 -16024.855469 111585.382812 +v 311563.656250 -15998.697266 111582.906250 +v 311560.468750 -15972.509766 111577.046875 +v 311549.281250 -15920.049805 111555.179688 +v 311531.656250 -15867.474609 111519.796875 +v 311507.562500 -15814.785156 111470.890625 +v 307801.343750 -17054.808594 110165.171875 +v 308237.218750 -16799.123047 111015.867188 +v 308546.312500 -16541.681641 111621.460938 +v 308653.281250 -16412.302734 111832.343750 +v 308728.593750 -16282.482422 111981.960938 +v 308754.343750 -16217.408203 112033.789062 +v 308772.187500 -16152.224609 112070.296875 +v 308778.125000 -16119.590820 112082.812500 +v 308782.093750 -16086.930664 112091.492188 +v 308784.062500 -16054.242188 112096.343750 +v 308784.062500 -16021.526367 112097.367188 +v 308782.093750 -15988.783203 112094.554688 +v 308778.125000 -15956.012695 112087.921875 +v 308764.281250 -15890.388672 112063.156250 +v 308742.468750 -15824.655273 112023.078125 +v 308712.781250 -15758.812500 111967.679688 +v 308629.562500 -15626.796875 111810.921875 +v 304783.750000 -17188.167969 110234.984375 +v 305276.937500 -16898.445312 111110.046875 +v 305626.281250 -16607.076172 111732.992188 +v 305747.031250 -16460.773438 111949.921875 +v 305831.812500 -16314.061523 112103.820312 +v 305860.687500 -16240.549805 112157.132812 +v 305880.625000 -16166.936523 112194.687500 +v 305887.187500 -16130.090820 112207.554688 +v 305891.531250 -16093.219727 112216.484375 +v 305893.625000 -16056.322266 112221.476562 +v 305893.468750 -16019.399414 112222.531250 +v 305891.062500 -15982.451172 112219.640625 +v 305886.406250 -15945.477539 112212.812500 +v 305870.343750 -15871.452148 112187.343750 +v 305845.312500 -15797.323242 112146.109375 +v 305811.281250 -15723.091797 112089.125000 +v 305716.250000 -15574.321289 111927.882812 +v 305585.250000 -15425.137695 111703.601562 +v 303253.593750 -17215.210938 110188.984375 +v 303780.375000 -16918.525391 111047.984375 +v 304153.718750 -16620.257812 111659.500000 +v 304282.875000 -16470.529297 111872.445312 +v 304373.687500 -16320.407227 112023.523438 +v 304404.718750 -16245.197266 112075.859375 +v 304426.156250 -16169.887695 112112.726562 +v 304433.281250 -16132.196289 112125.359375 +v 304438.000000 -16094.480469 112134.125000 +v 304440.312500 -16056.739258 112139.023438 +v 304440.250000 -16018.973633 112140.054688 +v 304437.781250 -15981.183594 112137.218750 +v 304432.937500 -15943.368164 112130.515625 +v 304416.000000 -15867.664062 112105.515625 +v 304389.500000 -15791.860352 112065.039062 +v 304353.406250 -15715.958008 112009.101562 +v 304252.468750 -15563.856445 111850.812500 +v 304113.187500 -15411.360352 111630.656250 +v 303726.375000 -15109.651367 111015.609375 +v 295102.281250 -16541.201172 108380.070312 +v 295239.312500 -16415.105469 108607.546875 +v 294720.875000 -16431.398438 108158.414062 +v 294809.812500 -16332.825195 108308.500000 +v 294872.093750 -16233.341797 108415.343750 +v 294534.781250 -16351.882812 108042.898438 +v 294602.093750 -16272.982422 108152.656250 +v 294648.937500 -16193.529297 108230.796875 +v 294664.656250 -16153.594727 108258.000000 +v 294351.375000 -16246.356445 107924.265625 +v 294398.187500 -16193.761719 107992.609375 +v 294430.562500 -16140.954102 108041.257812 +v 294441.343750 -16114.469727 108058.203125 +v 294448.531250 -16087.932617 108070.218750 +v 311087.281250 -15392.267578 110602.320312 +v 313799.687500 -15588.726562 109932.609375 +v 313979.843750 -15735.973633 110345.007812 +v 317864.968750 -16157.432617 106368.453125 +v 316113.093750 -15780.423828 106368.453125 +v 315094.750000 -15627.707031 106368.453125 +v 313601.906250 -15406.917969 106368.453125 +v 310865.718750 -15038.390625 106368.453125 +v 308000.000000 -14713.406250 106368.453125 +v 306171.937500 -15098.521484 100990.757812 +v 304709.562500 -14853.988281 101995.476562 +v 302397.781250 -15228.174805 96262.445312 +v 304279.156250 -15497.674805 95422.750000 +v 300086.000000 -15602.361328 90529.414062 +v 302563.343750 -15843.125000 90529.414062 +v 297774.187500 -15976.547852 84796.382812 +v 300415.812500 -16233.274414 84796.382812 +v 296618.312500 -16163.641602 81929.867188 +v 299342.031250 -16428.349609 81929.867188 +v 298268.156250 -16623.443359 79063.070312 +v 298528.000000 -16712.238281 78504.390625 +v 296120.750000 -17013.572266 73330.320312 +v 296691.750000 -17100.416016 73102.656250 +v 291825.656250 -17793.871094 61864.253906 +v 294948.468750 -17469.066406 67974.351562 +v 293312.156250 -17815.177734 63160.808594 +v 300425.656250 -16311.246094 84086.820312 +v 289989.218750 -18518.261719 53385.632812 +v 287530.593750 -18574.169922 50398.191406 +v 283903.468750 -18221.667969 50398.191406 +v 282747.593750 -18408.761719 47531.675781 +v 279185.062500 -18125.802734 47531.675781 +v 277950.281250 -18306.630859 44665.160156 +v 276055.843750 -18195.279297 44665.160156 +v 273504.250000 -18552.111328 38932.128906 +v 271414.406250 -18466.462891 38932.128906 +v 266137.656250 -19173.015625 27466.064453 +v 263940.281250 -19116.869141 27466.064453 +v 286456.812500 -18769.246094 47531.675781 +v 286598.625000 -19235.890625 43411.378906 +v 285383.031250 -18964.320312 44665.160156 +v 283235.500000 -19354.468750 38932.128906 +v 279279.906250 -18970.042969 38932.128906 +v 274656.312500 -19718.416016 27466.064453 +v 270541.656250 -19391.601562 27466.064453 +v 283236.750000 -19947.607422 33521.640625 +v 278940.437500 -20134.767578 27466.064453 +v 281596.718750 -20294.859375 28697.082031 +v 280000.000000 -20632.960938 24000.000000 +v 288318.000000 -21960.322266 21893.636719 +v 290609.062500 -22370.199219 21313.472656 +v 291743.250000 -22572.648438 21026.257812 +v 292763.812500 -22756.230469 20767.822266 +v 294843.781250 -23188.806641 20241.117188 +v 296900.156250 -23761.966797 19720.378906 +v 268401.031250 -19265.777344 27466.064453 +v 275480.750000 -18668.289062 38932.128906 +v 281591.687500 -18595.855469 44665.160156 +v 262080.125000 -19097.267578 27466.064453 +v 258984.750000 -19168.804688 27466.064453 +v 255849.687500 -19377.298828 27466.064453 +v 253257.296875 -19716.433594 27466.064453 +v 252399.312500 -19868.103516 27466.064453 +v 251666.656250 -20020.617188 27466.064453 +v 250496.906250 -20314.507812 27466.064453 +v 258053.046875 -19249.072266 38932.128906 +v 256973.000000 -19520.427734 38932.128906 +v 261246.250000 -18863.300781 44665.160156 +v 260211.046875 -19123.388672 44665.160156 +v 262842.843750 -18670.416016 47531.675781 +v 261830.062500 -18924.869141 47531.675781 +v 264439.437500 -18477.529297 50398.191406 +v 263449.093750 -18726.349609 50398.191406 +v 270825.843750 -17705.986328 61864.253906 +v 269925.187500 -17932.271484 61864.253906 +v 277212.218750 -16934.443359 73330.320312 +v 276401.250000 -17138.191406 73330.320312 +v 279631.125000 -16742.156250 79048.867188 +v 278859.937500 -16998.763672 79047.882812 +v 281258.343750 -16542.632812 81929.867188 +v 280510.375000 -16791.625000 81929.867188 +v 282877.343750 -16344.113281 84796.382812 +v 282151.937500 -16585.597656 84796.382812 +v 286115.406250 -15947.074219 90529.414062 +v 285435.093750 -16173.543945 90529.414062 +v 289353.437500 -15550.034180 96262.445312 +v 288718.250000 -15761.489258 96262.445312 +v 292591.500000 -15152.995117 101995.476562 +v 292001.375000 -15349.435547 101995.476562 +v 291422.437500 -15619.000977 101995.476562 +v 291082.343750 -15847.896484 101995.476562 +v 290909.250000 -16028.445312 101995.476562 +v 290827.750000 -16144.132812 101995.476562 +v 290762.937500 -16273.703125 101995.476562 +v 290728.218750 -16393.792969 101995.476562 +v 290718.625000 -16517.261719 101995.476562 +v 287337.406250 -17018.582031 96262.445312 +v 287355.625000 -17150.894531 96262.445312 +v 283975.718750 -17661.609375 90529.414062 +v 284022.906250 -17798.199219 90529.414062 +v 280646.125000 -18317.970703 84796.382812 +v 280765.406250 -18521.996094 84796.382812 +v 279080.718750 -18788.224609 81929.867188 +v 279227.343750 -18963.138672 81929.867188 +v 277384.750000 -19056.238281 79044.132812 +v 277535.656250 -19236.490234 79043.843750 +v 274026.687500 -19586.910156 73330.320312 +v 274186.562500 -19777.646484 73330.320312 +v 267465.531250 -20863.656250 61864.253906 +v 267838.937500 -21179.441406 61864.253906 +v 261155.093750 -22296.900391 50398.191406 +v 261489.250000 -22494.255859 50398.191406 +v 259825.859375 -22778.089844 47531.675781 +v 260819.718750 -23239.367188 47531.675781 +v 259178.328125 -23533.414062 44665.160156 +v 260209.125000 -23876.082031 44665.160156 +v 256971.000000 -24479.019531 38932.128906 +v 258150.593750 -24772.701172 38932.128906 +v 251772.312500 -26002.964844 27466.064453 +v 252592.937500 -26168.310547 27466.064453 +v 249320.437500 -20706.136719 27466.064453 +v 255886.750000 -19882.029297 38932.128906 +v 259169.890625 -19469.974609 44665.160156 +v 260811.468750 -19263.947266 47531.675781 +v 262453.031250 -19057.921875 50398.191406 +v 269019.343750 -18233.812500 61864.253906 +v 275585.625000 -17409.705078 73330.320312 +v 278103.281250 -17350.876953 79046.898438 +v 279776.531250 -17133.306641 81929.867188 +v 281440.250000 -16916.976562 84796.382812 +v 284767.656250 -16484.318359 90529.414062 +v 288095.062500 -16051.659180 96262.445312 +v 248166.218750 -21243.564453 27466.064453 +v 254821.031250 -20378.246094 38932.128906 +v 258148.421875 -19945.587891 44665.160156 +v 259812.125000 -19729.257812 47531.675781 +v 261475.828125 -19512.929688 50398.191406 +v 268130.625000 -18647.611328 61864.253906 +v 274785.437500 -17782.294922 73330.320312 +v 277658.593750 -17649.876953 79046.031250 +v 279345.437500 -17423.439453 81929.867188 +v 281022.125000 -17198.361328 84796.382812 +v 284375.531250 -16748.207031 90529.414062 +v 287728.937500 -16298.051758 96262.445312 +v 247488.125000 -21699.914062 27466.064453 +v 254194.937500 -20799.603516 38932.128906 +v 257548.328125 -20349.449219 44665.160156 +v 259225.031250 -20124.371094 47531.675781 +v 260901.734375 -19899.292969 50398.191406 +v 267608.531250 -18998.982422 61864.253906 +v 274315.343750 -18098.671875 73330.320312 +v 277432.281250 -17885.705078 79045.601562 +v 279126.031250 -17652.291016 81929.867188 +v 280809.343750 -17420.312500 84796.382812 +v 284175.968750 -16956.357422 90529.414062 +v 287542.593750 -16492.400391 96262.445312 +v 247143.015625 -22059.871094 27466.064453 +v 246980.531250 -22290.515625 27466.064453 +v 246851.312500 -22548.835938 27466.064453 +v 246782.140625 -22788.257812 27466.064453 +v 246762.968750 -23034.416016 27466.064453 +v 246796.703125 -23279.472656 27466.064453 +v 246878.328125 -23515.679688 27466.064453 +v 253556.531250 -22258.042969 38932.128906 +v 253631.890625 -22476.138672 38932.128906 +v 256936.437500 -21747.328125 44665.160156 +v 257008.671875 -21956.367188 44665.160156 +v 258626.390625 -21491.970703 47531.675781 +v 258697.062500 -21696.482422 47531.675781 +v 260316.343750 -21236.613281 50398.191406 +v 260385.453125 -21436.595703 50398.191406 +v 267076.156250 -20215.183594 61864.253906 +v 267139.000000 -20397.054688 61864.253906 +v 273835.968750 -19193.753906 73330.320312 +v 273892.562500 -19357.511719 73330.320312 +v 277258.187500 -18839.457031 79044.421875 +v 247071.765625 -23846.566406 27466.064453 +v 247302.390625 -24121.687500 27466.064453 +v 247787.375000 -24531.818359 27466.064453 +v 248182.078125 -24764.921875 27466.064453 +v 249329.984375 -25297.693359 27466.064453 +v 250494.734375 -25684.894531 27466.064453 +v 253546.359375 -26329.683594 27466.064453 +v 255848.781250 -26622.615234 27466.064453 +v 258065.937500 -26785.279297 27466.064453 +v 262552.156250 -26900.888672 27466.064453 +v 264819.218750 -26864.371094 27466.064453 +v 263623.875000 -26888.496094 27466.064453 +v 268103.843750 -25601.773438 38932.128906 +v 263961.656250 -25495.029297 38932.128906 +v 266909.500000 -24849.904297 44665.160156 +v 264947.343750 -24705.949219 44665.160156 +v 266463.781250 -24386.503906 47531.675781 +v 264470.312500 -24132.878906 47531.675781 +v 266030.875000 -23819.048828 50398.191406 +v 265223.656250 -23682.423828 50398.191406 +v 271539.031250 -22439.480469 61864.253906 +v 270907.187500 -22312.169922 61864.253906 +v 277285.468750 -21081.906250 73330.320312 +v 276399.750000 -20861.394531 73330.320312 +v 280461.437500 -20469.314453 79039.679688 +v 279625.156250 -20260.830078 79040.781250 +v 281256.937500 -19956.988281 81929.867188 +v 278862.656250 -20007.072266 79041.757812 +v 280516.437500 -19710.810547 81929.867188 +v 278111.250000 -19657.964844 79042.734375 +v 279786.625000 -19372.089844 81929.867188 +v 277853.000000 -19505.216797 79043.210938 +v 279535.687500 -19223.888672 81929.867188 +v 280907.625000 -18691.636719 84796.382812 +v 284134.781250 -17989.539062 90529.414062 +v 287399.687500 -17278.427734 96262.445312 +v 290735.531250 -16640.179688 101995.476562 +v 267388.343750 -26780.507812 27466.064453 +v 269880.812500 -26651.509766 27466.064453 +v 272223.625000 -26485.169922 27466.064453 +v 276982.468750 -26065.121094 27466.064453 +v 280000.000000 -25972.974609 24000.000000 +v 284318.937500 -25509.943359 22906.314453 +v 288526.250000 -24989.164062 21840.900391 +v 292782.593750 -24401.437500 20763.068359 +v 283293.843750 -24980.208984 33689.570312 +v 281427.687500 -24830.091797 38932.128906 +v 277033.718750 -25217.933594 38932.128906 +v 279438.781250 -24584.314453 44665.160156 +v 277365.437500 -24731.523438 44665.160156 +v 278612.875000 -24411.525391 47531.675781 +v 276454.875000 -24523.210938 47531.675781 +v 277750.062500 -24200.740234 50398.191406 +v 275574.937500 -24271.742188 50398.191406 +v 280952.812500 -22975.427734 61864.253906 +v 280032.437500 -22994.003906 61864.253906 +v 285501.968750 -21695.839844 73330.320312 +v 284758.968750 -21704.429688 73330.320312 +v 288222.187500 -21050.210938 79032.843750 +v 287520.281250 -21058.273438 79033.335938 +v 289604.125000 -20722.216797 81929.867188 +v 288922.750000 -20730.093750 81929.867188 +v 290310.656250 -20405.314453 84796.382812 +v 287544.437500 -20334.027344 84796.382812 +v 290492.312500 -19688.902344 90529.414062 +v 289210.187500 -19594.835938 90529.414062 +v 292243.031250 -18955.947266 96262.445312 +v 290999.906250 -18797.781250 96262.445312 +v 294121.031250 -18170.123047 101995.476562 +v 293642.812500 -18089.179688 101995.476562 +v 286692.437500 -23955.708984 43687.339844 +v 283650.281250 -24212.578125 44665.160156 +v 280641.312500 -24267.505859 47531.675781 +v 279860.312500 -24091.527344 50398.191406 +v 282930.937500 -22910.857422 61864.253906 +v 286330.687500 -21679.113281 73330.320312 +v 289005.062500 -21034.462891 79032.343750 +v 290364.093750 -20706.878906 81929.867188 +v 290971.500000 -20397.675781 84796.382812 +v 293086.531250 -19755.757812 90529.414062 +v 293440.156250 -19043.777344 96262.445312 +v 295275.906250 -18317.058594 101995.476562 +v 290112.062500 -22924.666016 53746.992188 +v 284761.593750 -23903.820312 47531.675781 +v 281843.843750 -23950.695312 50398.191406 +v 284850.062500 -22811.535156 61864.253906 +v 288111.812500 -21620.972656 73330.320312 +v 290687.781250 -20979.630859 79031.351562 +v 293469.000000 -21912.267578 63622.207031 +v 290318.093750 -22360.035156 61864.253906 +v 285872.906250 -23595.064453 50398.191406 +v 295132.000000 -21410.621094 68514.226562 +v 294763.312500 -21125.007812 73330.320312 +v 291464.062500 -21416.220703 73330.320312 +v 296971.968750 -20511.369141 79027.367188 +v 293854.843750 -20786.359375 79029.359375 +v 298097.218750 -20198.736328 81929.867188 +v 295071.625000 -20465.792969 81929.867188 +v 296274.156250 -20148.984375 84796.382812 +v 294829.562500 -20251.550781 84796.382812 +v 297324.437500 -19611.554688 90529.414062 +v 295883.125000 -19686.148438 90529.414062 +v 298473.562500 -19041.207031 96262.445312 +v 297086.406250 -19086.484375 96262.445312 +v 299775.343750 -18438.328125 101995.476562 +v 299175.781250 -18450.429688 101995.476562 +v 298638.218750 -18456.642578 101995.476562 +v 296883.125000 -20882.273438 73665.640625 +v 298705.406250 -20332.326172 79026.289062 +v 300573.562500 -19768.357422 84521.906250 +v 299208.531250 -19889.978516 84796.382812 +v 298679.218750 -19515.365234 90529.414062 +v 299819.312500 -18971.558594 96262.445312 +v 301064.000000 -18396.265625 101995.476562 +v 304346.531250 -18628.662109 95620.906250 +v 301431.125000 -19272.464844 90529.414062 +v 301084.281250 -18881.746094 96262.445312 +v 302314.187500 -18331.562500 101995.476562 +v 303653.750000 -18654.949219 96262.445312 +v 306200.812500 -18068.091797 101075.750000 +v 305876.343750 -18037.435547 101995.476562 +v 308000.000000 -17523.806641 106368.453125 +v 312895.656250 -16931.943359 106368.453125 +v 315466.125000 -16554.314453 106368.453125 +v 303489.343750 -18248.128906 101995.476562 +v 296388.000000 -18398.652344 101995.476562 +v 295862.375000 -19106.201172 96262.445312 +v 296441.031250 -19099.511719 96262.445312 +v 293706.250000 -19748.593750 90529.414062 +v 294397.468750 -19734.642578 90529.414062 +v 291708.562500 -20382.798828 84796.382812 +v 293292.687500 -20331.089844 84796.382812 +v 291997.468750 -20653.560547 81929.867188 +v 293582.125000 -20571.548828 81929.867188 +v 292320.343750 -20895.230469 79030.351562 +v 292590.406250 -17846.705078 101995.476562 +v 293231.187500 -18006.244141 101995.476562 +v 290485.125000 -18710.650391 96262.445312 +v 287878.781250 -19425.439453 90529.414062 +v 286177.312500 -20233.726562 84796.382812 +v 286070.531250 -20656.589844 81929.867188 +v 291430.406250 -17385.255859 101995.476562 +v 292006.156250 -17652.484375 101995.476562 +v 289352.281250 -18449.642578 96262.445312 +v 290042.062500 -18621.376953 96262.445312 +v 286852.906250 -19236.507812 90529.414062 +v 287327.437500 -19332.123047 90529.414062 +v 284169.750000 -19953.593750 84796.382812 +v 284757.656250 -20053.097656 84796.382812 +v 283197.093750 -20366.927734 81929.867188 +v 284660.906250 -20553.169922 81929.867188 +v 283130.656250 -20875.521484 79037.265625 +v 284582.500000 -20982.236328 79035.953125 +v 281648.750000 -21624.277344 73330.320312 +v 279207.250000 -23003.544922 61864.253906 +v 274562.906250 -24292.167969 50398.191406 +v 274230.468750 -24595.820312 47531.675781 +v 275159.656250 -24845.681641 44665.160156 +v 274870.562500 -25371.519531 38932.128906 +v 291232.437500 -17268.335938 101995.476562 +v 290989.187500 -17062.621094 101995.476562 +v 290873.500000 -16924.625000 101995.476562 +v 290776.468750 -16758.658203 101995.476562 +v 293178.218750 -15005.583984 101995.476562 +v 289985.000000 -15391.356445 96262.445312 +v 286791.812500 -15777.127930 90529.414062 +v 283598.625000 -16162.899414 84796.382812 +v 282002.031250 -16355.785156 81929.867188 +v 280397.906250 -16549.576172 79049.890625 +v 282467.812500 -16258.822266 81929.867188 +v 280878.125000 -16449.642578 79050.398438 +v 283013.312500 -16162.392578 81929.867188 +v 281440.406250 -16350.258789 79050.914062 +v 283139.281250 -16128.019531 79052.382812 +v 280112.250000 -16488.437500 73330.320312 +v 282285.750000 -16343.888672 73330.320312 +v 274046.593750 -17210.652344 61864.253906 +v 276460.500000 -17050.117188 61864.253906 +v 267980.968750 -17932.867188 50398.191406 +v 270635.250000 -17756.345703 50398.191406 +v 266464.562500 -18113.421875 47531.675781 +v 269178.937500 -17932.904297 47531.675781 +v 264948.156250 -18293.974609 44665.160156 +v 267722.625000 -18109.460938 44665.160156 +v 261915.328125 -18655.082031 38932.128906 +v 264810.000000 -18462.574219 38932.128906 +v 293976.031250 -14853.008789 101995.476562 +v 293545.687500 -14929.085938 101995.476562 +v 295276.343750 -14682.898438 101995.476562 +v 296848.875000 -14578.316406 101995.476562 +v 298401.468750 -14542.432617 101995.476562 +v 293936.250000 -14931.430664 96262.445312 +v 295607.500000 -14892.803711 96262.445312 +v 291023.625000 -15284.545898 90529.414062 +v 292813.562500 -15243.175781 90529.414062 +v 288111.000000 -15637.660156 84796.382812 +v 290019.625000 -15593.547852 84796.382812 +v 286654.687500 -15814.216797 81929.867188 +v 288622.625000 -15768.734375 81929.867188 +v 287222.125000 -15944.365234 79056.062500 +v 289805.250000 -15781.195312 81929.867188 +v 288440.906250 -15957.149414 79056.937500 +v 291202.312500 -15816.890625 81929.867188 +v 289880.562500 -15993.870117 79057.812500 +v 291363.437500 -16054.572266 79058.687500 +v 288813.906250 -16411.115234 73330.320312 +v 290297.968750 -16498.347656 73330.320312 +v 283710.687500 -17124.781250 61864.253906 +v 285358.906250 -17221.660156 61864.253906 +v 278607.468750 -17838.447266 50398.191406 +v 280419.812500 -17944.974609 50398.191406 +v 277331.656250 -18016.863281 47531.675781 +v 299334.468750 -14552.262695 101995.476562 +v 300436.656250 -14580.423828 101995.476562 +v 296611.843750 -14903.385742 96262.445312 +v 297798.281250 -14933.700195 96262.445312 +v 293889.218750 -15254.509766 90529.414062 +v 295159.875000 -15286.976562 90529.414062 +v 291166.593750 -15605.632812 84796.382812 +v 292521.500000 -15640.252930 84796.382812 +v 301571.937500 -14626.951172 101995.476562 +v 299020.343750 -14983.784180 96262.445312 +v 296468.718750 -15340.616211 90529.414062 +v 293917.125000 -15697.449219 84796.382812 +v 292641.312500 -15875.866211 81929.867188 +v 294002.281250 -15955.861328 81929.867188 +v 292765.875000 -16136.928711 79059.570312 +v 295461.593750 -16350.867188 79061.320312 +v 302645.687500 -14690.062500 101995.476562 +v 300176.125000 -15051.718750 96262.445312 +v 297706.593750 -15413.375977 90529.414062 +v 295237.062500 -15775.033203 84796.382812 +v 292243.531250 -15044.005859 96262.445312 +v 289210.718750 -15405.113281 90529.414062 +v 286177.875000 -15766.220703 84796.382812 +v 284661.468750 -15946.775391 81929.867188 +v 285193.718750 -15991.336914 79054.226562 +v 284431.718750 -16294.291992 73330.320312 +v 278843.812500 -16995.037109 61864.253906 +v 273255.906250 -17695.779297 50398.191406 +v 271858.937500 -17870.966797 47531.675781 +v 270461.968750 -18046.152344 44665.160156 +v 267668.031250 -18396.523438 38932.128906 +v 290843.812500 -15227.119141 96262.445312 +v 287711.625000 -15601.228516 90529.414062 +v 284579.406250 -15975.337891 84796.382812 +v 290380.593750 -15309.010742 96262.445312 +v 287215.468750 -15688.935547 90529.414062 +v 284050.375000 -16068.859375 84796.382812 +v 287454.875000 -16616.931641 96262.445312 +v 284082.000000 -17089.730469 90529.414062 +v 280709.156250 -17562.529297 84796.382812 +v 279022.718750 -17798.927734 81929.867188 +v 277325.718750 -18036.808594 79045.382812 +v 274076.062500 -18348.224609 73330.320312 +v 267342.812500 -19276.136719 61864.253906 +v 260609.546875 -20204.048828 50398.191406 +v 258926.234375 -20436.025391 47531.675781 +v 257242.921875 -20668.003906 44665.160156 +v 253876.281250 -21131.958984 38932.128906 +v 287385.093750 -16756.406250 96262.445312 +v 284007.281250 -17239.107422 90529.414062 +v 280629.468750 -17721.810547 84796.382812 +v 278940.562500 -17963.162109 81929.867188 +v 277240.937500 -18206.042969 79045.171875 +v 273963.437500 -18508.126953 73330.320312 +v 267217.718750 -19453.722656 61864.253906 +v 260471.984375 -20399.320312 50398.191406 +v 258785.546875 -20635.720703 47531.675781 +v 257099.109375 -20872.119141 44665.160156 +v 253726.250000 -21344.917969 38932.128906 +v 287347.750000 -16885.675781 96262.445312 +v 283967.281250 -17377.556641 90529.414062 +v 280586.812500 -17869.439453 84796.382812 +v 278896.593750 -18115.378906 81929.867188 +v 277195.531250 -18362.896484 79044.984375 +v 273873.843750 -18687.214844 73330.320312 +v 267118.218750 -19652.621094 61864.253906 +v 260362.578125 -20618.025391 50398.191406 +v 258673.671875 -20859.376953 47531.675781 +v 256984.765625 -21100.728516 44665.160156 +v 253606.937500 -21583.431641 38932.128906 +v 287504.125000 -17457.082031 96262.445312 +v 287628.656250 -17605.626953 96262.445312 +v 287890.500000 -17827.066406 96262.445312 +v 288103.625000 -17952.921875 96262.445312 +v 288723.375000 -18240.578125 96262.445312 +v 283956.218750 -17519.902344 90529.414062 +v 280595.812500 -18172.324219 84796.382812 +v 278957.750000 -18577.855469 81929.867188 +v 284268.125000 -18148.632812 90529.414062 +v 284548.593750 -18385.794922 90529.414062 +v 284776.812500 -18520.589844 90529.414062 +v 285440.593750 -18828.671875 90529.414062 +v 286114.156250 -19052.580078 90529.414062 +v 280575.000000 -18021.220703 84796.382812 +v 278884.406250 -18271.880859 81929.867188 +v 277182.875000 -18524.162109 79044.796875 +v 273825.875000 -18853.203125 73330.320312 +v 267064.937500 -19836.966797 61864.253906 +v 260304.015625 -20820.730469 50398.191406 +v 258613.781250 -21066.669922 47531.675781 +v 256923.546875 -21312.611328 44665.160156 +v 253543.078125 -21804.494141 38932.128906 +v 281206.656250 -18944.525391 84796.382812 +v 281450.031250 -19088.255859 84796.382812 +v 282157.812500 -19416.763672 84796.382812 +v 282876.031250 -19655.517578 84796.382812 +v 283663.750000 -19851.640625 84796.382812 +v 278905.843750 -18427.681641 81929.867188 +v 277204.843750 -18684.708984 79044.609375 +v 282069.187500 -20159.207031 81929.867188 +v 282590.906250 -20264.330078 81929.867188 +v 280998.718750 -20577.693359 79039.125000 +v 281623.031250 -20683.470703 79038.570312 +v 277854.406250 -21196.537109 73330.320312 +v 278515.375000 -21308.416016 73330.320312 +v 272273.125000 -22563.732422 61864.253906 +v 274045.906250 -22789.281250 61864.253906 +v 267980.187500 -24067.060547 50398.191406 +v 269857.343750 -24204.779297 50398.191406 +v 268383.406250 -24527.341797 47531.675781 +v 272267.625000 -24627.437500 47531.675781 +v 270879.718750 -24952.216797 44665.160156 +v 271828.156250 -24941.250000 44665.160156 +v 269093.406250 -25590.332031 38932.128906 +v 270197.093750 -25568.056641 38932.128906 +v 289839.812500 -21531.542969 73330.320312 +v 286653.937500 -22683.458984 61864.253906 +v 293150.625000 -16724.921875 73330.320312 +v 288527.062500 -17473.294922 61864.253906 +v 287244.718750 -16346.805664 73330.320312 +v 281967.968750 -17053.357422 61864.253906 +v 276691.187500 -17759.910156 50398.191406 +v 275372.000000 -17936.548828 47531.675781 +v 274052.812500 -18113.187500 44665.160156 +v 285721.312500 -16307.879883 73330.320312 +v 280276.062500 -17010.126953 61864.253906 +v 274830.781250 -17712.375000 50398.191406 +v 273469.468750 -17887.935547 47531.675781 +v 272108.156250 -18063.498047 44665.160156 +v 269385.531250 -18414.621094 38932.128906 +v 278315.000000 -16723.556641 73330.320312 +v 272050.562500 -17471.775391 61864.253906 +v 265786.156250 -18219.994141 50398.191406 +v 264220.031250 -18407.048828 47531.675781 +v 262653.937500 -18594.103516 44665.160156 +v 259521.718750 -18968.212891 38932.128906 +v 277720.156250 -16828.708984 73330.320312 +v 271389.937500 -17588.556641 61864.253906 +v 265059.750000 -18348.406250 50398.191406 +v 263477.187500 -18538.369141 47531.675781 +v 261894.640625 -18728.330078 44665.160156 +v 258729.531250 -19108.255859 38932.128906 +v 273812.593750 -19023.859375 73330.320312 +v 267050.187500 -20026.498047 61864.253906 +v 260287.781250 -21029.138672 50398.191406 +v 258597.187500 -21279.796875 47531.675781 +v 256906.578125 -21530.457031 44665.160156 +v 253525.375000 -22031.777344 38932.128906 +v 267287.937500 -20651.824219 61864.253906 +v 260744.484375 -21949.667969 50398.191406 +v 259484.125000 -22576.265625 47531.675781 +v 258162.453125 -23061.921875 44665.160156 +v 255895.546875 -24121.507812 38932.128906 +v 274522.812500 -20061.982422 73330.320312 +v 274796.437500 -20223.589844 73330.320312 +v 268142.843750 -21358.921875 61864.253906 +v 275592.250000 -20592.949219 73330.320312 +v 269026.687500 -21769.134766 61864.253906 +v 262461.125000 -22945.320312 50398.191406 +v 269923.500000 -22067.269531 61864.253906 +v 264528.875000 -23542.435547 50398.191406 +v 263644.812500 -23993.160156 47531.675781 +v 262909.750000 -24446.708984 44665.160156 +v 261914.484375 -25344.837891 38932.128906 +v 280111.625000 -21511.503906 73330.320312 +v 275753.031250 -22914.529297 61864.253906 +v 273655.562500 -24302.658203 50398.191406 +v 273195.531250 -24616.708984 47531.675781 +v 272886.031250 -24919.898438 44665.160156 +v 272569.218750 -25490.623047 38932.128906 +v 260549.218750 -21716.738281 50398.191406 +v 258864.546875 -21982.966797 47531.675781 +v 257179.859375 -22249.195312 44665.160156 +v 253810.500000 -22781.652344 38932.128906 +v 263447.250000 -23273.144531 50398.191406 +v 261828.187500 -23574.613281 47531.675781 +v 259064.218750 -22221.169922 47531.675781 +v 257813.156250 -22855.628906 44665.160156 +v 254835.671875 -23629.589844 38932.128906 +v 262934.312500 -23850.001953 47531.675781 +v 262065.984375 -24303.896484 44665.160156 +v 259788.625000 -25074.367188 38932.128906 +v 254023.437500 -23035.677734 38932.128906 +v 257383.968750 -22492.671875 44665.160156 +v 254471.234375 -23414.359375 38932.128906 +v 258908.296875 -24925.367188 38932.128906 +v 261339.734375 -24157.568359 44665.160156 +v 317864.968750 -16157.432617 -106368.453125 +v 316113.093750 -15780.423828 -106368.453125 +v 316554.656250 -16632.714844 -100952.953125 +v 314640.250000 -16996.308594 -95242.406250 +v 314789.031250 -17033.314453 -95242.406250 +v 312044.500000 -17996.199219 -84115.078125 +v 313934.062500 -17583.283203 -90121.937500 +v 312623.750000 -18058.566406 -84706.437500 +v 310003.156250 -19009.132812 -73875.429688 +v 309300.562500 -18958.861328 -72990.304688 +v 307382.562500 -19959.699219 -63044.417969 +v 306556.343750 -19921.634766 -61864.253906 +v 304761.968750 -20910.265625 -52213.406250 +v 303957.656250 -20833.345703 -51328.285156 +v 302141.375000 -21860.833984 -41382.398438 +v 301358.937500 -21745.058594 -40792.316406 +v 299520.750000 -22811.400391 -30551.388672 +v 298760.250000 -22656.769531 -30256.347656 +v 296900.156250 -23761.966797 -19720.378906 +v 298493.218750 -22590.349609 -30256.347656 +v 294843.781250 -23188.806641 -20241.117188 +v 295945.062500 -22075.734375 -30256.347656 +v 292763.812500 -22756.230469 -20767.822266 +v 294425.093750 -21844.583984 -30256.347656 +v 291743.250000 -22572.648438 -21026.257812 +v 290609.062500 -22370.199219 -21313.472656 +v 292542.781250 -21566.304688 -30256.347656 +v 288318.000000 -21960.322266 -21893.636719 +v 288195.000000 -20937.011719 -30256.347656 +v 280000.000000 -20632.960938 -24000.000000 +v 281596.718750 -20294.859375 -28697.082031 +v 283236.750000 -19947.607422 -33521.640625 +v 291552.281250 -20148.775391 -40792.316406 +v 286598.625000 -19235.890625 -43411.378906 +v 294909.531250 -19360.539062 -51328.285156 +v 289989.218750 -18518.261719 -53385.632812 +v 298266.781250 -18572.302734 -61864.253906 +v 293312.156250 -17815.177734 -63160.808594 +v 294948.468750 -17469.066406 -67974.351562 +v 301812.062500 -17739.919922 -72990.304688 +v 296691.750000 -17100.416016 -73102.656250 +v 298528.000000 -16712.238281 -78504.390625 +v 305351.406250 -16908.929688 -84097.742188 +v 300425.656250 -16311.246094 -84086.820312 +v 304328.781250 -15522.392578 -95242.406250 +v 304279.156250 -15497.674805 -95422.750000 +v 306171.937500 -15098.521484 -100990.757812 +v 308000.000000 -14713.406250 -106368.453125 +v 310865.718750 -15038.390625 -106368.453125 +v 308902.625000 -16075.155273 -95242.406250 +v 313601.906250 -15406.917969 -106368.453125 +v 311325.000000 -16425.765625 -95242.406250 +v 315094.750000 -15627.707031 -106368.453125 +v 312373.718750 -16580.808594 -95242.406250 +v 313220.562500 -16709.593750 -95242.406250 +v 311875.312500 -17954.201172 -84114.562500 +v 315244.375000 -17108.000000 -95537.445312 +v 308105.625000 -17306.876953 -84103.507812 +v 304893.718750 -18185.955078 -72990.304688 +v 301678.062500 -19066.048828 -61864.253906 +v 298632.968750 -19899.466797 -51328.285156 +v 295587.875000 -20732.886719 -40792.316406 +v 309298.031250 -17482.810547 -84106.382812 +v 306227.875000 -18383.195312 -72990.304688 +v 303154.937500 -19284.390625 -61864.253906 +v 300245.000000 -20137.787109 -51328.285156 +v 297335.062500 -20991.185547 -40792.316406 +v 310261.000000 -17628.898438 -84109.265625 +v 307305.187500 -18547.033203 -72990.304688 +v 304347.531250 -19465.751953 -61864.253906 +v 301546.687500 -20335.746094 -51328.285156 +v 298745.875000 -21205.740234 -40792.316406 +v 309111.281250 -18911.783203 -72990.304688 +v 306346.812500 -19869.521484 -61864.253906 +v 303728.937500 -20776.464844 -51328.285156 +v 301111.062500 -21683.406250 -40792.316406 +v 308000.000000 -17523.806641 -106368.453125 +v 312895.656250 -16931.943359 -106368.453125 +v 306200.812500 -18068.091797 -101075.750000 +v 301956.218750 -19638.347656 -84116.359375 +v 304346.531250 -18628.662109 -95620.906250 +v 300573.562500 -19768.357422 -84521.906250 +v 298705.406250 -20332.326172 -79026.289062 +v 298003.531250 -20797.837891 -72990.304688 +v 296883.125000 -20882.273438 -73665.640625 +v 295132.000000 -21410.621094 -68514.226562 +v 294050.843750 -21957.328125 -61864.253906 +v 293469.000000 -21912.267578 -63622.207031 +v 290112.062500 -22924.666016 -53746.992188 +v 290307.812500 -23055.322266 -51328.285156 +v 286692.437500 -23955.708984 -43687.339844 +v 286564.750000 -24153.318359 -40792.316406 +v 283293.843750 -24980.208984 -33689.570312 +v 284693.218750 -24702.316406 -35524.332031 +v 282821.718750 -25251.312500 -30256.347656 +v 289130.750000 -24149.062500 -35524.332031 +v 287424.468750 -24677.458984 -30256.347656 +v 293882.281250 -23478.607422 -35524.332031 +v 292352.906250 -23982.039062 -30256.347656 +v 294974.500000 -23314.740234 -35524.332031 +v 293485.781250 -23812.070312 -30256.347656 +v 295951.031250 -23164.976562 -35524.332031 +v 294498.687500 -23656.730469 -30256.347656 +v 297583.156250 -22905.423828 -35524.332031 +v 296191.593750 -23387.511719 -30256.347656 +v 299078.343750 -22656.419922 -35524.332031 +v 297742.437500 -23129.238281 -30256.347656 +v 315466.125000 -16554.314453 -106368.453125 +v 307989.156250 -18834.937500 -84116.359375 +v 304869.625000 -19275.117188 -84116.359375 +v 310418.937500 -18458.623047 -84116.359375 +v 309347.375000 -18629.029297 -84116.359375 +v 308706.250000 -18727.353516 -84116.359375 +v 305562.093750 -19777.720703 -72990.304688 +v 304759.125000 -19898.193359 -72990.304688 +v 301529.093750 -20961.447266 -61864.253906 +v 297662.218750 -21507.078125 -61864.253906 +v 294249.625000 -22563.873047 -51328.285156 +v 311400.562500 -18295.144531 -84116.359375 +v 308579.156250 -19293.740234 -72990.304688 +v 305757.750000 -20292.335938 -61864.253906 +v 303086.000000 -21237.968750 -51328.285156 +v 300414.218750 -22183.603516 -40792.316406 +v 292782.593750 -24401.437500 -20763.068359 +v 288526.250000 -24989.164062 -21840.900391 +v 284318.937500 -25509.943359 -22906.314453 +v 280000.000000 -25972.974609 -24000.000000 +v 307479.937500 -19476.800781 -72990.304688 +v 304540.937500 -20494.978516 -61864.253906 +v 301757.812500 -21459.156250 -51328.285156 +v 298974.687500 -22423.333984 -40792.316406 +v 306280.031250 -19667.619141 -72990.304688 +v 303212.687500 -20706.208984 -61864.253906 +v 300308.031250 -21689.714844 -51328.285156 +v 297403.343750 -22673.222656 -40792.316406 +v 301265.906250 -20391.097656 -72990.304688 +v 302417.968750 -20828.087891 -61864.253906 +v 298470.375000 -21968.310547 -51328.285156 +v 290837.031250 -23620.666016 -40792.316406 +v 299440.562500 -21822.750000 -51328.285156 +v 296463.187500 -22817.410156 -40792.316406 +v 295411.625000 -22975.175781 -40792.316406 +v 310418.937500 -18458.623047 84116.359375 +v 311400.562500 -18295.144531 84116.359375 +v 316554.656250 -16632.714844 100952.953125 +v 315244.375000 -17108.000000 95537.445312 +v 313934.062500 -17583.283203 90121.937500 +v 312623.750000 -18058.566406 84706.437500 +v 310003.156250 -19009.132812 73875.429688 +v 308579.156250 -19293.740234 72990.304688 +v 307382.562500 -19959.699219 63044.417969 +v 305757.750000 -20292.335938 61864.253906 +v 304761.968750 -20910.265625 52213.406250 +v 303086.000000 -21237.968750 51328.285156 +v 302141.375000 -21860.833984 41382.398438 +v 300414.218750 -22183.603516 40792.316406 +v 299078.343750 -22656.419922 35524.332031 +v 298974.687500 -22423.333984 40792.316406 +v 297583.156250 -22905.423828 35524.332031 +v 297403.343750 -22673.222656 40792.316406 +v 295951.031250 -23164.976562 35524.332031 +v 296463.187500 -22817.410156 40792.316406 +v 294974.500000 -23314.740234 35524.332031 +v 295411.625000 -22975.175781 40792.316406 +v 293882.281250 -23478.607422 35524.332031 +v 290837.031250 -23620.666016 40792.316406 +v 289130.750000 -24149.062500 35524.332031 +v 286564.750000 -24153.318359 40792.316406 +v 284693.218750 -24702.316406 35524.332031 +v 282821.718750 -25251.312500 30256.347656 +v 307989.156250 -18834.937500 84116.359375 +v 308706.250000 -18727.353516 84116.359375 +v 309347.375000 -18629.029297 84116.359375 +v 306280.031250 -19667.619141 72990.304688 +v 307479.937500 -19476.800781 72990.304688 +v 304540.937500 -20494.978516 61864.253906 +v 301956.218750 -19638.347656 84116.359375 +v 304869.625000 -19275.117188 84116.359375 +v 304759.125000 -19898.193359 72990.304688 +v 305562.093750 -19777.720703 72990.304688 +v 302417.968750 -20828.087891 61864.253906 +v 303212.687500 -20706.208984 61864.253906 +v 300308.031250 -21689.714844 51328.285156 +v 301757.812500 -21459.156250 51328.285156 +v 298003.531250 -20797.837891 72990.304688 +v 301265.906250 -20391.097656 72990.304688 +v 297662.218750 -21507.078125 61864.253906 +v 301529.093750 -20961.447266 61864.253906 +v 298470.375000 -21968.310547 51328.285156 +v 299440.562500 -21822.750000 51328.285156 +v 294050.843750 -21957.328125 61864.253906 +v 290307.812500 -23055.322266 51328.285156 +v 287424.468750 -24677.458984 30256.347656 +v 292352.906250 -23982.039062 30256.347656 +v 293485.781250 -23812.070312 30256.347656 +v 294498.687500 -23656.730469 30256.347656 +v 297742.437500 -23129.238281 30256.347656 +v 296191.593750 -23387.511719 30256.347656 +v 299520.750000 -22811.400391 30551.388672 +v 294249.625000 -22563.873047 51328.285156 +v 304328.781250 -15522.392578 95242.406250 +v 305351.406250 -16908.929688 84097.742188 +v 301812.062500 -17739.919922 72990.304688 +v 298266.781250 -18572.302734 61864.253906 +v 294909.531250 -19360.539062 51328.285156 +v 291552.281250 -20148.775391 40792.316406 +v 288195.000000 -20937.011719 30256.347656 +v 292542.781250 -21566.304688 30256.347656 +v 294425.093750 -21844.583984 30256.347656 +v 295945.062500 -22075.734375 30256.347656 +v 298493.218750 -22590.349609 30256.347656 +v 298760.250000 -22656.769531 30256.347656 +v 301358.937500 -21745.058594 40792.316406 +v 303957.656250 -20833.345703 51328.285156 +v 306556.343750 -19921.634766 61864.253906 +v 309300.562500 -18958.861328 72990.304688 +v 312044.500000 -17996.199219 84115.078125 +v 314789.031250 -17033.314453 95242.406250 +v 314640.250000 -16996.308594 95242.406250 +v 313220.562500 -16709.593750 95242.406250 +v 312373.718750 -16580.808594 95242.406250 +v 310261.000000 -17628.898438 84109.265625 +v 309298.031250 -17482.810547 84106.382812 +v 307305.187500 -18547.033203 72990.304688 +v 306227.875000 -18383.195312 72990.304688 +v 303154.937500 -19284.390625 61864.253906 +v 301678.062500 -19066.048828 61864.253906 +v 298632.968750 -19899.466797 51328.285156 +v 308902.625000 -16075.155273 95242.406250 +v 311325.000000 -16425.765625 95242.406250 +v 311875.312500 -17954.201172 84114.562500 +v 308105.625000 -17306.876953 84103.507812 +v 304893.718750 -18185.955078 72990.304688 +v 309111.281250 -18911.783203 72990.304688 +v 306346.812500 -19869.521484 61864.253906 +v 303728.937500 -20776.464844 51328.285156 +v 301111.062500 -21683.406250 40792.316406 +v 304347.531250 -19465.751953 61864.253906 +v 300245.000000 -20137.787109 51328.285156 +v 295587.875000 -20732.886719 40792.316406 +v 301546.687500 -20335.746094 51328.285156 +v 298745.875000 -21205.740234 40792.316406 +v 297335.062500 -20991.185547 40792.316406 +v 294100.968750 -16038.069336 -107728.507812 +v 294107.750000 -15907.073242 -107728.507812 +v 294161.812500 -15899.128906 -107782.195312 +v 294145.156250 -15779.965820 -107728.507812 +v 294257.218750 -15767.708008 -107834.804688 +v 294206.468750 -15661.806641 -107728.507812 +v 294407.875000 -15625.515625 -107899.226562 +v 294282.218750 -15556.641602 -107728.507812 +v 294568.281250 -15516.088867 -107961.945312 +v 294441.125000 -15393.002930 -107728.507812 +v 294588.937500 -15280.694336 -107728.507812 +v 294883.968750 -15370.453125 -108082.304688 +v 294967.718750 -15076.786133 -107728.507812 +v 295705.031250 -15088.457031 -108302.687500 +v 295469.406250 -14867.552734 -107728.507812 +v 295881.812500 -15042.036133 -108343.492188 +v 296376.750000 -14940.116211 -108456.898438 +v 296161.968750 -15240.000977 -108847.843750 +v 296718.312500 -15158.338867 -109054.257812 +v 296381.750000 -15436.782227 -109241.578125 +v 296985.875000 -15375.256836 -109520.593750 +v 296541.156250 -15632.379883 -109524.679688 +v 297179.468750 -15590.869141 -109855.898438 +v 296598.968750 -15731.171875 -109626.023438 +v 297249.437500 -15699.770508 -109975.929688 +v 296641.218750 -15829.659180 -109698.882812 +v 297300.312500 -15808.334961 -110062.226562 +v 296656.500000 -15878.789062 -109724.632812 +v 297318.625000 -15862.491211 -110092.718750 +v 296667.906250 -15927.842773 -109743.265625 +v 297332.187500 -15916.563477 -110114.789062 +v 296675.437500 -15976.819336 -109754.773438 +v 297340.968750 -15970.552734 -110128.421875 +v 296677.750000 -16001.279297 -109757.859375 +v 297343.562500 -15997.514648 -110132.070312 +v 296679.093750 -16025.720703 -109759.164062 +v 297344.968750 -16024.457031 -110133.617188 +v 296679.437500 -16050.142578 -109758.687500 +v 297345.218750 -16051.377930 -110133.054688 +v 296678.843750 -16074.544922 -109756.429688 +v 297344.250000 -16078.277344 -110130.382812 +v 296677.250000 -16098.928711 -109752.398438 +v 297342.093750 -16105.156250 -110125.609375 +v 296674.687500 -16123.293945 -109746.585938 +v 297338.750000 -16132.013672 -110118.718750 +v 296666.687500 -16171.965820 -109729.609375 +v 297328.500000 -16185.666016 -110098.617188 +v 296654.781250 -16220.562500 -109705.523438 +v 297313.468750 -16239.234375 -110070.085938 +v 296619.312500 -16317.526367 -109635.984375 +v 297269.156250 -16346.119141 -109987.718750 +v 296568.312500 -16414.185547 -109537.960938 +v 297205.781250 -16452.667969 -109871.625000 +v 296419.656250 -16606.589844 -109256.476562 +v 297021.906250 -16664.757812 -109538.242188 +v 296208.812500 -16797.775391 -108861.078125 +v 296761.875000 -16875.503906 -109069.921875 +v 295935.812500 -16987.742188 -108351.757812 +v 296425.625000 -17084.904297 -108466.679688 +v 295394.000000 -17105.066406 -107728.507812 +v 296237.000000 -17348.863281 -107728.507812 +v 296627.968750 -17120.222656 -108510.718750 +v 297690.906250 -17280.833984 -108684.437500 +v 298127.406250 -17031.648438 -109465.625000 +v 299376.937500 -17131.423828 -109727.367188 +v 299746.906250 -16855.765625 -110425.210938 +v 302393.593750 -16916.984375 -110913.164062 +v 302735.968750 -16619.183594 -111499.835938 +v 304153.718750 -16620.257812 -111659.500000 +v 304282.875000 -16470.529297 -111872.445312 +v 305747.031250 -16460.773438 -111949.921875 +v 305831.812500 -16314.061523 -112103.820312 +v 308728.593750 -16282.482422 -111981.960938 +v 308754.343750 -16217.408203 -112033.789062 +v 311540.718750 -16181.205078 -111529.257812 +v 311555.312500 -16129.203125 -111561.484375 +v 314124.062500 -16100.951172 -110668.250000 +v 314127.500000 -16082.995117 -110676.726562 +v 315298.156250 -16070.523438 -110084.242188 +v 315299.531250 -16057.535156 -110088.937500 +v 316375.562500 -16050.696289 -109398.703125 +v 316375.968750 -16042.254883 -109400.562500 +v 317344.937500 -16040.416016 -108612.875000 +v 317345.000000 -16035.662109 -108613.085938 +v 317785.343750 -16036.755859 -108182.882812 +v 317785.250000 -16034.141602 -108182.593750 +v 317993.687500 -16036.017578 -107958.570312 +v 317993.562500 -16034.641602 -107958.226562 +v 318094.812500 -16036.318359 -107844.117188 +v 318094.531250 -16034.893555 -107843.460938 +v 318194.031250 -16038.069336 -107728.507812 +v 296385.781250 -14616.572266 -107728.507812 +v 296577.125000 -14904.392578 -108500.351562 +v 296946.312500 -15129.613281 -109133.343750 +v 297235.531250 -15353.537109 -109627.500000 +v 297444.718750 -15576.162109 -109982.820312 +v 297520.281250 -15688.625000 -110110.007812 +v 297575.218750 -15800.752930 -110201.445312 +v 297594.968750 -15856.691406 -110233.765625 +v 297609.562500 -15912.545898 -110257.148438 +v 297619.031250 -15968.318359 -110271.593750 +v 297621.812500 -15996.171875 -110275.468750 +v 297623.312500 -16024.005859 -110277.101562 +v 297623.531250 -16051.818359 -110276.507812 +v 297622.468750 -16079.610352 -110273.679688 +v 297620.125000 -16107.380859 -110268.609375 +v 297616.468750 -16135.131836 -110261.312500 +v 297605.343750 -16190.568359 -110240.015625 +v 297589.031250 -16245.922852 -110209.781250 +v 297541.000000 -16356.379883 -110122.500000 +v 297472.343750 -16466.501953 -109999.484375 +v 297273.281250 -16685.746094 -109646.203125 +v 296991.812500 -16903.652344 -109149.953125 +v 297619.218750 -14742.133789 -108671.765625 +v 297704.531250 -14391.215820 -107728.507812 +v 298833.718750 -14612.370117 -108813.890625 +v 300405.312500 -14201.651367 -107728.507812 +v 301231.000000 -14505.442383 -109010.281250 +v 301075.000000 -14192.140625 -107728.507812 +v 302505.843750 -14501.624023 -109064.539062 +v 301887.562500 -14198.267578 -107728.507812 +v 304075.875000 -14534.671875 -109089.523438 +v 303896.500000 -14259.262695 -107728.507812 +v 307187.531250 -14702.209961 -109051.617188 +v 307709.406250 -14542.520508 -107728.507812 +v 310267.750000 -14965.700195 -108896.562500 +v 311539.468750 -14966.412109 -107728.507812 +v 313230.281250 -15288.492188 -108624.359375 +v 315437.250000 -15512.653320 -107728.507812 +v 314756.000000 -15490.083984 -108444.328125 +v 316214.593750 -15627.880859 -107728.507812 +v 316104.312500 -15671.785156 -108235.007812 +v 316862.531250 -15733.635742 -107728.507812 +v 317157.218750 -15822.080078 -107996.406250 +v 317664.281250 -15917.489258 -107866.117188 +v 317224.218750 -15868.442383 -108216.109375 +v 317707.500000 -15943.754883 -107978.968750 +v 317276.500000 -15912.870117 -108387.617188 +v 317741.250000 -15968.752930 -108067.070312 +v 317314.062500 -15955.364258 -108510.945312 +v 317765.437500 -15992.485352 -108130.421875 +v 317327.468750 -15976.185547 -108555.085938 +v 317774.093750 -16004.041992 -108153.093750 +v 317337.125000 -15996.508789 -108586.828125 +v 317780.281250 -16015.272461 -108169.398438 +v 317340.500000 -16006.483398 -108598.046875 +v 317782.468750 -16020.765625 -108175.156250 +v 317342.968750 -16016.333984 -108606.156250 +v 317784.031250 -16026.176758 -108179.328125 +v 317344.468750 -16026.060547 -108611.171875 +v 317785.000000 -16031.506836 -108181.906250 +v 317344.843750 -16030.876953 -108612.515625 +v 318059.125000 -16005.448242 -107763.601562 +v 317925.875000 -15974.483398 -107798.226562 +v 316720.187500 -16287.332031 -107728.507812 +v 317663.625000 -16124.600586 -107867.968750 +v 317421.531250 -16170.252930 -107728.507812 +v 317925.437500 -16082.622070 -107799.164062 +v 318058.875000 -16060.669922 -107764.070312 +v 318071.875000 -16056.851562 -107793.132812 +v 317157.031250 -16201.551758 -108000.000000 +v 315368.625000 -16499.773438 -107728.507812 +v 316108.968750 -16347.565430 -108241.812500 +v 314770.500000 -16530.128906 -108453.945312 +v 316205.875000 -16288.938477 -108661.289062 +v 314963.156250 -16434.214844 -109046.781250 +v 316281.000000 -16228.247070 -108986.945312 +v 315112.437500 -16336.390625 -109507.015625 +v 316334.406250 -16165.490234 -109218.773438 +v 315218.406250 -16236.658203 -109834.648438 +v 316352.968750 -16133.337891 -109299.500000 +v 315255.125000 -16186.076172 -109948.742188 +v 316366.093750 -16100.668945 -109356.773438 +v 315281.031250 -16135.017578 -110029.679688 +v 316370.593750 -16084.140625 -109376.617188 +v 315289.906250 -16109.309570 -110057.726562 +v 316373.781250 -16067.483398 -109390.593750 +v 315296.093750 -16083.482422 -110077.476562 +v 316374.843750 -16059.106445 -109395.382812 +v 313548.656250 -16765.783203 -107728.507812 +v 313253.000000 -16726.880859 -108636.390625 +v 313572.187500 -16591.232422 -109378.328125 +v 313819.625000 -16453.615234 -109954.312500 +v 313995.250000 -16314.027344 -110364.351562 +v 314056.125000 -16243.494141 -110507.140625 +v 314099.062500 -16172.468750 -110608.437500 +v 314113.812500 -16136.771484 -110643.531250 +v 310011.343750 -17216.330078 -107728.507812 +v 310305.406250 -17047.699219 -108912.250000 +v 310763.750000 -16846.798828 -109879.625000 +v 311118.906250 -16644.064453 -110630.625000 +v 311370.875000 -16439.496094 -111165.250000 +v 311458.156250 -16336.523438 -111351.421875 +v 311519.656250 -16233.092773 -111483.500000 +v 306433.906250 -17570.625000 -107728.507812 +v 307238.687500 -17308.734375 -109069.390625 +v 307801.343750 -17054.808594 -110165.171875 +v 308237.218750 -16799.123047 -111015.867188 +v 308546.312500 -16541.681641 -111621.460938 +v 308653.281250 -16412.302734 -111832.343750 +v 304701.218750 -17698.169922 -107728.507812 +v 304146.718750 -17476.242188 -109107.804688 +v 304783.750000 -17188.167969 -110234.984375 +v 305276.937500 -16898.445312 -111110.046875 +v 305626.281250 -16607.076172 -111732.992188 +v 302822.281250 -17780.630859 -107728.507812 +v 301917.593750 -17801.234375 -107728.507812 +v 302573.406250 -17510.314453 -109082.492188 +v 301153.343750 -17807.964844 -107728.507812 +v 301287.468750 -17508.017578 -109027.500000 +v 299919.312500 -17781.615234 -107728.507812 +v 298898.750000 -17405.673828 -108828.468750 +v 297383.375000 -17563.912109 -107728.507812 +v 295761.937500 -16944.300781 -108310.406250 +v 294587.968750 -16718.664062 -107728.507812 +v 294924.625000 -16666.134766 -108087.062500 +v 294605.312500 -16529.060547 -107965.085938 +v 295102.281250 -16541.201172 -108380.070312 +v 294720.875000 -16431.398438 -108158.414062 +v 295239.312500 -16415.105469 -108607.546875 +v 294809.812500 -16332.825195 -108308.500000 +v 295335.812500 -16287.846680 -108769.484375 +v 294872.093750 -16233.341797 -108415.343750 +v 295368.843750 -16223.782227 -108825.875000 +v 294893.250000 -16183.257812 -108452.546875 +v 295391.718750 -16159.427734 -108865.882812 +v 294907.750000 -16132.946289 -108478.945312 +v 295399.343750 -16127.140625 -108879.742188 +v 294912.500000 -16107.705078 -108488.093750 +v 295404.437500 -16094.782227 -108889.500000 +v 294915.593750 -16082.407227 -108494.531250 +v 295406.031250 -16078.575195 -108892.843750 +v 294916.531250 -16069.737305 -108496.742188 +v 295407.000000 -16062.350586 -108895.171875 +v 294917.031250 -16057.052734 -108498.273438 +v 295407.343750 -16046.107422 -108896.468750 +v 294917.093750 -16044.353516 -108499.125000 +v 295407.031250 -16029.845703 -108896.742188 +v 294916.781250 -16031.640625 -108499.304688 +v 295406.093750 -16013.566406 -108895.984375 +v 294916.031250 -16018.913086 -108498.812500 +v 295404.500000 -15997.269531 -108894.210938 +v 294914.875000 -16006.171875 -108497.640625 +v 295399.468750 -15964.620117 -108887.593750 +v 294911.281250 -15980.645508 -108493.273438 +v 295391.875000 -15931.897461 -108876.875000 +v 294906.062500 -15955.062500 -108486.203125 +v 295381.781250 -15899.102539 -108862.062500 +v 294899.156250 -15929.422852 -108476.429688 +v 295353.906250 -15833.295898 -108820.140625 +v 294880.343750 -15877.972656 -108448.773438 +v 295315.937500 -15767.197266 -108761.843750 +v 294854.906250 -15826.294922 -108410.304688 +v 295211.343750 -15636.077148 -108598.976562 +v 294785.218750 -15723.777344 -108302.843750 +v 295067.375000 -15503.829102 -108372.460938 +v 294689.687500 -15620.375000 -108153.390625 +v 294451.406250 -16615.892578 -107728.507812 +v 294447.000000 -16430.230469 -107901.515625 +v 294534.781250 -16351.882812 -108042.898438 +v 294602.093750 -16272.982422 -108152.656250 +v 294648.937500 -16193.529297 -108230.796875 +v 294664.656250 -16153.594727 -108258.000000 +v 294675.281250 -16113.522461 -108277.304688 +v 294678.656250 -16093.433594 -108283.992188 +v 294680.750000 -16073.311523 -108288.703125 +v 294681.343750 -16063.237305 -108290.320312 +v 294681.593750 -16053.154297 -108291.437500 +v 294681.531250 -16043.062500 -108292.062500 +v 294681.125000 -16032.961914 -108292.195312 +v 294680.437500 -16022.853516 -108291.835938 +v 294679.406250 -16012.735352 -108290.976562 +v 294676.375000 -15992.474609 -108287.781250 +v 294672.093750 -15972.178711 -108282.609375 +v 294666.500000 -15951.848633 -108275.460938 +v 294651.531250 -15911.083984 -108255.242188 +v 294631.406250 -15870.181641 -108227.109375 +v 294576.781250 -15789.164062 -108148.523438 +v 294502.281250 -15707.608398 -108039.226562 +v 294304.937500 -16470.412109 -107728.507812 +v 294290.187500 -16298.738281 -107836.234375 +v 294351.375000 -16246.356445 -107924.265625 +v 294398.187500 -16193.761719 -107992.609375 +v 294430.562500 -16140.954102 -108041.257812 +v 294441.343750 -16114.469727 -108058.203125 +v 294448.531250 -16087.932617 -108070.218750 +v 294450.781250 -16074.644531 -108074.382812 +v 294452.125000 -16061.342773 -108077.312500 +v 294452.468750 -16054.686523 -108078.320312 +v 294452.593750 -16048.027344 -108079.015625 +v 294452.468750 -16041.365234 -108079.406250 +v 294452.125000 -16034.699219 -108079.492188 +v 294451.562500 -16028.029297 -108079.265625 +v 294450.781250 -16021.357422 -108078.734375 +v 294448.500000 -16008.001953 -108076.742188 +v 294445.343750 -15994.633789 -108073.523438 +v 294441.281250 -15981.251953 -108069.070312 +v 294430.468750 -15954.448242 -108056.476562 +v 294416.062500 -15927.590820 -108038.960938 +v 294377.093750 -15874.503906 -107990.031250 +v 294324.156250 -15821.208984 -107921.976562 +v 294169.218750 -16272.411133 -107728.507812 +v 294181.218750 -16173.703125 -107782.921875 +v 294216.437500 -16146.310547 -107827.382812 +v 294243.343750 -16118.876953 -107861.898438 +v 294261.968750 -16091.401367 -107886.468750 +v 294268.187500 -16077.648438 -107895.031250 +v 294272.312500 -16063.884766 -107901.101562 +v 294273.593750 -16056.999023 -107903.203125 +v 294274.343750 -16050.110352 -107904.679688 +v 294274.531250 -16046.666016 -107905.187500 +v 294274.593750 -16043.219727 -107905.546875 +v 294274.531250 -16039.773438 -107905.742188 +v 294274.312500 -16036.326172 -107905.781250 +v 294274.000000 -16032.878906 -107905.664062 +v 294273.531250 -16029.430664 -107905.398438 +v 294272.218750 -16022.532227 -107904.390625 +v 294270.375000 -16015.630859 -107902.765625 +v 294268.031250 -16008.726562 -107900.515625 +v 294261.781250 -15994.911133 -107894.156250 +v 294253.468750 -15981.085938 -107885.312500 +v 294230.968750 -15953.806641 -107860.601562 +v 294200.437500 -15926.488281 -107826.226562 +v 294123.187500 -16158.046875 -107728.507812 +v 318071.906250 -16012.619141 -107792.375000 +v 318081.875000 -16019.416016 -107814.843750 +v 318089.031250 -16025.837891 -107830.992188 +v 318091.593750 -16028.952148 -107836.773438 +v 318093.437500 -16031.970703 -107840.929688 +v 318094.062500 -16033.444336 -107842.398438 +v 318094.906250 -16037.021484 -107844.296875 +v 318094.906250 -16037.718750 -107844.375000 +v 318094.906250 -16038.410156 -107844.343750 +v 318094.843750 -16039.095703 -107844.218750 +v 318094.718750 -16039.775391 -107843.984375 +v 318094.562500 -16040.448242 -107843.656250 +v 318094.125000 -16041.776367 -107842.687500 +v 318093.500000 -16043.081055 -107841.312500 +v 318091.718750 -16045.617188 -107837.343750 +v 318089.187500 -16048.056641 -107831.750000 +v 318082.000000 -16052.647461 -107815.687500 +v 317950.125000 -15988.420898 -107855.406250 +v 317969.031250 -16001.648438 -107900.046875 +v 317982.593750 -16014.165039 -107932.140625 +v 317987.437500 -16020.244141 -107943.625000 +v 317990.937500 -16026.139648 -107951.890625 +v 317992.156250 -16029.019531 -107954.804688 +v 317993.031250 -16031.853516 -107956.921875 +v 316200.875000 -15747.798828 -108650.398438 +v 316276.312500 -15821.807617 -108974.671875 +v 316330.656250 -15893.811523 -109207.835938 +v 316350.156250 -15929.578125 -109291.296875 +v 316364.187500 -15964.829102 -109351.304688 +v 316369.187500 -15982.260742 -109372.515625 +v 316372.812500 -15999.563477 -109387.859375 +v 316375.093750 -16016.736328 -109397.335938 +v 316375.718750 -16025.275391 -109399.882812 +v 316376.000000 -16033.781250 -109400.953125 +v 314949.031250 -15601.458008 -109031.382812 +v 315099.968750 -15710.979492 -109489.664062 +v 315208.812500 -15818.646484 -109819.195312 +v 315247.937500 -15872.568359 -109937.148438 +v 315276.218750 -15926.011719 -110021.953125 +v 315286.312500 -15952.555664 -110051.929688 +v 315293.687500 -15978.979492 -110073.609375 +v 315298.343750 -16005.284180 -110087.007812 +v 315299.656250 -16018.391602 -110090.601562 +v 315300.312500 -16031.468750 -110092.117188 +v 315300.250000 -16044.516602 -110091.562500 +v 313549.843750 -15439.566406 -109359.054688 +v 313799.687500 -15588.726562 -109932.609375 +v 313979.843750 -15735.973633 -110345.007812 +v 314044.562500 -15809.954102 -110492.632812 +v 314091.375000 -15883.442383 -110598.765625 +v 314108.031250 -15920.001953 -110636.281250 +v 314120.218750 -15956.437500 -110663.414062 +v 314127.906250 -15992.750977 -110680.179688 +v 314130.062500 -16010.861328 -110684.679688 +v 314131.125000 -16028.940430 -110686.578125 +v 314131.031250 -16046.989258 -110685.882812 +v 314129.843750 -16065.007812 -110682.601562 +v 310727.625000 -15179.874023 -109854.500000 +v 311087.281250 -15392.267578 -110602.320312 +v 311346.750000 -15602.879883 -111140.031250 +v 311440.062500 -15709.061523 -111332.507812 +v 311507.562500 -15814.785156 -111470.890625 +v 311531.656250 -15867.474609 -111519.796875 +v 311549.281250 -15920.049805 -111555.179688 +v 311560.468750 -15972.509766 -111577.046875 +v 311563.656250 -15998.697266 -111582.906250 +v 311565.218750 -16024.855469 -111585.382812 +v 311565.156250 -16050.985352 -111584.476562 +v 311563.500000 -16077.086914 -111580.195312 +v 311560.218750 -16103.159180 -111572.531250 +v 307753.031250 -14967.959961 -110136.710938 +v 308195.406250 -15232.003906 -110983.804688 +v 308514.656250 -15494.340820 -111592.890625 +v 308629.562500 -15626.796875 -111810.921875 +v 308712.781250 -15758.812500 -111967.679688 +v 308742.468750 -15824.655273 -112023.078125 +v 308764.281250 -15890.388672 -112063.156250 +v 308778.125000 -15956.012695 -112087.921875 +v 308782.093750 -15988.783203 -112094.554688 +v 308784.062500 -16021.526367 -112097.367188 +v 308784.062500 -16054.242188 -112096.343750 +v 308782.093750 -16086.930664 -112091.492188 +v 308778.125000 -16119.590820 -112082.812500 +v 308772.187500 -16152.224609 -112070.296875 +v 304718.687500 -14833.092773 -110205.703125 +v 305221.812500 -15129.915039 -111077.070312 +v 305585.250000 -15425.137695 -111703.601562 +v 305716.250000 -15574.321289 -111927.882812 +v 305811.281250 -15723.091797 -112089.125000 +v 305845.312500 -15797.323242 -112146.109375 +v 305870.343750 -15871.452148 -112187.343750 +v 305886.406250 -15945.477539 -112212.812500 +v 305891.062500 -15982.451172 -112219.640625 +v 305893.468750 -16019.399414 -112222.531250 +v 305893.625000 -16056.322266 -112221.476562 +v 305891.531250 -16093.219727 -112216.484375 +v 305887.187500 -16130.090820 -112207.554688 +v 305880.625000 -16166.936523 -112194.687500 +v 305860.687500 -16240.549805 -112157.132812 +v 303190.593750 -14806.406250 -110160.242188 +v 303726.375000 -15109.651367 -111015.609375 +v 304113.187500 -15411.360352 -111630.656250 +v 304252.468750 -15563.856445 -111850.812500 +v 304353.406250 -15715.958008 -112009.101562 +v 304389.500000 -15791.860352 -112065.039062 +v 304416.000000 -15867.664062 -112105.515625 +v 304432.937500 -15943.368164 -112130.515625 +v 304437.781250 -15981.183594 -112137.218750 +v 304440.250000 -16018.973633 -112140.054688 +v 304440.312500 -16056.739258 -112139.023438 +v 304438.000000 -16094.480469 -112134.125000 +v 304433.281250 -16132.196289 -112125.359375 +v 304426.156250 -16169.887695 -112112.726562 +v 304404.718750 -16245.197266 -112075.859375 +v 304373.687500 -16320.407227 -112023.523438 +v 301857.406250 -14809.356445 -110061.476562 +v 302347.406250 -15111.791992 -110882.101562 +v 302701.031250 -15412.748047 -111472.164062 +v 302828.281250 -15564.885742 -111683.382812 +v 302920.437500 -15716.641602 -111835.234375 +v 302953.343750 -15792.376953 -111888.906250 +v 302977.468750 -15868.017578 -111927.734375 +v 302992.812500 -15943.562500 -111951.726562 +v 302997.218750 -15981.299805 -111958.156250 +v 302999.406250 -16019.012695 -111960.875000 +v 302999.406250 -16056.702148 -111959.882812 +v 302997.187500 -16094.367188 -111955.187500 +v 302992.812500 -16132.008789 -111946.773438 +v 302986.218750 -16169.626953 -111934.656250 +v 302966.468750 -16244.791016 -111899.281250 +v 302937.906250 -16319.860352 -111849.070312 +v 302854.500000 -16469.712891 -111704.132812 +v 299318.625000 -14895.064453 -109704.023438 +v 299698.375000 -15176.390625 -110398.914062 +v 299973.031250 -15456.349609 -110898.562500 +v 300072.187500 -15597.875000 -111077.421875 +v 300144.312500 -15739.048828 -111206.007812 +v 300170.218750 -15809.503906 -111251.460938 +v 300189.343750 -15879.871094 -111284.335938 +v 300201.718750 -15950.149414 -111304.648438 +v 300205.375000 -15985.255859 -111310.093750 +v 300207.312500 -16020.340820 -111312.398438 +v 300207.593750 -16055.403320 -111311.562500 +v 300206.156250 -16090.443359 -111307.578125 +v 300203.031250 -16125.461914 -111300.460938 +v 300198.250000 -16160.458008 -111290.195312 +v 300183.562500 -16230.384766 -111260.242188 +v 300162.093750 -16300.223633 -111217.726562 +v 300098.906250 -16439.636719 -111095.000000 +v 300008.625000 -16578.699219 -110922.000000 +v 298064.281250 -14999.126953 -109445.335938 +v 298413.125000 -15254.862305 -110049.234375 +v 298665.718750 -15509.340820 -110483.460938 +v 298757.125000 -15637.980469 -110638.898438 +v 298823.718750 -15766.295898 -110750.648438 +v 298847.750000 -15830.333008 -110790.140625 +v 298865.562500 -15894.288086 -110818.718750 +v 298877.187500 -15958.163086 -110836.367188 +v 298880.687500 -15990.070312 -110841.101562 +v 298882.625000 -16021.957031 -110843.101562 +v 298883.031250 -16053.823242 -110842.375000 +v 298881.875000 -16085.668945 -110838.914062 +v 298879.187500 -16117.495117 -110832.726562 +v 298874.937500 -16149.300781 -110823.804688 +v 298861.781250 -16212.852539 -110797.781250 +v 298842.468750 -16276.322266 -110760.828125 +v 298785.218750 -16403.019531 -110654.171875 +v 298703.187500 -16529.392578 -110503.828125 +v 298464.843750 -16781.167969 -110072.093750 +v 295969.281250 -15277.129883 -108773.585938 +v 296176.718750 -15464.706055 -109141.195312 +v 296327.343750 -15651.185547 -109405.515625 +v 296382.031250 -15745.385742 -109500.132812 +v 296422.093750 -15839.302734 -109568.156250 +v 296436.656250 -15886.155273 -109592.203125 +v 296447.531250 -15932.937500 -109609.593750 +v 296454.781250 -15979.649414 -109620.343750 +v 296457.031250 -16002.978516 -109623.218750 +v 296458.343750 -16026.291016 -109624.437500 +v 296458.781250 -16049.584961 -109623.992188 +v 296458.281250 -16072.861328 -109621.890625 +v 296456.875000 -16096.120117 -109618.125000 +v 296454.531250 -16119.361328 -109612.695312 +v 296447.156250 -16165.791016 -109596.851562 +v 296436.093750 -16212.150391 -109574.359375 +v 296403.031250 -16304.656250 -109509.429688 +v 296355.312500 -16396.880859 -109417.914062 +v 296216.031250 -16580.482422 -109155.109375 +v 296018.250000 -16762.957031 -108785.937500 +v 301910.750000 -17213.263672 -110089.046875 +v 303253.593750 -17215.210938 -110188.984375 +v 317224.968750 -16172.357422 -108221.867188 +v 317277.718750 -16141.170898 -108394.109375 +v 317315.312500 -16107.993164 -108516.726562 +v 317328.406250 -16090.657227 -108559.429688 +v 317337.750000 -16072.823242 -108589.718750 +v 317340.968750 -16063.719727 -108600.210938 +v 317343.281250 -16054.491211 -108607.601562 +v 317344.062500 -16049.831055 -108610.140625 +v 317344.625000 -16045.138672 -108611.898438 +v 317707.562500 -16109.640625 -107981.929688 +v 317741.718750 -16093.375977 -108070.406250 +v 317766.062500 -16075.807617 -108133.390625 +v 317774.562500 -16066.533203 -108155.320312 +v 317780.593750 -16056.933594 -108170.882812 +v 317782.687500 -16052.011719 -108176.273438 +v 317784.187500 -16047.007812 -108180.070312 +v 317784.718750 -16044.475586 -108181.375000 +v 317785.062500 -16041.921875 -108182.273438 +v 317785.281250 -16039.348633 -108182.781250 +v 317950.093750 -16075.038086 -107856.906250 +v 317969.250000 -16066.721680 -107901.734375 +v 317982.906250 -16057.673828 -107933.640625 +v 317987.687500 -16052.875977 -107944.757812 +v 317991.062500 -16047.894531 -107952.640625 +v 317992.250000 -16045.335938 -107955.367188 +v 317993.093750 -16042.730469 -107957.296875 +v 317993.375000 -16041.411133 -107957.953125 +v 317993.593750 -16040.080078 -107958.414062 +v 317993.718750 -16038.737305 -107958.664062 +v 317993.750000 -16037.383789 -107958.718750 +v 303780.375000 -16918.525391 -111047.984375 +v 296000.000000 -24088.480469 -16000.000000 +v 294385.656250 -23683.744141 -16000.000000 +v 294374.125000 -24366.945312 -16000.000000 +v 292895.906250 -24614.916016 -16000.000000 +v 292912.437500 -23382.195312 -16000.000000 +v 291411.218750 -23136.914062 -16000.000000 +v 291392.656250 -24858.296875 -16000.000000 +v 289612.343750 -22870.210938 -16000.000000 +v 289590.843750 -25137.636719 -16000.000000 +v 287434.531250 -22547.496094 -16000.000000 +v 287409.906250 -25463.015625 -16000.000000 +v 285047.656250 -25801.650391 -16000.000000 +v 285073.500000 -22202.708984 -16000.000000 +v 280575.718750 -21602.972656 -16000.000000 +v 280551.843750 -26398.125000 -16000.000000 +v 276221.406250 -21088.015625 -16000.000000 +v 276197.062500 -26916.052734 -16000.000000 +v 240000.015625 -23993.312500 -16000.000000 +v 240035.656250 -24295.857422 -16000.000000 +v 271697.968750 -20618.785156 -16000.000000 +v 240299.609375 -23135.968750 -16000.000000 +v 240144.765625 -23401.570312 -16000.000000 +v 240038.875000 -23691.046875 -16000.000000 +v 267311.281250 -20239.720703 -16000.000000 +v 241188.640625 -22295.162109 -16000.000000 +v 240846.140625 -22544.492188 -16000.000000 +v 240480.781250 -22902.623047 -16000.000000 +v 262862.250000 -19958.468750 -16000.000000 +v 243261.546875 -21340.888672 -16000.000000 +v 242096.062500 -21817.326172 -16000.000000 +v 260470.421875 -19867.250000 -16000.000000 +v 245391.109375 -20767.410156 -16000.000000 +v 246823.609375 -20492.697266 -16000.000000 +v 258193.734375 -19813.917969 -16000.000000 +v 256290.500000 -19798.046875 -16000.000000 +v 254728.765625 -19818.400391 -16000.000000 +v 248475.156250 -20248.308594 -16000.000000 +v 251616.687500 -19956.712891 -16000.000000 +v 240138.921875 -24586.144531 -16000.000000 +v 240292.093750 -24852.996094 -16000.000000 +v 271673.156250 -27382.960938 -16000.000000 +v 240472.578125 -25087.884766 -16000.000000 +v 240838.500000 -25449.083984 -16000.000000 +v 241180.890625 -25699.919922 -16000.000000 +v 267287.750000 -27762.251953 -16000.000000 +v 242083.828125 -26176.937500 -16000.000000 +v 243249.140625 -26654.832031 -16000.000000 +v 245377.625000 -27229.607422 -16000.000000 +v 260444.218750 -28133.445312 -16000.000000 +v 262836.375000 -28042.771484 -16000.000000 +v 246806.031250 -27504.345703 -16000.000000 +v 258170.484375 -28186.402344 -16000.000000 +v 256271.953125 -28201.939453 -16000.000000 +v 254712.375000 -28181.191406 -16000.000000 +v 248457.125000 -27749.359375 -16000.000000 +v 251599.296875 -28042.208984 -16000.000000 +v 304709.562500 -14853.988281 -101995.476562 +v 302645.687500 -14690.062500 -101995.476562 +v 302397.781250 -15228.174805 -96262.445312 +v 300176.125000 -15051.718750 -96262.445312 +v 300086.000000 -15602.361328 -90529.414062 +v 297706.593750 -15413.375977 -90529.414062 +v 297774.187500 -15976.547852 -84796.382812 +v 295237.062500 -15775.033203 -84796.382812 +v 296618.312500 -16163.641602 -81929.867188 +v 294002.281250 -15955.861328 -81929.867188 +v 295461.593750 -16350.867188 -79061.320312 +v 292765.875000 -16136.928711 -79059.570312 +v 293150.625000 -16724.921875 -73330.320312 +v 290297.968750 -16498.347656 -73330.320312 +v 288527.062500 -17473.294922 -61864.253906 +v 285358.906250 -17221.660156 -61864.253906 +v 283903.468750 -18221.667969 -50398.191406 +v 280419.812500 -17944.974609 -50398.191406 +v 282747.593750 -18408.761719 -47531.675781 +v 279185.062500 -18125.802734 -47531.675781 +v 281591.687500 -18595.855469 -44665.160156 +v 277950.281250 -18306.630859 -44665.160156 +v 279279.906250 -18970.042969 -38932.128906 +v 275480.750000 -18668.289062 -38932.128906 +v 274656.312500 -19718.416016 -27466.064453 +v 270541.656250 -19391.601562 -27466.064453 +v 268401.031250 -19265.777344 -27466.064453 +v 266137.656250 -19173.015625 -27466.064453 +v 271414.406250 -18466.462891 -38932.128906 +v 269385.531250 -18414.621094 -38932.128906 +v 272108.156250 -18063.498047 -44665.160156 +v 270461.968750 -18046.152344 -44665.160156 +v 271858.937500 -17870.966797 -47531.675781 +v 269178.937500 -17932.904297 -47531.675781 +v 270635.250000 -17756.345703 -50398.191406 +v 267980.968750 -17932.867188 -50398.191406 +v 274046.593750 -17210.652344 -61864.253906 +v 272050.562500 -17471.775391 -61864.253906 +v 278315.000000 -16723.556641 -73330.320312 +v 277720.156250 -16828.708984 -73330.320312 +v 280878.125000 -16449.642578 -79050.398438 +v 280397.906250 -16549.576172 -79049.890625 +v 282002.031250 -16355.785156 -81929.867188 +v 281258.343750 -16542.632812 -81929.867188 +v 282877.343750 -16344.113281 -84796.382812 +v 282151.937500 -16585.597656 -84796.382812 +v 285435.093750 -16173.543945 -90529.414062 +v 284767.656250 -16484.318359 -90529.414062 +v 288095.062500 -16051.659180 -96262.445312 +v 287728.937500 -16298.051758 -96262.445312 +v 291082.343750 -15847.896484 -101995.476562 +v 290909.250000 -16028.445312 -101995.476562 +v 301571.937500 -14626.951172 -101995.476562 +v 299020.343750 -14983.784180 -96262.445312 +v 296468.718750 -15340.616211 -90529.414062 +v 293917.125000 -15697.449219 -84796.382812 +v 292641.312500 -15875.866211 -81929.867188 +v 291363.437500 -16054.572266 -79058.687500 +v 288813.906250 -16411.115234 -73330.320312 +v 283710.687500 -17124.781250 -61864.253906 +v 278607.468750 -17838.447266 -50398.191406 +v 277331.656250 -18016.863281 -47531.675781 +v 276055.843750 -18195.279297 -44665.160156 +v 273504.250000 -18552.111328 -38932.128906 +v 300436.656250 -14580.423828 -101995.476562 +v 299334.468750 -14552.262695 -101995.476562 +v 298401.468750 -14542.432617 -101995.476562 +v 296611.843750 -14903.385742 -96262.445312 +v 295607.500000 -14892.803711 -96262.445312 +v 293889.218750 -15254.509766 -90529.414062 +v 292813.562500 -15243.175781 -90529.414062 +v 291166.593750 -15605.632812 -84796.382812 +v 290019.625000 -15593.547852 -84796.382812 +v 289805.250000 -15781.195312 -81929.867188 +v 288622.625000 -15768.734375 -81929.867188 +v 288440.906250 -15957.149414 -79056.937500 +v 287222.125000 -15944.365234 -79056.062500 +v 285721.312500 -16307.879883 -73330.320312 +v 284431.718750 -16294.291992 -73330.320312 +v 280276.062500 -17010.126953 -61864.253906 +v 278843.812500 -16995.037109 -61864.253906 +v 274830.781250 -17712.375000 -50398.191406 +v 273255.906250 -17695.779297 -50398.191406 +v 273469.468750 -17887.935547 -47531.675781 +v 296848.875000 -14578.316406 -101995.476562 +v 295276.343750 -14682.898438 -101995.476562 +v 293976.031250 -14853.008789 -101995.476562 +v 292243.531250 -15044.005859 -96262.445312 +v 290843.812500 -15227.119141 -96262.445312 +v 289210.718750 -15405.113281 -90529.414062 +v 287711.625000 -15601.228516 -90529.414062 +v 286177.875000 -15766.220703 -84796.382812 +v 284579.406250 -15975.337891 -84796.382812 +v 284661.468750 -15946.775391 -81929.867188 +v 283013.312500 -16162.392578 -81929.867188 +v 283139.281250 -16128.019531 -79052.382812 +v 281440.406250 -16350.258789 -79050.914062 +v 280112.250000 -16488.437500 -73330.320312 +v 293545.687500 -14929.085938 -101995.476562 +v 290380.593750 -15309.010742 -96262.445312 +v 287215.468750 -15688.935547 -90529.414062 +v 284050.375000 -16068.859375 -84796.382812 +v 282467.812500 -16258.822266 -81929.867188 +v 292591.500000 -15152.995117 -101995.476562 +v 293178.218750 -15005.583984 -101995.476562 +v 292001.375000 -15349.435547 -101995.476562 +v 291422.437500 -15619.000977 -101995.476562 +v 290827.750000 -16144.132812 -101995.476562 +v 290762.937500 -16273.703125 -101995.476562 +v 290728.218750 -16393.792969 -101995.476562 +v 290718.625000 -16517.261719 -101995.476562 +v 287347.750000 -16885.675781 -96262.445312 +v 287337.406250 -17018.582031 -96262.445312 +v 283967.281250 -17377.556641 -90529.414062 +v 283956.218750 -17519.902344 -90529.414062 +v 280586.812500 -17869.439453 -84796.382812 +v 280575.000000 -18021.220703 -84796.382812 +v 278896.593750 -18115.378906 -81929.867188 +v 278884.406250 -18271.880859 -81929.867188 +v 277195.531250 -18362.896484 -79044.984375 +v 277182.875000 -18524.162109 -79044.796875 +v 273825.875000 -18853.203125 -73330.320312 +v 273812.593750 -19023.859375 -73330.320312 +v 267064.937500 -19836.966797 -61864.253906 +v 267050.187500 -20026.498047 -61864.253906 +v 260304.015625 -20820.730469 -50398.191406 +v 260287.781250 -21029.138672 -50398.191406 +v 258613.781250 -21066.669922 -47531.675781 +v 258597.187500 -21279.796875 -47531.675781 +v 256923.546875 -21312.611328 -44665.160156 +v 256906.578125 -21530.457031 -44665.160156 +v 253543.078125 -21804.494141 -38932.128906 +v 253525.375000 -22031.777344 -38932.128906 +v 246782.140625 -22788.257812 -27466.064453 +v 246762.968750 -23034.416016 -27466.064453 +v 246796.703125 -23279.472656 -27466.064453 +v 246878.328125 -23515.679688 -27466.064453 +v 253631.890625 -22476.138672 -38932.128906 +v 253810.500000 -22781.652344 -38932.128906 +v 257179.859375 -22249.195312 -44665.160156 +v 257383.968750 -22492.671875 -44665.160156 +v 259064.218750 -22221.169922 -47531.675781 +v 259484.125000 -22576.265625 -47531.675781 +v 261155.093750 -22296.900391 -50398.191406 +v 261489.250000 -22494.255859 -50398.191406 +v 268142.843750 -21358.921875 -61864.253906 +v 269026.687500 -21769.134766 -61864.253906 +v 275592.250000 -20592.949219 -73330.320312 +v 276399.750000 -20861.394531 -73330.320312 +v 279625.156250 -20260.830078 -79040.781250 +v 280461.437500 -20469.314453 -79039.679688 +v 282069.187500 -20159.207031 -81929.867188 +v 282590.906250 -20264.330078 -81929.867188 +v 284169.750000 -19953.593750 -84796.382812 +v 284757.656250 -20053.097656 -84796.382812 +v 287878.781250 -19425.439453 -90529.414062 +v 289210.187500 -19594.835938 -90529.414062 +v 292243.031250 -18955.947266 -96262.445312 +v 293440.156250 -19043.777344 -96262.445312 +v 296388.000000 -18398.652344 -101995.476562 +v 298638.218750 -18456.642578 -101995.476562 +v 290735.531250 -16640.179688 -101995.476562 +v 287355.625000 -17150.894531 -96262.445312 +v 283975.718750 -17661.609375 -90529.414062 +v 280595.812500 -18172.324219 -84796.382812 +v 278905.843750 -18427.681641 -81929.867188 +v 277204.843750 -18684.708984 -79044.609375 +v 273835.968750 -19193.753906 -73330.320312 +v 267076.156250 -20215.183594 -61864.253906 +v 260316.343750 -21236.613281 -50398.191406 +v 258626.390625 -21491.970703 -47531.675781 +v 256936.437500 -21747.328125 -44665.160156 +v 253556.531250 -22258.042969 -38932.128906 +v 290776.468750 -16758.658203 -101995.476562 +v 287399.687500 -17278.427734 -96262.445312 +v 284022.906250 -17798.199219 -90529.414062 +v 280646.125000 -18317.970703 -84796.382812 +v 278957.750000 -18577.855469 -81929.867188 +v 277258.187500 -18839.457031 -79044.421875 +v 273892.562500 -19357.511719 -73330.320312 +v 267139.000000 -20397.054688 -61864.253906 +v 260385.453125 -21436.595703 -50398.191406 +v 258697.062500 -21696.482422 -47531.675781 +v 257008.671875 -21956.367188 -44665.160156 +v 290873.500000 -16924.625000 -101995.476562 +v 287504.125000 -17457.082031 -96262.445312 +v 284134.781250 -17989.539062 -90529.414062 +v 280765.406250 -18521.996094 -84796.382812 +v 279080.718750 -18788.224609 -81929.867188 +v 277384.750000 -19056.238281 -79044.132812 +v 274026.687500 -19586.910156 -73330.320312 +v 267287.937500 -20651.824219 -61864.253906 +v 260549.218750 -21716.738281 -50398.191406 +v 258864.546875 -21982.966797 -47531.675781 +v 290989.187500 -17062.621094 -101995.476562 +v 287628.656250 -17605.626953 -96262.445312 +v 284268.125000 -18148.632812 -90529.414062 +v 280907.625000 -18691.636719 -84796.382812 +v 279227.343750 -18963.138672 -81929.867188 +v 277535.656250 -19236.490234 -79043.843750 +v 274186.562500 -19777.646484 -73330.320312 +v 267465.531250 -20863.656250 -61864.253906 +v 260744.484375 -21949.667969 -50398.191406 +v 291232.437500 -17268.335938 -101995.476562 +v 287890.500000 -17827.066406 -96262.445312 +v 284548.593750 -18385.794922 -90529.414062 +v 281206.656250 -18944.525391 -84796.382812 +v 279535.687500 -19223.888672 -81929.867188 +v 277853.000000 -19505.216797 -79043.210938 +v 274522.812500 -20061.982422 -73330.320312 +v 267838.937500 -21179.441406 -61864.253906 +v 291430.406250 -17385.255859 -101995.476562 +v 288103.625000 -17952.921875 -96262.445312 +v 284776.812500 -18520.589844 -90529.414062 +v 281450.031250 -19088.255859 -84796.382812 +v 279786.625000 -19372.089844 -81929.867188 +v 278111.250000 -19657.964844 -79042.734375 +v 274796.437500 -20223.589844 -73330.320312 +v 292006.156250 -17652.484375 -101995.476562 +v 288723.375000 -18240.578125 -96262.445312 +v 285440.593750 -18828.671875 -90529.414062 +v 282157.812500 -19416.763672 -84796.382812 +v 280516.437500 -19710.810547 -81929.867188 +v 278862.656250 -20007.072266 -79041.757812 +v 292590.406250 -17846.705078 -101995.476562 +v 293231.187500 -18006.244141 -101995.476562 +v 293642.812500 -18089.179688 -101995.476562 +v 290042.062500 -18621.376953 -96262.445312 +v 290485.125000 -18710.650391 -96262.445312 +v 286852.906250 -19236.507812 -90529.414062 +v 287327.437500 -19332.123047 -90529.414062 +v 283663.750000 -19851.640625 -84796.382812 +v 294121.031250 -18170.123047 -101995.476562 +v 290999.906250 -18797.781250 -96262.445312 +v 295275.906250 -18317.058594 -101995.476562 +v 299175.781250 -18450.429688 -101995.476562 +v 295862.375000 -19106.201172 -96262.445312 +v 296441.031250 -19099.511719 -96262.445312 +v 293086.531250 -19755.757812 -90529.414062 +v 293706.250000 -19748.593750 -90529.414062 +v 290310.656250 -20405.314453 -84796.382812 +v 290971.500000 -20397.675781 -84796.382812 +v 288922.750000 -20730.093750 -81929.867188 +v 289604.125000 -20722.216797 -81929.867188 +v 287520.281250 -21058.273438 -79033.335938 +v 288222.187500 -21050.210938 -79032.843750 +v 284758.968750 -21704.429688 -73330.320312 +v 285501.968750 -21695.839844 -73330.320312 +v 279207.250000 -23003.544922 -61864.253906 +v 280032.437500 -22994.003906 -61864.253906 +v 273655.562500 -24302.658203 -50398.191406 +v 274562.906250 -24292.167969 -50398.191406 +v 272267.625000 -24627.437500 -47531.675781 +v 273195.531250 -24616.708984 -47531.675781 +v 270879.718750 -24952.216797 -44665.160156 +v 271828.156250 -24941.250000 -44665.160156 +v 268103.843750 -25601.773438 -38932.128906 +v 269093.406250 -25590.332031 -38932.128906 +v 262552.156250 -26900.888672 -27466.064453 +v 263623.875000 -26888.496094 -27466.064453 +v 264819.218750 -26864.371094 -27466.064453 +v 267388.343750 -26780.507812 -27466.064453 +v 269880.812500 -26651.509766 -27466.064453 +v 272223.625000 -26485.169922 -27466.064453 +v 276982.468750 -26065.121094 -27466.064453 +v 299775.343750 -18438.328125 -101995.476562 +v 301064.000000 -18396.265625 -101995.476562 +v 302314.187500 -18331.562500 -101995.476562 +v 303489.343750 -18248.128906 -101995.476562 +v 299819.312500 -18971.558594 -96262.445312 +v 301084.281250 -18881.746094 -96262.445312 +v 297324.437500 -19611.554688 -90529.414062 +v 298679.218750 -19515.365234 -90529.414062 +v 294829.562500 -20251.550781 -84796.382812 +v 296274.156250 -20148.984375 -84796.382812 +v 293582.125000 -20571.548828 -81929.867188 +v 295071.625000 -20465.792969 -81929.867188 +v 292320.343750 -20895.230469 -79030.351562 +v 293854.843750 -20786.359375 -79029.359375 +v 289839.812500 -21531.542969 -73330.320312 +v 291464.062500 -21416.220703 -73330.320312 +v 284850.062500 -22811.535156 -61864.253906 +v 286653.937500 -22683.458984 -61864.253906 +v 279860.312500 -24091.527344 -50398.191406 +v 281843.843750 -23950.695312 -50398.191406 +v 278612.875000 -24411.525391 -47531.675781 +v 280641.312500 -24267.505859 -47531.675781 +v 277365.437500 -24731.523438 -44665.160156 +v 279438.781250 -24584.314453 -44665.160156 +v 274870.562500 -25371.519531 -38932.128906 +v 277033.718750 -25217.933594 -38932.128906 +v 305876.343750 -18037.435547 -101995.476562 +v 303653.750000 -18654.949219 -96262.445312 +v 301431.125000 -19272.464844 -90529.414062 +v 299208.531250 -19889.978516 -84796.382812 +v 298097.218750 -20198.736328 -81929.867188 +v 296971.968750 -20511.369141 -79027.367188 +v 294763.312500 -21125.007812 -73330.320312 +v 290318.093750 -22360.035156 -61864.253906 +v 285872.906250 -23595.064453 -50398.191406 +v 284761.593750 -23903.820312 -47531.675781 +v 283650.281250 -24212.578125 -44665.160156 +v 281427.687500 -24830.091797 -38932.128906 +v 258065.937500 -26785.279297 -27466.064453 +v 255848.781250 -26622.615234 -27466.064453 +v 253546.359375 -26329.683594 -27466.064453 +v 252592.937500 -26168.310547 -27466.064453 +v 251772.312500 -26002.964844 -27466.064453 +v 250494.734375 -25684.894531 -27466.064453 +v 258150.593750 -24772.701172 -38932.128906 +v 256971.000000 -24479.019531 -38932.128906 +v 261339.734375 -24157.568359 -44665.160156 +v 260209.125000 -23876.082031 -44665.160156 +v 262934.312500 -23850.001953 -47531.675781 +v 261828.187500 -23574.613281 -47531.675781 +v 264528.875000 -23542.435547 -50398.191406 +v 263447.250000 -23273.144531 -50398.191406 +v 270907.187500 -22312.169922 -61864.253906 +v 269923.500000 -22067.269531 -61864.253906 +v 277285.468750 -21081.906250 -73330.320312 +v 249329.984375 -25297.693359 -27466.064453 +v 255895.546875 -24121.507812 -38932.128906 +v 259178.328125 -23533.414062 -44665.160156 +v 260819.718750 -23239.367188 -47531.675781 +v 262461.125000 -22945.320312 -50398.191406 +v 248182.078125 -24764.921875 -27466.064453 +v 254835.671875 -23629.589844 -38932.128906 +v 258162.453125 -23061.921875 -44665.160156 +v 259825.859375 -22778.089844 -47531.675781 +v 247787.375000 -24531.818359 -27466.064453 +v 254471.234375 -23414.359375 -38932.128906 +v 257813.156250 -22855.628906 -44665.160156 +v 247302.390625 -24121.687500 -27466.064453 +v 254023.437500 -23035.677734 -38932.128906 +v 247071.765625 -23846.566406 -27466.064453 +v 246851.312500 -22548.835938 -27466.064453 +v 253606.937500 -21583.431641 -38932.128906 +v 256984.765625 -21100.728516 -44665.160156 +v 258673.671875 -20859.376953 -47531.675781 +v 260362.578125 -20618.025391 -50398.191406 +v 267118.218750 -19652.621094 -61864.253906 +v 273873.843750 -18687.214844 -73330.320312 +v 277240.937500 -18206.042969 -79045.171875 +v 278940.562500 -17963.162109 -81929.867188 +v 280629.468750 -17721.810547 -84796.382812 +v 284007.281250 -17239.107422 -90529.414062 +v 287385.093750 -16756.406250 -96262.445312 +v 246980.531250 -22290.515625 -27466.064453 +v 253726.250000 -21344.917969 -38932.128906 +v 257099.109375 -20872.119141 -44665.160156 +v 258785.546875 -20635.720703 -47531.675781 +v 260471.984375 -20399.320312 -50398.191406 +v 267217.718750 -19453.722656 -61864.253906 +v 273963.437500 -18508.126953 -73330.320312 +v 277325.718750 -18036.808594 -79045.382812 +v 279022.718750 -17798.927734 -81929.867188 +v 280709.156250 -17562.529297 -84796.382812 +v 284082.000000 -17089.730469 -90529.414062 +v 287454.875000 -16616.931641 -96262.445312 +v 247143.015625 -22059.871094 -27466.064453 +v 253876.281250 -21131.958984 -38932.128906 +v 257242.921875 -20668.003906 -44665.160156 +v 258926.234375 -20436.025391 -47531.675781 +v 260609.546875 -20204.048828 -50398.191406 +v 267342.812500 -19276.136719 -61864.253906 +v 274076.062500 -18348.224609 -73330.320312 +v 277432.281250 -17885.705078 -79045.601562 +v 279126.031250 -17652.291016 -81929.867188 +v 280809.343750 -17420.312500 -84796.382812 +v 284175.968750 -16956.357422 -90529.414062 +v 287542.593750 -16492.400391 -96262.445312 +v 247488.125000 -21699.914062 -27466.064453 +v 254194.937500 -20799.603516 -38932.128906 +v 257548.328125 -20349.449219 -44665.160156 +v 259225.031250 -20124.371094 -47531.675781 +v 260901.734375 -19899.292969 -50398.191406 +v 267608.531250 -18998.982422 -61864.253906 +v 274315.343750 -18098.671875 -73330.320312 +v 277658.593750 -17649.876953 -79046.031250 +v 279345.437500 -17423.439453 -81929.867188 +v 281022.125000 -17198.361328 -84796.382812 +v 284375.531250 -16748.207031 -90529.414062 +v 248166.218750 -21243.564453 -27466.064453 +v 249320.437500 -20706.136719 -27466.064453 +v 250496.906250 -20314.507812 -27466.064453 +v 251666.656250 -20020.617188 -27466.064453 +v 252399.312500 -19868.103516 -27466.064453 +v 258053.046875 -19249.072266 -38932.128906 +v 258729.531250 -19108.255859 -38932.128906 +v 261246.250000 -18863.300781 -44665.160156 +v 261894.640625 -18728.330078 -44665.160156 +v 262842.843750 -18670.416016 -47531.675781 +v 263477.187500 -18538.369141 -47531.675781 +v 264439.437500 -18477.529297 -50398.191406 +v 265059.750000 -18348.406250 -50398.191406 +v 270825.843750 -17705.986328 -61864.253906 +v 271389.937500 -17588.556641 -61864.253906 +v 277212.218750 -16934.443359 -73330.320312 +v 253257.296875 -19716.433594 -27466.064453 +v 259521.718750 -18968.212891 -38932.128906 +v 262653.937500 -18594.103516 -44665.160156 +v 264220.031250 -18407.048828 -47531.675781 +v 265786.156250 -18219.994141 -50398.191406 +v 255849.687500 -19377.298828 -27466.064453 +v 261915.328125 -18655.082031 -38932.128906 +v 264948.156250 -18293.974609 -44665.160156 +v 266464.562500 -18113.421875 -47531.675781 +v 258984.750000 -19168.804688 -27466.064453 +v 264810.000000 -18462.574219 -38932.128906 +v 267722.625000 -18109.460938 -44665.160156 +v 262080.125000 -19097.267578 -27466.064453 +v 267668.031250 -18396.523438 -38932.128906 +v 263940.281250 -19116.869141 -27466.064453 +v 278940.437500 -20134.767578 -27466.064453 +v 283235.500000 -19354.468750 -38932.128906 +v 285383.031250 -18964.320312 -44665.160156 +v 286456.812500 -18769.246094 -47531.675781 +v 287530.593750 -18574.169922 -50398.191406 +v 291825.656250 -17793.871094 -61864.253906 +v 296120.750000 -17013.572266 -73330.320312 +v 298268.156250 -16623.443359 -79063.070312 +v 299342.031250 -16428.349609 -81929.867188 +v 300415.812500 -16233.274414 -84796.382812 +v 302563.343750 -15843.125000 -90529.414062 +v 298473.562500 -19041.207031 -96262.445312 +v 295883.125000 -19686.148438 -90529.414062 +v 293292.687500 -20331.089844 -84796.382812 +v 291997.468750 -20653.560547 -81929.867188 +v 290687.781250 -20979.630859 -79031.351562 +v 288111.812500 -21620.972656 -73330.320312 +v 282930.937500 -22910.857422 -61864.253906 +v 277750.062500 -24200.740234 -50398.191406 +v 276454.875000 -24523.210938 -47531.675781 +v 275159.656250 -24845.681641 -44665.160156 +v 272569.218750 -25490.623047 -38932.128906 +v 297086.406250 -19086.484375 -96262.445312 +v 294397.468750 -19734.642578 -90529.414062 +v 291708.562500 -20382.798828 -84796.382812 +v 290364.093750 -20706.878906 -81929.867188 +v 289005.062500 -21034.462891 -79032.343750 +v 286330.687500 -21679.113281 -73330.320312 +v 280952.812500 -22975.427734 -61864.253906 +v 275574.937500 -24271.742188 -50398.191406 +v 274230.468750 -24595.820312 -47531.675781 +v 272886.031250 -24919.898438 -44665.160156 +v 270197.093750 -25568.056641 -38932.128906 +v 289352.281250 -18449.642578 -96262.445312 +v 286114.156250 -19052.580078 -90529.414062 +v 282876.031250 -19655.517578 -84796.382812 +v 281256.937500 -19956.988281 -81929.867188 +v 288718.250000 -15761.489258 -96262.445312 +v 289353.437500 -15550.034180 -96262.445312 +v 289985.000000 -15391.356445 -96262.445312 +v 293936.250000 -14931.430664 -96262.445312 +v 291023.625000 -15284.545898 -90529.414062 +v 288111.000000 -15637.660156 -84796.382812 +v 286654.687500 -15814.216797 -81929.867188 +v 285193.718750 -15991.336914 -79054.226562 +v 282285.750000 -16343.888672 -73330.320312 +v 276460.500000 -17050.117188 -61864.253906 +v 297798.281250 -14933.700195 -96262.445312 +v 295159.875000 -15286.976562 -90529.414062 +v 292521.500000 -15640.252930 -84796.382812 +v 291202.312500 -15816.890625 -81929.867188 +v 289880.562500 -15993.870117 -79057.812500 +v 287244.718750 -16346.805664 -73330.320312 +v 281967.968750 -17053.357422 -61864.253906 +v 276691.187500 -17759.910156 -50398.191406 +v 275372.000000 -17936.548828 -47531.675781 +v 274052.812500 -18113.187500 -44665.160156 +v 290492.312500 -19688.902344 -90529.414062 +v 287544.437500 -20334.027344 -84796.382812 +v 286070.531250 -20656.589844 -81929.867188 +v 284582.500000 -20982.236328 -79035.953125 +v 281648.750000 -21624.277344 -73330.320312 +v 275753.031250 -22914.529297 -61864.253906 +v 269857.343750 -24204.779297 -50398.191406 +v 268383.406250 -24527.341797 -47531.675781 +v 266909.500000 -24849.904297 -44665.160156 +v 263961.656250 -25495.029297 -38932.128906 +v 286115.406250 -15947.074219 -90529.414062 +v 286791.812500 -15777.127930 -90529.414062 +v 286177.312500 -20233.726562 -84796.382812 +v 283197.093750 -20366.927734 -81929.867188 +v 280998.718750 -20577.693359 -79039.125000 +v 281440.250000 -16916.976562 -84796.382812 +v 279776.531250 -17133.306641 -81929.867188 +v 278103.281250 -17350.876953 -79046.898438 +v 274785.437500 -17782.294922 -73330.320312 +v 268130.625000 -18647.611328 -61864.253906 +v 261475.828125 -19512.929688 -50398.191406 +v 259812.125000 -19729.257812 -47531.675781 +v 258148.421875 -19945.587891 -44665.160156 +v 254821.031250 -20378.246094 -38932.128906 +v 283598.625000 -16162.899414 -84796.382812 +v 284660.906250 -20553.169922 -81929.867188 +v 283130.656250 -20875.521484 -79037.265625 +v 280111.625000 -21511.503906 -73330.320312 +v 274045.906250 -22789.281250 -61864.253906 +v 267980.187500 -24067.060547 -50398.191406 +v 266463.781250 -24386.503906 -47531.675781 +v 264947.343750 -24705.949219 -44665.160156 +v 261914.484375 -25344.837891 -38932.128906 +v 281623.031250 -20683.470703 -79038.570312 +v 277854.406250 -21196.537109 -73330.320312 +v 280510.375000 -16791.625000 -81929.867188 +v 279631.125000 -16742.156250 -79048.867188 +v 278859.937500 -16998.763672 -79047.882812 +v 275585.625000 -17409.705078 -73330.320312 +v 269019.343750 -18233.812500 -61864.253906 +v 262453.031250 -19057.921875 -50398.191406 +v 260811.468750 -19263.947266 -47531.675781 +v 259169.890625 -19469.974609 -44665.160156 +v 255886.750000 -19882.029297 -38932.128906 +v 278515.375000 -21308.416016 -73330.320312 +v 272273.125000 -22563.732422 -61864.253906 +v 266030.875000 -23819.048828 -50398.191406 +v 264470.312500 -24132.878906 -47531.675781 +v 262909.750000 -24446.708984 -44665.160156 +v 259788.625000 -25074.367188 -38932.128906 +v 271539.031250 -22439.480469 -61864.253906 +v 276401.250000 -17138.191406 -73330.320312 +v 269925.187500 -17932.271484 -61864.253906 +v 263449.093750 -18726.349609 -50398.191406 +v 261830.062500 -18924.869141 -47531.675781 +v 260211.046875 -19123.388672 -44665.160156 +v 256973.000000 -19520.427734 -38932.128906 +v 265223.656250 -23682.423828 -50398.191406 +v 263644.812500 -23993.160156 -47531.675781 +v 262065.984375 -24303.896484 -44665.160156 +v 258908.296875 -24925.367188 -38932.128906 +v -83145.226562 -29493.601562 35838.250000 +v -81571.781250 -29493.515625 35838.789062 +v -81571.781250 -27018.349609 35271.859375 +v -83145.226562 -27018.435547 35271.328125 +v -84720.679688 -29493.722656 35837.484375 +v -84720.679688 -27018.556641 35270.574219 +v -84720.679688 -24586.298828 34535.335938 +v -83145.226562 -24586.177734 34536.074219 +v -81571.781250 -24586.091797 34536.593750 +v -81571.781250 -29493.515625 -35838.789062 +v -81571.781250 -27018.349609 -35271.859375 +v -81571.781250 -24586.091797 -34536.593750 +v -83145.226562 -24586.177734 -34536.074219 +v -84720.679688 -24586.298828 -34535.335938 +v -83145.226562 -29493.601562 -35838.250000 +v -84720.679688 -29493.722656 -35837.484375 +v -84720.679688 -27018.556641 -35270.574219 +v -83145.226562 -27018.435547 -35271.328125 +v -92569.796875 -29493.601562 35828.710938 +v -90997.351562 -29493.214844 35831.156250 +v -90997.351562 -27018.029297 35264.230469 +v -92569.796875 -27018.416016 35261.824219 +v -94146.257812 -29494.058594 35825.816406 +v -94146.257812 -27018.875000 35258.972656 +v -94146.257812 -24586.605469 34523.855469 +v -92569.796875 -24586.148438 34526.648438 +v -90997.351562 -24585.761719 34529.003906 +v -90997.351562 -29493.214844 -35831.156250 +v -90997.351562 -27018.029297 -35264.230469 +v -90997.351562 -24585.761719 -34529.003906 +v -92569.796875 -24586.148438 -34526.648438 +v -94146.257812 -24586.605469 -34523.855469 +v -92569.796875 -29493.601562 -35828.710938 +v -94146.257812 -29494.058594 -35825.816406 +v -94146.257812 -27018.875000 -35258.972656 +v -92569.796875 -27018.416016 -35261.824219 +v -111420.304688 -29493.548828 35753.796875 +v -109849.500000 -29492.009766 35763.531250 +v -109849.500000 -27016.734375 35196.781250 +v -111420.304688 -27018.273438 35187.199219 +v -112998.445312 -29495.220703 35743.234375 +v -112998.445312 -27019.945312 35176.808594 +v -112998.445312 -24587.650391 34442.464844 +v -111420.304688 -24585.980469 34452.640625 +v -109849.500000 -24584.439453 34462.023438 +v -109849.500000 -29492.009766 -35763.531250 +v -109849.500000 -27016.734375 -35196.781250 +v -109849.500000 -24584.439453 -34462.023438 +v -111420.304688 -24585.980469 -34452.640625 +v -112998.445312 -24587.650391 -34442.464844 +v -111420.304688 -29493.548828 -35753.796875 +v -112998.445312 -29495.220703 -35743.234375 +v -112998.445312 -27019.945312 -35176.808594 +v -111420.304688 -27018.273438 -35187.199219 +v -120846.429688 -29493.478516 35676.152344 +v -119276.218750 -29491.162109 35690.800781 +v -119276.218750 -27015.814453 35124.281250 +v -120846.429688 -27018.130859 35109.867188 +v -122425.195312 -29495.947266 35660.542969 +v -122425.195312 -27020.599609 35094.503906 +v -122425.195312 -24588.298828 34360.917969 +v -120846.429688 -24585.830078 34375.960938 +v -119276.218750 -24583.513672 34390.074219 +v -119276.218750 -29491.162109 -35690.800781 +v -119276.218750 -27015.814453 -35124.281250 +v -119276.218750 -24583.513672 -34390.074219 +v -120846.429688 -24585.830078 -34375.960938 +v -122425.195312 -24588.298828 -34360.917969 +v -120846.429688 -29493.478516 -35676.152344 +v -122425.195312 -29495.947266 -35660.542969 +v -122425.195312 -27020.599609 -35094.503906 +v -120846.429688 -27018.130859 -35109.867188 +v -130273.148438 -29493.369141 35566.117188 +v -128703.390625 -29490.193359 35586.187500 +v -128703.390625 -27014.755859 35020.031250 +v -130273.148438 -27017.931641 35000.281250 +v -131852.390625 -29496.712891 35544.984375 +v -131852.390625 -27021.275391 34979.480469 +v -131852.390625 -24588.976562 34246.945312 +v -130273.148438 -24585.632812 34267.312500 +v -128703.390625 -24582.458984 34286.648438 +v -128703.390625 -29490.193359 -35586.187500 +v -128703.390625 -27014.755859 -35020.031250 +v -128703.390625 -24582.458984 -34286.648438 +v -130273.148438 -24585.632812 -34267.312500 +v -131852.390625 -24588.976562 -34246.945312 +v -130273.148438 -29493.369141 -35566.117188 +v -131852.390625 -29496.712891 -35544.984375 +v -131852.390625 -27021.275391 -34979.480469 +v -130273.148438 -27017.931641 -35000.281250 +v -139700.406250 -29493.216797 35421.375000 +v -138130.968750 -29489.138672 35447.144531 +v -138130.968750 -27013.593750 34881.500000 +v -139700.406250 -27017.671875 34856.136719 +v -141279.984375 -29497.474609 35394.460938 +v -141279.984375 -27021.929688 34829.656250 +v -141279.984375 -24589.646484 34098.488281 +v -139700.406250 -24585.388672 34124.414062 +v -138130.968750 -24581.312500 34149.242188 +v -138130.968750 -29489.138672 -35447.144531 +v -138130.968750 -27013.593750 -34881.500000 +v -138130.968750 -24581.312500 -34149.242188 +v -139700.406250 -24585.388672 -34124.414062 +v -141279.984375 -24589.646484 -34098.488281 +v -139700.406250 -29493.216797 -35421.375000 +v -141279.984375 -29497.474609 -35394.460938 +v -141279.984375 -27021.929688 -34829.656250 +v -139700.406250 -27017.671875 -34856.136719 +v -149128.140625 -29493.021484 35240.863281 +v -147558.890625 -29488.025391 35272.433594 +v -147558.890625 -27012.357422 34707.460938 +v -149128.140625 -27017.351562 34676.398438 +v -150707.937500 -29498.205078 35208.105469 +v -150707.937500 -27022.535156 34644.164062 +v -150707.937500 -24590.281250 33914.695312 +v -149128.140625 -24585.097656 33946.250000 +v -147558.890625 -24580.103516 33976.660156 +v -147558.890625 -29488.025391 -35272.433594 +v -147558.890625 -27012.357422 -34707.460938 +v -147558.890625 -24580.103516 -33976.660156 +v -149128.140625 -24585.097656 -33946.250000 +v -150707.937500 -24590.281250 -33914.695312 +v -149128.140625 -29493.021484 -35240.863281 +v -150707.937500 -29498.205078 -35208.105469 +v -150707.937500 -27022.535156 -34644.164062 +v -149128.140625 -27017.351562 -34676.398438 +v -158556.250000 -29492.781250 35024.523438 +v -156987.109375 -29486.873047 35061.847656 +v -156987.109375 -27011.066406 34497.734375 +v -158556.250000 -27016.972656 34461.011719 +v -160136.171875 -29498.878906 34985.988281 +v -160136.171875 -27023.070312 34423.093750 +v -160136.171875 -24590.861328 33695.664062 +v -158556.250000 -24584.761719 33732.781250 +v -156987.109375 -24578.855469 33768.726562 +v -156987.109375 -29486.873047 -35061.847656 +v -156987.109375 -27011.066406 -34497.734375 +v -156987.109375 -24578.855469 -33768.726562 +v -158556.250000 -24584.761719 -33732.781250 +v -160136.171875 -24590.861328 -33695.664062 +v -158556.250000 -29492.781250 -35024.523438 +v -160136.171875 -29498.878906 -34985.988281 +v -160136.171875 -27023.070312 -34423.093750 +v -158556.250000 -27016.972656 -34461.011719 +v -167989.500000 -29492.519531 34772.703125 +v -166418.843750 -29485.406250 34815.742188 +v -166418.843750 -27009.392578 34252.621094 +v -167989.500000 -27016.533203 34210.281250 +v -169568.578125 -29500.027344 34728.468750 +v -169568.578125 -27024.085938 34166.761719 +v -169568.578125 -24591.958984 33441.660156 +v -167989.500000 -24584.363281 33484.257812 +v -166418.843750 -24577.195312 33525.699219 +v -166418.843750 -29485.406250 -34815.742188 +v -166418.843750 -27009.392578 -34252.621094 +v -166418.843750 -24577.195312 -33525.699219 +v -167989.500000 -24584.363281 -33484.257812 +v -169568.578125 -24591.958984 -33441.660156 +v -167989.500000 -29492.519531 -34772.703125 +v -169568.578125 -29500.027344 -34728.468750 +v -169568.578125 -27024.085938 -34166.761719 +v -167989.500000 -27016.533203 -34210.281250 +v -177424.375000 -29492.197266 34483.613281 +v -175852.171875 -29482.224609 34532.613281 +v -175852.171875 -27005.730469 33969.992188 +v -177424.375000 -27015.894531 33921.792969 +v -179001.875000 -29502.845703 34433.417969 +v -179001.875000 -27026.779297 33872.414062 +v -179001.875000 -24594.830078 33149.226562 +v -177424.375000 -24583.714844 33197.546875 +v -175852.171875 -24573.359375 33244.718750 +v -175852.171875 -29482.224609 -34532.613281 +v -175852.171875 -27005.730469 -33969.992188 +v -175852.171875 -24573.359375 -33244.718750 +v -177424.375000 -24583.714844 -33197.546875 +v -179001.875000 -24594.830078 -33149.226562 +v -177424.375000 -29492.197266 -34483.613281 +v -179001.875000 -29502.845703 -34433.417969 +v -179001.875000 -27026.779297 -33872.414062 +v -177424.375000 -27015.894531 -33921.792969 +v -186858.453125 -29491.705078 34153.070312 +v -185284.875000 -29477.173828 34208.480469 +v -185284.875000 -26999.873047 33644.957031 +v -186858.453125 -27014.906250 33590.457031 +v -188434.562500 -29507.185547 34096.437500 +v -188434.562500 -27030.955078 33534.761719 +v -188434.562500 -24599.310547 32812.058594 +v -186858.453125 -24582.703125 32866.554688 +v -185284.875000 -24567.173828 32919.878906 +v -185284.875000 -29477.173828 -34208.480469 +v -185284.875000 -26999.873047 -33644.957031 +v -185284.875000 -24567.173828 -32919.878906 +v -186858.453125 -24582.703125 -32866.554688 +v -188434.562500 -24599.310547 -32812.058594 +v -188434.562500 -27030.955078 -33534.761719 +v -188434.562500 -29507.185547 -34096.437500 +v -186858.453125 -29491.705078 -34153.070312 +v -186858.453125 -27014.906250 -33590.457031 +v -196292.156250 -29490.949219 33775.621094 +v -194717.312500 -29470.105469 33838.101562 +v -194717.312500 -26991.625000 33271.410156 +v -196292.156250 -27013.425781 33209.976562 +v -197866.984375 -29513.021484 33711.886719 +v -197866.984375 -27036.541016 33147.308594 +v -197866.984375 -24605.359375 32422.740234 +v -196292.156250 -24581.218750 32484.039062 +v -194717.312500 -24558.480469 32544.128906 +v -194717.312500 -29470.105469 -33838.101562 +v -194717.312500 -26991.625000 -33271.410156 +v -194717.312500 -24558.480469 -32544.128906 +v -196292.156250 -24581.218750 -32484.039062 +v -197866.984375 -24605.359375 -32422.740234 +v -197866.984375 -27036.541016 -33147.308594 +v -197866.984375 -29513.021484 -33711.886719 +v -196292.156250 -29490.949219 -33775.621094 +v -196292.156250 -27013.425781 -33209.976562 +v -205725.875000 -29489.824219 33344.179688 +v -204149.734375 -29460.675781 33414.625000 +v -204149.734375 -26980.566406 32841.609375 +v -205725.875000 -27011.281250 32772.375000 +v -207299.421875 -29520.505859 33272.414062 +v -207299.421875 -27043.642578 32701.837891 +v -207299.421875 -24613.130859 31972.066406 +v -205725.875000 -24579.119141 32041.027344 +v -204149.734375 -24546.869141 32108.716797 +v -204149.734375 -29460.675781 -33414.625000 +v -204149.734375 -26980.566406 -32841.609375 +v -204149.734375 -24546.869141 -32108.716797 +v -205725.875000 -24579.119141 -32041.027344 +v -207299.421875 -24613.130859 -31972.066406 +v -207299.421875 -27043.642578 -32701.837891 +v -207299.421875 -29520.505859 -33272.414062 +v -205725.875000 -29489.824219 -33344.179688 +v -205725.875000 -27011.281250 -32772.375000 +v -215159.968750 -29488.203125 32849.230469 +v -213582.437500 -29448.298828 32928.867188 +v -213582.437500 -26965.980469 32345.285156 +v -215159.968750 -27008.255859 32267.058594 +v -216732.140625 -29530.001953 32768.175781 +v -216732.140625 -27052.568359 32187.439453 +v -216732.140625 -24622.996094 31447.970703 +v -215159.968750 -24576.218750 31525.759766 +v -213582.437500 -24531.621094 31602.189453 +v -213582.437500 -29448.298828 -32928.867188 +v -213582.437500 -26965.980469 -32345.285156 +v -213582.437500 -24531.621094 -31602.189453 +v -215159.968750 -24576.218750 -31525.759766 +v -216732.140625 -24622.996094 -31447.970703 +v -216732.140625 -27052.568359 -32187.439453 +v -216732.140625 -29530.001953 -32768.175781 +v -215159.968750 -29488.203125 -32849.230469 +v -215159.968750 -27008.255859 -32267.058594 +v -101994.781250 -29493.587891 35802.855469 +v -100423.218750 -29492.705078 35808.437500 +v -100423.218750 -27017.484375 35241.562500 +v -101994.781250 -27018.367188 35236.066406 +v -103572.148438 -29494.574219 35796.617188 +v -103572.148438 -27019.353516 35229.929688 +v -103572.148438 -24587.070312 34495.089844 +v -101994.781250 -24586.083984 34501.101562 +v -100423.218750 -24585.201172 34506.480469 +v -100423.218750 -29492.705078 -35808.437500 +v -100423.218750 -27017.484375 -35241.562500 +v -100423.218750 -24585.201172 -34506.480469 +v -101994.781250 -24586.083984 -34501.101562 +v -103572.148438 -24587.070312 -34495.089844 +v -101994.781250 -29493.587891 -35802.855469 +v -103572.148438 -29494.574219 -35796.617188 +v -103572.148438 -27019.353516 -35229.929688 +v -101994.781250 -27018.367188 -35236.066406 +v -70815.492188 -29228.929688 35787.421875 +v -70818.593750 -26753.019531 35201.082031 +v -70821.687500 -24321.449219 34446.273438 +v -69249.664062 -24321.449219 34446.273438 +v -67675.039062 -24321.449219 34446.273438 +v -67675.039062 -26753.019531 35201.082031 +v -67675.039062 -29228.929688 35787.421875 +v -69249.664062 -29228.929688 35787.421875 +v -69249.664062 -26753.019531 35201.082031 +v -69249.664062 -29228.929688 -35787.421875 +v -70815.492188 -29228.929688 -35787.421875 +v -70818.593750 -26753.019531 -35201.082031 +v -69249.664062 -26753.019531 -35201.082031 +v -69249.664062 -24321.449219 -34446.273438 +v -67675.039062 -26753.019531 -35201.082031 +v -67675.039062 -24321.449219 -34446.273438 +v -70821.687500 -24321.449219 -34446.273438 +v -67675.039062 -29228.929688 -35787.421875 +v -56494.503906 -29228.929688 35787.421875 +v -56494.503906 -26753.019531 35201.082031 +v -56494.503906 -24321.449219 34446.273438 +v -54919.878906 -24321.449219 34446.273438 +v -53345.253906 -24321.449219 34446.273438 +v -53345.253906 -26753.019531 35201.082031 +v -53345.253906 -29228.929688 35787.421875 +v -54919.878906 -29228.929688 35787.421875 +v -54919.878906 -26753.019531 35201.082031 +v -54919.878906 -29228.929688 -35787.421875 +v -56494.503906 -29228.929688 -35787.421875 +v -56494.503906 -26753.019531 -35201.082031 +v -56494.503906 -24321.449219 -34446.273438 +v -54919.878906 -24321.449219 -34446.273438 +v -53345.253906 -24321.449219 -34446.273438 +v -53345.253906 -26753.019531 -35201.082031 +v -54919.878906 -26753.019531 -35201.082031 +v -53345.253906 -29228.929688 -35787.421875 +v 167505.515625 -29339.117188 36153.371094 +v 167505.515625 -26847.214844 35639.566406 +v 167505.515625 -24396.158203 34901.445312 +v 169080.203125 -24323.470703 34901.210938 +v 170654.859375 -24248.328125 34900.582031 +v 170654.859375 -26675.458984 35638.683594 +v 170654.859375 -29143.033203 36152.472656 +v 169080.203125 -29242.564453 36153.128906 +v 169080.203125 -26762.693359 35639.328125 +v 169080.203125 -29242.564453 -36153.128906 +v 167505.515625 -29339.117188 -36153.371094 +v 167505.515625 -26847.214844 -35639.566406 +v 167505.515625 -24396.158203 -34901.445312 +v 169080.203125 -24323.470703 -34901.210938 +v 170654.859375 -24248.328125 -34900.582031 +v 170654.859375 -26675.458984 -35638.683594 +v 169080.203125 -26762.693359 -35639.328125 +v 170654.859375 -29143.033203 -36152.472656 +v 157323.453125 -29312.574219 36058.171875 +v 157323.453125 -26823.003906 35510.929688 +v 157323.453125 -24376.250000 34752.187500 +v 158898.000000 -24321.423828 34752.187500 +v 160472.703125 -24264.253906 34752.187500 +v 160472.703125 -26691.082031 35510.929688 +v 160472.703125 -29160.375000 36058.171875 +v 158898.000000 -29237.896484 36058.171875 +v 158898.000000 -26758.337891 35510.929688 +v 158898.000000 -29237.896484 -36058.171875 +v 157323.453125 -29312.574219 -36058.171875 +v 157323.453125 -26823.003906 -35510.929688 +v 157323.453125 -24376.250000 -34752.187500 +v 158898.000000 -24321.423828 -34752.187500 +v 160472.703125 -24264.253906 -34752.187500 +v 160472.703125 -26691.082031 -35510.929688 +v 158898.000000 -26758.337891 -35510.929688 +v 160472.703125 -29160.375000 -36058.171875 +v 147141.671875 -29290.759766 35979.531250 +v 147141.671875 -26803.380859 35410.410156 +v 147141.671875 -24360.083984 34639.820312 +v 148716.218750 -24320.251953 34639.820312 +v 150290.906250 -24278.423828 34639.820312 +v 150290.906250 -26705.250000 35410.410156 +v 150290.906250 -29175.857422 35979.531250 +v 148716.218750 -29234.527344 35979.531250 +v 148716.218750 -26755.423828 35410.410156 +v 148716.218750 -29234.527344 -35979.531250 +v 147141.671875 -29290.759766 -35979.531250 +v 147141.671875 -26803.380859 -35410.410156 +v 147141.671875 -24360.083984 -34639.820312 +v 148716.218750 -24320.251953 -34639.820312 +v 150290.906250 -24278.423828 -34639.820312 +v 150290.906250 -26705.250000 -35410.410156 +v 148716.218750 -26755.423828 -35410.410156 +v 150290.906250 -29175.857422 -35979.531250 +v 136959.875000 -29273.128906 35918.207031 +v 136959.875000 -26787.765625 35335.539062 +v 136959.875000 -24347.226562 34559.289062 +v 138534.437500 -24319.712891 34559.289062 +v 140109.125000 -24290.539062 34559.289062 +v 140109.125000 -26717.576172 35335.539062 +v 140109.125000 -29189.187500 35918.207031 +v 138534.437500 -29232.183594 35918.207031 +v 138534.437500 -26753.597656 35335.539062 +v 138534.437500 -29232.183594 -35918.207031 +v 136959.875000 -29273.128906 -35918.207031 +v 136959.875000 -26787.765625 -35335.539062 +v 136959.875000 -24347.226562 -34559.289062 +v 138534.437500 -24319.712891 -34559.289062 +v 140109.125000 -24290.539062 -34559.289062 +v 140109.125000 -26717.576172 -35335.539062 +v 138534.437500 -26753.597656 -35335.539062 +v 140109.125000 -29189.187500 -35918.207031 +v 126778.093750 -29259.144531 35872.988281 +v 126778.093750 -26775.601562 35282.773438 +v 126778.093750 -24337.250000 34505.179688 +v 128352.671875 -24319.613281 34505.179688 +v 129927.335938 -24300.644531 34505.179688 +v 129927.335938 -26728.042969 35282.773438 +v 129927.335938 -29200.425781 35872.988281 +v 128352.671875 -29230.623047 35872.988281 +v 128352.671875 -26752.574219 35282.773438 +v 128352.671875 -29230.623047 -35872.988281 +v 126778.093750 -29259.144531 -35872.988281 +v 126778.093750 -26775.601562 -35282.773438 +v 126778.093750 -24337.250000 -34505.179688 +v 128352.671875 -24319.613281 -34505.179688 +v 129927.335938 -24300.644531 -34505.179688 +v 129927.335938 -26728.042969 -35282.773438 +v 128352.671875 -26752.574219 -35282.773438 +v 129927.335938 -29200.425781 -35872.988281 +v 116596.304688 -29248.412109 35841.648438 +v 116596.304688 -26766.482422 35248.109375 +v 116596.304688 -24329.841797 34472.054688 +v 118170.890625 -24319.800781 34472.054688 +v 119745.546875 -24308.748047 34472.054688 +v 119745.546875 -26736.609375 35248.109375 +v 119745.546875 -29209.595703 35841.648438 +v 118170.890625 -29229.658203 35841.648438 +v 118170.890625 -26752.123047 35248.109375 +v 118170.890625 -29229.658203 -35841.648438 +v 116596.304688 -29248.412109 -35841.648438 +v 116596.304688 -26766.482422 -35248.109375 +v 116596.304688 -24329.841797 -34472.054688 +v 118170.890625 -24319.800781 -34472.054688 +v 119745.546875 -24308.748047 -34472.054688 +v 119745.546875 -26736.609375 -35248.109375 +v 118170.890625 -26752.123047 -35248.109375 +v 119745.546875 -29209.595703 -35841.648438 +v 106414.515625 -29240.634766 35821.421875 +v 106414.515625 -26760.091797 35227.375000 +v 106414.515625 -24324.763672 34454.609375 +v 107989.117188 -24320.142578 34454.609375 +v 109563.765625 -24314.830078 34454.609375 +v 109563.765625 -26743.214844 35227.375000 +v 109563.765625 -29216.685547 35821.421875 +v 107989.117188 -29229.132812 35821.421875 +v 107989.117188 -26752.062500 35227.375000 +v 107989.117188 -29229.132812 -35821.421875 +v 106414.515625 -29240.634766 -35821.421875 +v 106414.515625 -26760.091797 -35227.375000 +v 106414.515625 -24324.763672 -34454.609375 +v 107989.117188 -24320.142578 -34454.609375 +v 109563.765625 -24314.830078 -34454.609375 +v 109563.765625 -26743.214844 -35227.375000 +v 107989.117188 -26752.062500 -35227.375000 +v 109563.765625 -29216.685547 -35821.421875 +v 96232.734375 -29235.535156 35809.289062 +v 96232.734375 -26756.078125 35216.367188 +v 96232.734375 -24321.671875 34447.648438 +v 97807.343750 -24320.361328 34447.648438 +v 99381.976562 -24318.677734 34447.648438 +v 99381.976562 -26747.667969 35216.367188 +v 99381.976562 -29221.605469 35809.289062 +v 97807.343750 -29228.861328 35809.289062 +v 97807.343750 -26752.111328 35216.367188 +v 97807.343750 -29228.861328 -35809.289062 +v 96232.734375 -29235.535156 -35809.289062 +v 96232.734375 -26756.078125 -35216.367188 +v 96232.734375 -24321.671875 -34447.648438 +v 97807.343750 -24320.361328 -34447.648438 +v 99381.976562 -24318.677734 -34447.648438 +v 99381.976562 -26747.667969 -35216.367188 +v 97807.343750 -26752.111328 -35216.367188 +v 99381.976562 -29221.605469 -35809.289062 +v 85822.273438 -29233.611328 35802.187500 +v 85826.671875 -26754.695312 35211.031250 +v 85831.070312 -24320.650391 34446.312500 +v 88302.906250 -24320.531250 34446.312500 +v 88301.093750 -26751.333984 35211.031250 +v 88299.289062 -29226.939453 35802.187500 +v 85822.273438 -29233.611328 -35802.187500 +v 85826.671875 -26754.695312 -35211.031250 +v 88299.265625 -29226.939453 -35802.187500 +v 88301.078125 -26751.333984 -35211.031250 +v 88302.898438 -24320.531250 -34446.312500 +v 85831.070312 -24320.650391 -34446.312500 +v 75869.132812 -29232.074219 35797.304688 +v 75869.132812 -26754.146484 35207.734375 +v 75869.132812 -24320.904297 34446.296875 +v 77443.750000 -24320.863281 34446.296875 +v 79018.375000 -24320.818359 34446.296875 +v 79018.375000 -26750.867188 35207.734375 +v 79018.375000 -29225.544922 35797.304688 +v 77443.750000 -29228.882812 35797.304688 +v 77443.750000 -26752.542969 35207.734375 +v 77443.750000 -29228.882812 -35797.304688 +v 75869.132812 -29232.074219 -35797.304688 +v 75869.132812 -26754.146484 -35207.734375 +v 75869.132812 -24320.904297 -34446.296875 +v 77443.750000 -24320.863281 -34446.296875 +v 79018.375000 -24320.818359 -34446.296875 +v 79018.375000 -26750.867188 -35207.734375 +v 77443.750000 -26752.542969 -35207.734375 +v 79018.375000 -29225.544922 -35797.304688 +v 65687.312500 -29231.263672 35793.652344 +v 65687.312500 -26753.906250 35205.273438 +v 65687.312500 -24321.111328 34446.289062 +v 67261.937500 -24321.080078 34446.289062 +v 68836.562500 -24321.046875 34446.289062 +v 68836.562500 -26751.501953 35205.273438 +v 68836.562500 -29226.476562 35793.652344 +v 67261.937500 -29228.931641 35793.652344 +v 67261.937500 -26752.734375 35205.273438 +v 67261.937500 -29228.931641 -35793.652344 +v 65687.312500 -29231.263672 -35793.652344 +v 65687.312500 -26753.906250 -35205.273438 +v 65687.312500 -24321.111328 -34446.289062 +v 67261.937500 -24321.080078 -34446.289062 +v 68836.562500 -24321.046875 -34446.289062 +v 68836.562500 -26751.501953 -35205.273438 +v 67261.937500 -26752.734375 -35205.273438 +v 68836.562500 -29226.476562 -35793.652344 +v 55505.496094 -29230.566406 35791.039062 +v 55505.496094 -26753.675781 35203.511719 +v 55505.496094 -24321.255859 34446.281250 +v 57080.117188 -24321.234375 34446.281250 +v 58654.742188 -24321.212891 34446.281250 +v 58654.742188 -26752.007812 35203.511719 +v 58654.742188 -29227.244141 35791.039062 +v 57080.117188 -29228.957031 35791.039062 +v 57080.117188 -26752.867188 35203.511719 +v 57080.117188 -29228.957031 -35791.039062 +v 55505.496094 -29230.566406 -35791.039062 +v 55505.496094 -26753.675781 -35203.511719 +v 55505.496094 -24321.255859 -34446.281250 +v 57080.117188 -24321.234375 -34446.281250 +v 58654.742188 -24321.212891 -34446.281250 +v 58654.742188 -26752.007812 -35203.511719 +v 57080.117188 -26752.867188 -35203.511719 +v 58654.742188 -29227.244141 -35791.039062 +v 45323.675781 -29229.988281 35789.285156 +v 45323.675781 -26753.464844 35202.332031 +v 45323.675781 -24321.353516 34446.277344 +v 46898.300781 -24321.339844 34446.277344 +v 48472.925781 -24321.324219 34446.277344 +v 48472.925781 -26752.396484 35202.332031 +v 48472.925781 -29227.857422 35789.285156 +v 46898.300781 -29228.962891 35789.285156 +v 46898.300781 -26752.951172 35202.332031 +v 46898.300781 -29228.962891 -35789.285156 +v 45323.675781 -29229.988281 -35789.285156 +v 45323.675781 -26753.464844 -35202.332031 +v 45323.675781 -24321.353516 -34446.277344 +v 46898.300781 -24321.339844 -34446.277344 +v 48472.925781 -24321.324219 -34446.277344 +v 48472.925781 -26752.396484 -35202.332031 +v 46898.300781 -26752.951172 -35202.332031 +v 48472.925781 -29227.857422 -35789.285156 +v 35141.859375 -29229.529297 35788.218750 +v 35141.859375 -26753.285156 35201.613281 +v 35141.859375 -24321.410156 34446.277344 +v 36716.484375 -24321.402344 34446.277344 +v 38291.109375 -24321.394531 34446.277344 +v 38291.109375 -26752.679688 35201.613281 +v 38291.109375 -29228.326172 35788.218750 +v 36716.484375 -29228.958984 35788.218750 +v 36716.484375 -26752.998047 35201.613281 +v 36716.484375 -29228.958984 -35788.218750 +v 35141.859375 -29229.529297 -35788.218750 +v 35141.859375 -26753.285156 -35201.613281 +v 35141.859375 -24321.410156 -34446.277344 +v 36716.484375 -24321.402344 -34446.277344 +v 38291.109375 -24321.394531 -34446.277344 +v 38291.109375 -26752.679688 -35201.613281 +v 36716.484375 -26752.998047 -35201.613281 +v 38291.109375 -29228.326172 -35788.218750 +v 24960.041016 -29229.197266 35787.664062 +v 24960.041016 -26753.142578 35201.242188 +v 24960.041016 -24321.437500 34446.273438 +v 26534.666016 -24321.435547 34446.273438 +v 28109.289062 -24321.431641 34446.273438 +v 28109.289062 -26752.871094 35201.242188 +v 28109.289062 -29228.656250 35787.664062 +v 26534.666016 -29228.947266 35787.664062 +v 26534.666016 -26753.017578 35201.242188 +v 26534.666016 -29228.947266 -35787.664062 +v 24960.041016 -29229.197266 -35787.664062 +v 24960.041016 -26753.142578 -35201.242188 +v 24960.041016 -24321.437500 -34446.273438 +v 26534.666016 -24321.435547 -34446.273438 +v 28109.289062 -24321.431641 -34446.273438 +v 28109.289062 -26752.871094 -35201.242188 +v 26534.666016 -26753.017578 -35201.242188 +v 28109.289062 -29228.656250 -35787.664062 +v 14778.224609 -29228.996094 35787.453125 +v 14778.224609 -26753.050781 35201.101562 +v 14778.224609 -24321.447266 34446.273438 +v 16352.847656 -24321.447266 34446.273438 +v 17927.472656 -24321.445312 34446.273438 +v 17927.472656 -26752.980469 35201.101562 +v 17927.472656 -29228.855469 35787.453125 +v 16352.847656 -29228.935547 35787.453125 +v 16352.847656 -26753.021484 35201.101562 +v 16352.847656 -29228.935547 -35787.453125 +v 14778.224609 -29228.996094 -35787.453125 +v 14778.224609 -26753.050781 -35201.101562 +v 14778.224609 -24321.447266 -34446.273438 +v 16352.847656 -24321.447266 -34446.273438 +v 17927.472656 -24321.445312 -34446.273438 +v 17927.472656 -26752.980469 -35201.101562 +v 16352.847656 -26753.021484 -35201.101562 +v 17927.472656 -29228.855469 -35787.453125 +v 4596.406250 -29228.929688 35787.421875 +v 4596.406250 -26753.019531 35201.082031 +v 4596.406250 -24321.449219 34446.273438 +v 6171.030273 -24321.449219 34446.273438 +v 7745.654297 -24321.449219 34446.273438 +v 7745.654297 -26753.019531 35201.082031 +v 7745.654297 -29228.929688 35787.421875 +v 6171.030273 -29228.929688 35787.421875 +v 6171.030273 -26753.019531 35201.082031 +v 6171.030273 -29228.929688 -35787.421875 +v 4596.406250 -29228.929688 -35787.421875 +v 4596.406250 -26753.019531 -35201.082031 +v 4596.406250 -24321.449219 -34446.273438 +v 6171.030273 -24321.449219 -34446.273438 +v 7745.654297 -24321.449219 -34446.273438 +v 7745.654297 -26753.019531 -35201.082031 +v 6171.030273 -26753.019531 -35201.082031 +v 7745.654297 -29228.929688 -35787.421875 +v -5585.411621 -29228.929688 35787.421875 +v -5585.411621 -26753.019531 35201.082031 +v -5585.411621 -24321.449219 34446.273438 +v -4010.787842 -24321.449219 34446.273438 +v -2436.163574 -24321.449219 34446.273438 +v -2436.163574 -26753.019531 35201.082031 +v -2436.163574 -29228.929688 35787.421875 +v -4010.787842 -29228.929688 35787.421875 +v -4010.787842 -26753.019531 35201.082031 +v -4010.787842 -29228.929688 -35787.421875 +v -5585.411621 -29228.929688 -35787.421875 +v -5585.411621 -26753.019531 -35201.082031 +v -5585.411621 -24321.449219 -34446.273438 +v -4010.787842 -24321.449219 -34446.273438 +v -2436.163574 -24321.449219 -34446.273438 +v -2436.163574 -26753.019531 -35201.082031 +v -4010.787842 -26753.019531 -35201.082031 +v -2436.163574 -29228.929688 -35787.421875 +v -15767.230469 -29228.929688 35787.421875 +v -15767.230469 -26753.019531 35201.082031 +v -15767.230469 -24321.449219 34446.273438 +v -14192.605469 -24321.449219 34446.273438 +v -12617.981445 -24321.449219 34446.273438 +v -12617.981445 -26753.019531 35201.082031 +v -12617.981445 -29228.929688 35787.421875 +v -14192.605469 -29228.929688 35787.421875 +v -14192.605469 -26753.019531 35201.082031 +v -14192.605469 -29228.929688 -35787.421875 +v -15767.230469 -29228.929688 -35787.421875 +v -15767.230469 -26753.019531 -35201.082031 +v -15767.230469 -24321.449219 -34446.273438 +v -14192.605469 -24321.449219 -34446.273438 +v -12617.981445 -24321.449219 -34446.273438 +v -12617.981445 -26753.019531 -35201.082031 +v -14192.605469 -26753.019531 -35201.082031 +v -12617.981445 -29228.929688 -35787.421875 +v -25949.048828 -29228.929688 35787.421875 +v -25949.048828 -26753.019531 35201.082031 +v -25949.048828 -24321.449219 34446.273438 +v -24374.423828 -24321.449219 34446.273438 +v -22799.800781 -24321.449219 34446.273438 +v -22799.800781 -26753.019531 35201.082031 +v -22799.800781 -29228.929688 35787.421875 +v -24374.423828 -29228.929688 35787.421875 +v -24374.423828 -26753.019531 35201.082031 +v -24374.423828 -29228.929688 -35787.421875 +v -25949.048828 -29228.929688 -35787.421875 +v -25949.048828 -26753.019531 -35201.082031 +v -25949.048828 -24321.449219 -34446.273438 +v -24374.423828 -24321.449219 -34446.273438 +v -22799.800781 -24321.449219 -34446.273438 +v -22799.800781 -26753.019531 -35201.082031 +v -24374.423828 -26753.019531 -35201.082031 +v -22799.800781 -29228.929688 -35787.421875 +v -36130.867188 -29228.929688 35787.421875 +v -36130.867188 -26753.019531 35201.082031 +v -36130.867188 -24321.449219 34446.273438 +v -34556.242188 -24321.449219 34446.273438 +v -32981.617188 -24321.449219 34446.273438 +v -32981.617188 -26753.019531 35201.082031 +v -32981.617188 -29228.929688 35787.421875 +v -34556.242188 -29228.929688 35787.421875 +v -34556.242188 -26753.019531 35201.082031 +v -34556.242188 -29228.929688 -35787.421875 +v -36130.867188 -29228.929688 -35787.421875 +v -36130.867188 -26753.019531 -35201.082031 +v -36130.867188 -24321.449219 -34446.273438 +v -34556.242188 -24321.449219 -34446.273438 +v -32981.617188 -24321.449219 -34446.273438 +v -32981.617188 -26753.019531 -35201.082031 +v -34556.242188 -26753.019531 -35201.082031 +v -32981.617188 -29228.929688 -35787.421875 +v -46312.683594 -29228.929688 35787.421875 +v -46312.683594 -26753.019531 35201.082031 +v -46312.683594 -24321.449219 34446.273438 +v -44738.058594 -24321.449219 34446.273438 +v -43163.437500 -24321.449219 34446.273438 +v -43163.437500 -26753.019531 35201.082031 +v -43163.437500 -29228.929688 35787.421875 +v -44738.058594 -29228.929688 35787.421875 +v -44738.058594 -26753.019531 35201.082031 +v -44738.058594 -29228.929688 -35787.421875 +v -46312.683594 -29228.929688 -35787.421875 +v -46312.683594 -26753.019531 -35201.082031 +v -46312.683594 -24321.449219 -34446.273438 +v -44738.058594 -24321.449219 -34446.273438 +v -43163.437500 -24321.449219 -34446.273438 +v -43163.437500 -26753.019531 -35201.082031 +v -44738.058594 -26753.019531 -35201.082031 +v -43163.437500 -29228.929688 -35787.421875 +v -270022.687500 -30534.445312 27606.779297 +v -273453.406250 -31183.464844 27086.214844 +v -276647.812500 -31877.708984 26546.634766 +v -273453.406250 -29489.572266 26567.445312 +v -276647.812500 -30220.976562 26038.199219 +v -273453.406250 -27829.771484 25965.269531 +v -276647.812500 -28597.589844 25448.019531 +v -273453.406250 -26209.519531 25281.726562 +v -276647.812500 -27012.880859 24778.093750 +v -273453.406250 -24634.271484 24518.849609 +v -276647.812500 -25472.191406 24030.412109 +v -273453.406250 -23109.482422 23678.669922 +v -276647.812500 -23980.853516 23206.970703 +v -273453.406250 -21640.611328 22763.222656 +v -276647.812500 -22544.205078 22309.759766 +v -270022.687500 -28805.974609 27078.039062 +v -270022.687500 -27112.291016 26464.291016 +v -270022.687500 -25458.962891 25767.611328 +v -270022.687500 -23851.556641 24990.070312 +v -270022.687500 -22295.642578 24133.744141 +v -270022.687500 -28805.748047 -27077.962891 +v -273453.406250 -29489.349609 -26567.371094 +v -273453.406250 -26209.093750 -25281.533203 +v -276647.812500 -27012.464844 -24777.904297 +v -276647.812500 -23980.265625 -23206.625000 +v -276647.812500 -30220.759766 -26038.125000 +v -273453.406250 -23108.880859 -23678.316406 +v -270022.687500 -25458.527344 -25767.414062 +v -270022.687500 -22295.029297 -24133.384766 +v -284456.781250 -28432.498047 22759.533203 +v -282511.343750 -27702.156250 23163.744141 +v -282511.343750 -25423.457031 21886.933594 +v -282511.343750 -23284.681641 20428.435547 +v -282511.343750 -22274.410156 19633.552734 +v -284456.781250 -23118.529297 19290.943359 +v -284456.781250 -22171.488281 18468.248047 +v -284456.781250 -24107.623047 20071.955078 +v -284456.781250 -26201.564453 21505.001953 +v -282537.250000 -27711.470703 -23158.556641 +v -284456.781250 -28432.501953 -22759.535156 +v -286275.750000 -29176.775391 -22353.128906 +v -286275.750000 -26994.589844 -21121.000000 +v -286275.750000 -24946.404297 -19713.541016 +v -286275.750000 -23052.576172 -18138.470703 +v -284456.781250 -22171.488281 -18468.248047 +v -282537.250000 -23295.169922 -20423.859375 +v -284456.781250 -24107.625000 -20071.955078 +v -282537.250000 -25433.376953 -21882.033203 +v -284456.781250 -26201.566406 -21505.003906 +v -291597.562500 -24413.900391 -15271.540039 +v -291597.562500 -22912.654297 -13370.453125 +v -293680.375000 -24465.060547 -12969.857422 +v -293680.375000 -23219.488281 -11000.119141 +v -295622.531250 -24866.679688 -10654.778320 +v -295622.531250 -23870.708984 -8645.489258 +v -295622.531250 -23080.689453 -6555.089355 +v -297441.718750 -24846.558594 -6339.623535 +v -297441.718750 -24297.230469 -4259.101074 +v -298851.812500 -25790.275391 -4139.299805 +v -298851.812500 -25467.695312 -2079.179688 +v -300201.031250 -26994.273438 -2018.501587 +v -300201.031250 -26889.482422 0.000000 +v -300855.875000 -27661.671875 0.000000 +v -300855.875000 -27764.173828 1987.999390 +v -301499.093750 -28537.941406 1957.401855 +v -301499.093750 -28833.593750 3896.860352 +v -302132.000000 -29604.005859 3835.775879 +v -301499.093750 -29317.271484 5800.432617 +v -300855.875000 -29240.917969 7769.759766 +v -300201.031250 -29379.781250 9722.439453 +v -298851.812500 -27956.482422 10014.706055 +v -298851.812500 -29051.027344 11807.991211 +v -297441.718750 -26552.103516 10304.555664 +v -297441.718750 -27691.449219 12149.743164 +v -295622.531250 -24866.679688 10654.778320 +v -295622.531250 -26059.765625 12562.677734 +v -293680.375000 -23219.488281 11000.119141 +v -293680.375000 -24465.060547 12969.857422 +v -291597.562500 -22912.654297 13370.453125 +v -291597.562500 -24413.900391 15271.540039 +v -291597.562500 -26110.166016 17021.556641 +v -291597.562500 -28168.375000 18735.396484 +v -291597.562500 -26110.166016 -17021.556641 +v -293680.375000 -25907.199219 -14813.985352 +v -293680.375000 -27536.677734 -16511.568359 +v -295622.531250 -27441.134766 -14348.911133 +v -295622.531250 -29001.949219 -15993.200195 +v -297441.718750 -29010.597656 -13877.263672 +v -298851.812500 -29051.027344 -11807.991211 +v -298851.812500 -27956.482422 -10014.706055 +v -300201.031250 -29379.781250 -9722.439453 +v -300201.031250 -28503.988281 -7888.972168 +v -300855.875000 -29240.917969 -7769.759766 +v -300855.875000 -28561.394531 -5891.103027 +v -301499.093750 -29317.271484 -5800.432617 +v -301499.093750 -28833.593750 -3896.860352 +v -302132.000000 -29604.005859 -3835.775879 +v -302132.000000 -29315.169922 -1926.718872 +v -291597.562500 -28167.697266 -18734.890625 +v -293680.375000 -29513.195312 -18173.570312 +v -302132.000000 -29315.169922 1926.718872 +v -302132.000000 -29217.279297 0.000000 +v -301499.093750 -28537.941406 -1957.401855 +v -300855.875000 -28066.615234 -3957.774902 +v -300201.031250 -27809.294922 -5981.491211 +v -298851.812500 -27042.773438 -8126.122559 +v -297441.718750 -26552.103516 -10304.555664 +v -297441.718750 -27691.449219 -12149.743164 +v -295622.531250 -26059.765625 -12562.677734 +v -297441.718750 -29010.597656 13877.263672 +v -295622.531250 -29001.949219 15993.200195 +v -295622.531250 -27441.134766 14348.911133 +v -293680.375000 -25907.199219 14813.985352 +v -293680.375000 -27536.677734 16511.568359 +v -293680.375000 -29513.847656 18174.060547 +v -295622.531250 -23870.708984 8645.489258 +v -297441.718750 -25600.994141 8361.312500 +v -298851.812500 -27042.773438 8126.122559 +v -300201.031250 -28503.988281 7888.972168 +v -300201.031250 -27809.294922 5981.491211 +v -300855.875000 -28561.394531 5891.103027 +v -300201.031250 -27303.466797 4018.499756 +v -300855.875000 -28066.615234 3957.774902 +v -300201.031250 -26994.273438 2018.501587 +v -295622.531250 -23080.689453 6555.089355 +v -297441.718750 -24846.558594 6339.623535 +v -298851.812500 -26318.001953 6161.300293 +v -297441.718750 -24297.230469 4259.101074 +v -297441.718750 -23961.447266 2139.356201 +v -297441.718750 -23847.644531 0.000000 +v -297441.718750 -23961.447266 -2139.356201 +v -297441.718750 -25600.994141 -8361.312500 +v -298851.812500 -26318.001953 -6161.300293 +v -298851.812500 -25358.367188 0.000000 +v -298851.812500 -25467.695312 2079.179688 +v -298851.812500 -25790.275391 4139.299805 +v -300201.031250 -27303.466797 -4018.499756 +v -300855.875000 -27764.173828 -1987.999390 +v -301499.093750 -28437.740234 0.000000 +v -119000.000000 -52011.445312 114729.421875 +v -120000.000000 -51347.406250 114768.835938 +v -119000.000000 -51764.933594 111990.468750 +v -120000.000000 -51104.328125 111990.468750 +v -120000.000000 -51347.406250 109212.093750 +v -120000.000000 -52069.246094 117462.789062 +v -119000.000000 -52743.054688 117380.343750 +v -120000.000000 -53247.921875 119990.468750 +v -119000.000000 -53936.246094 119858.031250 +v -120000.000000 -54847.617188 122275.070312 +v -119000.000000 -55552.667969 122082.851562 +v -120000.000000 -56819.726562 124247.179688 +v -119000.000000 -57540.375000 123983.289062 +v -120000.000000 -59104.328125 125846.875000 +v -119000.000000 -59835.472656 125498.265625 +v -120000.000000 -61632.007812 127025.546875 +v -119000.000000 -62364.195312 126579.101562 +v -120000.000000 -64325.957031 127747.390625 +v -119000.000000 -65045.273438 127191.039062 +v -120000.000000 -67104.328125 127990.468750 +v -119000.000000 -67792.531250 127314.414062 +v -120000.000000 -69882.703125 127747.390625 +v -119000.000000 -70517.664062 126945.273438 +v -120000.000000 -72576.648438 127025.546875 +v -119000.000000 -73133.093750 126095.468750 +v -120000.000000 -75104.328125 125846.875000 +v -119000.000000 -75554.750000 124792.312500 +v -120000.000000 -77388.929688 124247.179688 +v -119000.000000 -77704.812500 123077.703125 +v -120000.000000 -79361.039062 122275.070312 +v -119000.000000 -79514.156250 121006.734375 +v -120000.000000 -80960.734375 119990.468750 +v -119000.000000 -80924.640625 118645.984375 +v -120000.000000 -82139.414062 117462.789062 +v -119000.000000 -81890.929688 116071.312500 +v -120000.000000 -82861.250000 114768.835938 +v -119000.000000 -82381.968750 113365.484375 +v -120000.000000 -83104.328125 111990.468750 +v -119000.000000 -82381.968750 110615.453125 +v -120000.000000 -82861.250000 109212.093750 +v -119000.000000 -81890.929688 107909.625000 +v -120000.000000 -82139.414062 106518.148438 +v -119000.000000 -80924.640625 105334.953125 +v -120000.000000 -80960.734375 103990.468750 +v -119000.000000 -79514.156250 102974.203125 +v -120000.000000 -79361.039062 101705.867188 +v -119000.000000 -77704.812500 100903.234375 +v -120000.000000 -77388.929688 99733.757812 +v -119000.000000 -75554.750000 99188.625000 +v -120000.000000 -75104.328125 98134.062500 +v -119000.000000 -73133.093750 97885.468750 +v -120000.000000 -72576.648438 96955.382812 +v -119000.000000 -70517.664062 97035.664062 +v -120000.000000 -69882.703125 96233.546875 +v -119000.000000 -67792.531250 96666.523438 +v -120000.000000 -67104.328125 95990.468750 +v -119000.000000 -65045.273438 96789.898438 +v -120000.000000 -64325.957031 96233.546875 +v -119000.000000 -62364.195312 97401.835938 +v -120000.000000 -61632.007812 96955.382812 +v -119000.000000 -59835.472656 98482.664062 +v -120000.000000 -59104.328125 98134.062500 +v -119000.000000 -57540.375000 99997.648438 +v -120000.000000 -56819.726562 99733.757812 +v -119000.000000 -55552.667969 101898.085938 +v -120000.000000 -54847.617188 101705.867188 +v -119000.000000 -53936.246094 104122.906250 +v -120000.000000 -53247.921875 103990.468750 +v -119000.000000 -52743.054688 106600.593750 +v -120000.000000 -52069.246094 106518.148438 +v -119000.000000 -52011.445312 109251.515625 +v -40000.000000 -60988.187500 113629.281250 +v -40000.000000 -60772.433594 111990.468750 +v -42591.546875 -59635.851562 113098.312500 +v -41807.843750 -59902.820312 111990.468750 +v -43779.296875 -59052.476562 111990.468750 +v -45497.484375 -58469.875000 113271.265625 +v -45902.464844 -58223.140625 111990.468750 +v -48165.453125 -57416.546875 111990.468750 +v -53063.300781 -55878.519531 111990.468750 +v -52119.945312 -56274.441406 113596.929688 +v -48684.667969 -57347.808594 113437.710938 +v -45497.484375 -58751.261719 114524.343750 +v -42591.546875 -59879.242188 114182.171875 +v -42591.546875 -60279.035156 115218.593750 +v -40000.000000 -61620.746094 115156.414062 +v -42591.546875 -60826.570312 116185.132812 +v -40000.000000 -62627.003906 116467.796875 +v -42591.546875 -61510.003906 117060.867188 +v -42591.546875 -62314.535156 117826.843750 +v -45497.484375 -60636.617188 117852.460938 +v -45497.484375 -61566.753906 118738.023438 +v -48684.667969 -59796.125000 118614.234375 +v -48684.667969 -60847.132812 119614.882812 +v -52119.945312 -58992.109375 119342.953125 +v -52119.945312 -60158.746094 120453.687500 +v -55770.171875 -58228.144531 120035.375000 +v -55770.171875 -59504.648438 121250.703125 +v -59602.199219 -57507.816406 120688.242188 +v -59602.199219 -58887.914062 122002.203125 +v -63582.882812 -56834.703125 121298.312500 +v -63582.882812 -58311.601562 122704.437500 +v -67679.070312 -56212.382812 121862.351562 +v -67679.070312 -57778.777344 123353.687500 +v -71526.382812 -55687.101562 122338.437500 +v -71526.382812 -57329.039062 123901.695312 +v -75417.679688 -55210.769531 122770.164062 +v -75417.679688 -56921.207031 124398.632812 +v -79327.046875 -54786.183594 123154.984375 +v -79327.046875 -56557.683594 124841.593750 +v -83228.554688 -54416.140625 123490.367188 +v -83228.554688 -56240.859375 125227.648438 +v -87096.289062 -54103.445312 123773.781250 +v -87096.289062 -55973.132812 125553.875000 +v -90904.335938 -53850.894531 124002.679688 +v -90904.335938 -55756.898438 125817.351562 +v -94626.781250 -53661.285156 124174.531250 +v -94626.781250 -55594.558594 126015.164062 +v -98237.695312 -53537.417969 124286.796875 +v -98237.695312 -55488.507812 126144.390625 +v -101711.171875 -53482.093750 124336.937500 +v -101711.171875 -55441.136719 126202.109375 +v -105021.281250 -53498.109375 124322.421875 +v -105021.281250 -55454.851562 126185.398438 +v -108142.117188 -53588.265625 124240.710938 +v -108142.117188 -55532.042969 126091.343750 +v -111047.757812 -53755.359375 124089.265625 +v -111047.757812 -55675.105469 125917.015625 +v -113712.281250 -54002.195312 123865.554688 +v -113712.281250 -55886.441406 125659.500000 +v -116109.773438 -54331.562500 123567.031250 +v -116109.773438 -56168.441406 125315.882812 +v -118214.320312 -54746.269531 123191.164062 +v -118214.320312 -56523.507812 124883.234375 +v -118214.320312 -58529.792969 126296.218750 +v -118214.320312 -60721.687500 127399.523438 +v -118214.320312 -63051.750000 128169.273438 +v -118214.320312 -65469.535156 128588.796875 +v -118214.320312 -67922.710938 128649.023438 +v -118214.320312 -70358.171875 128348.632812 +v -118214.320312 -72723.195312 127694.148438 +v -118214.320312 -74966.585938 126699.718750 +v -116109.773438 -75230.421875 127193.320312 +v -116109.773438 -77373.195312 125836.429688 +v -113712.281250 -77637.992188 126193.476562 +v -113712.281250 -79608.000000 124494.140625 +v -111047.757812 -79843.554688 124729.695312 +v -111047.757812 -80842.007812 123646.023438 +v -108142.117188 -81013.968750 123791.921875 +v -108142.117188 -81931.875000 122615.734375 +v -105021.281250 -82030.773438 122686.609375 +v -105021.281250 -82854.953125 121431.031250 +v -101711.171875 -82873.492188 121442.140625 +v -101711.171875 -83593.148438 120121.851562 +v -98237.695312 -83526.179688 120088.828125 +v -98237.695312 -84626.031250 117305.617188 +v -94626.781250 -84466.054688 117257.093750 +v -94626.781250 -85092.070312 114358.601562 +v -90904.335938 -84838.359375 114325.195312 +v -90904.335938 -84981.804688 111405.218750 +v -87096.289062 -84641.140625 111416.375000 +v -87096.289062 -84313.390625 108567.375000 +v -83228.554688 -83899.484375 108649.703125 +v -83228.554688 -83130.960938 105958.468750 +v -79327.046875 -82663.554688 106134.390625 +v -79327.046875 -82132.945312 104882.460938 +v -75417.679688 -81614.937500 105127.460938 +v -75417.679688 -81005.546875 103964.593750 +v -71526.382812 -80448.812500 104286.031250 +v -71526.382812 -79774.562500 103221.273438 +v -67679.070312 -79191.632812 103624.726562 +v -67679.070312 -78467.546875 102664.921875 +v -63582.882812 -77818.296875 103197.742188 +v -63582.882812 -77063.914062 102351.593750 +v -59602.199219 -76411.117188 102983.367188 +v -59602.199219 -75643.921875 102252.929688 +v -55770.171875 -75002.921875 102983.843750 +v -55770.171875 -74240.476562 102368.484375 +v -52119.945312 -73626.273438 103196.640625 +v -52119.945312 -72885.820312 102693.070312 +v -48684.667969 -72312.804688 103614.554688 +v -48684.667969 -71610.898438 103216.929688 +v -45497.484375 -71092.609375 104225.945312 +v -45497.484375 -70444.742188 103925.984375 +v -42591.546875 -69993.664062 105015.000000 +v -42591.546875 -68818.796875 104637.507812 +v -40000.000000 -68743.140625 105874.328125 +v -42591.546875 -67598.132812 104456.437500 +v -40000.000000 -67104.328125 105658.578125 +v -42591.546875 -66364.281250 104476.632812 +v -40000.000000 -65465.515625 105874.328125 +v -42591.546875 -65150.195312 104697.539062 +v -42591.546875 -63988.308594 105113.265625 +v -45497.484375 -64845.113281 103558.968750 +v -45497.484375 -63501.835938 104039.601562 +v -48684.667969 -64551.527344 102463.281250 +v -48684.667969 -63033.687500 103006.367188 +v -52119.945312 -64270.675781 101415.140625 +v -52119.945312 -62585.851562 102017.976562 +v -55770.171875 -64003.820312 100419.210938 +v -55770.171875 -62160.328125 101078.828125 +v -59602.199219 -63752.203125 99480.171875 +v -59602.199219 -61759.105469 100193.312500 +v -63582.882812 -63517.082031 98602.679688 +v -63582.882812 -61384.183594 99365.843750 +v -67679.070312 -63299.703125 97791.406250 +v -67679.070312 -61037.554688 98600.812500 +v -71526.382812 -63116.218750 97106.632812 +v -71526.382812 -60744.976562 97955.078125 +v -75417.679688 -62949.832031 96485.671875 +v -75417.679688 -60479.660156 97369.515625 +v -79327.046875 -62801.519531 95932.164062 +v -79327.046875 -60243.167969 96847.562500 +v -83228.554688 -62672.261719 95449.773438 +v -83228.554688 -60037.054688 96392.664062 +v -87096.289062 -62563.035156 95042.132812 +v -87096.289062 -59862.882812 96008.257812 +v -90904.335938 -62474.816406 94712.898438 +v -90904.335938 -59722.214844 95697.796875 +v -94626.781250 -62408.585938 94465.718750 +v -94626.781250 -59616.601562 95464.703125 +v -98237.695312 -62365.320312 94304.242188 +v -98237.695312 -59547.609375 95312.437500 +v -101711.171875 -62345.992188 94232.117188 +v -101711.171875 -59516.792969 95244.421875 +v -105021.281250 -62351.589844 94253.000000 +v -105021.281250 -59525.714844 95264.117188 +v -108142.117188 -62383.082031 94370.531250 +v -108142.117188 -59575.933594 95374.945312 +v -111047.757812 -62441.449219 94588.359375 +v -111047.757812 -59669.003906 95580.359375 +v -113712.281250 -62527.667969 94910.140625 +v -113712.281250 -59806.488281 95883.789062 +v -116109.773438 -62642.718750 95339.515625 +v -116109.773438 -59989.945312 96288.687500 +v -118214.320312 -62787.578125 95880.132812 +v -118214.320312 -60220.933594 96798.492188 +v -55770.171875 -55254.542969 113748.218750 +v -58377.679688 -54452.261719 111990.468750 +v -59602.199219 -54292.898438 113890.867188 +v -64013.425781 -53151.644531 111990.468750 +v -63582.882812 -53394.285156 114024.164062 +v -67679.070312 -52563.484375 114147.398438 +v -63582.882812 -53841.082031 116013.828125 +v -67679.070312 -53037.351562 116257.640625 +v -63582.882812 -54574.984375 117916.406250 +v -67679.070312 -53815.730469 118275.507812 +v -63582.882812 -55580.113281 119690.703125 +v -67679.070312 -54881.765625 120157.320312 +v -69875.375000 -51990.542969 111990.468750 +v -71526.382812 -51862.226562 114251.421875 +v -71526.382812 -52358.949219 116463.429688 +v -71526.382812 -53174.867188 118578.609375 +v -71526.382812 -54292.312500 120551.179688 +v -75868.359375 -50982.824219 111990.468750 +v -75417.679688 -51226.316406 114345.750000 +v -75417.679688 -51743.765625 116650.046875 +v -75417.679688 -52593.722656 118853.476562 +v -75417.679688 -53757.789062 120908.343750 +v -79327.046875 -50659.492188 114429.828125 +v -81897.226562 -50142.359375 111990.468750 +v -83228.554688 -50165.484375 114503.109375 +v -87866.796875 -49483.019531 111990.468750 +v -87096.289062 -49748.031250 114565.031250 +v -90904.335938 -49410.871094 114615.046875 +v -87096.289062 -50313.652344 117083.867188 +v -90904.335938 -49987.480469 117182.804688 +v -87096.289062 -51242.742188 119492.437500 +v -90904.335938 -50934.621094 119638.171875 +v -87096.289062 -52515.187500 121738.617188 +v -90904.335938 -52231.785156 121927.984375 +v -93681.921875 -49018.679688 111990.468750 +v -94626.781250 -49157.742188 114652.593750 +v -94626.781250 -49742.601562 117257.093750 +v -94626.781250 -50703.289062 119747.578125 +v -94626.781250 -52019.011719 122070.156250 +v -98237.695312 -48992.378906 114677.125000 +v -99247.429688 -48763.203125 111990.468750 +v -101711.171875 -48918.523438 114688.078125 +v -104468.156250 -48730.468750 111990.468750 +v -105021.281250 -48939.902344 114684.906250 +v -106919.492188 -48801.964844 111990.468750 +v -108142.117188 -49060.261719 114667.054688 +v -109248.937500 -48934.343750 111990.468750 +v -111047.757812 -49283.335938 114633.960938 +v -111444.617188 -49129.343750 111990.468750 +v -113712.281250 -49612.859375 114585.085938 +v -113494.617188 -49388.695312 111990.468750 +v -115387.054688 -49714.136719 111990.468750 +v -116109.773438 -50052.570312 114519.859375 +v -117110.023438 -50107.402344 111990.468750 +v -118214.320312 -50606.207031 114437.734375 +v -118651.640625 -50570.218750 111990.468750 +v -118214.320312 -51143.863281 116832.023438 +v -116109.773438 -50608.269531 116994.492188 +v -116109.773438 -51521.054688 119360.804688 +v -113712.281250 -51119.210938 119550.867188 +v -113712.281250 -52401.566406 121814.539062 +v -111047.757812 -52124.582031 121999.617188 +v -118214.320312 -52027.015625 119121.507812 +v -116109.773438 -52771.175781 121567.578125 +v -118214.320312 -53236.542969 121256.625000 +v -118214.320312 -77039.781250 125386.882812 +v -116109.773438 -79293.671875 124179.812500 +v -113712.281250 -80587.992188 123430.500000 +v -111047.757812 -81748.562500 122484.382812 +v -108142.117188 -82750.585938 121368.476562 +v -105021.281250 -83573.765625 120112.296875 +v -101711.171875 -84697.476562 117327.289062 +v -98237.695312 -85257.812500 114380.421875 +v -94626.781250 -85237.570312 111396.843750 +v -90904.335938 -84647.687500 108500.875000 +v -87096.289062 -83525.929688 105809.812500 +v -83228.554688 -82584.414062 104668.937500 +v -79327.046875 -81501.804688 103678.078125 +v -75417.679688 -80303.171875 102855.414062 +v -71526.382812 -79015.554688 102215.179688 +v -67679.070312 -77667.445312 101767.492188 +v -63582.882812 -76242.898438 101569.921875 +v -59602.199219 -74819.593750 101587.632812 +v -55770.171875 -73430.289062 101817.500000 +v -52119.945312 -72106.687500 102251.703125 +v -48684.667969 -70878.835938 102877.992188 +v -45497.484375 -69086.460938 103489.562500 +v -118214.320312 -78897.906250 123784.046875 +v -116109.773438 -80249.031250 123142.914062 +v -113712.281250 -81477.781250 122290.335938 +v -111047.757812 -82557.156250 121252.539062 +v -108142.117188 -83464.632812 120058.476562 +v -105021.281250 -84676.796875 117321.015625 +v -101711.171875 -85331.835938 114390.164062 +v -98237.695312 -85404.648438 111391.375000 +v -94626.781250 -84898.671875 108450.953125 +v -90904.335938 -83844.929688 105689.750000 +v -87096.289062 -82965.914062 104488.500000 +v -83228.554688 -81934.312500 103428.375000 +v -79327.046875 -80774.351562 102529.304688 +v -75417.679688 -79512.500000 101807.351562 +v -71526.382812 -78176.867188 101274.476562 +v -67679.070312 -76796.679688 100938.460938 +v -63582.882812 -75360.757812 100857.968750 +v -59602.199219 -73943.656250 100991.929688 +v -55770.171875 -72577.781250 101334.562500 +v -52119.945312 -71294.093750 101875.476562 +v -48684.667969 -69344.046875 102384.851562 +v -45497.484375 -67675.226562 103280.226562 +v -118214.320312 -79822.250000 122780.820312 +v -116109.773438 -81116.453125 122031.414062 +v -113712.281250 -82271.421875 121081.273438 +v -111047.757812 -83262.375000 119958.734375 +v -108142.117188 -84560.359375 117285.695312 +v -105021.281250 -85310.406250 114387.343750 +v -101711.171875 -85479.281250 111388.937500 +v -98237.695312 -85062.632812 108418.335938 +v -94626.781250 -84084.429688 105599.609375 +v -90904.335938 -83274.039062 104342.765625 +v -87096.289062 -82299.789062 103217.367188 +v -83228.554688 -81185.007812 102245.085938 +v -79327.046875 -79955.453125 101443.820312 +v -75417.679688 -78638.820312 100827.398438 +v -71526.382812 -77264.109375 100405.460938 +v -67679.070312 -75861.078125 100183.359375 +v -63582.882812 -74423.382812 100220.476562 +v -59602.199219 -73021.968750 100469.804688 +v -55770.171875 -71688.664062 100922.906250 +v -52119.945312 -69590.445312 101328.085938 +v -48684.667969 -67749.414062 102148.312500 +v -45497.484375 -66248.742188 103303.570312 +v -118214.320312 -80661.507812 121705.406250 +v -118214.320312 -81410.078125 120565.007812 +v -118214.320312 -82062.945312 119367.242188 +v -116109.773438 -82564.921875 119614.789062 +v -116109.773438 -83600.390625 116994.492188 +v -113712.281250 -84025.773438 117123.531250 +v -113712.281250 -84635.906250 114298.546875 +v -111047.757812 -84966.187500 114342.023438 +v -111047.757812 -85110.671875 111401.000000 +v -108142.117188 -85336.062500 111393.625000 +v -108142.117188 -84995.328125 108431.726562 +v -105021.281250 -85114.664062 108407.992188 +v -105021.281250 -84290.539062 105522.039062 +v -101711.171875 -84310.765625 105514.421875 +v -101711.171875 -83723.984375 104129.953125 +v -98237.695312 -83656.484375 104161.882812 +v -98237.695312 -82961.367188 102835.406250 +v -94626.781250 -82816.585938 102918.992188 +v -94626.781250 -82022.703125 101665.312500 +v -90904.335938 -81812.289062 101810.945312 +v -90904.335938 -80931.210938 100643.039062 +v -87096.289062 -80667.734375 100859.273438 +v -87096.289062 -79712.710938 99788.085938 +v -83228.554688 -79409.453125 100081.578125 +v -83228.554688 -78395.093750 99115.820312 +v -79327.046875 -78065.804688 99491.296875 +v -79327.046875 -77007.695312 98637.320312 +v -75417.679688 -76666.343750 99097.585938 +v -75417.679688 -75580.742188 98359.289062 +v -71526.382812 -75241.265625 98905.210938 +v -71526.382812 -74144.703125 98284.023438 +v -67679.070312 -73820.789062 98914.625000 +v -67679.070312 -72729.757812 98409.484375 +v -63582.882812 -72408.343750 99185.445312 +v -63582.882812 -70251.617188 98492.476562 +v -59602.199219 -70045.335938 99377.195312 +v -59602.199219 -67951.406250 99066.585938 +v -55770.171875 -67887.820312 100036.671875 +v -55770.171875 -65930.140625 100068.710938 +v -52119.945312 -66031.195312 101094.796875 +v -118214.320312 -83064.796875 116832.023438 +v -116109.773438 -84195.187500 114240.523438 +v -113712.281250 -84777.718750 111411.898438 +v -111047.757812 -84774.148438 108475.726562 +v -108142.117188 -84176.656250 105564.898438 +v -105021.281250 -83704.445312 104139.195312 +v -101711.171875 -83026.023438 102798.070312 +v -98237.695312 -82160.164062 101570.171875 +v -94626.781250 -81129.023438 100480.695312 +v -90904.335938 -79957.640625 99551.046875 +v -87096.289062 -78673.351562 98798.531250 +v -83228.554688 -77305.195312 98236.187500 +v -79327.046875 -75883.335938 97872.671875 +v -75417.679688 -74438.437500 97712.179688 +v -71526.382812 -73001.054688 97754.523438 +v -67679.070312 -70442.335938 97674.523438 +v -63582.882812 -68010.820312 98160.085938 +v -59602.199219 -65834.851562 99101.218750 +v -118214.320312 -83640.281250 114167.468750 +v -116109.773438 -84333.437500 111426.445312 +v -113712.281250 -84447.414062 108540.710938 +v -111047.757812 -83965.601562 105644.335938 +v -108142.117188 -83594.453125 104191.218750 +v -105021.281250 -83007.304688 102808.882812 +v -101711.171875 -82221.562500 101527.679688 +v -98237.695312 -81258.250000 100374.648438 +v -94626.781250 -80141.523438 99373.085938 +v -90904.335938 -78898.085938 98542.265625 +v -87096.289062 -77556.593750 97897.218750 +v -83228.554688 -76147.062500 97448.570312 +v -79327.046875 -74700.250000 97202.460938 +v -75417.679688 -73247.062500 97160.585938 +v -71526.382812 -70603.320312 96984.117188 +v -67679.070312 -68065.750000 97321.992188 +v -63582.882812 -65745.804688 98197.148438 +v -118214.320312 -83774.039062 111444.757812 +v -116109.773438 -84011.437500 108627.437500 +v -113712.281250 -83653.820312 105761.679688 +v -111047.757812 -83390.585938 104287.640625 +v -108142.117188 -82901.929688 102869.718750 +v -105021.281250 -82203.789062 101539.984375 +v -101711.171875 -81315.968750 100327.281250 +v -98237.695312 -80261.648438 99256.828125 +v -94626.781250 -79066.812500 98349.875000 +v -90904.335938 -77759.632812 97623.453125 +v -87096.289062 -76369.914062 97090.187500 +v -83228.554688 -74928.437500 96758.226562 +v -79327.046875 -73466.351562 96631.179688 +v -75417.679688 -70749.296875 96358.039062 +v -71526.382812 -68112.117188 96614.578125 +v -67679.070312 -65663.484375 97361.304688 +v -118214.320312 -83462.492188 108736.625000 +v -116109.773438 -83237.789062 105918.265625 +v -113712.281250 -83089.445312 104430.070312 +v -111047.757812 -82706.632812 102982.476562 +v -108142.117188 -82103.734375 101609.226562 +v -105021.281250 -81299.257812 100340.992188 +v -101711.171875 -80315.304688 99204.898438 +v -98237.695312 -79177.031250 98224.187500 +v -94626.781250 -77912.078125 97417.906250 +v -90904.335938 -76549.906250 96800.742188 +v -87096.289062 -75121.257812 96382.835938 +v -83228.554688 -73657.468750 96169.781250 +v -79327.046875 -70879.421875 95799.984375 +v -75417.679688 -68154.164062 95973.085938 +v -71526.382812 -65593.992188 96655.789062 +v -118214.320312 -82713.968750 106115.414062 +v -116109.773438 -82687.601562 104620.132812 +v -113712.281250 -82418.132812 103149.039062 +v -111047.757812 -81918.304688 101737.562500 +v -108142.117188 -81205.203125 100418.179688 +v -105021.281250 -80299.773438 99219.929688 +v -101711.171875 -79226.265625 98168.046875 +v -98237.695312 -78011.656250 97283.632812 +v -94626.781250 -76685.039062 96583.429688 +v -90904.335938 -75276.992188 96079.640625 +v -87096.289062 -73818.968750 95779.882812 +v -83228.554688 -70992.828125 95313.617188 +v -79327.046875 -68191.640625 95401.289062 +v -75417.679688 -65530.980469 96016.015625 +v -118214.320312 -82181.640625 104859.429688 +v -118214.320312 -81548.453125 103651.148438 +v -118214.320312 -80818.648438 102498.648438 +v -116109.773438 -81278.867188 102180.125000 +v -116109.773438 -80429.742188 101054.585938 +v -113712.281250 -80773.367188 100772.578125 +v -113712.281250 -79810.906250 99693.054688 +v -111047.757812 -80050.289062 99461.382812 +v -111047.757812 -78983.093750 98445.328125 +v -108142.117188 -79131.789062 98275.781250 +v -108142.117188 -77970.781250 97338.757812 +v -105021.281250 -78043.257812 97241.023438 +v -105021.281250 -76801.335938 96396.414062 +v -101711.171875 -76812.750000 96378.062500 +v -101711.171875 -75504.414062 95636.898438 +v -98237.695312 -75470.296875 95703.312500 +v -98237.695312 -74111.312500 95074.117188 +v -94626.781250 -74047.335938 95228.562500 +v -94626.781250 -71224.164062 94321.460938 +v -90904.335938 -71166.054688 94570.671875 +v -90904.335938 -68274.195312 94141.710938 +v -87096.289062 -68251.906250 94481.828125 +v -87096.289062 -65384.500000 94528.750000 +v -83228.554688 -65425.863281 94948.734375 +v -118214.320312 -79997.093750 101409.648438 +v -116109.773438 -79491.476562 100002.195312 +v -113712.281250 -78763.445312 98695.789062 +v -111047.757812 -77836.437500 97519.890625 +v -108142.117188 -76737.078125 96499.742188 +v -105021.281250 -75494.539062 95656.125000 +v -101711.171875 -74139.882812 95005.132812 +v -98237.695312 -71262.125000 94158.656250 +v -94626.781250 -68290.937500 93886.359375 +v -90904.335938 -65351.089844 94189.539062 +v -118214.320312 -79089.296875 100391.429688 +v -118214.320312 -78101.320312 99450.796875 +v -118214.320312 -77039.781250 98594.054688 +v -116109.773438 -77373.195312 98144.507812 +v -116109.773438 -76207.343750 97351.632812 +v -113712.281250 -76442.078125 96974.148438 +v -113712.281250 -75183.695312 96261.281250 +v -111047.757812 -75335.906250 95964.953125 +v -111047.757812 -73998.750000 95345.867188 +v -108142.117188 -74085.046875 95137.515625 +v -108142.117188 -71246.539062 94225.492188 +v -105021.281250 -71274.171875 94106.992188 +v -105021.281250 -68305.335938 93666.609375 +v -101711.171875 -68306.750000 93645.039062 +v -101711.171875 -65302.304688 93694.203125 +v -98237.695312 -65309.621094 93768.507812 +v -118214.320312 -75911.781250 97826.929688 +v -116109.773438 -74980.593750 96656.687500 +v -113712.281250 -73871.265625 95653.632812 +v -111047.757812 -71195.328125 94445.109375 +v -108142.117188 -68297.382812 93788.023438 +v -105021.281250 -65304.421875 93715.710938 +v -118214.320312 -74724.867188 97154.546875 +v -118214.320312 -73486.968750 96581.414062 +v -118214.320312 -70891.648438 95747.523438 +v -116109.773438 -71018.742188 95202.445312 +v -116109.773438 -68231.773438 94789.039062 +v -113712.281250 -68260.843750 94345.468750 +v -113712.281250 -65371.105469 94392.757812 +v -111047.757812 -65338.453125 94061.234375 +v -118214.320312 -68195.164062 95347.539062 +v -116109.773438 -65414.675781 94835.140625 +v -118214.320312 -65469.535156 95392.140625 +v -118214.320312 -57838.171875 98122.687500 +v -118214.320312 -59002.453125 97411.828125 +v -116109.773438 -58730.574219 96922.601562 +v -113712.281250 -58514.640625 96534.054688 +v -111047.757812 -58352.820312 96242.867188 +v -108142.117188 -58243.273438 96045.750000 +v -105021.281250 -58184.167969 95939.390625 +v -101711.171875 -58173.667969 95920.500000 +v -98237.695312 -58209.937500 95985.765625 +v -94626.781250 -58291.144531 96131.882812 +v -90904.335938 -58415.449219 96355.562500 +v -87096.289062 -58581.023438 96653.500000 +v -83228.554688 -58786.023438 97022.382812 +v -79327.046875 -59028.621094 97458.914062 +v -75417.679688 -59306.976562 97959.789062 +v -71526.382812 -59619.257812 98521.718750 +v -67679.070312 -59963.628906 99141.382812 +v -63582.882812 -60371.621094 99875.523438 +v -59602.199219 -60812.910156 100669.585938 +v -55770.171875 -61285.152344 101519.351562 +v -52119.945312 -61786.003906 102420.585938 +v -48684.667969 -62313.109375 103369.078125 +v -45497.484375 -62864.132812 104360.593750 +v -42591.546875 -63436.718750 105390.914062 +v -40000.000000 -63938.382812 106506.890625 +v -118214.320312 -55702.937500 99817.328125 +v -118214.320312 -56735.875000 98926.304688 +v -116109.773438 -56387.933594 98487.906250 +v -116109.773438 -57527.222656 97657.312500 +v -113712.281250 -56111.589844 98139.718750 +v -113712.281250 -57280.257812 97287.710938 +v -111047.757812 -55904.500000 97878.781250 +v -111047.757812 -57095.179688 97010.718750 +v -108142.117188 -55764.304688 97702.140625 +v -108142.117188 -56969.890625 96823.210938 +v -105021.281250 -55688.664062 97606.835938 +v -105021.281250 -56902.292969 96722.046875 +v -101711.171875 -55675.226562 97589.906250 +v -101711.171875 -56890.285156 96704.070312 +v -98237.695312 -55721.644531 97648.390625 +v -98237.695312 -56931.765625 96766.156250 +v -94626.781250 -55825.566406 97779.328125 +v -94626.781250 -57024.640625 96905.148438 +v -90904.335938 -55984.652344 97979.773438 +v -90904.335938 -57166.812500 97117.921875 +v -87096.289062 -56196.542969 98246.757812 +v -87096.289062 -57356.175781 97401.328125 +v -83228.554688 -56458.894531 98577.320312 +v -83228.554688 -57590.636719 97752.226562 +v -79327.046875 -56769.359375 98968.500000 +v -79327.046875 -57868.097656 98167.468750 +v -75417.679688 -57125.589844 99417.351562 +v -75417.679688 -58186.457031 98643.929688 +v -71526.382812 -57525.234375 99920.898438 +v -71526.382812 -58543.613281 99178.453125 +v -67679.070312 -57965.949219 100476.195312 +v -67679.070312 -58937.472656 99767.906250 +v -63582.882812 -58488.078125 101134.070312 +v -63582.882812 -59404.093750 100466.250000 +v -59602.199219 -59052.820312 101845.640625 +v -59602.199219 -59908.796875 101221.593750 +v -55770.171875 -59657.179688 102607.125000 +v -55770.171875 -60448.906250 102029.921875 +v -52119.945312 -60298.148438 103414.742188 +v -52119.945312 -61021.730469 102887.218750 +v -48684.667969 -60972.718750 104264.695312 +v -48684.667969 -61624.585938 103789.453125 +v -45497.484375 -61677.894531 105153.210938 +v -45497.484375 -62254.792969 104732.625000 +v -42591.546875 -62410.671875 106076.500000 +v -42591.546875 -62909.664062 105712.710938 +v -118214.320312 -53086.789062 102952.453125 +v -118214.320312 -53872.269531 101837.156250 +v -118214.320312 -54746.269531 100789.773438 +v -116109.773438 -53428.238281 101496.437500 +v -116109.773438 -54331.562500 100413.906250 +v -113712.281250 -53075.574219 101225.828125 +v -113712.281250 -54002.195312 100115.382812 +v -111047.757812 -52811.285156 101023.031250 +v -111047.757812 -53755.359375 99891.671875 +v -108142.117188 -52632.371094 100885.742188 +v -108142.117188 -53588.265625 99740.226562 +v -105021.281250 -52535.839844 100811.671875 +v -105021.281250 -53498.109375 99658.507812 +v -101711.171875 -52518.691406 100798.515625 +v -101711.171875 -53482.093750 99643.992188 +v -98237.695312 -52577.929688 100843.968750 +v -98237.695312 -53537.417969 99694.140625 +v -94626.781250 -52710.554688 100945.734375 +v -94626.781250 -53661.285156 99806.406250 +v -90904.335938 -52913.570312 101101.515625 +v -90904.335938 -53850.894531 99978.257812 +v -87096.289062 -53183.984375 101309.015625 +v -87096.289062 -54103.445312 100207.156250 +v -83228.554688 -53518.796875 101565.921875 +v -83228.554688 -54416.140625 100490.562500 +v -79327.046875 -53915.007812 101869.945312 +v -79327.046875 -54786.183594 100825.953125 +v -75417.679688 -54369.621094 102218.781250 +v -75417.679688 -55210.769531 101210.773438 +v -71526.382812 -54879.644531 102610.140625 +v -71526.382812 -55687.101562 101642.500000 +v -67679.070312 -55442.074219 103041.703125 +v -67679.070312 -56212.382812 102118.585938 +v -63582.882812 -56108.406250 103553.000000 +v -63582.882812 -56834.703125 102682.625000 +v -59602.199219 -56829.125000 104106.023438 +v -59602.199219 -57507.816406 103292.695312 +v -55770.171875 -57600.394531 104697.843750 +v -55770.171875 -58228.144531 103945.562500 +v -52119.945312 -58418.386719 105325.515625 +v -52119.945312 -58992.109375 104637.976562 +v -48684.667969 -59279.269531 105986.085938 +v -48684.667969 -59796.125000 105366.695312 +v -45497.484375 -60179.203125 106676.632812 +v -45497.484375 -60636.617188 106128.476562 +v -42591.546875 -61114.355469 107394.203125 +v -42591.546875 -61510.003906 106920.070312 +v -40000.000000 -62627.003906 107513.140625 +v -42591.546875 -61943.074219 106479.851562 +v -118214.320312 -51801.765625 105356.562500 +v -118214.320312 -52395.078125 104128.210938 +v -116109.773438 -51901.472656 103864.375000 +v -116109.773438 -52616.394531 102649.156250 +v -113712.281250 -51509.437500 103654.828125 +v -113712.281250 -52242.796875 102408.273438 +v -111047.757812 -51215.644531 103497.789062 +v -111047.757812 -51962.820312 102227.757812 +v -108142.117188 -51016.757812 103391.484375 +v -108142.117188 -51773.285156 102105.554688 +v -105021.281250 -50909.449219 103334.125000 +v -105021.281250 -51671.023438 102039.617188 +v -101711.171875 -50890.386719 103323.937500 +v -101711.171875 -51652.859375 102027.906250 +v -98237.695312 -50956.238281 103359.132812 +v -98237.695312 -51715.609375 102068.367188 +v -94626.781250 -51103.671875 103437.937500 +v -94626.781250 -51856.109375 102158.953125 +v -90904.335938 -51329.351562 103558.570312 +v -90904.335938 -52071.179688 102297.625000 +v -87096.289062 -51629.953125 103719.242188 +v -87096.289062 -52357.644531 102482.328125 +v -83228.554688 -52002.140625 103918.179688 +v -83228.554688 -52712.332031 102711.015625 +v -79327.046875 -52442.585938 104153.601562 +v -79327.046875 -53132.062500 102981.640625 +v -75417.679688 -52947.953125 104423.726562 +v -75417.679688 -53613.664062 103292.164062 +v -71526.382812 -53514.910156 104726.773438 +v -71526.382812 -54153.960938 103640.523438 +v -67679.070312 -54140.128906 105060.960938 +v -67679.070312 -54749.777344 104024.687500 +v -63582.882812 -54880.847656 105456.882812 +v -63582.882812 -55455.664062 104479.820312 +v -59602.199219 -55682.027344 105885.117188 +v -59602.199219 -56219.167969 104972.101562 +v -55770.171875 -56539.402344 106343.398438 +v -55770.171875 -57036.222656 105498.906250 +v -52119.945312 -57448.710938 106829.437500 +v -52119.945312 -57902.773438 106057.625000 +v -48684.667969 -58405.699219 107340.953125 +v -48684.667969 -58814.757812 106645.640625 +v -45497.484375 -59406.097656 107875.679688 +v -45497.484375 -59768.113281 107260.335938 +v -42591.546875 -60445.652344 108431.328125 +v -42591.546875 -60758.781250 107899.078125 +v -40000.000000 -61620.746094 108824.523438 +v -118214.320312 -51310.820312 106629.296875 +v -118214.320312 -50648.457031 109273.593750 +v -116109.773438 -50096.238281 109182.421875 +v -113712.281250 -49657.652344 109110.007812 +v -111047.757812 -49328.972656 109055.742188 +v -108142.117188 -49106.472656 109019.007812 +v -105021.281250 -48986.421875 108999.187500 +v -101711.171875 -48965.093750 108995.671875 +v -98237.695312 -49038.761719 109007.828125 +v -94626.781250 -49203.703125 109035.062500 +v -90904.335938 -49456.183594 109076.750000 +v -94626.781250 -49924.218750 106158.609375 +v -90904.335938 -50166.535156 106240.859375 +v -94626.781250 -50458.265625 104774.132812 +v -90904.335938 -50693.050781 104875.921875 +v -87096.289062 -49792.476562 109132.273438 +v -87096.289062 -50489.292969 106350.421875 +v -87096.289062 -51005.777344 105011.492188 +v -83228.554688 -50208.859375 109201.015625 +v -79327.046875 -50701.605469 109282.367188 +v -75417.679688 -51266.980469 109375.710938 +v -71526.382812 -51901.261719 109480.429688 +v -75417.679688 -51904.445312 106830.804688 +v -71526.382812 -52513.195312 107037.445312 +v -75417.679688 -52376.937500 105605.914062 +v -71526.382812 -52966.765625 105861.609375 +v -67679.070312 -52600.718750 109595.914062 +v -67679.070312 -53184.503906 107265.320312 +v -67679.070312 -53617.203125 106143.585938 +v -63582.882812 -53429.394531 109732.726562 +v -63582.882812 -53979.820312 107535.296875 +v -63582.882812 -54387.800781 106477.648438 +v -59602.199219 -54325.707031 109880.710938 +v -55770.171875 -55284.890625 110039.070312 +v -52119.945312 -56302.175781 110207.023438 +v -48684.667969 -57372.796875 110383.789062 +v -45497.484375 -58491.988281 110568.562500 +v -48684.667969 -57764.496094 108820.023438 +v -45497.484375 -58838.640625 109184.648438 +v -48684.667969 -58054.828125 108067.367188 +v -45497.484375 -59095.582031 108518.546875 +v -42591.546875 -59654.980469 110760.578125 +v -40000.000000 -60988.187500 110351.656250 +v -42591.546875 -59954.820312 109563.539062 +v -42591.546875 -60177.066406 108987.390625 +v -40000.000000 -70270.273438 106506.890625 +v -42591.546875 -70554.039062 105274.445312 +v -45497.484375 -71713.796875 104577.843750 +v -48684.667969 -72979.875000 104068.210938 +v -52119.945312 -74323.101562 103759.031250 +v -55770.171875 -75712.539062 103659.453125 +v -59602.199219 -77116.062500 103774.054688 +v -63582.882812 -78501.015625 104102.710938 +v -67679.070312 -79834.859375 104640.492188 +v -71526.382812 -81033.789062 105402.320312 +v -75417.679688 -82127.250000 106336.242188 +v -79327.046875 -83409.664062 108747.132812 +v -83228.554688 -84219.351562 111430.179688 +v -87096.289062 -84500.429688 114280.710938 +v -90904.335938 -84221.171875 117182.804688 +v -94626.781250 -83376.250000 120014.890625 +v -98237.695312 -82809.445312 121403.757812 +v -101711.171875 -82048.343750 122699.203125 +v -105021.281250 -81106.750000 123870.640625 +v -108142.117188 -80003.015625 124889.156250 +v -111047.757812 -77836.437500 126461.046875 +v -113712.281250 -75439.968750 127585.359375 +v -116109.773438 -72911.750000 128221.125000 +v -40000.000000 -71581.656250 107513.140625 +v -42591.546875 -71601.976562 105926.093750 +v -42591.546875 -71091.343750 105578.828125 +v -40000.000000 -72587.906250 108824.523438 +v -42591.546875 -72940.710938 107200.671875 +v -42591.546875 -72529.757812 106739.742188 +v -42591.546875 -72082.515625 106313.929688 +v -45497.484375 -73376.781250 105920.000000 +v -45497.484375 -72859.710938 105427.710938 +v -48684.667969 -74191.898438 105131.125000 +v -48684.667969 -73607.632812 104574.867188 +v -52119.945312 -74971.640625 104376.492188 +v -40000.000000 -73220.468750 110351.656250 +v -42591.546875 -74170.601562 109330.914062 +v -42591.546875 -73929.625000 108762.343750 +v -42591.546875 -73642.992188 108215.367188 +v -45497.484375 -74995.187500 108258.367188 +v -45497.484375 -74663.804688 107626.000000 +v -48684.667969 -76020.625000 107773.375000 +v -48684.667969 -75646.171875 107058.828125 +v -52119.945312 -77001.554688 107309.429688 +v -52119.945312 -76585.914062 106516.273438 +v -55770.171875 -77933.617188 106868.593750 +v -55770.171875 -77478.835938 106000.742188 +v -59602.199219 -78812.445312 106452.937500 +v -59602.199219 -78320.750000 105514.664062 +v -63582.882812 -79633.671875 106064.531250 +v -63582.882812 -79107.492188 105060.437500 +v -67679.070312 -80392.929688 105705.429688 +v -42591.546875 -74509.445312 110517.500000 +v -40000.000000 -73436.218750 111990.468750 +v -42591.546875 -74650.476562 111743.429688 +v -42591.546875 -74589.929688 112975.968750 +v -45497.484375 -75758.585938 113129.820312 +v -45497.484375 -75457.398438 114524.343750 +v -48684.667969 -76542.890625 114853.625000 +v -48684.667969 -75950.429688 116352.882812 +v -52119.945312 -76923.640625 116832.820312 +v -52119.945312 -76495.078125 117619.062500 +v -55770.171875 -77379.437500 118149.132812 +v -55770.171875 -76841.781250 118968.226562 +v -59602.199219 -77632.000000 119534.492188 +v -59602.199219 -76980.281250 120369.593750 +v -63582.882812 -77673.000000 120957.320312 +v -63582.882812 -76904.867188 121791.007812 +v -67679.070312 -77498.765625 122384.906250 +v -67679.070312 -75861.078125 123797.578125 +v -71526.382812 -76283.390625 124366.992188 +v -71526.382812 -74368.023438 125579.882812 +v -75417.679688 -74671.070312 126146.843750 +v -75417.679688 -72512.000000 127103.898438 +v -79327.046875 -72705.046875 127643.429688 +v -79327.046875 -70347.664062 128295.804688 +v -83228.554688 -70445.093750 128785.625000 +v -83228.554688 -67944.570312 129094.031250 +v -87096.289062 -67965.281250 129515.539062 +v -87096.289062 -65384.500000 129452.187500 +v -90904.335938 -65351.089844 129791.390625 +v -90904.335938 -62758.128906 129341.468750 +v -94626.781250 -62695.949219 129589.703125 +v -94626.781250 -60161.320312 128752.375000 +v -98237.695312 -60097.347656 128906.820312 +v -98237.695312 -57691.042969 127695.585938 +v -101711.171875 -57652.656250 127759.632812 +v -40000.000000 -73220.468750 113629.281250 +v -42591.546875 -74329.414062 114182.171875 +v -45497.484375 -74933.070312 115851.179688 +v -48684.667969 -75564.343750 117061.203125 +v -52119.945312 -76003.687500 118367.664062 +v -55770.171875 -76238.984375 119740.640625 +v -59602.199219 -76262.500000 121148.640625 +v -63582.882812 -75360.757812 123122.968750 +v -67679.070312 -74033.835938 124954.664062 +v -71526.382812 -72295.421875 126498.609375 +v -75417.679688 -70235.867188 127733.781250 +v -79327.046875 -67920.070312 128595.218750 +v -83228.554688 -65425.863281 129032.203125 +v -87096.289062 -62840.949219 129010.835938 +v -90904.335938 -60259.250000 128515.953125 +v -94626.781250 -57776.984375 127552.203125 +v -42591.546875 -73875.890625 115329.835938 +v -40000.000000 -72587.906250 115156.414062 +v -42591.546875 -73580.343750 115872.046875 +v -42591.546875 -73241.476562 116388.289062 +v -45497.484375 -74199.609375 117074.875000 +v -45497.484375 -73760.375000 117637.703125 +v -48684.667969 -74625.343750 118371.570312 +v -48684.667969 -74078.718750 118964.859375 +v -52119.945312 -74846.007812 119732.148438 +v -52119.945312 -73626.273438 120784.296875 +v -55770.171875 -74240.476562 121612.445312 +v -55770.171875 -72751.398438 122555.398438 +v -59602.199219 -73209.679688 123412.773438 +v -59602.199219 -71467.593750 124184.984375 +v -63582.882812 -71773.640625 125040.320312 +v -63582.882812 -69808.289062 125584.210938 +v -67679.070312 -69972.148438 126407.960938 +v -67679.070312 -67825.617188 126672.710938 +v -71526.382812 -67860.406250 127380.789062 +v -71526.382812 -65593.992188 127325.148438 +v -75417.679688 -65530.980469 127964.921875 +v -75417.679688 -63204.070312 127561.164062 +v -79327.046875 -63064.835938 128117.023438 +v -79327.046875 -60742.300781 127349.757812 +v -83228.554688 -60551.183594 127811.156250 +v -83228.554688 -58300.734375 126678.375000 +v -87096.289062 -58083.773438 127040.351562 +v -40000.000000 -71581.656250 116467.796875 +v -42591.546875 -72861.554688 116875.109375 +v -45497.484375 -73276.617188 118162.757812 +v -48684.667969 -72979.875000 119912.726562 +v -52119.945312 -72265.359375 121646.085938 +v -55770.171875 -71140.078125 123269.640625 +v -59602.199219 -69631.062500 124693.218750 +v -63582.882812 -67784.406250 125833.828125 +v -67679.070312 -65663.484375 126619.632812 +v -71526.382812 -63360.277344 126937.562500 +v -75417.679688 -60961.589844 126820.351562 +v -79327.046875 -58557.484375 126250.015625 +v -40000.000000 -70270.273438 117474.046875 +v -42591.546875 -71601.976562 118054.843750 +v -42591.546875 -72443.125000 117329.265625 +v -40000.000000 -68743.140625 118106.609375 +v -42591.546875 -69647.914062 119099.312500 +v -42591.546875 -70663.468750 118649.148438 +v -45497.484375 -71219.117188 119688.695312 +v -45497.484375 -72304.148438 119001.609375 +v -48684.667969 -71753.843750 120689.101562 +v -42591.546875 -68577.296875 119395.585938 +v -40000.000000 -67104.328125 118322.359375 +v -42591.546875 -67474.796875 119531.570312 +v -42591.546875 -66364.281250 119504.304688 +v -45497.484375 -66248.742188 120677.367188 +v -45497.484375 -64983.371094 120457.804688 +v -48684.667969 -64707.750000 121558.148438 +v -48684.667969 -63329.816406 121102.945312 +v -52119.945312 -62914.562500 122105.460938 +v -52119.945312 -61475.730469 121381.210938 +v -55770.171875 -60945.664062 122265.578125 +v -40000.000000 -65465.515625 118106.609375 +v -42591.546875 -65269.781250 119314.390625 +v -45497.484375 -63763.910156 120054.953125 +v -48684.667969 -62033.593750 120450.476562 +v -42591.546875 -64214.992188 118965.937500 +v -40000.000000 -63938.382812 117474.046875 +v -42591.546875 -63222.753906 118466.484375 +v -42591.546875 -73312.617188 107693.648438 +v -45497.484375 -74281.851562 107022.835938 +v -48684.667969 -75214.585938 106377.281250 +v -52119.945312 -76106.843750 105759.742188 +v -55770.171875 -76954.648438 105172.960938 +v -59602.199219 -77754.023438 104619.703125 +v -45497.484375 -73851.882812 106452.890625 +v -48684.667969 -74728.742188 105733.273438 +v -52119.945312 -75567.546875 105044.882812 +v -55770.171875 -76364.562500 104390.789062 +v -45497.484375 -72304.148438 104979.328125 +v -116109.773438 -55320.335938 99408.828125 +v -113712.281250 -55016.460938 99084.382812 +v -111047.757812 -54788.738281 98841.242188 +v -108142.117188 -54634.578125 98676.648438 +v -105021.281250 -54551.402344 98587.843750 +v -101711.171875 -54536.625000 98572.070312 +v -98237.695312 -54587.667969 98626.562500 +v -94626.781250 -54701.945312 98748.578125 +v -90904.335938 -54876.875000 98935.351562 +v -87096.289062 -55109.875000 99184.117188 +v -83228.554688 -55398.363281 99492.140625 +v -79327.046875 -55739.757812 99856.640625 +v -75417.679688 -56131.476562 100274.875000 +v -71526.382812 -56570.937500 100744.078125 +v -67679.070312 -57055.554688 101261.500000 +v -63582.882812 -57629.699219 101874.507812 +v -59602.199219 -58250.707031 102537.554688 +v -55770.171875 -58915.273438 103247.101562 +v -52119.945312 -59620.093750 103999.632812 +v -48684.667969 -60361.871094 104791.617188 +v -45497.484375 -61137.296875 105619.531250 +v -113712.281250 -50182.886719 117123.531250 +v -111047.757812 -49864.101562 117220.234375 +v -108142.117188 -49648.296875 117285.695312 +v -105021.281250 -49531.863281 117321.015625 +v -101711.171875 -49511.175781 117327.289062 +v -98237.695312 -49582.628906 117305.617188 +v -83228.554688 -50717.500000 116961.359375 +v -83228.554688 -51624.246094 119312.000000 +v -83228.554688 -52866.085938 121504.156250 +v -79327.046875 -51195.410156 116816.382812 +v -79327.046875 -52075.707031 119098.476562 +v -79327.046875 -53281.332031 121226.695312 +v -59602.199219 -54710.410156 115750.125000 +v -59602.199219 -55396.210938 117527.992188 +v -59602.199219 -56335.457031 119186.000000 +v -55770.171875 -55640.714844 115467.914062 +v -55770.171875 -56275.039062 117112.343750 +v -55770.171875 -57143.785156 118645.890625 +v -52119.945312 -56627.375000 115168.617188 +v -52119.945312 -57207.101562 116671.507812 +v -52119.945312 -58001.078125 118073.070312 +v -48684.667969 -57665.765625 114853.625000 +v -48684.667969 -58188.035156 116207.562500 +v -48684.667969 -58903.316406 117470.210938 +v -111047.757812 -50818.066406 119693.296875 +v -108142.117188 -50614.207031 119789.718750 +v -105021.281250 -50504.210938 119841.742188 +v -101711.171875 -50484.671875 119850.984375 +v -98237.695312 -50552.167969 119819.054688 +v -45497.484375 -59213.468750 115722.570312 +v -108142.117188 -51937.074219 122124.906250 +v -105021.281250 -51835.902344 122192.500000 +v -101711.171875 -51817.929688 122204.515625 +v -98237.695312 -51880.015625 122163.031250 +v -45497.484375 -59846.488281 116840.000000 +v -116109.773438 -58242.050781 126776.281250 +v -116109.773438 -60507.503906 127916.617188 +v -116109.773438 -62915.753906 128712.195312 +v -116109.773438 -65414.675781 129145.796875 +v -116109.773438 -67950.171875 129208.039062 +v -116109.773438 -70467.359375 128897.578125 +v -113712.281250 -58013.523438 127157.562500 +v -113712.281250 -60337.390625 128327.296875 +v -113712.281250 -62807.742188 129143.398438 +v -113712.281250 -65371.105469 129588.179688 +v -113712.281250 -67971.984375 129652.031250 +v -113712.281250 -70554.085938 129333.554688 +v -113712.281250 -73061.507812 128639.656250 +v -111047.757812 -57842.257812 127443.296875 +v -111047.757812 -60209.906250 128635.070312 +v -111047.757812 -62726.800781 129466.539062 +v -111047.757812 -65338.453125 129919.703125 +v -111047.757812 -67988.328125 129984.757812 +v -111047.757812 -70619.070312 129660.281250 +v -111047.757812 -73173.734375 128953.312500 +v -111047.757812 -75597.007812 127879.148438 +v -108142.117188 -57726.320312 127636.726562 +v -108142.117188 -60123.609375 128843.421875 +v -108142.117188 -62672.003906 129685.296875 +v -108142.117188 -65316.347656 130144.132812 +v -108142.117188 -67999.398438 130210.000000 +v -108142.117188 -70663.070312 129881.468750 +v -108142.117188 -73249.703125 129165.648438 +v -108142.117188 -75703.312500 128078.039062 +v -108142.117188 -77970.781250 126642.179688 +v -105021.281250 -57663.769531 127741.093750 +v -105021.281250 -60077.042969 128955.835938 +v -105021.281250 -62642.441406 129803.328125 +v -105021.281250 -65304.421875 130265.226562 +v -105021.281250 -68005.367188 130331.531250 +v -105021.281250 -70686.804688 130000.804688 +v -105021.281250 -73290.695312 129280.210938 +v -105021.281250 -75760.671875 128185.343750 +v -105021.281250 -78043.257812 126739.914062 +v -105021.281250 -80089.054688 124975.195312 +v -90904.335938 -57908.542969 127332.710938 +v -75417.679688 -58852.082031 125758.507812 +v -71526.382812 -59182.582031 125207.101562 +v -67679.070312 -59547.042969 124599.039062 +v -63582.882812 -59978.835938 123878.632812 +v -59602.199219 -60445.871094 123099.437500 +v -45497.484375 -62616.761719 119477.523438 +v -101711.171875 -60068.773438 128975.804688 +v -98237.695312 -62655.332031 129751.867188 +v -94626.781250 -65326.007812 130046.062500 +v -90904.335938 -67982.007812 129855.976562 +v -87096.289062 -70527.421875 129199.531250 +v -83228.554688 -72873.296875 128113.648438 +v -79327.046875 -74941.195312 126652.210938 +v -75417.679688 -76666.343750 124883.351562 +v -71526.382812 -78000.054688 122886.187500 +v -67679.070312 -78313.437500 121500.695312 +v -63582.882812 -78370.429688 120063.640625 +v -59602.199219 -78213.296875 118648.929688 +v -55770.171875 -77848.367188 117288.843750 +v -52119.945312 -77581.281250 115168.617188 +v -48684.667969 -76883.218750 113277.882812 +v -45497.484375 -75828.585938 111704.867188 +v -101711.171875 -62637.187500 129824.296875 +v -101711.171875 -65302.304688 130286.734375 +v -101711.171875 -68006.429688 130353.117188 +v -101711.171875 -70691.023438 130022.000000 +v -101711.171875 -73297.976562 129300.562500 +v -101711.171875 -75770.859375 128204.406250 +v -101711.171875 -78056.140625 126757.273438 +v -101711.171875 -80104.343750 124990.484375 +v -101711.171875 -81123.234375 123884.625000 +v -87096.289062 -60389.683594 128201.054688 +v -83228.554688 -62943.488281 128601.468750 +v -79327.046875 -65474.816406 128535.195312 +v -75417.679688 -67891.953125 128022.882812 +v -71526.382812 -70110.453125 127103.273438 +v -67679.070312 -72056.593750 125831.117188 +v -63582.882812 -73637.914062 124213.945312 +v -59602.199219 -74819.593750 122393.296875 +v -55770.171875 -75575.078125 120461.218750 +v -52119.945312 -75452.773438 119073.593750 +v -48684.667969 -75121.656250 117735.601562 +v -45497.484375 -74591.382812 116478.039062 +v -71526.382812 -61207.605469 126226.414062 +v -67679.070312 -61478.902344 125571.453125 +v -67679.070312 -63532.531250 126249.882812 +v -63582.882812 -61800.312500 124795.492188 +v -63582.882812 -63736.609375 125435.156250 +v -63582.882812 -65745.804688 125783.789062 +v -59602.199219 -62147.960938 123956.195312 +v -59602.199219 -63957.343750 124553.937500 +v -59602.199219 -65834.851562 124879.710938 +v -59602.199219 -67739.835938 124926.476562 +v -55770.171875 -62519.992188 123058.031250 +v -55770.171875 -64193.562500 123610.906250 +v -55770.171875 -65930.140625 123912.226562 +v -55770.171875 -67692.132812 123955.484375 +v -55770.171875 -69441.398438 123739.734375 +v -52119.945312 -64444.085938 122610.750000 +v -48684.667969 -66137.554688 121806.250000 +v -45497.484375 -67532.640625 120708.882812 +v -98237.695312 -65309.621094 130212.429688 +v -94626.781250 -67994.562500 130111.570312 +v -90904.335938 -70593.921875 129533.828125 +v -87096.289062 -73015.468750 128511.000000 +v -83228.554688 -75176.617188 127092.656250 +v -79327.046875 -77007.695312 125343.617188 +v -75417.679688 -78454.625000 123340.765625 +v -71526.382812 -78854.015625 121959.335938 +v -67679.070312 -79053.132812 120552.859375 +v -63582.882812 -78992.500000 119115.960938 +v -59602.199219 -78720.273438 117718.820312 +v -55770.171875 -78567.945312 115467.914062 +v -52119.945312 -77959.054688 113419.523438 +v -48684.667969 -76962.320312 111667.750000 +v -45497.484375 -75665.539062 110287.539062 +v -52119.945312 -66031.195312 122886.140625 +v -52119.945312 -67641.539062 122925.671875 +v -52119.945312 -69240.250000 122728.484375 +v -52119.945312 -70792.726562 122298.859375 +v -98237.695312 -68002.765625 130278.539062 +v -98237.695312 -70676.453125 129948.773438 +v -98237.695312 -73272.828125 129230.257812 +v -98237.695312 -75735.664062 128138.562500 +v -98237.695312 -78011.656250 126697.296875 +v -98237.695312 -80051.546875 124937.679688 +v -98237.695312 -81066.296875 123836.320312 +v -98237.695312 -81987.656250 122655.710938 +v -48684.667969 -67588.296875 121841.859375 +v -45497.484375 -68807.257812 120551.679688 +v -94626.781250 -70643.843750 129784.812500 +v -90904.335938 -73130.296875 128831.921875 +v -87096.289062 -75375.554688 127464.843750 +v -83228.554688 -77305.195312 125744.750000 +v -79327.046875 -78859.820312 123745.960938 +v -75417.679688 -79344.218750 122375.242188 +v -71526.382812 -79629.382812 120965.796875 +v -67679.070312 -79712.898438 119547.750000 +v -63582.882812 -79535.039062 118120.617188 +v -59602.199219 -79498.250000 115750.125000 +v -55770.171875 -78981.289062 113554.101562 +v -52119.945312 -78046.851562 111632.250000 +v -48684.667969 -76778.078125 110066.242188 +v -45497.484375 -75273.789062 108915.703125 +v -48684.667969 -69028.554688 121664.218750 +v -48684.667969 -70427.164062 121277.171875 +v -94626.781250 -73216.507812 129072.859375 +v -94626.781250 -75656.859375 127991.125000 +v -94626.781250 -77912.078125 126563.023438 +v -94626.781250 -79933.335938 124819.476562 +v -94626.781250 -80938.828125 123728.164062 +v -94626.781250 -81851.773438 122558.335938 +v -94626.781250 -82666.062500 121317.812500 +v -45497.484375 -70045.015625 120209.140625 +v -90904.335938 -75536.226562 127765.445312 +v -87096.289062 -77556.593750 126083.718750 +v -83228.554688 -79212.960938 124099.101562 +v -79327.046875 -79781.171875 122745.968750 +v -75417.679688 -80151.937500 121340.250000 +v -71526.382812 -80320.960938 119912.218750 +v -67679.070312 -80288.312500 118492.093750 +v -63582.882812 -80367.578125 116013.828125 +v -59602.199219 -79945.140625 113680.992188 +v -55770.171875 -79077.359375 111598.515625 +v -52119.945312 -77842.343750 109854.546875 +v -48684.667969 -76335.421875 108516.132812 +v -90904.335938 -77759.632812 126357.484375 +v -90904.335938 -79752.390625 124638.531250 +v -90904.335938 -80743.695312 123562.609375 +v -90904.335938 -81643.765625 122409.281250 +v -90904.335938 -82446.570312 121186.250000 +v -90904.335938 -83146.742188 119901.710938 +v -87096.289062 -79511.375000 124397.507812 +v -83228.554688 -80161.992188 123069.070312 +v -79327.046875 -80617.718750 121674.031250 +v -75417.679688 -80872.367188 120242.718750 +v -71526.382812 -80924.132812 118805.640625 +v -67679.070312 -81171.304688 116257.640625 +v -63582.882812 -80845.812500 113799.570312 +v -59602.199219 -80049.007812 111566.703125 +v -55770.171875 -78853.593750 109653.390625 +v -52119.945312 -77350.992188 108133.898438 +v -87096.289062 -80483.789062 123342.093750 +v -87096.289062 -81366.703125 122210.742188 +v -87096.289062 -82154.210938 121011.023438 +v -87096.289062 -82841.046875 119750.960938 +v -87096.289062 -83895.000000 117083.867188 +v -116109.773438 -81890.140625 120852.742188 +v -113712.281250 -82963.601562 119811.398438 +v -111047.757812 -84344.554688 117220.234375 +v -108142.117188 -85189.773438 114371.460938 +v -105021.281250 -85457.671875 111389.640625 +v -101711.171875 -85135.867188 108403.773438 +v -98237.695312 -84240.882812 105540.726562 +v -94626.781250 -83505.367188 104233.351562 +v -90904.335938 -82594.976562 103046.937500 +v -87096.289062 -81532.015625 102004.921875 +v -83228.554688 -80341.507812 101127.000000 +v -79327.046875 -79050.585938 100428.890625 +v -75417.679688 -77687.976562 99922.125000 +v -71526.382812 -76283.390625 99613.937500 +v -67679.070312 -74866.898438 99507.234375 +v -63582.882812 -73437.039062 99661.726562 +v -59602.199219 -72060.695312 100024.742188 +v -55770.171875 -69824.578125 100323.960938 +v -52119.945312 -67820.390625 101065.523438 +v -48684.667969 -66137.554688 102174.687500 +v -83228.554688 -81023.671875 121964.929688 +v -79327.046875 -81363.875000 120537.312500 +v -75417.679688 -81500.703125 119089.976562 +v -71526.382812 -81849.703125 116463.429688 +v -67679.070312 -81678.515625 113909.195312 +v -63582.882812 -80956.968750 111536.976562 +v -59602.199219 -79807.078125 109463.734375 +v -55770.171875 -78315.960938 107770.710938 +v -83228.554688 -81792.234375 120794.062500 +v -83228.554688 -82462.546875 119564.304688 +v -83228.554688 -83491.156250 116961.359375 +v -83228.554688 -84082.015625 114225.625000 +v -79327.046875 -82014.640625 119343.421875 +v -75417.679688 -82464.890625 116650.046875 +v -71526.382812 -82381.382812 114001.734375 +v -67679.070312 -81796.406250 111509.500000 +v -63582.882812 -80698.070312 109286.507812 +v -59602.199219 -79225.820312 107428.265625 +v -79327.046875 -83013.250000 116816.382812 +v -79327.046875 -83586.875000 114160.437500 +v -79327.046875 -83720.203125 111446.523438 +v -75417.679688 -83018.750000 114085.640625 +v -71526.382812 -82504.960938 111486.304688 +v -67679.070312 -81521.820312 109122.648438 +v -63582.882812 -80076.039062 107108.265625 +v -75417.679688 -83147.484375 111465.273438 +v -75417.679688 -82847.648438 108858.929688 +v -71526.382812 -82217.132812 108984.343750 +v -67679.070312 -80862.101562 106812.406250 +v -71526.382812 -81525.585938 106562.687500 +v -113712.281250 -81644.382812 101927.148438 +v -116109.773438 -82033.164062 103371.296875 +v -111047.757812 -81030.875000 100561.242188 +v -108142.117188 -80212.335938 99304.546875 +v -105021.281250 -79212.015625 98184.296875 +v -101711.171875 -78056.140625 97223.664062 +v -98237.695312 -76773.320312 96441.468750 +v -94626.781250 -75393.914062 95852.015625 +v -90904.335938 -73949.406250 95464.984375 +v -87096.289062 -71088.656250 94902.617188 +v -83228.554688 -68224.304688 94902.945312 +v -79327.046875 -65474.816406 95445.742188 +v -116109.773438 -78470.351562 99030.000000 +v -113712.281250 -77637.992188 97787.460938 +v -111047.757812 -76617.992188 96691.250000 +v -108142.117188 -75438.945312 95764.359375 +v -105021.281250 -74131.609375 95025.101562 +v -101711.171875 -71279.078125 94085.937500 +v -98237.695312 -68301.867188 93719.546875 +v -94626.781250 -65326.007812 93934.875000 +v -116109.773438 -73701.156250 96064.320312 +v -113712.281250 -71119.687500 94769.539062 +v -111047.757812 -68282.632812 94013.054688 +v -108142.117188 -65316.347656 93836.804688 +v -116109.773438 -51288.250000 105133.945312 +v -116109.773438 -50780.828125 106449.382812 +v -113712.281250 -50880.402344 104957.140625 +v -113712.281250 -50359.894531 106306.500000 +v -111047.757812 -50574.757812 104824.632812 +v -111047.757812 -50044.445312 106199.421875 +v -108142.117188 -50367.851562 104734.937500 +v -108142.117188 -49830.898438 106126.929688 +v -105021.281250 -50256.214844 104686.539062 +v -105021.281250 -49715.679688 106087.820312 +v -101711.171875 -50236.382812 104677.945312 +v -101711.171875 -49695.214844 106080.867188 +v -98237.695312 -50304.886719 104707.640625 +v -98237.695312 -49765.917969 106104.867188 +v -83228.554688 -51392.980469 105179.351562 +v -83228.554688 -50888.917969 106486.078125 +v -79327.046875 -51851.187500 105377.992188 +v -79327.046875 -51361.828125 106646.609375 +v -59602.199219 -55221.296875 106838.984375 +v -59602.199219 -54840.058594 107827.312500 +v -55770.171875 -56113.253906 107225.664062 +v -55770.171875 -55760.632812 108139.804688 +v -52119.945312 -57059.242188 107635.765625 +v -52119.945312 -56736.968750 108471.226562 +v -41000.000000 -66138.406250 111731.648438 +v -40000.000000 -67104.328125 111990.468750 +v -41000.000000 -66104.328125 111990.468750 +v -41000.000000 -66397.218750 111283.359375 +v -41000.000000 -66238.304688 111490.468750 +v -41000.000000 -66845.507812 111024.539062 +v -41000.000000 -66604.328125 111124.445312 +v -41000.000000 -67363.148438 111024.539062 +v -41000.000000 -67104.328125 110990.468750 +v -41000.000000 -67811.437500 111283.359375 +v -41000.000000 -67604.328125 111124.445312 +v -41000.000000 -68070.257812 111731.648438 +v -41000.000000 -67970.351562 111490.468750 +v -41000.000000 -68070.257812 112249.289062 +v -41000.000000 -68104.328125 111990.468750 +v -41000.000000 -67811.437500 112697.578125 +v -41000.000000 -67970.351562 112490.468750 +v -41000.000000 -67363.148438 112956.390625 +v -41000.000000 -67604.328125 112856.492188 +v -41000.000000 -66845.507812 112956.390625 +v -41000.000000 -67104.328125 112990.468750 +v -41000.000000 -66397.218750 112697.578125 +v -41000.000000 -66604.328125 112856.492188 +v -41000.000000 -66138.406250 112249.289062 +v -41000.000000 -66238.304688 112490.468750 +v -41000.000000 -61390.156250 111990.468750 +v -41000.000000 -61584.863281 113469.406250 +v -41000.000000 -62155.710938 114847.554688 +v -41000.000000 -63063.800781 116031.000000 +v -41000.000000 -64247.242188 116939.085938 +v -41000.000000 -65625.390625 117509.937500 +v -41000.000000 -67104.328125 117704.640625 +v -41000.000000 -68583.265625 117509.937500 +v -41000.000000 -69961.414062 116939.085938 +v -41000.000000 -71144.859375 116031.000000 +v -41000.000000 -72052.945312 114847.554688 +v -41000.000000 -72623.796875 113469.406250 +v -41000.000000 -72818.500000 111990.468750 +v -41000.000000 -72623.796875 110511.531250 +v -41000.000000 -72052.945312 109133.382812 +v -41000.000000 -71144.859375 107949.937500 +v -41000.000000 -69961.414062 107041.851562 +v -41000.000000 -68583.265625 106471.000000 +v -41000.000000 -67104.328125 106276.296875 +v -41000.000000 -65625.390625 106471.000000 +v -41000.000000 -64247.242188 107041.851562 +v -41000.000000 -63063.800781 107949.937500 +v -41000.000000 -62155.710938 109133.382812 +v -41000.000000 -61584.863281 110511.531250 +v -118497.312500 -51743.808594 114268.984375 +v -117087.007812 -51136.296875 111990.468750 +v -117087.007812 -51309.125000 114333.468750 +v -115175.460938 -50691.652344 111990.468750 +v -115175.460938 -50869.296875 114398.710938 +v -112707.125000 -50287.695312 111990.468750 +v -112707.125000 -50469.710938 114457.984375 +v -109528.960938 -49958.042969 111990.468750 +v -109528.960938 -50143.625000 114506.351562 +v -105401.695312 -49750.613281 111990.468750 +v -105401.695312 -49938.441406 114536.789062 +v -102677.632812 -49715.726562 111990.468750 +v -102677.632812 -49903.929688 114541.906250 +v -99830.093750 -49748.941406 111990.468750 +v -99830.093750 -49936.789062 114537.031250 +v -96869.367188 -50035.238281 114522.429688 +v -99830.093750 -50496.261719 117028.468750 +v -96869.367188 -50591.500000 116999.578125 +v -99830.093750 -51415.246094 119410.851562 +v -96869.367188 -51505.214844 119368.296875 +v -99830.093750 -52673.851562 121632.601562 +v -96869.367188 -52756.605469 121577.312500 +v -99830.093750 -54244.835938 123645.632812 +v -96869.367188 -54318.582031 123578.796875 +v -99830.093750 -56094.187500 125406.359375 +v -96869.367188 -56157.328125 125329.429688 +v -99830.093750 -58181.878906 126876.679688 +v -96869.367188 -58233.042969 126791.312500 +v -99830.093750 -60462.710938 128024.750000 +v -96869.367188 -60500.796875 127932.804688 +v -99830.093750 -62887.312500 128825.734375 +v -96869.367188 -62911.496094 128729.187500 +v -99830.093750 -65403.203125 129262.281250 +v -96869.367188 -65412.957031 129163.234375 +v -99830.093750 -67955.914062 129324.945312 +v -96869.367188 -67951.031250 129225.539062 +v -99830.093750 -70490.195312 129012.375000 +v -96869.367188 -70470.781250 128914.757812 +v -99830.093750 -72951.179688 128331.328125 +v -96869.367188 -72917.648438 128237.617188 +v -99830.093750 -75285.601562 127296.554688 +v -96869.367188 -75238.687500 127208.773438 +v -99830.093750 -77442.921875 125930.445312 +v -96869.367188 -77383.632812 125850.507812 +v -99830.093750 -79376.437500 124262.578125 +v -96869.367188 -79306.062500 124192.203125 +v -99830.093750 -80338.281250 123218.640625 +v -96869.367188 -80262.390625 123154.250000 +v -99830.093750 -81211.593750 122099.593750 +v -96869.367188 -81130.695312 122041.625000 +v -99830.093750 -82669.898438 119666.562500 +v -96869.367188 -82580.640625 119622.539062 +v -99830.093750 -83712.398438 117028.468750 +v -96869.367188 -83617.156250 116999.578125 +v -99830.093750 -84311.234375 114255.796875 +v -96869.367188 -84212.562500 114242.812500 +v -99830.093750 -84450.421875 111422.617188 +v -96869.367188 -84350.945312 111425.875000 +v -99830.093750 -84126.234375 108604.601562 +v -96869.367188 -84028.617188 108624.015625 +v -99830.093750 -83347.335938 105877.031250 +v -96869.367188 -83254.187500 105912.093750 +v -99830.093750 -82134.531250 103312.773438 +v -96869.367188 -82048.343750 103362.539062 +v -99830.093750 -80520.226562 100980.328125 +v -96869.367188 -80443.289062 101043.468750 +v -99830.093750 -79575.585938 99920.796875 +v -96869.367188 -79504.070312 99990.007812 +v -99830.093750 -78547.531250 98942.000000 +v -96869.367188 -78481.906250 99016.828125 +v -99830.093750 -76269.148438 97252.234375 +v -96869.367188 -76216.593750 97336.757812 +v -99830.093750 -73745.945312 95956.179688 +v -96869.367188 -73707.859375 96048.132812 +v -99830.093750 -71045.328125 95088.460938 +v -96869.367188 -71022.726562 95185.382812 +v -99830.093750 -68239.421875 94672.242188 +v -96869.367188 -68232.914062 94771.554688 +v -99830.093750 -65403.203125 94718.656250 +v -96869.367188 -65412.957031 94817.703125 +v -99830.093750 -62612.425781 95226.453125 +v -96869.367188 -62638.183594 95322.585938 +v -99830.093750 -59941.640625 96182.078125 +v -96869.367188 -59982.714844 96272.734375 +v -99830.093750 -57462.191406 97559.992188 +v -96869.367188 -57517.488281 97642.742188 +v -99830.093750 -55240.320312 99323.398438 +v -96869.367188 -55308.355469 99396.039062 +v -99830.093750 -54244.835938 100335.304688 +v -96869.367188 -54318.582031 100402.140625 +v -99830.093750 -53335.375000 101425.179688 +v -96869.367188 -53414.335938 101485.765625 +v -99830.093750 -51798.246094 103809.195312 +v -96869.367188 -51886.019531 103856.109375 +v -99830.093750 -50669.992188 106411.765625 +v -96869.367188 -50764.234375 106443.757812 +v -99830.093750 -49980.753906 109163.351562 +v -96869.367188 -50078.949219 109179.570312 +v -93816.742188 -50012.148438 111990.468750 +v -93816.742188 -50240.445312 109206.226562 +v -90688.093750 -50463.089844 109242.992188 +v -90688.093750 -51132.910156 106568.906250 +v -87499.210938 -51403.183594 106660.648438 +v -87499.210938 -52481.101562 104174.187500 +v -84265.812500 -52783.550781 104335.851562 +v -84265.812500 -54221.730469 102105.304688 +v -81003.625000 -54537.660156 102347.726562 +v -81003.625000 -55367.710938 101353.015625 +v -77728.312500 -55702.054688 101656.054688 +v -77728.312500 -56584.734375 100758.812500 +v -74455.546875 -56927.878906 101125.187500 +v -74455.546875 -58833.707031 99612.609375 +v -71200.976562 -59139.507812 100070.273438 +v -71200.976562 -61187.636719 98932.054688 +v -67980.265625 -61433.851562 99475.460938 +v -67980.265625 -63548.230469 98718.929688 +v -64809.105469 -63713.980469 99337.523438 +v -64809.105469 -65820.375000 98954.250000 +v -61703.195312 -65887.210938 99632.875000 +v -61703.195312 -67916.460938 99599.664062 +v -58678.261719 -67869.304688 100319.164062 +v -58678.261719 -69760.289062 100599.664062 +v -55750.101562 -69588.226562 101337.617188 +v -55750.101562 -71290.351562 101884.515625 +v -52934.566406 -70987.265625 102616.234375 +v -52934.566406 -72462.421875 103373.953125 +v -50247.621094 -72027.460938 104073.429688 +v -50247.621094 -73251.351562 104981.132812 +v -46101.402344 -72305.210938 106059.992188 +v -46101.402344 -72772.460938 106504.851562 +v -43413.300781 -72001.648438 107250.851562 +v -43413.300781 -72372.593750 107666.914062 +v -43413.300781 -73006.515625 108582.843750 +v -43413.300781 -73482.765625 109589.796875 +v -46101.402344 -73935.492188 108046.492188 +v -46101.402344 -74486.703125 109211.937500 +v -50247.621094 -75178.203125 107329.015625 +v -50247.621094 -75829.695312 108706.468750 +v -52934.566406 -75891.539062 106917.171875 +v -52934.566406 -76600.593750 108416.328125 +v -55750.101562 -76577.437500 106521.164062 +v -55750.101562 -77341.828125 108137.343750 +v -58678.261719 -77233.664062 106142.296875 +v -58678.261719 -78051.007812 107870.429688 +v -61703.195312 -77858.101562 105781.773438 +v -61703.195312 -78725.835938 107616.445312 +v -64809.105469 -78448.648438 105440.820312 +v -64809.105469 -79364.039062 107376.242188 +v -67980.265625 -79003.265625 105120.609375 +v -67980.265625 -79963.406250 107150.656250 +v -71200.976562 -79519.929688 104822.320312 +v -71200.976562 -80521.750000 106940.507812 +v -74455.546875 -79996.609375 104547.109375 +v -74455.546875 -81036.898438 106746.617188 +v -77728.312500 -80431.328125 104296.117188 +v -77728.312500 -81506.703125 106569.796875 +v -81003.625000 -80822.117188 104070.500000 +v -81003.625000 -81929.023438 106410.851562 +v -84265.812500 -81166.984375 103871.390625 +v -84265.812500 -82301.718750 106270.578125 +v -87499.210938 -81463.984375 103699.914062 +v -87499.210938 -82622.679688 106149.773438 +v -90688.093750 -81711.164062 103557.210938 +v -90688.093750 -82889.804688 106049.234375 +v -93816.742188 -81906.585938 103444.382812 +v -93816.742188 -83101.000000 105969.750000 +v -93816.742188 -50197.148438 114498.414062 +v -93816.742188 -50748.132812 116952.062500 +v -93816.742188 -51653.183594 119298.312500 +v -93816.742188 -52892.703125 121486.375000 +v -93816.742188 -54439.859375 123468.875000 +v -93816.742188 -56261.164062 125202.898438 +v -93816.742188 -58317.191406 126650.921875 +v -93816.742188 -60563.433594 127781.585938 +v -93816.742188 -62951.269531 128570.414062 +v -93816.742188 -65429.000000 129000.343750 +v -93816.742188 -67943.000000 129062.062500 +v -93816.742188 -70438.843750 128754.226562 +v -93816.742188 -72862.507812 128083.507812 +v -93816.742188 -75161.523438 127064.421875 +v -93816.742188 -77286.125000 125719.031250 +v -93816.742188 -79190.320312 124076.460938 +v -93816.742188 -80137.578125 123048.359375 +v -93816.742188 -80997.648438 121946.281250 +v -93816.742188 -82433.835938 119550.148438 +v -93816.742188 -83460.523438 116952.062500 +v -93816.742188 -84050.281250 114221.445312 +v -93816.742188 -84187.359375 111431.226562 +v -93816.742188 -83868.085938 108655.953125 +v -90688.093750 -50420.363281 114465.304688 +v -87499.210938 -50523.226562 111990.468750 +v -87499.210938 -50702.691406 114423.421875 +v -84265.812500 -51041.921875 114373.101562 +v -87499.210938 -51237.203125 116803.710938 +v -84265.812500 -51565.378906 116704.156250 +v -87499.210938 -52115.191406 119079.804688 +v -84265.812500 -52425.207031 118933.179688 +v -87499.210938 -53317.644531 121202.437500 +v -84265.812500 -53602.792969 121011.906250 +v -87499.210938 -54818.542969 123125.656250 +v -84265.812500 -55072.644531 122895.351562 +v -87499.210938 -56585.390625 124807.835938 +v -84265.812500 -56802.949219 124542.734375 +v -87499.210938 -58579.937500 126212.554688 +v -84265.812500 -58756.246094 125918.406250 +v -87499.210938 -60759.015625 127309.406250 +v -84265.812500 -60890.253906 126992.570312 +v -87499.210938 -63075.449219 128074.656250 +v -84265.812500 -63158.777344 127741.992188 +v -87499.210938 -65479.097656 128491.726562 +v -84265.812500 -65512.710938 128150.437500 +v -87499.210938 -67917.921875 128551.593750 +v -84265.812500 -67901.093750 128209.070312 +v -87499.210938 -70339.140625 128252.968750 +v -84265.812500 -70272.234375 127916.617188 +v -87499.210938 -72690.335938 127602.304688 +v -84265.812500 -72574.796875 127279.414062 +v -87499.210938 -74920.609375 126613.695312 +v -84265.812500 -74758.945312 126311.250000 +v -87499.210938 -76981.679688 125308.531250 +v -84265.812500 -76777.390625 125033.078125 +v -87499.210938 -78828.937500 123715.078125 +v -84265.812500 -78586.445312 123472.578125 +v -87499.210938 -79747.867188 122717.710938 +v -84265.812500 -79486.367188 122495.843750 +v -87499.210938 -80582.218750 121648.593750 +v -84265.812500 -80303.460938 121448.835938 +v -87499.210938 -81975.468750 119324.101562 +v -84265.812500 -81667.890625 119172.421875 +v -87499.210938 -82971.453125 116803.710938 +v -84265.812500 -82643.281250 116704.156250 +v -87499.210938 -83543.578125 114154.734375 +v -84265.812500 -83203.570312 114109.976562 +v -87499.210938 -83676.554688 111447.953125 +v -84265.812500 -83333.796875 111459.171875 +v -87499.210938 -83366.828125 108755.656250 +v -84265.812500 -83030.476562 108822.562500 +v -81003.625000 -51264.390625 111990.468750 +v -81003.625000 -51435.835938 114314.671875 +v -81003.625000 -51946.453125 116588.562500 +v -81003.625000 -52785.195312 118762.914062 +v -81003.625000 -53933.902344 120790.664062 +v -81003.625000 -55367.710938 122627.921875 +v -81003.625000 -57055.578125 124234.906250 +v -81003.625000 -58960.972656 125576.835938 +v -81003.625000 -61042.648438 126624.664062 +v -81003.625000 -63255.539062 127355.703125 +v -81003.625000 -65551.742188 127754.132812 +v -81003.625000 -67881.554688 127811.328125 +v -81003.625000 -70194.546875 127526.046875 +v -81003.625000 -72440.640625 126904.468750 +v -81003.625000 -74571.226562 125960.046875 +v -81003.625000 -76540.171875 124713.226562 +v -81003.625000 -78304.859375 123190.992188 +v -81003.625000 -79182.710938 122238.210938 +v -81003.625000 -79979.765625 121216.875000 +v -81003.625000 -81310.734375 118996.296875 +v -81003.625000 -82262.203125 116588.562500 +v -81003.625000 -82808.750000 114057.992188 +v -81003.625000 -82935.781250 111472.203125 +v -81003.625000 -82639.906250 108900.250000 +v -77728.312500 -51882.191406 114248.460938 +v -74455.546875 -52217.605469 111990.468750 +v -74455.546875 -52378.730469 114174.804688 +v -71200.976562 -52923.199219 114094.039062 +v -74455.546875 -52858.625000 116311.859375 +v -71200.976562 -53385.347656 116152.078125 +v -74455.546875 -53646.890625 118355.359375 +v -71200.976562 -54144.468750 118120.023438 +v -74455.546875 -54726.472656 120261.085938 +v -71200.976562 -55184.132812 119955.289062 +v -74455.546875 -56073.996094 121987.781250 +v -71200.976562 -56481.832031 121618.140625 +v -74455.546875 -57660.292969 123498.062500 +v -71200.976562 -58009.476562 123072.578125 +v -74455.546875 -59451.023438 124759.234375 +v -71200.976562 -59734.000000 124287.117188 +v -74455.546875 -61407.425781 125744.007812 +v -71200.976562 -61618.066406 125235.476562 +v -74455.546875 -63487.148438 126431.054688 +v -71200.976562 -63620.890625 125897.125000 +v -74455.546875 -65645.171875 126805.507812 +v -71200.976562 -65699.125000 126257.734375 +v -74455.546875 -67834.789062 126859.257812 +v -71200.976562 -67807.773438 126309.500000 +v -74455.546875 -70008.585938 126591.148438 +v -71200.976562 -69901.203125 126051.296875 +v -74455.546875 -72119.515625 126006.976562 +v -71200.976562 -71934.078125 125488.726562 +v -74455.546875 -74121.882812 125119.382812 +v -71200.976562 -73862.414062 124633.953125 +v -74455.546875 -75972.335938 123947.593750 +v -71200.976562 -75644.453125 123505.492188 +v -74455.546875 -77630.828125 122516.968750 +v -71200.976562 -77241.625000 122127.757812 +v -74455.546875 -78455.859375 121621.523438 +v -71200.976562 -78036.148438 121265.421875 +v -74455.546875 -79204.953125 120661.648438 +v -71200.976562 -78757.539062 120341.039062 +v -74455.546875 -80455.820312 118574.695312 +v -71200.976562 -79962.164062 118331.250000 +v -74455.546875 -81350.031250 116311.859375 +v -71200.976562 -80823.312500 116152.078125 +v -74455.546875 -81863.695312 113933.578125 +v -71200.976562 -81317.976562 113861.734375 +v -74455.546875 -81983.078125 111503.390625 +v -71200.976562 -81432.953125 111521.398438 +v -74455.546875 -81705.007812 109086.210938 +v -71200.976562 -81165.156250 109193.593750 +v -67980.265625 -53364.617188 111990.468750 +v -67980.265625 -53513.328125 114006.500000 +v -67980.265625 -53956.242188 115978.898438 +v -67980.265625 -54683.777344 117864.953125 +v -67980.265625 -55680.175781 119623.843750 +v -67980.265625 -56923.875000 121217.492188 +v -67980.265625 -58387.949219 122611.406250 +v -67980.265625 -60040.703125 123775.414062 +v -67980.265625 -61846.367188 124684.304688 +v -67980.265625 -63765.851562 125318.421875 +v -67980.265625 -65757.601562 125664.023438 +v -67980.265625 -67778.507812 125713.632812 +v -67980.265625 -69784.812500 125466.171875 +v -67980.265625 -71733.101562 124927.015625 +v -67980.265625 -73581.187500 124107.812500 +v -67980.265625 -75289.062500 123026.304688 +v -67980.265625 -76819.773438 121705.914062 +v -67980.265625 -77581.234375 120879.460938 +v -67980.265625 -78272.609375 119993.546875 +v -67980.265625 -79427.101562 118067.390625 +v -67980.265625 -80252.414062 115978.898438 +v -67980.265625 -80726.492188 113783.859375 +v -67980.265625 -80836.687500 111540.914062 +v -67980.265625 -80580.039062 109309.984375 +v -64809.105469 -54146.812500 113912.531250 +v -61703.195312 -54686.941406 111990.468750 +v -61703.195312 -54821.339844 113812.476562 +v -58678.261719 -55534.574219 113706.679688 +v -61703.195312 -55221.628906 115595.046875 +v -58678.261719 -55911.621094 115385.742188 +v -61703.195312 -55879.144531 117299.585938 +v -58678.261719 -56530.953125 116991.304688 +v -61703.195312 -56779.648438 118889.195312 +v -58678.261719 -57379.171875 118488.609375 +v -61703.195312 -57903.652344 120329.476562 +v -58678.261719 -58437.906250 119845.257812 +v -61703.195312 -59226.820312 121589.242188 +v -58678.261719 -59684.242188 121031.867188 +v -61703.195312 -60720.515625 122641.218750 +v -58678.261719 -61091.203125 122022.757812 +v -61703.195312 -62352.398438 123462.640625 +v -58678.261719 -62628.328125 122796.484375 +v -61703.195312 -64087.148438 124035.718750 +v -58678.261719 -64262.347656 123336.289062 +v -61703.195312 -65887.210938 124348.062500 +v -58678.261719 -65957.882812 123630.492188 +v -61703.195312 -67713.617188 124392.898438 +v -58678.261719 -67678.242188 123672.726562 +v -61703.195312 -69526.843750 124169.257812 +v -58678.261719 -69386.171875 123462.078125 +v -61703.195312 -71287.617188 123681.984375 +v -58678.261719 -71044.710938 123003.093750 +v -61703.195312 -72957.843750 122941.625000 +v -58678.261719 -72617.945312 122305.726562 +v -61703.195312 -74501.359375 121964.210938 +v -58678.261719 -74071.835938 121385.062500 +v -61703.195312 -75884.750000 120770.890625 +v -58678.261719 -75374.898438 120261.039062 +v -61703.195312 -76572.921875 120023.976562 +v -58678.261719 -76023.109375 119557.492188 +v -61703.195312 -77197.757812 119223.320312 +v -58678.261719 -76611.664062 118803.328125 +v -61703.195312 -78241.148438 117482.539062 +v -58678.261719 -77594.460938 117163.632812 +v -61703.195312 -78987.031250 115595.046875 +v -58678.261719 -78297.039062 115385.742188 +v -61703.195312 -79415.484375 113611.265625 +v -58678.261719 -78700.609375 113517.148438 +v -61703.195312 -79515.070312 111584.179688 +v -58678.261719 -78794.414062 111607.773438 +v -61703.195312 -79283.117188 109567.953125 +v -58678.261719 -78575.937500 109708.625000 +v -55750.101562 -56165.726562 111990.468750 +v -55750.101562 -56284.121094 113595.492188 +v -55750.101562 -56636.738281 115165.773438 +v -55750.101562 -57215.949219 116667.320312 +v -55750.101562 -58009.214844 118067.632812 +v -55750.101562 -58999.359375 119336.382812 +v -55750.101562 -60164.953125 120446.125000 +v -55750.101562 -61480.761719 121372.820312 +v -55750.101562 -62918.308594 122096.421875 +v -55750.101562 -64446.464844 122601.250000 +v -55750.101562 -66032.156250 122876.398438 +v -55750.101562 -67641.062500 122915.890625 +v -55750.101562 -69238.343750 122718.890625 +v -55750.101562 -70789.429688 122289.640625 +v -55750.101562 -72260.750000 121637.453125 +v -55750.101562 -73620.445312 120776.437500 +v -55750.101562 -74839.085938 119725.226562 +v -55750.101562 -75445.312500 119067.265625 +v -55750.101562 -75995.734375 118361.960938 +v -55750.101562 -76914.859375 116828.484375 +v -55750.101562 -77571.914062 115165.773438 +v -55750.101562 -77949.351562 113418.242188 +v -55750.101562 -78037.070312 111632.570312 +v -55750.101562 -77832.750000 109856.453125 +v -52934.566406 -56957.726562 111990.468750 +v -52934.566406 -57067.550781 113479.281250 +v -52934.566406 -57394.636719 114935.867188 +v -52934.566406 -57931.910156 116328.695312 +v -52934.566406 -58667.738281 117627.617188 +v -52934.566406 -59586.195312 118804.507812 +v -52934.566406 -60667.394531 119833.898438 +v -52934.566406 -61887.933594 120693.500000 +v -52934.566406 -63221.394531 121364.703125 +v -52934.566406 -64638.906250 121832.984375 +v -52934.566406 -66109.789062 122088.210938 +v -52934.566406 -67602.195312 122124.843750 +v -52934.566406 -69083.828125 121942.101562 +v -52934.566406 -70522.617188 121543.937500 +v -52934.566406 -71887.406250 120938.968750 +v -52934.566406 -73148.648438 120140.296875 +v -52934.566406 -74279.054688 119165.195312 +v -52934.566406 -74841.390625 118554.875000 +v -52934.566406 -75351.960938 117900.632812 +v -52934.566406 -76204.539062 116478.195312 +v -52934.566406 -76814.015625 114935.867188 +v -52934.566406 -77164.125000 113314.867188 +v -52934.566406 -77245.492188 111658.484375 +v -52934.566406 -77055.960938 110010.960938 +v -50247.621094 -57781.417969 111990.468750 +v -50247.621094 -57882.324219 113358.421875 +v -50247.621094 -58182.859375 114696.765625 +v -50247.621094 -58676.515625 115976.523438 +v -50247.621094 -59352.609375 117170.000000 +v -50247.621094 -60196.507812 118251.351562 +v -50247.621094 -61189.937500 119197.179688 +v -50247.621094 -62311.394531 119987.000000 +v -50247.621094 -63536.605469 120603.718750 +v -50247.621094 -64839.046875 121033.984375 +v -50247.621094 -66190.523438 121268.484375 +v -50247.621094 -67561.781250 121302.148438 +v -50247.621094 -68923.140625 121134.242188 +v -50247.621094 -70245.125000 120768.398438 +v -50247.621094 -71499.117188 120212.539062 +v -50247.621094 -72657.984375 119478.703125 +v -50247.621094 -73696.625000 118582.765625 +v -50247.621094 -74213.304688 118021.984375 +v -50247.621094 -74682.429688 117420.859375 +v -50247.621094 -75465.796875 116113.890625 +v -50247.621094 -76025.796875 114696.765625 +v -50247.621094 -76347.484375 113207.351562 +v -50247.621094 -76422.250000 111685.429688 +v -50247.621094 -76248.101562 110171.656250 +v -46101.402344 -59216.382812 111990.468750 +v -46101.402344 -59301.757812 113147.867188 +v -46101.402344 -59556.035156 114280.218750 +v -46101.402344 -59973.707031 115363.000000 +v -46101.402344 -60545.738281 116372.773438 +v -46101.402344 -61259.746094 117287.687500 +v -46101.402344 -62100.269531 118087.937500 +v -46101.402344 -63049.113281 118756.187500 +v -46101.402344 -64085.742188 119277.984375 +v -46101.402344 -65187.714844 119642.023438 +v -46101.402344 -66331.171875 119840.429688 +v -46101.402344 -67491.375000 119868.914062 +v -46101.402344 -68643.187500 119726.851562 +v -46101.402344 -69761.695312 119417.320312 +v -46101.402344 -70822.679688 118947.015625 +v -46101.402344 -71803.171875 118326.125000 +v -46101.402344 -72681.953125 117568.085938 +v -46101.402344 -73119.101562 117093.625000 +v -46101.402344 -73516.023438 116585.023438 +v -46101.402344 -74178.812500 115479.218750 +v -46101.402344 -74652.625000 114280.218750 +v -46101.402344 -74924.796875 113020.054688 +v -46101.402344 -74988.054688 111732.382812 +v -46101.402344 -74840.710938 110451.609375 +v -43413.300781 -60289.070312 111990.468750 +v -43413.300781 -60362.835938 112990.476562 +v -43413.300781 -60582.535156 113968.835938 +v -43413.300781 -60943.410156 114904.367188 +v -43413.300781 -61437.648438 115776.820312 +v -43413.300781 -62054.554688 116567.312500 +v -43413.300781 -62780.777344 117258.734375 +v -43413.300781 -63600.585938 117836.109375 +v -43413.300781 -64496.242188 118286.945312 +v -43413.300781 -65448.355469 118601.476562 +v -43413.300781 -66436.320312 118772.906250 +v -43413.300781 -67438.734375 118797.515625 +v -43413.300781 -68433.921875 118674.773438 +v -43413.300781 -69400.320312 118407.335938 +v -43413.300781 -70317.015625 118000.984375 +v -43413.300781 -71164.171875 117464.531250 +v -43413.300781 -71923.445312 116809.585938 +v -43413.300781 -72301.148438 116399.640625 +v -43413.300781 -72644.085938 115960.203125 +v -43413.300781 -73216.750000 115004.781250 +v -43413.300781 -73626.125000 113968.835938 +v -43413.300781 -73861.281250 112880.039062 +v -43413.300781 -73915.937500 111767.476562 +v -43413.300781 -73788.632812 110660.875000 +v -43413.300781 -71597.937500 106866.484375 +v -43413.300781 -70703.250000 106202.937500 +v -43413.300781 -69712.414062 105693.992188 +v -46101.402344 -70122.914062 104702.953125 +v -46101.402344 -68895.492188 104308.578125 +v -50247.621094 -69221.343750 102911.101562 +v -50247.621094 -67714.078125 102687.515625 +v -52934.566406 -67767.945312 101865.593750 +v -52934.566406 -66109.789062 101892.726562 +v -55750.101562 -66032.156250 101104.539062 +v -55750.101562 -64273.210938 101424.593750 +v -58678.261719 -64077.089844 100692.664062 +v -58678.261719 -62277.164062 101336.687500 +v -61703.195312 -61979.585938 100679.921875 +v -61703.195312 -60205.597656 101665.789062 +v -64809.105469 -59826.750000 101098.804688 +v -64809.105469 -58149.750000 102429.765625 +v -67980.265625 -57711.968750 101962.343750 +v -67980.265625 -56923.875000 102763.445312 +v -71200.976562 -56481.832031 102362.796875 +v -71200.976562 -55730.578125 103263.085938 +v -74455.546875 -55293.898438 102928.007812 +v -74455.546875 -53975.410156 104972.914062 +v -77728.312500 -53532.710938 104736.289062 +v -77728.312500 -52532.308594 107043.937500 +v -81003.625000 -52105.015625 106898.890625 +v -81003.625000 -51475.960938 109410.210938 +v -84265.812500 -51083.054688 109345.343750 +v -43413.300781 -68651.914062 105353.250000 +v -46101.402344 -67620.226562 104119.406250 +v -50247.621094 -66190.523438 102712.445312 +v -52934.566406 -64478.195312 102189.601562 +v -55750.101562 -62589.890625 102026.890625 +v -58678.261719 -60606.183594 102265.312500 +v -61703.195312 -58615.898438 102927.460938 +v -64809.105469 -57398.390625 103193.515625 +v -67980.265625 -56203.882812 103626.257812 +v -71200.976562 -54460.843750 105232.382812 +v -74455.546875 -53007.640625 107205.289062 +v -77728.312500 -51921.171875 109483.718750 +v -43413.300781 -67550.070312 105189.804688 +v -43413.300781 -66436.320312 105208.031250 +v -43413.300781 -65340.410156 105407.437500 +v -43413.300781 -64291.625000 105782.695312 +v -46101.402344 -63848.917969 104805.625000 +v -46101.402344 -62722.019531 105431.882812 +v -50247.621094 -61924.796875 104238.750000 +v -50247.621094 -60731.257812 105186.007812 +v -52934.566406 -60168.191406 104584.828125 +v -52934.566406 -59586.195312 105176.429688 +v -55750.101562 -58999.359375 104644.554688 +v -55750.101562 -58426.152344 105331.468750 +v -58678.261719 -57824.992188 104870.179688 +v -58678.261719 -56789.070312 106476.851562 +v -61703.195312 -56153.171875 106136.953125 +v -61703.195312 -55345.929688 107999.031250 +v -64809.105469 -54700.210938 107779.835938 +v -64809.105469 -54179.996094 109856.656250 +v -67980.265625 -53548.132812 109752.328125 +v -71200.976562 -52959.515625 109655.148438 +v -74455.546875 -52416.441406 109565.492188 +v -43413.300781 -63317.976562 106323.789062 +v -46101.402344 -61712.187500 106233.335938 +v -50247.621094 -60196.507812 105729.585938 +v -52934.566406 -59054.488281 105813.609375 +v -55750.101562 -57457.343750 106834.046875 +v -58678.261719 -56028.703125 108230.796875 +v -61703.195312 -54852.796875 109967.734375 +v -43413.300781 -62445.472656 107016.257812 +v -46101.402344 -61259.746094 106693.250000 +v -50247.621094 -59707.964844 106315.039062 +v -52934.566406 -58155.824219 107207.390625 +v -55750.101562 -56746.238281 108474.367188 +v -58678.261719 -55564.203125 110085.187500 +v -43413.300781 -61697.421875 107841.601562 +v -43413.300781 -62054.554688 107413.625000 +v -43413.300781 -60650.757812 109799.773438 +v -43413.300781 -61093.808594 108777.781250 +v -46101.402344 -60147.781250 108272.117188 +v -46101.402344 -60846.398438 107188.593750 +v -50247.621094 -58882.253906 107595.679688 +v -43413.300781 -60380.101562 110880.296875 +v -46101.402344 -59321.738281 110705.554688 +v -46101.402344 -59634.992188 109454.968750 +v -50247.621094 -57905.941406 110471.804688 +v -50247.621094 -58276.183594 108993.718750 +v -52934.566406 -57093.253906 110337.632812 +v -52934.566406 -57496.207031 108728.953125 +v -55750.101562 -56311.828125 110208.617188 +v -87499.210938 -50744.695312 109289.484375 +v -84265.812500 -51727.925781 106770.882812 +v -81003.625000 -53134.750000 104523.570312 +v -77728.312500 -54895.652344 102622.421875 +v -74455.546875 -56073.996094 101993.156250 +v -71200.976562 -57304.144531 101526.921875 +v -67980.265625 -59470.953125 100566.312500 +v -64809.105469 -61698.156250 100058.796875 +v -61703.195312 -63890.472656 99996.195312 +v -58678.261719 -65957.882812 100350.437500 +v -55750.101562 -67819.750000 101075.289062 +v -52934.566406 -69408.382812 102108.929688 +v -50247.621094 -70672.054688 103377.218750 +v -46101.402344 -71269.703125 105292.007812 +v -102677.632812 -49947.980469 109157.945312 +v -102677.632812 -50638.535156 106401.085938 +v -102677.632812 -51768.949219 103793.539062 +v -102677.632812 -53309.023438 101404.960938 +v -102677.632812 -54220.222656 100312.992188 +v -102677.632812 -55217.613281 99299.148438 +v -102677.632812 -57443.738281 97532.375000 +v -102677.632812 -59927.929688 96151.820312 +v -102677.632812 -62603.828125 95194.367188 +v -102677.632812 -65399.945312 94685.593750 +v -102677.632812 -68241.593750 94639.093750 +v -102677.632812 -71052.867188 95056.109375 +v -102677.632812 -73758.656250 95925.492188 +v -102677.632812 -76286.687500 97224.031250 +v -102677.632812 -78569.429688 98917.023438 +v -102677.632812 -79599.460938 99897.695312 +v -102677.632812 -80545.898438 100959.257812 +v -102677.632812 -82163.304688 103296.164062 +v -102677.632812 -83378.421875 105865.328125 +v -102677.632812 -84158.812500 108598.117188 +v -102677.632812 -84483.625000 111421.531250 +v -102677.632812 -84344.171875 114260.132812 +v -102677.632812 -83744.187500 117038.117188 +v -102677.632812 -82699.695312 119681.250000 +v -102677.632812 -81238.593750 122118.945312 +v -102677.632812 -80363.609375 123240.132812 +v -102677.632812 -79399.929688 124286.070312 +v -102677.632812 -77462.710938 125957.125000 +v -102677.632812 -75301.257812 127325.843750 +v -102677.632812 -72962.375000 128362.601562 +v -102677.632812 -70496.679688 129044.953125 +v -102677.632812 -67957.546875 129358.125000 +v -102677.632812 -65399.945312 129295.343750 +v -102677.632812 -62879.242188 128857.960938 +v -102677.632812 -60449.996094 128055.445312 +v -102677.632812 -58164.800781 126905.171875 +v -102677.632812 -56073.113281 125432.039062 +v -102677.632812 -54220.222656 123667.937500 +v -102677.632812 -52646.234375 121651.062500 +v -102677.632812 -51385.218750 119425.054688 +v -102677.632812 -50464.472656 117038.117188 +v -105401.695312 -49982.402344 109163.625000 +v -105401.695312 -50671.574219 106412.296875 +v -105401.695312 -51799.718750 103809.984375 +v -105401.695312 -53336.699219 101426.195312 +v -105401.695312 -54246.074219 100336.429688 +v -105401.695312 -55241.460938 99324.617188 +v -105401.695312 -57463.121094 97561.382812 +v -105401.695312 -59942.328125 96183.593750 +v -105401.695312 -62612.855469 95228.070312 +v -105401.695312 -65403.367188 94720.320312 +v -105401.695312 -68239.312500 94673.906250 +v -105401.695312 -71044.945312 95090.085938 +v -105401.695312 -73745.304688 95957.726562 +v -105401.695312 -76268.265625 97253.656250 +v -105401.695312 -78546.429688 98943.257812 +v -105401.695312 -79574.390625 99921.953125 +v -105401.695312 -80518.929688 100981.390625 +v -105401.695312 -82133.085938 103313.609375 +v -105401.695312 -83345.773438 105877.625000 +v -105401.695312 -84124.593750 108604.929688 +v -105401.695312 -84448.750000 111422.671875 +v -105401.695312 -84309.578125 114255.585938 +v -105401.695312 -83710.796875 117027.984375 +v -105401.695312 -82668.398438 119665.820312 +v -105401.695312 -81210.234375 122098.617188 +v -105401.695312 -80337.007812 123217.562500 +v -105401.695312 -79375.257812 124261.398438 +v -105401.695312 -77441.921875 125929.101562 +v -105401.695312 -75284.812500 127295.078125 +v -105401.695312 -72950.617188 128329.757812 +v -105401.695312 -70489.867188 129010.734375 +v -105401.695312 -67955.835938 129323.281250 +v -105401.695312 -65403.367188 129260.617188 +v -105401.695312 -62887.718750 128824.117188 +v -105401.695312 -60463.347656 128023.210938 +v -105401.695312 -58182.734375 126875.242188 +v -105401.695312 -56095.250000 125405.070312 +v -105401.695312 -54246.074219 123644.507812 +v -105401.695312 -52675.242188 121631.671875 +v -105401.695312 -51416.757812 119410.140625 +v -105401.695312 -50497.859375 117027.984375 +v -109528.960938 -50187.062500 109197.414062 +v -109528.960938 -50867.996094 106478.976562 +v -109528.960938 -51982.656250 103907.765625 +v -109528.960938 -53501.265625 101552.468750 +v -109528.960938 -54399.769531 100475.726562 +v -109528.960938 -55383.261719 99476.007812 +v -109528.960938 -57578.363281 97733.851562 +v -109528.960938 -60027.937500 96372.539062 +v -109528.960938 -62666.542969 95428.429688 +v -109528.960938 -65423.699219 94926.750000 +v -109528.960938 -68225.750000 94880.898438 +v -109528.960938 -70997.843750 95292.093750 +v -109528.960938 -73665.929688 96149.367188 +v -109528.960938 -76158.726562 97429.804688 +v -109528.960938 -78409.656250 99099.210938 +v -109528.960938 -79425.335938 100066.210938 +v -109528.960938 -80358.585938 101112.976562 +v -109528.960938 -81953.445312 103417.328125 +v -109528.960938 -83151.640625 105950.687500 +v -109528.960938 -83921.148438 108645.390625 +v -109528.960938 -84241.429688 111429.460938 +v -109528.960938 -84103.921875 114228.507812 +v -109528.960938 -83512.296875 116967.773438 +v -109528.960938 -82482.367188 119574.078125 +v -109528.960938 -81041.632812 121977.796875 +v -109528.960938 -80178.835938 123083.359375 +v -109528.960938 -79228.585938 124114.718750 +v -109528.960938 -77318.359375 125762.492188 +v -109528.960938 -75187.031250 127112.140625 +v -109528.960938 -72880.734375 128134.453125 +v -109528.960938 -70449.406250 128807.289062 +v -109528.960938 -67945.656250 129116.101562 +v -109528.960938 -65423.699219 129054.187500 +v -109528.960938 -62938.121094 128622.898438 +v -109528.960938 -60542.730469 127831.570312 +v -109528.960938 -58289.375000 126697.328125 +v -109528.960938 -56226.839844 125244.726562 +v -109528.960938 -54399.769531 123505.210938 +v -109528.960938 -52847.714844 121516.437500 +v -109528.960938 -51604.269531 119321.453125 +v -109528.960938 -50696.355469 116967.773438 +v -112707.125000 -50512.308594 109251.117188 +v -112707.125000 -51180.152344 106584.937500 +v -112707.125000 -52273.382812 104063.164062 +v -112707.125000 -53762.796875 101753.148438 +v -112707.125000 -54644.027344 100697.109375 +v -112707.125000 -55608.609375 99716.609375 +v -112707.125000 -57761.507812 98007.953125 +v -112707.125000 -60163.984375 96672.804688 +v -112707.125000 -62751.863281 95746.851562 +v -112707.125000 -65456.011719 95254.812500 +v -112707.125000 -68204.187500 95209.843750 +v -112707.125000 -70922.984375 95613.140625 +v -112707.125000 -73539.773438 96453.921875 +v -112707.125000 -75984.648438 97709.750000 +v -112707.125000 -78192.304688 99347.054688 +v -112707.125000 -79188.453125 100295.468750 +v -112707.125000 -80103.757812 101322.109375 +v -112707.125000 -81667.960938 103582.148438 +v -112707.125000 -82843.117188 106066.812500 +v -112707.125000 -83597.835938 108709.703125 +v -112707.125000 -83911.960938 111440.242188 +v -112707.125000 -83777.093750 114185.476562 +v -112707.125000 -83196.843750 116872.078125 +v -112707.125000 -82186.710938 119428.273438 +v -112707.125000 -80773.671875 121785.781250 +v -112707.125000 -79927.468750 122870.093750 +v -112707.125000 -78995.484375 123881.625000 +v -112707.125000 -77121.984375 125497.710938 +v -112707.125000 -75031.632812 126821.414062 +v -112707.125000 -72769.679688 127824.070312 +v -112707.125000 -70385.093750 128483.976562 +v -112707.125000 -67929.484375 128786.843750 +v -112707.125000 -65456.011719 128726.125000 +v -112707.125000 -63018.218750 128303.125000 +v -112707.125000 -60668.882812 127527.007812 +v -112707.125000 -58458.851562 126414.578125 +v -112707.125000 -56435.968750 124989.898438 +v -112707.125000 -54644.027344 123283.828125 +v -112707.125000 -53121.808594 121333.289062 +v -112707.125000 -51902.273438 119180.507812 +v -112707.125000 -51011.812500 116872.078125 +v -115175.460938 -50910.871094 109316.914062 +v -115175.460938 -51562.671875 106714.789062 +v -115175.460938 -52629.640625 104253.585938 +v -115175.460938 -54083.277344 101999.062500 +v -115175.460938 -54943.339844 100968.390625 +v -115175.460938 -55884.750000 100011.445312 +v -115175.460938 -57985.933594 98343.828125 +v -115175.460938 -60330.703125 97040.757812 +v -115175.460938 -62856.414062 96137.039062 +v -115175.460938 -65495.605469 95656.828125 +v -115175.460938 -68177.765625 95612.937500 +v -115175.460938 -70831.257812 96006.539062 +v -115175.460938 -73385.187500 96827.132812 +v -115175.460938 -75771.335938 98052.789062 +v -115175.460938 -77925.953125 99650.765625 +v -115175.460938 -78898.171875 100576.390625 +v -115175.460938 -79791.500000 101578.375000 +v -115175.460938 -81318.125000 103784.132812 +v -115175.460938 -82465.046875 106209.101562 +v -115175.460938 -83201.640625 108788.515625 +v -115175.460938 -83508.218750 111453.460938 +v -115175.460938 -83376.593750 114132.750000 +v -115175.460938 -82810.281250 116754.812500 +v -115175.460938 -81824.406250 119249.609375 +v -115175.460938 -80445.320312 121550.484375 +v -115175.460938 -79619.437500 122608.750000 +v -115175.460938 -78709.843750 123595.984375 +v -115175.460938 -76881.343750 125173.250000 +v -115175.460938 -74841.210938 126465.156250 +v -115175.460938 -72633.593750 127443.726562 +v -115175.460938 -70306.281250 128087.781250 +v -115175.460938 -67909.664062 128383.375000 +v -115175.460938 -65495.605469 128324.109375 +v -115175.460938 -63116.375000 127911.273438 +v -115175.460938 -60823.468750 127153.804688 +v -115175.460938 -58666.527344 126068.085938 +v -115175.460938 -56692.238281 124677.640625 +v -115175.460938 -54943.339844 123012.546875 +v -115175.460938 -53457.687500 121108.859375 +v -115175.460938 -52267.445312 119007.789062 +v -115175.460938 -51398.378906 116754.812500 +v -117087.007812 -51349.574219 109389.351562 +v -117087.007812 -51983.718750 106857.710938 +v -117087.007812 -53021.781250 104463.187500 +v -117087.007812 -54436.035156 102269.742188 +v -117087.007812 -55272.796875 101266.992188 +v -117087.007812 -56188.703125 100335.976562 +v -117087.007812 -58232.964844 98713.531250 +v -117087.007812 -60514.210938 97445.765625 +v -117087.007812 -62971.496094 96566.531250 +v -117087.007812 -65539.187500 96099.328125 +v -117087.007812 -68148.687500 96056.625000 +v -117087.007812 -70730.289062 96439.570312 +v -117087.007812 -73215.031250 97237.929688 +v -117087.007812 -75536.531250 98430.382812 +v -117087.007812 -77632.781250 99985.062500 +v -117087.007812 -78578.664062 100885.617188 +v -117087.007812 -79447.781250 101860.453125 +v -117087.007812 -80933.046875 104006.453125 +v -117087.007812 -82048.906250 106365.726562 +v -117087.007812 -82765.539062 108875.257812 +v -117087.007812 -83063.812500 111468.007812 +v -117087.007812 -82935.750000 114074.710938 +v -117087.007812 -82384.781250 116625.742188 +v -117087.007812 -81425.625000 119052.945312 +v -117087.007812 -80083.890625 121291.492188 +v -117087.007812 -79280.390625 122321.085938 +v -117087.007812 -78395.429688 123281.570312 +v -117087.007812 -76616.476562 124816.109375 +v -117087.007812 -74631.609375 126073.015625 +v -117087.007812 -72483.796875 127025.078125 +v -117087.007812 -70219.539062 127651.679688 +v -117087.007812 -67887.843750 127939.265625 +v -117087.007812 -65539.187500 127881.609375 +v -117087.007812 -63224.414062 127479.960938 +v -117087.007812 -60993.625000 126743.007812 +v -117087.007812 -58895.117188 125686.703125 +v -117087.007812 -56974.316406 124333.921875 +v -117087.007812 -55272.796875 122713.945312 +v -117087.007812 -53827.394531 120861.828125 +v -117087.007812 -52669.398438 118817.679688 +v -117087.007812 -51823.875000 116625.742188 +v -118497.312500 -51783.148438 109460.929688 +v -118497.312500 -52399.835938 106998.968750 +v -118497.312500 -53409.332031 104670.343750 +v -118497.312500 -54784.667969 102537.257812 +v -118497.312500 -55598.402344 101562.101562 +v -118497.312500 -56489.101562 100656.710938 +v -118497.312500 -58477.105469 99078.914062 +v -118497.312500 -60695.570312 97846.039062 +v -118497.312500 -63085.234375 96991.000000 +v -118497.312500 -65582.257812 96536.648438 +v -118497.312500 -68119.945312 96495.125000 +v -118497.312500 -70630.500000 96867.531250 +v -118497.312500 -73046.859375 97643.921875 +v -118497.312500 -75304.476562 98803.554688 +v -118497.312500 -77343.039062 100315.453125 +v -118497.312500 -78262.890625 101191.226562 +v -118497.312500 -79108.093750 102139.234375 +v -118497.312500 -80552.484375 104226.171875 +v -118497.312500 -81637.632812 106520.523438 +v -118497.312500 -82334.539062 108960.992188 +v -118497.312500 -82624.609375 111482.390625 +v -118497.312500 -82500.070312 114017.359375 +v -118497.312500 -81964.265625 116498.179688 +v -118497.312500 -81031.500000 118858.585938 +v -118497.312500 -79726.695312 121035.523438 +v -118497.312500 -78945.304688 122036.789062 +v -118497.312500 -78084.703125 122970.843750 +v -118497.312500 -76354.703125 124463.148438 +v -118497.312500 -74424.453125 125685.460938 +v -118497.312500 -72335.750000 126611.320312 +v -118497.312500 -70133.804688 127220.679688 +v -118497.312500 -67866.281250 127500.351562 +v -118497.312500 -65582.257812 127444.289062 +v -118497.312500 -63331.187500 127053.687500 +v -118497.312500 -61161.792969 126337.015625 +v -118497.312500 -59121.035156 125309.789062 +v -118497.312500 -57253.093750 123994.234375 +v -118497.312500 -55598.402344 122418.835938 +v -118497.312500 -54192.777344 120617.695312 +v -118497.312500 -53066.648438 118629.796875 +v -118497.312500 -52244.394531 116498.179688 +v -64809.105469 -54569.085938 115792.992188 +v -64809.105469 -55262.707031 117591.140625 +v -64809.105469 -56212.664062 119268.046875 +v -64809.105469 -57398.390625 120787.414062 +v -64809.105469 -58794.222656 122116.359375 +v -64809.105469 -60369.945312 123226.109375 +v -64809.105469 -62091.445312 124092.640625 +v -64809.105469 -63921.460938 124697.195312 +v -64809.105469 -65820.375000 125026.687500 +v -64809.105469 -67747.078125 125073.984375 +v -64809.105469 -69659.875000 124838.062500 +v -64809.105469 -71517.351562 124324.031250 +v -64809.105469 -73279.296875 123543.015625 +v -64809.105469 -74907.570312 122511.921875 +v -64809.105469 -76366.929688 121253.070312 +v -64809.105469 -77092.898438 120465.140625 +v -64809.105469 -77752.046875 119620.515625 +v -64809.105469 -78852.726562 117784.140625 +v -64809.105469 -79639.570312 115792.992188 +v -64809.105469 -80091.554688 113700.265625 +v -64809.105469 -80196.609375 111561.875000 +v -64809.105469 -79951.921875 109434.921875 +v -77728.312500 -52378.261719 116457.570312 +v -77728.312500 -53193.109375 118569.984375 +v -77728.312500 -54309.093750 120539.968750 +v -77728.312500 -55702.054688 122324.882812 +v -77728.312500 -57341.843750 123886.093750 +v -77728.312500 -59192.957031 125189.796875 +v -77728.312500 -61215.328125 126207.773438 +v -77728.312500 -63365.179688 126917.984375 +v -77728.312500 -65595.968750 127305.062500 +v -77728.312500 -67859.414062 127360.625000 +v -77728.312500 -70106.515625 127083.476562 +v -77728.312500 -72288.625000 126479.601562 +v -77728.312500 -74358.507812 125562.085938 +v -77728.312500 -76271.367188 124350.789062 +v -77728.312500 -77985.781250 122871.921875 +v -77728.312500 -78838.625000 121946.281250 +v -77728.312500 -79612.976562 120954.039062 +v -77728.312500 -80906.031250 118796.718750 +v -77728.312500 -81830.390625 116457.570312 +v -77728.312500 -82361.375000 113999.093750 +v -77728.312500 -82484.789062 111486.960938 +v -77728.312500 -82197.335938 108988.281250 +v -90688.093750 -50964.074219 116886.562500 +v -90688.093750 -51857.175781 119201.835938 +v -90688.093750 -53080.328125 121361.007812 +v -90688.093750 -54607.062500 123317.328125 +v -90688.093750 -56404.320312 125028.468750 +v -90688.093750 -58433.203125 126457.367188 +v -90688.093750 -60649.789062 127573.101562 +v -90688.093750 -63006.097656 128351.523438 +v -90688.093750 -65451.121094 128775.773438 +v -90688.093750 -67931.929688 128836.671875 +v -90688.093750 -70394.820312 128532.906250 +v -90688.093750 -72786.484375 127871.039062 +v -90688.093750 -75055.148438 126865.414062 +v -90688.093750 -77151.703125 125537.781250 +v -90688.093750 -79030.757812 123916.898438 +v -90688.093750 -79965.507812 122902.367188 +v -90688.093750 -80814.226562 121814.843750 +v -90688.093750 -82231.453125 119450.335938 +v -90688.093750 -83244.585938 116886.562500 +v -90688.093750 -83826.554688 114191.992188 +v -90688.093750 -83961.820312 111438.609375 +v -90688.093750 -83646.765625 108699.976562 +v -46101.402344 -73201.796875 106986.406250 +v -50247.621094 -74311.039062 106076.078125 +v -50247.621094 -73803.601562 105506.914062 +v -52934.566406 -74947.757812 105553.531250 +v -52934.566406 -74395.492188 104934.093750 +v -52934.566406 -73794.445312 104361.851562 +v -55750.101562 -75559.984375 105051.093750 +v -55750.101562 -74964.609375 104383.296875 +v -55750.101562 -74316.648438 103766.390625 +v -55750.101562 -72880.648438 102701.382812 +v -58678.261719 -76145.726562 104570.382812 +v -58678.261719 -75509.109375 103856.328125 +v -58678.261719 -74816.265625 103196.687500 +v -58678.261719 -73280.796875 102057.906250 +v -58678.261719 -71580.328125 101184.453125 +v -61703.195312 -76703.101562 104112.960938 +v -61703.195312 -76027.234375 103354.890625 +v -61703.195312 -75291.679688 102654.585938 +v -61703.195312 -73661.554688 101445.593750 +v -61703.195312 -71856.257812 100518.296875 +v -61703.195312 -69924.023438 99897.460938 +v -64809.105469 -77230.218750 103680.367188 +v -64809.105469 -76517.242188 102880.656250 +v -64809.105469 -75741.296875 102141.898438 +v -64809.105469 -74021.648438 100866.515625 +v -64809.105469 -72117.210938 99888.296875 +v -64809.105469 -70078.867188 99233.367188 +v -64809.105469 -67961.062500 98919.218750 +v -67980.265625 -77725.265625 103274.085938 +v -67980.265625 -76977.429688 102435.289062 +v -67980.265625 -76163.546875 101660.406250 +v -67980.265625 -74359.828125 100322.671875 +v -67980.265625 -72362.289062 99296.632812 +v -67980.265625 -70224.289062 98609.679688 +v -67980.265625 -68002.945312 98280.171875 +v -67980.265625 -65757.601562 98316.914062 +v -71200.976562 -78186.437500 102895.617188 +v -71200.976562 -77406.125000 102020.398438 +v -71200.976562 -76556.906250 101211.867188 +v -71200.976562 -74674.867188 99816.054688 +v -71200.976562 -72590.593750 98745.453125 +v -71200.976562 -70359.757812 98028.679688 +v -71200.976562 -68041.968750 97684.867188 +v -71200.976562 -65699.125000 97723.203125 +v -71200.976562 -63393.820312 98142.671875 +v -74455.546875 -78611.921875 102546.429688 +v -74455.546875 -77801.656250 101637.609375 +v -74455.546875 -76919.828125 100798.039062 +v -74455.546875 -74965.531250 99348.632812 +v -74455.546875 -72801.226562 98236.929688 +v -74455.546875 -70484.750000 97492.632812 +v -74455.546875 -68077.968750 97135.617188 +v -74455.546875 -65645.171875 97175.429688 +v -74455.546875 -63251.359375 97611.000000 +v -74455.546875 -60960.472656 98430.687500 +v -77728.312500 -78999.953125 102227.984375 +v -77728.312500 -78162.359375 101288.515625 +v -77728.312500 -77250.804688 100420.632812 +v -77728.312500 -75230.601562 98922.351562 +v -77728.312500 -72993.328125 97773.164062 +v -77728.312500 -70598.734375 97003.773438 +v -77728.312500 -68110.796875 96634.718750 +v -77728.312500 -65595.968750 96675.875000 +v -77728.312500 -63121.441406 97126.125000 +v -77728.312500 -60753.304688 97973.460938 +v -77728.312500 -58554.828125 99195.234375 +v -81003.625000 -79348.765625 101941.718750 +v -81003.625000 -78486.617188 100974.703125 +v -81003.625000 -77548.328125 100081.375000 +v -81003.625000 -75468.890625 98539.156250 +v -81003.625000 -73166.007812 97356.273438 +v -81003.625000 -70701.203125 96564.320312 +v -81003.625000 -68140.312500 96184.445312 +v -81003.625000 -65551.742188 96226.804688 +v -81003.625000 -63004.652344 96690.265625 +v -81003.625000 -60567.074219 97562.445312 +v -81003.625000 -58304.128906 98820.039062 +v -81003.625000 -56276.269531 100429.468750 +v -84265.812500 -79656.593750 101689.085938 +v -84265.812500 -78772.773438 100697.757812 +v -84265.812500 -77810.890625 99781.976562 +v -84265.812500 -75679.179688 98200.984375 +v -84265.812500 -73318.406250 96988.367188 +v -84265.812500 -70791.632812 96176.500000 +v -84265.812500 -68166.351562 95787.078125 +v -84265.812500 -65512.710938 95830.500000 +v -84265.812500 -62901.582031 96305.609375 +v -84265.812500 -60402.726562 97199.718750 +v -84265.812500 -58082.890625 98488.929688 +v -84265.812500 -56004.046875 100138.820312 +v -84265.812500 -55072.644531 101085.585938 +v -87499.210938 -79921.695312 101471.531250 +v -87499.210938 -79019.203125 100459.265625 +v -87499.210938 -78037.007812 99524.132812 +v -87499.210938 -75860.273438 97909.757812 +v -87499.210938 -73449.640625 96671.531250 +v -87499.210938 -70869.500000 95842.515625 +v -87499.210938 -68188.781250 95444.867188 +v -87499.210938 -65479.097656 95489.210938 +v -87499.210938 -62812.824219 95974.351562 +v -87499.210938 -60261.191406 96887.343750 +v -87499.210938 -57892.363281 98203.789062 +v -87499.210938 -55769.613281 99888.515625 +v -87499.210938 -54818.542969 100855.281250 +v -87499.210938 -53949.656250 101896.531250 +v -90688.093750 -80142.328125 101290.460938 +v -90688.093750 -79224.296875 100260.773438 +v -90688.093750 -78225.195312 99309.546875 +v -90688.093750 -76010.992188 97667.382812 +v -90688.093750 -73558.867188 96407.835938 +v -90688.093750 -70934.312500 95564.554688 +v -90688.093750 -68207.453125 95160.062500 +v -90688.093750 -65451.121094 95205.164062 +v -90688.093750 -62738.953125 95698.656250 +v -90688.093750 -60143.398438 96627.367188 +v -90688.093750 -57733.792969 97966.468750 +v -90688.093750 -55574.503906 99680.203125 +v -90688.093750 -54607.062500 100663.601562 +v -90688.093750 -53723.218750 101722.781250 +v -90688.093750 -52229.386719 104039.648438 +v -93816.742188 -80316.757812 101147.304688 +v -93816.742188 -79386.453125 100103.835938 +v -93816.742188 -78373.984375 99139.890625 +v -93816.742188 -76130.156250 97475.750000 +v -93816.742188 -73645.218750 96199.351562 +v -93816.742188 -70985.554688 95344.789062 +v -93816.742188 -68222.210938 94934.882812 +v -93816.742188 -65429.000000 94980.593750 +v -93816.742188 -62680.546875 95480.695312 +v -93816.742188 -60050.265625 96421.820312 +v -93816.742188 -57608.421875 97778.843750 +v -93816.742188 -55420.246094 99515.500000 +v -93816.742188 -54439.859375 100512.062500 +v -93816.742188 -53544.191406 101585.406250 +v -93816.742188 -52030.371094 103933.273438 +v -93816.742188 -50919.230469 106496.367188 +v -46101.402344 -66331.171875 104140.500000 +v -50247.621094 -64691.382812 102985.226562 +v -52934.566406 -62916.753906 102748.296875 +v -55750.101562 -61027.167969 102895.351562 +v -58678.261719 -59108.792969 103453.726562 +v -61703.195312 -57903.652344 103651.460938 +v -64809.105469 -56711.957031 104016.125000 +v -67980.265625 -54986.984375 105513.609375 +v -71200.976562 -53528.855469 107382.218750 +v -46101.402344 -65062.777344 104371.296875 +v -50247.621094 -63256.695312 103498.562500 +v -52934.566406 -61467.179688 103553.875000 +v -55750.101562 -59626.785156 104006.773438 +v -58678.261719 -58437.906250 104135.679688 +v -61703.195312 -57252.953125 104431.242188 +v -64809.105469 -55551.781250 105815.500000 +v -67980.265625 -54093.781250 107573.984375 +v -119000.000000 -52011.445312 -109251.515625 +v -120000.000000 -51347.406250 -109212.093750 +v -119000.000000 -51764.933594 -111990.468750 +v -120000.000000 -51104.328125 -111990.468750 +v -120000.000000 -51347.406250 -114768.835938 +v -120000.000000 -52069.246094 -106518.148438 +v -119000.000000 -52743.054688 -106600.593750 +v -120000.000000 -53247.921875 -103990.468750 +v -119000.000000 -53936.246094 -104122.906250 +v -120000.000000 -54847.617188 -101705.867188 +v -119000.000000 -55552.667969 -101898.085938 +v -120000.000000 -56819.726562 -99733.757812 +v -119000.000000 -57540.375000 -99997.648438 +v -120000.000000 -59104.328125 -98134.062500 +v -119000.000000 -59835.472656 -98482.664062 +v -120000.000000 -61632.007812 -96955.382812 +v -119000.000000 -62364.195312 -97401.835938 +v -120000.000000 -64325.957031 -96233.546875 +v -119000.000000 -65045.273438 -96789.898438 +v -120000.000000 -67104.328125 -95990.468750 +v -119000.000000 -67792.531250 -96666.523438 +v -120000.000000 -69882.703125 -96233.546875 +v -119000.000000 -70517.664062 -97035.664062 +v -120000.000000 -72576.648438 -96955.382812 +v -119000.000000 -73133.093750 -97885.468750 +v -120000.000000 -75104.328125 -98134.062500 +v -119000.000000 -75554.750000 -99188.625000 +v -120000.000000 -77388.929688 -99733.757812 +v -119000.000000 -77704.812500 -100903.234375 +v -120000.000000 -79361.039062 -101705.867188 +v -119000.000000 -79514.156250 -102974.203125 +v -120000.000000 -80960.734375 -103990.468750 +v -119000.000000 -80924.640625 -105334.953125 +v -120000.000000 -82139.414062 -106518.148438 +v -119000.000000 -81890.929688 -107909.625000 +v -120000.000000 -82861.250000 -109212.093750 +v -119000.000000 -82381.968750 -110615.453125 +v -120000.000000 -83104.328125 -111990.468750 +v -119000.000000 -82381.968750 -113365.484375 +v -120000.000000 -82861.250000 -114768.835938 +v -119000.000000 -81890.929688 -116071.312500 +v -120000.000000 -82139.414062 -117462.789062 +v -119000.000000 -80924.640625 -118645.984375 +v -120000.000000 -80960.734375 -119990.468750 +v -119000.000000 -79514.156250 -121006.734375 +v -120000.000000 -79361.039062 -122275.070312 +v -119000.000000 -77704.812500 -123077.703125 +v -120000.000000 -77388.929688 -124247.179688 +v -119000.000000 -75554.750000 -124792.312500 +v -120000.000000 -75104.328125 -125846.875000 +v -119000.000000 -73133.093750 -126095.468750 +v -120000.000000 -72576.648438 -127025.546875 +v -119000.000000 -70517.664062 -126945.273438 +v -120000.000000 -69882.703125 -127747.390625 +v -119000.000000 -67792.531250 -127314.414062 +v -120000.000000 -67104.328125 -127990.468750 +v -119000.000000 -65045.273438 -127191.039062 +v -120000.000000 -64325.957031 -127747.390625 +v -119000.000000 -62364.195312 -126579.101562 +v -120000.000000 -61632.007812 -127025.546875 +v -119000.000000 -59835.472656 -125498.265625 +v -120000.000000 -59104.328125 -125846.875000 +v -119000.000000 -57540.375000 -123983.289062 +v -120000.000000 -56819.726562 -124247.179688 +v -119000.000000 -55552.667969 -122082.851562 +v -120000.000000 -54847.617188 -122275.070312 +v -119000.000000 -53936.246094 -119858.031250 +v -120000.000000 -53247.921875 -119990.468750 +v -119000.000000 -52743.054688 -117380.343750 +v -120000.000000 -52069.246094 -117462.789062 +v -119000.000000 -52011.445312 -114729.421875 +v -118651.640625 -50570.218750 -111990.468750 +v -118214.320312 -50606.207031 -114437.734375 +v -118214.320312 -51143.863281 -116832.023438 +v -116109.773438 -50052.570312 -114519.859375 +v -116109.773438 -50608.269531 -116994.492188 +v -113712.281250 -49612.859375 -114585.085938 +v -113712.281250 -50182.886719 -117123.531250 +v -111047.757812 -49283.335938 -114633.960938 +v -111047.757812 -49864.101562 -117220.234375 +v -108142.117188 -49060.261719 -114667.054688 +v -108142.117188 -49648.296875 -117285.695312 +v -105021.281250 -48939.902344 -114684.906250 +v -105021.281250 -49531.863281 -117321.015625 +v -101711.171875 -48918.523438 -114688.078125 +v -101711.171875 -49511.175781 -117327.289062 +v -98237.695312 -48992.378906 -114677.125000 +v -98237.695312 -49582.628906 -117305.617188 +v -94626.781250 -49157.742188 -114652.593750 +v -94626.781250 -49742.601562 -117257.093750 +v -90904.335938 -49410.871094 -114615.046875 +v -90904.335938 -49987.480469 -117182.804688 +v -87096.289062 -49748.031250 -114565.031250 +v -87096.289062 -50313.652344 -117083.867188 +v -83228.554688 -50165.484375 -114503.109375 +v -83228.554688 -50717.500000 -116961.359375 +v -79327.046875 -50659.492188 -114429.828125 +v -79327.046875 -51195.410156 -116816.382812 +v -75417.679688 -51226.316406 -114345.750000 +v -75417.679688 -51743.765625 -116650.046875 +v -71526.382812 -51862.226562 -114251.421875 +v -71526.382812 -52358.949219 -116463.429688 +v -67679.070312 -52563.484375 -114147.398438 +v -67679.070312 -53037.351562 -116257.640625 +v -63582.882812 -53394.285156 -114024.164062 +v -63582.882812 -53841.082031 -116013.828125 +v -59602.199219 -54292.898438 -113890.867188 +v -59602.199219 -54710.410156 -115750.125000 +v -55770.171875 -55254.542969 -113748.218750 +v -55770.171875 -55640.714844 -115467.914062 +v -52119.945312 -56274.441406 -113596.929688 +v -52119.945312 -56627.375000 -115168.617188 +v -48684.667969 -57347.808594 -113437.710938 +v -48684.667969 -57665.765625 -114853.625000 +v -45497.484375 -58469.875000 -113271.265625 +v -45497.484375 -58751.261719 -114524.343750 +v -42591.546875 -59635.851562 -113098.312500 +v -42591.546875 -59879.242188 -114182.171875 +v -40000.000000 -60988.187500 -113629.281250 +v -42591.546875 -60279.035156 -115218.593750 +v -40000.000000 -61620.746094 -115156.414062 +v -42591.546875 -60826.570312 -116185.132812 +v -40000.000000 -62627.003906 -116467.796875 +v -42591.546875 -61510.003906 -117060.867188 +v -42591.546875 -62314.535156 -117826.843750 +v -45497.484375 -61566.753906 -118738.023438 +v -45497.484375 -62616.761719 -119477.523438 +v -48684.667969 -62033.593750 -120450.476562 +v -48684.667969 -63329.816406 -121102.945312 +v -52119.945312 -62914.562500 -122105.460938 +v -52119.945312 -64444.085938 -122610.750000 +v -55770.171875 -64193.562500 -123610.906250 +v -55770.171875 -65930.140625 -123912.226562 +v -59602.199219 -65834.851562 -124879.710938 +v -59602.199219 -67739.835938 -124926.476562 +v -63582.882812 -67784.406250 -125833.828125 +v -63582.882812 -69808.289062 -125584.210938 +v -67679.070312 -69972.148438 -126407.960938 +v -67679.070312 -72056.593750 -125831.117188 +v -71526.382812 -72295.421875 -126498.609375 +v -71526.382812 -74368.023438 -125579.882812 +v -75417.679688 -74671.070312 -126146.843750 +v -75417.679688 -76666.343750 -124883.351562 +v -79327.046875 -77007.695312 -125343.617188 +v -79327.046875 -78859.820312 -123745.960938 +v -83228.554688 -79212.960938 -124099.101562 +v -83228.554688 -80161.992188 -123069.070312 +v -87096.289062 -80483.789062 -123342.093750 +v -87096.289062 -81366.703125 -122210.742188 +v -90904.335938 -81643.765625 -122409.281250 +v -90904.335938 -82446.570312 -121186.250000 +v -94626.781250 -82666.062500 -121317.812500 +v -94626.781250 -83376.250000 -120014.890625 +v -98237.695312 -83526.179688 -120088.828125 +v -98237.695312 -84626.031250 -117305.617188 +v -101711.171875 -84697.476562 -117327.289062 +v -101711.171875 -85331.835938 -114390.164062 +v -105021.281250 -85310.406250 -114387.343750 +v -105021.281250 -85457.671875 -111389.640625 +v -108142.117188 -85336.062500 -111393.625000 +v -108142.117188 -84995.328125 -108431.726562 +v -111047.757812 -84774.148438 -108475.726562 +v -111047.757812 -83965.601562 -105644.335938 +v -113712.281250 -83653.820312 -105761.679688 +v -113712.281250 -83089.445312 -104430.070312 +v -116109.773438 -82687.601562 -104620.132812 +v -116109.773438 -82033.164062 -103371.296875 +v -118214.320312 -81548.453125 -103651.148438 +v -118214.320312 -80818.648438 -102498.648438 +v -118214.320312 -79997.093750 -101409.648438 +v -118214.320312 -79089.296875 -100391.429688 +v -116109.773438 -80429.742188 -101054.585938 +v -116109.773438 -79491.476562 -100002.195312 +v -113712.281250 -80773.367188 -100772.578125 +v -113712.281250 -79810.906250 -99693.054688 +v -111047.757812 -81030.875000 -100561.242188 +v -111047.757812 -80050.289062 -99461.382812 +v -108142.117188 -81205.203125 -100418.179688 +v -108142.117188 -80212.335938 -99304.546875 +v -105021.281250 -81299.257812 -100340.992188 +v -105021.281250 -80299.773438 -99219.929688 +v -101711.171875 -81315.968750 -100327.281250 +v -101711.171875 -80315.304688 -99204.898438 +v -98237.695312 -81258.250000 -100374.648438 +v -98237.695312 -80261.648438 -99256.828125 +v -94626.781250 -81129.023438 -100480.695312 +v -94626.781250 -80141.523438 -99373.085938 +v -90904.335938 -80931.210938 -100643.039062 +v -90904.335938 -79957.640625 -99551.046875 +v -87096.289062 -80667.734375 -100859.273438 +v -87096.289062 -79712.710938 -99788.085938 +v -83228.554688 -80341.507812 -101127.000000 +v -83228.554688 -79409.453125 -100081.578125 +v -79327.046875 -79955.453125 -101443.820312 +v -79327.046875 -79050.585938 -100428.890625 +v -75417.679688 -79512.500000 -101807.351562 +v -75417.679688 -78638.820312 -100827.398438 +v -71526.382812 -79015.554688 -102215.179688 +v -71526.382812 -78176.867188 -101274.476562 +v -67679.070312 -78467.546875 -102664.921875 +v -67679.070312 -77667.445312 -101767.492188 +v -63582.882812 -77818.296875 -103197.742188 +v -63582.882812 -77063.914062 -102351.593750 +v -59602.199219 -77116.062500 -103774.054688 +v -59602.199219 -76411.117188 -102983.367188 +v -55770.171875 -76364.562500 -104390.789062 +v -55770.171875 -75712.539062 -103659.453125 +v -52119.945312 -75567.546875 -105044.882812 +v -52119.945312 -74971.640625 -104376.492188 +v -48684.667969 -74728.742188 -105733.273438 +v -48684.667969 -74191.898438 -105131.125000 +v -45497.484375 -73851.882812 -106452.890625 +v -45497.484375 -73376.781250 -105920.000000 +v -42591.546875 -72940.710938 -107200.671875 +v -42591.546875 -72529.757812 -106739.742188 +v -40000.000000 -71581.656250 -107513.140625 +v -42591.546875 -72082.515625 -106313.929688 +v -42591.546875 -71601.976562 -105926.093750 +v -45497.484375 -72304.148438 -104979.328125 +v -45497.484375 -71713.796875 -104577.843750 +v -48684.667969 -72312.804688 -103614.554688 +v -48684.667969 -71610.898438 -103216.929688 +v -52119.945312 -72106.687500 -102251.703125 +v -52119.945312 -71294.093750 -101875.476562 +v -55770.171875 -71688.664062 -100922.906250 +v -55770.171875 -69824.578125 -100323.960938 +v -59602.199219 -70045.335938 -99377.195312 +v -59602.199219 -67951.406250 -99066.585938 +v -63582.882812 -68010.820312 -98160.085938 +v -63582.882812 -65745.804688 -98197.148438 +v -67679.070312 -65663.484375 -97361.304688 +v -67679.070312 -63299.703125 -97791.406250 +v -71526.382812 -63116.218750 -97106.632812 +v -71526.382812 -60744.976562 -97955.078125 +v -75417.679688 -60479.660156 -97369.515625 +v -75417.679688 -59306.976562 -97959.789062 +v -79327.046875 -59028.621094 -97458.914062 +v -79327.046875 -57868.097656 -98167.468750 +v -83228.554688 -57590.636719 -97752.226562 +v -83228.554688 -56458.894531 -98577.320312 +v -87096.289062 -56196.542969 -98246.757812 +v -87096.289062 -55109.875000 -99184.117188 +v -90904.335938 -54876.875000 -98935.351562 +v -90904.335938 -53850.894531 -99978.257812 +v -94626.781250 -53661.285156 -99806.406250 +v -94626.781250 -52710.554688 -100945.734375 +v -98237.695312 -52577.929688 -100843.968750 +v -98237.695312 -51715.609375 -102068.367188 +v -101711.171875 -51652.859375 -102027.906250 +v -101711.171875 -50890.386719 -103323.937500 +v -105021.281250 -50909.449219 -103334.125000 +v -105021.281250 -50256.214844 -104686.539062 +v -108142.117188 -50367.851562 -104734.937500 +v -108142.117188 -49830.898438 -106126.929688 +v -111047.757812 -50044.445312 -106199.421875 +v -111047.757812 -49328.972656 -109055.742188 +v -113712.281250 -49657.652344 -109110.007812 +v -111444.617188 -49129.343750 -111990.468750 +v -113494.617188 -49388.695312 -111990.468750 +v -117110.023438 -50107.402344 -111990.468750 +v -115387.054688 -49714.136719 -111990.468750 +v -109248.937500 -48934.343750 -111990.468750 +v -106919.492188 -48801.964844 -111990.468750 +v -104468.156250 -48730.468750 -111990.468750 +v -99247.429688 -48763.203125 -111990.468750 +v -93681.921875 -49018.679688 -111990.468750 +v -87866.796875 -49483.019531 -111990.468750 +v -81897.226562 -50142.359375 -111990.468750 +v -75868.359375 -50982.824219 -111990.468750 +v -69875.375000 -51990.542969 -111990.468750 +v -64013.425781 -53151.644531 -111990.468750 +v -58377.679688 -54452.261719 -111990.468750 +v -53063.300781 -55878.519531 -111990.468750 +v -48165.453125 -57416.546875 -111990.468750 +v -45902.464844 -58223.140625 -111990.468750 +v -43779.296875 -59052.476562 -111990.468750 +v -41807.843750 -59902.820312 -111990.468750 +v -40000.000000 -60772.433594 -111990.468750 +v -40000.000000 -63938.382812 -117474.046875 +v -42591.546875 -63222.753906 -118466.484375 +v -45497.484375 -63763.910156 -120054.953125 +v -48684.667969 -64707.750000 -121558.148438 +v -52119.945312 -66031.195312 -122886.140625 +v -55770.171875 -67692.132812 -123955.484375 +v -59602.199219 -69631.062500 -124693.218750 +v -63582.882812 -71773.640625 -125040.320312 +v -67679.070312 -74033.835938 -124954.664062 +v -71526.382812 -76283.390625 -124366.992188 +v -75417.679688 -78454.625000 -123340.765625 +v -79327.046875 -79781.171875 -122745.968750 +v -83228.554688 -81023.671875 -121964.929688 +v -87096.289062 -82154.210938 -121011.023438 +v -90904.335938 -83146.742188 -119901.710938 +v -94626.781250 -84466.054688 -117257.093750 +v -98237.695312 -85257.812500 -114380.421875 +v -101711.171875 -85479.281250 -111388.937500 +v -105021.281250 -85114.664062 -108407.992188 +v -108142.117188 -84176.656250 -105564.898438 +v -111047.757812 -83390.585938 -104287.640625 +v -113712.281250 -82418.132812 -103149.039062 +v -116109.773438 -81278.867188 -102180.125000 +v -42591.546875 -64214.992188 -118965.937500 +v -40000.000000 -65465.515625 -118106.609375 +v -42591.546875 -65269.781250 -119314.390625 +v -42591.546875 -66364.281250 -119504.304688 +v -45497.484375 -66248.742188 -120677.367188 +v -45497.484375 -67532.640625 -120708.882812 +v -48684.667969 -67588.296875 -121841.859375 +v -48684.667969 -69028.554688 -121664.218750 +v -52119.945312 -69240.250000 -122728.484375 +v -52119.945312 -70792.726562 -122298.859375 +v -55770.171875 -71140.078125 -123269.640625 +v -55770.171875 -72751.398438 -122555.398438 +v -59602.199219 -73209.679688 -123412.773438 +v -59602.199219 -74819.593750 -122393.296875 +v -63582.882812 -75360.757812 -123122.968750 +v -63582.882812 -76904.867188 -121791.007812 +v -67679.070312 -77498.765625 -122384.906250 +v -67679.070312 -78313.437500 -121500.695312 +v -71526.382812 -78854.015625 -121959.335938 +v -71526.382812 -79629.382812 -120965.796875 +v -75417.679688 -80151.937500 -121340.250000 +v -75417.679688 -80872.367188 -120242.718750 +v -79327.046875 -81363.875000 -120537.312500 +v -79327.046875 -82014.640625 -119343.421875 +v -83228.554688 -82462.546875 -119564.304688 +v -83228.554688 -83491.156250 -116961.359375 +v -87096.289062 -83895.000000 -117083.867188 +v -87096.289062 -84500.429688 -114280.710938 +v -90904.335938 -84838.359375 -114325.195312 +v -90904.335938 -84981.804688 -111405.218750 +v -94626.781250 -85237.570312 -111396.843750 +v -94626.781250 -84898.671875 -108450.953125 +v -98237.695312 -85062.632812 -108418.335938 +v -98237.695312 -84240.882812 -105540.726562 +v -101711.171875 -84310.765625 -105514.421875 +v -101711.171875 -83723.984375 -104129.953125 +v -105021.281250 -83704.445312 -104139.195312 +v -105021.281250 -83007.304688 -102808.882812 +v -108142.117188 -82901.929688 -102869.718750 +v -108142.117188 -82103.734375 -101609.226562 +v -111047.757812 -81918.304688 -101737.562500 +v -40000.000000 -67104.328125 -118322.359375 +v -42591.546875 -67474.796875 -119531.570312 +v -45497.484375 -68807.257812 -120551.679688 +v -48684.667969 -70427.164062 -121277.171875 +v -52119.945312 -72265.359375 -121646.085938 +v -55770.171875 -74240.476562 -121612.445312 +v -59602.199219 -76262.500000 -121148.640625 +v -63582.882812 -77673.000000 -120957.320312 +v -67679.070312 -79053.132812 -120552.859375 +v -71526.382812 -80320.960938 -119912.218750 +v -75417.679688 -81500.703125 -119089.976562 +v -79327.046875 -83013.250000 -116816.382812 +v -83228.554688 -84082.015625 -114225.625000 +v -87096.289062 -84641.140625 -111416.375000 +v -90904.335938 -84647.687500 -108500.875000 +v -94626.781250 -84084.429688 -105599.609375 +v -98237.695312 -83656.484375 -104161.882812 +v -101711.171875 -83026.023438 -102798.070312 +v -105021.281250 -82203.789062 -101539.984375 +v -42591.546875 -68577.296875 -119395.585938 +v -40000.000000 -68743.140625 -118106.609375 +v -42591.546875 -69647.914062 -119099.312500 +v -40000.000000 -70270.273438 -117474.046875 +v -42591.546875 -70663.468750 -118649.148438 +v -42591.546875 -71601.976562 -118054.843750 +v -45497.484375 -72304.148438 -119001.609375 +v -45497.484375 -73276.617188 -118162.757812 +v -48684.667969 -74078.718750 -118964.859375 +v -48684.667969 -74625.343750 -118371.570312 +v -52119.945312 -75452.773438 -119073.593750 +v -52119.945312 -76003.687500 -118367.664062 +v -55770.171875 -76841.781250 -118968.226562 +v -55770.171875 -77379.437500 -118149.132812 +v -59602.199219 -78213.296875 -118648.929688 +v -59602.199219 -78720.273438 -117718.820312 +v -63582.882812 -79535.039062 -118120.617188 +v -63582.882812 -80367.578125 -116013.828125 +v -67679.070312 -81171.304688 -116257.640625 +v -67679.070312 -81678.515625 -113909.195312 +v -71526.382812 -82381.382812 -114001.734375 +v -71526.382812 -82504.960938 -111486.304688 +v -75417.679688 -83147.484375 -111465.273438 +v -75417.679688 -82847.648438 -108858.929688 +v -79327.046875 -83409.664062 -108747.132812 +v -79327.046875 -82663.554688 -106134.390625 +v -83228.554688 -83130.960938 -105958.468750 +v -83228.554688 -82584.414062 -104668.937500 +v -87096.289062 -82965.914062 -104488.500000 +v -87096.289062 -82299.789062 -103217.367188 +v -90904.335938 -82594.976562 -103046.937500 +v -90904.335938 -81812.289062 -101810.945312 +v -94626.781250 -82022.703125 -101665.312500 +v -40000.000000 -71581.656250 -116467.796875 +v -42591.546875 -72443.125000 -117329.265625 +v -45497.484375 -73760.375000 -117637.703125 +v -48684.667969 -75121.656250 -117735.601562 +v -52119.945312 -76495.078125 -117619.062500 +v -55770.171875 -77848.367188 -117288.843750 +v -59602.199219 -79498.250000 -115750.125000 +v -63582.882812 -80845.812500 -113799.570312 +v -67679.070312 -81796.406250 -111509.500000 +v -71526.382812 -82217.132812 -108984.343750 +v -75417.679688 -82127.250000 -106336.242188 +v -79327.046875 -82132.945312 -104882.460938 +v -83228.554688 -81934.312500 -103428.375000 +v -87096.289062 -81532.015625 -102004.921875 +v -40000.000000 -72587.906250 -115156.414062 +v -42591.546875 -73241.476562 -116388.289062 +v -42591.546875 -72861.554688 -116875.109375 +v -40000.000000 -73220.468750 -113629.281250 +v -42591.546875 -73875.890625 -115329.835938 +v -42591.546875 -73580.343750 -115872.046875 +v -45497.484375 -74591.382812 -116478.039062 +v -45497.484375 -74199.609375 -117074.875000 +v -48684.667969 -75564.343750 -117061.203125 +v -40000.000000 -73436.218750 -111990.468750 +v -42591.546875 -74589.929688 -112975.968750 +v -42591.546875 -74329.414062 -114182.171875 +v -45497.484375 -75457.398438 -114524.343750 +v -45497.484375 -74933.070312 -115851.179688 +v -48684.667969 -76542.890625 -114853.625000 +v -48684.667969 -75950.429688 -116352.882812 +v -52119.945312 -77581.281250 -115168.617188 +v -52119.945312 -76923.640625 -116832.820312 +v -55770.171875 -78567.945312 -115467.914062 +v -40000.000000 -73220.468750 -110351.656250 +v -42591.546875 -74509.445312 -110517.500000 +v -42591.546875 -74650.476562 -111743.429688 +v -45497.484375 -75828.585938 -111704.867188 +v -45497.484375 -75758.585938 -113129.820312 +v -48684.667969 -76962.320312 -111667.750000 +v -48684.667969 -76883.218750 -113277.882812 +v -52119.945312 -78046.851562 -111632.250000 +v -52119.945312 -77959.054688 -113419.523438 +v -55770.171875 -79077.359375 -111598.515625 +v -55770.171875 -78981.289062 -113554.101562 +v -59602.199219 -80049.007812 -111566.703125 +v -59602.199219 -79945.140625 -113680.992188 +v -63582.882812 -80956.968750 -111536.976562 +v -42591.546875 -74170.601562 -109330.914062 +v -40000.000000 -72587.906250 -108824.523438 +v -42591.546875 -73929.625000 -108762.343750 +v -42591.546875 -73642.992188 -108215.367188 +v -45497.484375 -74663.804688 -107626.000000 +v -45497.484375 -74281.851562 -107022.835938 +v -48684.667969 -75214.585938 -106377.281250 +v -42591.546875 -73312.617188 -107693.648438 +v -40000.000000 -70270.273438 -106506.890625 +v -42591.546875 -71091.343750 -105578.828125 +v -45497.484375 -71092.609375 -104225.945312 +v -48684.667969 -70878.835938 -102877.992188 +v -52119.945312 -69590.445312 -101328.085938 +v -55770.171875 -67887.820312 -100036.671875 +v -59602.199219 -65834.851562 -99101.218750 +v -63582.882812 -63517.082031 -98602.679688 +v -67679.070312 -61037.554688 -98600.812500 +v -71526.382812 -59619.257812 -98521.718750 +v -75417.679688 -58186.457031 -98643.929688 +v -79327.046875 -56769.359375 -98968.500000 +v -83228.554688 -55398.363281 -99492.140625 +v -87096.289062 -54103.445312 -100207.156250 +v -90904.335938 -52913.570312 -101101.515625 +v -94626.781250 -51856.109375 -102158.953125 +v -98237.695312 -50956.238281 -103359.132812 +v -101711.171875 -50236.382812 -104677.945312 +v -105021.281250 -49715.679688 -106087.820312 +v -108142.117188 -49106.472656 -109019.007812 +v -40000.000000 -68743.140625 -105874.328125 +v -42591.546875 -69993.664062 -105015.000000 +v -42591.546875 -70554.039062 -105274.445312 +v -40000.000000 -67104.328125 -105658.578125 +v -42591.546875 -67598.132812 -104456.437500 +v -42591.546875 -68818.796875 -104637.507812 +v -45497.484375 -69086.460938 -103489.562500 +v -45497.484375 -70444.742188 -103925.984375 +v -48684.667969 -69344.046875 -102384.851562 +v -42591.546875 -66364.281250 -104476.632812 +v -40000.000000 -65465.515625 -105874.328125 +v -42591.546875 -65150.195312 -104697.539062 +v -42591.546875 -63988.308594 -105113.265625 +v -45497.484375 -63501.835938 -104039.601562 +v -45497.484375 -62864.132812 -104360.593750 +v -48684.667969 -62313.109375 -103369.078125 +v -48684.667969 -61624.585938 -103789.453125 +v -52119.945312 -61021.730469 -102887.218750 +v -52119.945312 -60298.148438 -103414.742188 +v -55770.171875 -59657.179688 -102607.125000 +v -55770.171875 -58915.273438 -103247.101562 +v -59602.199219 -58250.707031 -102537.554688 +v -59602.199219 -57507.816406 -103292.695312 +v -63582.882812 -56834.703125 -102682.625000 +v -63582.882812 -56108.406250 -103553.000000 +v -67679.070312 -55442.074219 -103041.703125 +v -67679.070312 -54749.777344 -104024.687500 +v -71526.382812 -54153.960938 -103640.523438 +v -71526.382812 -53514.910156 -104726.773438 +v -75417.679688 -52947.953125 -104423.726562 +v -75417.679688 -52376.937500 -105605.914062 +v -79327.046875 -51851.187500 -105377.992188 +v -79327.046875 -51361.828125 -106646.609375 +v -83228.554688 -50888.917969 -106486.078125 +v -83228.554688 -50208.859375 -109201.015625 +v -87096.289062 -49792.476562 -109132.273438 +v -90904.335938 -49456.183594 -109076.750000 +v -94626.781250 -49203.703125 -109035.062500 +v -98237.695312 -49038.761719 -109007.828125 +v -94626.781250 -49924.218750 -106158.609375 +v -98237.695312 -49765.917969 -106104.867188 +v -94626.781250 -50458.265625 -104774.132812 +v -98237.695312 -50304.886719 -104707.640625 +v -94626.781250 -51103.671875 -103437.937500 +v -40000.000000 -63938.382812 -106506.890625 +v -42591.546875 -63436.718750 -105390.914062 +v -45497.484375 -62254.792969 -104732.625000 +v -48684.667969 -60972.718750 -104264.695312 +v -52119.945312 -59620.093750 -103999.632812 +v -55770.171875 -58228.144531 -103945.562500 +v -59602.199219 -56829.125000 -104106.023438 +v -63582.882812 -55455.664062 -104479.820312 +v -67679.070312 -54140.128906 -105060.960938 +v -71526.382812 -52966.765625 -105861.609375 +v -75417.679688 -51904.445312 -106830.804688 +v -79327.046875 -50701.605469 -109282.367188 +v -40000.000000 -62627.003906 -107513.140625 +v -42591.546875 -62410.671875 -106076.500000 +v -42591.546875 -62909.664062 -105712.710938 +v -40000.000000 -61620.746094 -108824.523438 +v -42591.546875 -61114.355469 -107394.203125 +v -42591.546875 -61510.003906 -106920.070312 +v -42591.546875 -61943.074219 -106479.851562 +v -45497.484375 -60636.617188 -106128.476562 +v -45497.484375 -61137.296875 -105619.531250 +v -48684.667969 -59796.125000 -105366.695312 +v -48684.667969 -60361.871094 -104791.617188 +v -52119.945312 -58992.109375 -104637.976562 +v -40000.000000 -60988.187500 -110351.656250 +v -42591.546875 -60177.066406 -108987.390625 +v -42591.546875 -60445.652344 -108431.328125 +v -42591.546875 -60758.781250 -107899.078125 +v -45497.484375 -59406.097656 -107875.679688 +v -45497.484375 -59768.113281 -107260.335938 +v -48684.667969 -58405.699219 -107340.953125 +v -48684.667969 -58814.757812 -106645.640625 +v -52119.945312 -57448.710938 -106829.437500 +v -52119.945312 -57902.773438 -106057.625000 +v -55770.171875 -56539.402344 -106343.398438 +v -55770.171875 -57036.222656 -105498.906250 +v -59602.199219 -55682.027344 -105885.117188 +v -59602.199219 -56219.167969 -104972.101562 +v -63582.882812 -54880.847656 -105456.882812 +v -42591.546875 -59654.980469 -110760.578125 +v -42591.546875 -59954.820312 -109563.539062 +v -45497.484375 -58838.640625 -109184.648438 +v -45497.484375 -59095.582031 -108518.546875 +v -48684.667969 -57764.496094 -108820.023438 +v -48684.667969 -58054.828125 -108067.367188 +v -52119.945312 -56736.968750 -108471.226562 +v -52119.945312 -57059.242188 -107635.765625 +v -55770.171875 -55760.632812 -108139.804688 +v -55770.171875 -56113.253906 -107225.664062 +v -59602.199219 -54840.058594 -107827.312500 +v -59602.199219 -55221.296875 -106838.984375 +v -63582.882812 -53979.820312 -107535.296875 +v -63582.882812 -54387.800781 -106477.648438 +v -67679.070312 -53184.503906 -107265.320312 +v -67679.070312 -53617.203125 -106143.585938 +v -71526.382812 -52513.195312 -107037.445312 +v -45497.484375 -58491.988281 -110568.562500 +v -52119.945312 -56302.175781 -110207.023438 +v -48684.667969 -57372.796875 -110383.789062 +v -55770.171875 -55284.890625 -110039.070312 +v -59602.199219 -54325.707031 -109880.710938 +v -63582.882812 -53429.394531 -109732.726562 +v -67679.070312 -52600.718750 -109595.914062 +v -71526.382812 -51901.261719 -109480.429688 +v -75417.679688 -51266.980469 -109375.710938 +v -101711.171875 -48965.093750 -108995.671875 +v -101711.171875 -49695.214844 -106080.867188 +v -105021.281250 -48986.421875 -108999.187500 +v -116109.773438 -50096.238281 -109182.421875 +v -113712.281250 -50359.894531 -106306.500000 +v -116109.773438 -50780.828125 -106449.382812 +v -113712.281250 -50880.402344 -104957.140625 +v -116109.773438 -51288.250000 -105133.945312 +v -113712.281250 -51509.437500 -103654.828125 +v -116109.773438 -51901.472656 -103864.375000 +v -113712.281250 -52242.796875 -102408.273438 +v -116109.773438 -52616.394531 -102649.156250 +v -113712.281250 -53075.574219 -101225.828125 +v -116109.773438 -53428.238281 -101496.437500 +v -113712.281250 -54002.195312 -100115.382812 +v -116109.773438 -54331.562500 -100413.906250 +v -113712.281250 -55016.460938 -99084.382812 +v -116109.773438 -55320.335938 -99408.828125 +v -113712.281250 -56111.589844 -98139.718750 +v -116109.773438 -56387.933594 -98487.906250 +v -113712.281250 -57280.257812 -97287.710938 +v -116109.773438 -57527.222656 -97657.312500 +v -113712.281250 -58514.640625 -96534.054688 +v -116109.773438 -58730.574219 -96922.601562 +v -113712.281250 -59806.488281 -95883.789062 +v -116109.773438 -59989.945312 -96288.687500 +v -113712.281250 -62527.667969 -94910.140625 +v -116109.773438 -62642.718750 -95339.515625 +v -113712.281250 -65371.105469 -94392.757812 +v -116109.773438 -65414.675781 -94835.140625 +v -113712.281250 -68260.843750 -94345.468750 +v -116109.773438 -68231.773438 -94789.039062 +v -113712.281250 -71119.687500 -94769.539062 +v -116109.773438 -71018.742188 -95202.445312 +v -113712.281250 -73871.265625 -95653.632812 +v -116109.773438 -73701.156250 -96064.320312 +v -113712.281250 -75183.695312 -96261.281250 +v -116109.773438 -74980.593750 -96656.687500 +v -113712.281250 -76442.078125 -96974.148438 +v -116109.773438 -76207.343750 -97351.632812 +v -113712.281250 -77637.992188 -97787.460938 +v -116109.773438 -77373.195312 -98144.507812 +v -113712.281250 -78763.445312 -98695.789062 +v -116109.773438 -78470.351562 -99030.000000 +v -118214.320312 -50648.457031 -109273.593750 +v -118214.320312 -51310.820312 -106629.296875 +v -118214.320312 -51801.765625 -105356.562500 +v -118214.320312 -52395.078125 -104128.210938 +v -118214.320312 -53086.789062 -102952.453125 +v -118214.320312 -53872.269531 -101837.156250 +v -118214.320312 -54746.269531 -100789.773438 +v -118214.320312 -55702.937500 -99817.328125 +v -118214.320312 -56735.875000 -98926.304688 +v -118214.320312 -57838.171875 -98122.687500 +v -118214.320312 -59002.453125 -97411.828125 +v -118214.320312 -60220.933594 -96798.492188 +v -118214.320312 -62787.578125 -95880.132812 +v -118214.320312 -65469.535156 -95392.140625 +v -118214.320312 -68195.164062 -95347.539062 +v -118214.320312 -70891.648438 -95747.523438 +v -118214.320312 -73486.968750 -96581.414062 +v -118214.320312 -74724.867188 -97154.546875 +v -118214.320312 -75911.781250 -97826.929688 +v -118214.320312 -77039.781250 -98594.054688 +v -118214.320312 -78101.320312 -99450.796875 +v -118214.320312 -82181.640625 -104859.429688 +v -118214.320312 -82713.968750 -106115.414062 +v -118214.320312 -83462.492188 -108736.625000 +v -116109.773438 -84011.437500 -108627.437500 +v -116109.773438 -84333.437500 -111426.445312 +v -113712.281250 -84777.718750 -111411.898438 +v -113712.281250 -84635.906250 -114298.546875 +v -111047.757812 -84966.187500 -114342.023438 +v -111047.757812 -84344.554688 -117220.234375 +v -108142.117188 -84560.359375 -117285.695312 +v -108142.117188 -83464.632812 -120058.476562 +v -105021.281250 -83573.765625 -120112.296875 +v -105021.281250 -82854.953125 -121431.031250 +v -101711.171875 -82873.492188 -121442.140625 +v -101711.171875 -82048.343750 -122699.203125 +v -98237.695312 -81987.656250 -122655.710938 +v -98237.695312 -81066.296875 -123836.320312 +v -94626.781250 -80938.828125 -123728.164062 +v -94626.781250 -79933.335938 -124819.476562 +v -90904.335938 -79752.390625 -124638.531250 +v -90904.335938 -77759.632812 -126357.484375 +v -87096.289062 -77556.593750 -126083.718750 +v -87096.289062 -75375.554688 -127464.843750 +v -83228.554688 -75176.617188 -127092.656250 +v -83228.554688 -72873.296875 -128113.648438 +v -79327.046875 -72705.046875 -127643.429688 +v -79327.046875 -70347.664062 -128295.804688 +v -75417.679688 -70235.867188 -127733.781250 +v -75417.679688 -67891.953125 -128022.882812 +v -71526.382812 -67860.406250 -127380.789062 +v -71526.382812 -65593.992188 -127325.148438 +v -67679.070312 -65663.484375 -126619.632812 +v -67679.070312 -63532.531250 -126249.882812 +v -63582.882812 -63736.609375 -125435.156250 +v -63582.882812 -61800.312500 -124795.492188 +v -59602.199219 -62147.960938 -123956.195312 +v -59602.199219 -60445.871094 -123099.437500 +v -55770.171875 -60945.664062 -122265.578125 +v -55770.171875 -59504.648438 -121250.703125 +v -52119.945312 -60158.746094 -120453.687500 +v -52119.945312 -58992.109375 -119342.953125 +v -48684.667969 -59796.125000 -118614.234375 +v -48684.667969 -58903.316406 -117470.210938 +v -45497.484375 -59846.488281 -116840.000000 +v -45497.484375 -59213.468750 -115722.570312 +v -118214.320312 -83774.039062 -111444.757812 +v -116109.773438 -84195.187500 -114240.523438 +v -113712.281250 -84025.773438 -117123.531250 +v -111047.757812 -83262.375000 -119958.734375 +v -108142.117188 -82750.585938 -121368.476562 +v -105021.281250 -82030.773438 -122686.609375 +v -101711.171875 -81123.234375 -123884.625000 +v -98237.695312 -80051.546875 -124937.679688 +v -94626.781250 -77912.078125 -126563.023438 +v -90904.335938 -75536.226562 -127765.445312 +v -87096.289062 -73015.468750 -128511.000000 +v -83228.554688 -70445.093750 -128785.625000 +v -79327.046875 -67920.070312 -128595.218750 +v -75417.679688 -65530.980469 -127964.921875 +v -71526.382812 -63360.277344 -126937.562500 +v -67679.070312 -61478.902344 -125571.453125 +v -63582.882812 -59978.835938 -123878.632812 +v -59602.199219 -58887.914062 -122002.203125 +v -55770.171875 -58228.144531 -120035.375000 +v -52119.945312 -58001.078125 -118073.070312 +v -48684.667969 -58188.035156 -116207.562500 +v -118214.320312 -83640.281250 -114167.468750 +v -116109.773438 -83600.390625 -116994.492188 +v -113712.281250 -82963.601562 -119811.398438 +v -111047.757812 -82557.156250 -121252.539062 +v -108142.117188 -81931.875000 -122615.734375 +v -105021.281250 -81106.750000 -123870.640625 +v -101711.171875 -80104.343750 -124990.484375 +v -98237.695312 -78011.656250 -126697.296875 +v -94626.781250 -75656.859375 -127991.125000 +v -90904.335938 -73130.296875 -128831.921875 +v -87096.289062 -70527.421875 -129199.531250 +v -83228.554688 -67944.570312 -129094.031250 +v -79327.046875 -65474.816406 -128535.195312 +v -75417.679688 -63204.070312 -127561.164062 +v -71526.382812 -61207.605469 -126226.414062 +v -67679.070312 -59547.042969 -124599.039062 +v -63582.882812 -58311.601562 -122704.437500 +v -59602.199219 -57507.816406 -120688.242188 +v -55770.171875 -57143.785156 -118645.890625 +v -52119.945312 -57207.101562 -116671.507812 +v -118214.320312 -83064.796875 -116832.023438 +v -116109.773438 -82564.921875 -119614.789062 +v -113712.281250 -82271.421875 -121081.273438 +v -111047.757812 -81748.562500 -122484.382812 +v -108142.117188 -81013.968750 -123791.921875 +v -105021.281250 -80089.054688 -124975.195312 +v -101711.171875 -78056.140625 -126757.273438 +v -98237.695312 -75735.664062 -128138.562500 +v -94626.781250 -73216.507812 -129072.859375 +v -90904.335938 -70593.921875 -129533.828125 +v -87096.289062 -67965.281250 -129515.539062 +v -83228.554688 -65425.863281 -129032.203125 +v -79327.046875 -63064.835938 -128117.023438 +v -75417.679688 -60961.589844 -126820.351562 +v -71526.382812 -59182.582031 -125207.101562 +v -67679.070312 -57778.777344 -123353.687500 +v -63582.882812 -56834.703125 -121298.312500 +v -59602.199219 -56335.457031 -119186.000000 +v -55770.171875 -56275.039062 -117112.343750 +v -118214.320312 -82062.945312 -119367.242188 +v -116109.773438 -81890.140625 -120852.742188 +v -113712.281250 -81477.781250 -122290.335938 +v -111047.757812 -80842.007812 -123646.023438 +v -108142.117188 -80003.015625 -124889.156250 +v -105021.281250 -78043.257812 -126739.914062 +v -101711.171875 -75770.859375 -128204.406250 +v -98237.695312 -73272.828125 -129230.257812 +v -94626.781250 -70643.843750 -129784.812500 +v -90904.335938 -67982.007812 -129855.976562 +v -87096.289062 -65384.500000 -129452.187500 +v -83228.554688 -62943.488281 -128601.468750 +v -79327.046875 -60742.300781 -127349.757812 +v -75417.679688 -58852.082031 -125758.507812 +v -71526.382812 -57329.039062 -123901.695312 +v -67679.070312 -56212.382812 -121862.351562 +v -63582.882812 -55580.113281 -119690.703125 +v -59602.199219 -55396.210938 -117527.992188 +v -118214.320312 -81410.078125 -120565.007812 +v -116109.773438 -81116.453125 -122031.414062 +v -113712.281250 -80587.992188 -123430.500000 +v -111047.757812 -79843.554688 -124729.695312 +v -108142.117188 -77970.781250 -126642.179688 +v -105021.281250 -75760.671875 -128185.343750 +v -101711.171875 -73297.976562 -129300.562500 +v -98237.695312 -70676.453125 -129948.773438 +v -94626.781250 -67994.562500 -130111.570312 +v -90904.335938 -65351.089844 -129791.390625 +v -87096.289062 -62840.949219 -129010.835938 +v -83228.554688 -60551.183594 -127811.156250 +v -79327.046875 -58557.484375 -126250.015625 +v -75417.679688 -56921.207031 -124398.632812 +v -71526.382812 -55687.101562 -122338.437500 +v -67679.070312 -54881.765625 -120157.320312 +v -63582.882812 -54574.984375 -117916.406250 +v -118214.320312 -80661.507812 -121705.406250 +v -118214.320312 -79822.250000 -122780.820312 +v -118214.320312 -78897.906250 -123784.046875 +v -116109.773438 -79293.671875 -124179.812500 +v -116109.773438 -77373.195312 -125836.429688 +v -113712.281250 -77637.992188 -126193.476562 +v -113712.281250 -75439.968750 -127585.359375 +v -111047.757812 -75597.007812 -127879.148438 +v -111047.757812 -73173.734375 -128953.312500 +v -108142.117188 -73249.703125 -129165.648438 +v -108142.117188 -70663.070312 -129881.468750 +v -105021.281250 -70686.804688 -130000.804688 +v -105021.281250 -68005.367188 -130331.531250 +v -101711.171875 -68006.429688 -130353.117188 +v -101711.171875 -65302.304688 -130286.734375 +v -98237.695312 -65309.621094 -130212.429688 +v -98237.695312 -62655.332031 -129751.867188 +v -94626.781250 -62695.949219 -129589.703125 +v -94626.781250 -60161.320312 -128752.375000 +v -90904.335938 -60259.250000 -128515.953125 +v -90904.335938 -57908.542969 -127332.710938 +v -87096.289062 -58083.773438 -127040.351562 +v -87096.289062 -55973.132812 -125553.875000 +v -83228.554688 -56240.859375 -125227.648438 +v -83228.554688 -54416.140625 -123490.367188 +v -79327.046875 -54786.183594 -123154.984375 +v -79327.046875 -53281.332031 -121226.695312 +v -75417.679688 -53757.789062 -120908.343750 +v -75417.679688 -52593.722656 -118853.476562 +v -71526.382812 -53174.867188 -118578.609375 +v -118214.320312 -77039.781250 -125386.882812 +v -116109.773438 -75230.421875 -127193.320312 +v -113712.281250 -73061.507812 -128639.656250 +v -111047.757812 -70619.070312 -129660.281250 +v -108142.117188 -67999.398438 -130210.000000 +v -105021.281250 -65304.421875 -130265.226562 +v -101711.171875 -62637.187500 -129824.296875 +v -98237.695312 -60097.347656 -128906.820312 +v -94626.781250 -57776.984375 -127552.203125 +v -90904.335938 -55756.898438 -125817.351562 +v -87096.289062 -54103.445312 -123773.781250 +v -83228.554688 -52866.085938 -121504.156250 +v -79327.046875 -52075.707031 -119098.476562 +v -118214.320312 -74966.585938 -126699.718750 +v -116109.773438 -72911.750000 -128221.125000 +v -113712.281250 -70554.085938 -129333.554688 +v -111047.757812 -67988.328125 -129984.757812 +v -108142.117188 -65316.347656 -130144.132812 +v -105021.281250 -62642.441406 -129803.328125 +v -101711.171875 -60068.773438 -128975.804688 +v -98237.695312 -57691.042969 -127695.585938 +v -94626.781250 -55594.558594 -126015.164062 +v -90904.335938 -53850.894531 -124002.679688 +v -87096.289062 -52515.187500 -121738.617188 +v -83228.554688 -51624.246094 -119312.000000 +v -118214.320312 -72723.195312 -127694.148438 +v -116109.773438 -70467.359375 -128897.578125 +v -113712.281250 -67971.984375 -129652.031250 +v -111047.757812 -65338.453125 -129919.703125 +v -108142.117188 -62672.003906 -129685.296875 +v -105021.281250 -60077.042969 -128955.835938 +v -101711.171875 -57652.656250 -127759.632812 +v -98237.695312 -55488.507812 -126144.390625 +v -94626.781250 -53661.285156 -124174.531250 +v -90904.335938 -52231.785156 -121927.984375 +v -87096.289062 -51242.742188 -119492.437500 +v -118214.320312 -70358.171875 -128348.632812 +v -118214.320312 -67922.710938 -128649.023438 +v -118214.320312 -65469.535156 -128588.796875 +v -118214.320312 -63051.750000 -128169.273438 +v -118214.320312 -60721.687500 -127399.523438 +v -118214.320312 -58529.792969 -126296.218750 +v -118214.320312 -56523.507812 -124883.234375 +v -118214.320312 -54746.269531 -123191.164062 +v -116109.773438 -54331.562500 -123567.031250 +v -116109.773438 -52771.175781 -121567.578125 +v -113712.281250 -52401.566406 -121814.539062 +v -113712.281250 -51119.210938 -119550.867188 +v -111047.757812 -50818.066406 -119693.296875 +v -118214.320312 -53236.542969 -121256.625000 +v -116109.773438 -51521.054688 -119360.804688 +v -118214.320312 -52027.015625 -119121.507812 +v -45497.484375 -61677.894531 -105153.210938 +v -45497.484375 -60179.203125 -106676.632812 +v -48684.667969 -59279.269531 -105986.085938 +v -52119.945312 -58418.386719 -105325.515625 +v -55770.171875 -57600.394531 -104697.843750 +v -67679.070312 -53815.730469 -118275.507812 +v -90904.335938 -50934.621094 -119638.171875 +v -94626.781250 -50703.289062 -119747.578125 +v -98237.695312 -50552.167969 -119819.054688 +v -101711.171875 -50484.671875 -119850.984375 +v -105021.281250 -50504.210938 -119841.742188 +v -108142.117188 -50614.207031 -119789.718750 +v -45497.484375 -60636.617188 -117852.460938 +v -48684.667969 -60847.132812 -119614.882812 +v -52119.945312 -61475.730469 -121381.210938 +v -55770.171875 -62519.992188 -123058.031250 +v -59602.199219 -63957.343750 -124553.937500 +v -63582.882812 -65745.804688 -125783.789062 +v -67679.070312 -67825.617188 -126672.710938 +v -71526.382812 -70110.453125 -127103.273438 +v -75417.679688 -72512.000000 -127103.898438 +v -79327.046875 -74941.195312 -126652.210938 +v -83228.554688 -77305.195312 -125744.750000 +v -87096.289062 -79511.375000 -124397.507812 +v -90904.335938 -80743.695312 -123562.609375 +v -94626.781250 -81851.773438 -122558.335938 +v -98237.695312 -82809.445312 -121403.757812 +v -101711.171875 -83593.148438 -120121.851562 +v -105021.281250 -84676.796875 -117321.015625 +v -108142.117188 -85189.773438 -114371.460938 +v -111047.757812 -85110.671875 -111401.000000 +v -113712.281250 -84447.414062 -108540.710938 +v -116109.773438 -83237.789062 -105918.265625 +v -71526.382812 -54292.312500 -120551.179688 +v -75417.679688 -55210.769531 -122770.164062 +v -79327.046875 -56557.683594 -124841.593750 +v -83228.554688 -58300.734375 -126678.375000 +v -87096.289062 -60389.683594 -128201.054688 +v -90904.335938 -62758.128906 -129341.468750 +v -94626.781250 -65326.007812 -130046.062500 +v -98237.695312 -68002.765625 -130278.539062 +v -101711.171875 -70691.023438 -130022.000000 +v -105021.281250 -73290.695312 -129280.210938 +v -108142.117188 -75703.312500 -128078.039062 +v -111047.757812 -77836.437500 -126461.046875 +v -113712.281250 -79608.000000 -124494.140625 +v -116109.773438 -80249.031250 -123142.914062 +v -94626.781250 -52019.011719 -122070.156250 +v -98237.695312 -51880.015625 -122163.031250 +v -98237.695312 -53537.417969 -124286.796875 +v -101711.171875 -51817.929688 -122204.515625 +v -101711.171875 -53482.093750 -124336.937500 +v -101711.171875 -55441.136719 -126202.109375 +v -105021.281250 -51835.902344 -122192.500000 +v -105021.281250 -53498.109375 -124322.421875 +v -105021.281250 -55454.851562 -126185.398438 +v -105021.281250 -57663.769531 -127741.093750 +v -108142.117188 -51937.074219 -122124.906250 +v -108142.117188 -53588.265625 -124240.710938 +v -108142.117188 -55532.042969 -126091.343750 +v -108142.117188 -57726.320312 -127636.726562 +v -108142.117188 -60123.609375 -128843.421875 +v -111047.757812 -52124.582031 -121999.617188 +v -111047.757812 -53755.359375 -124089.265625 +v -111047.757812 -55675.105469 -125917.015625 +v -111047.757812 -57842.257812 -127443.296875 +v -111047.757812 -60209.906250 -128635.070312 +v -111047.757812 -62726.800781 -129466.539062 +v -113712.281250 -54002.195312 -123865.554688 +v -116109.773438 -56168.441406 -125315.882812 +v -113712.281250 -55886.441406 -125659.500000 +v -113712.281250 -58013.523438 -127157.562500 +v -113712.281250 -60337.390625 -128327.296875 +v -113712.281250 -62807.742188 -129143.398438 +v -113712.281250 -65371.105469 -129588.179688 +v -116109.773438 -58242.050781 -126776.281250 +v -45497.484375 -64983.371094 -120457.804688 +v -48684.667969 -66137.554688 -121806.250000 +v -52119.945312 -67641.539062 -122925.671875 +v -55770.171875 -69441.398438 -123739.734375 +v -59602.199219 -71467.593750 -124184.984375 +v -63582.882812 -73637.914062 -124213.945312 +v -67679.070312 -75861.078125 -123797.578125 +v -71526.382812 -78000.054688 -122886.187500 +v -75417.679688 -79344.218750 -122375.242188 +v -79327.046875 -80617.718750 -121674.031250 +v -83228.554688 -81792.234375 -120794.062500 +v -87096.289062 -82841.046875 -119750.960938 +v -90904.335938 -84221.171875 -117182.804688 +v -94626.781250 -85092.070312 -114358.601562 +v -98237.695312 -85404.648438 -111391.375000 +v -101711.171875 -85135.867188 -108403.773438 +v -105021.281250 -84290.539062 -105522.039062 +v -108142.117188 -83594.453125 -104191.218750 +v -111047.757812 -82706.632812 -102982.476562 +v -113712.281250 -81644.382812 -101927.148438 +v -116109.773438 -60507.503906 -127916.617188 +v -116109.773438 -62915.753906 -128712.195312 +v -116109.773438 -65414.675781 -129145.796875 +v -116109.773438 -67950.171875 -129208.039062 +v -45497.484375 -70045.015625 -120209.140625 +v -48684.667969 -71753.843750 -120689.101562 +v -52119.945312 -73626.273438 -120784.296875 +v -55770.171875 -75575.078125 -120461.218750 +v -59602.199219 -76980.281250 -120369.593750 +v -63582.882812 -78370.429688 -120063.640625 +v -67679.070312 -79712.898438 -119547.750000 +v -71526.382812 -80924.132812 -118805.640625 +v -75417.679688 -82464.890625 -116650.046875 +v -79327.046875 -83586.875000 -114160.437500 +v -83228.554688 -84219.351562 -111430.179688 +v -87096.289062 -84313.390625 -108567.375000 +v -90904.335938 -83844.929688 -105689.750000 +v -94626.781250 -83505.367188 -104233.351562 +v -98237.695312 -82961.367188 -102835.406250 +v -101711.171875 -82221.562500 -101527.679688 +v -45497.484375 -71219.117188 -119688.695312 +v -48684.667969 -72979.875000 -119912.726562 +v -52119.945312 -74846.007812 -119732.148438 +v -55770.171875 -76238.984375 -119740.640625 +v -59602.199219 -77632.000000 -119534.492188 +v -63582.882812 -78992.500000 -119115.960938 +v -67679.070312 -80288.312500 -118492.093750 +v -71526.382812 -81849.703125 -116463.429688 +v -75417.679688 -83018.750000 -114085.640625 +v -79327.046875 -83720.203125 -111446.523438 +v -83228.554688 -83899.484375 -108649.703125 +v -87096.289062 -83525.929688 -105809.812500 +v -90904.335938 -83274.039062 -104342.765625 +v -94626.781250 -82816.585938 -102918.992188 +v -98237.695312 -82160.164062 -101570.171875 +v -45497.484375 -75665.539062 -110287.539062 +v -45497.484375 -75273.789062 -108915.703125 +v -45497.484375 -74995.187500 -108258.367188 +v -48684.667969 -76778.078125 -110066.242188 +v -48684.667969 -76335.421875 -108516.132812 +v -48684.667969 -76020.625000 -107773.375000 +v -48684.667969 -75646.171875 -107058.828125 +v -52119.945312 -77842.343750 -109854.546875 +v -52119.945312 -77350.992188 -108133.898438 +v -52119.945312 -77001.554688 -107309.429688 +v -52119.945312 -76585.914062 -106516.273438 +v -52119.945312 -76106.843750 -105759.742188 +v -55770.171875 -78853.593750 -109653.390625 +v -55770.171875 -78315.960938 -107770.710938 +v -55770.171875 -77933.617188 -106868.593750 +v -55770.171875 -77478.835938 -106000.742188 +v -55770.171875 -76954.648438 -105172.960938 +v -59602.199219 -79807.078125 -109463.734375 +v -59602.199219 -79225.820312 -107428.265625 +v -59602.199219 -78812.445312 -106452.937500 +v -59602.199219 -78320.750000 -105514.664062 +v -59602.199219 -77754.023438 -104619.703125 +v -63582.882812 -80698.070312 -109286.507812 +v -63582.882812 -80076.039062 -107108.265625 +v -63582.882812 -79633.671875 -106064.531250 +v -63582.882812 -79107.492188 -105060.437500 +v -63582.882812 -78501.015625 -104102.710938 +v -67679.070312 -81521.820312 -109122.648438 +v -67679.070312 -80862.101562 -106812.406250 +v -67679.070312 -80392.929688 -105705.429688 +v -67679.070312 -79834.859375 -104640.492188 +v -67679.070312 -79191.632812 -103624.726562 +v -71526.382812 -81525.585938 -106562.687500 +v -75417.679688 -81614.937500 -105127.460938 +v -79327.046875 -81501.804688 -103678.078125 +v -83228.554688 -81185.007812 -102245.085938 +v -71526.382812 -81033.789062 -105402.320312 +v -71526.382812 -80448.812500 -104286.031250 +v -71526.382812 -79774.562500 -103221.273438 +v -75417.679688 -80303.171875 -102855.414062 +v -75417.679688 -81005.546875 -103964.593750 +v -79327.046875 -80774.351562 -102529.304688 +v -45497.484375 -72859.710938 -105427.710938 +v -48684.667969 -73607.632812 -104574.867188 +v -48684.667969 -72979.875000 -104068.210938 +v -52119.945312 -74323.101562 -103759.031250 +v -52119.945312 -73626.273438 -103196.640625 +v -52119.945312 -72885.820312 -102693.070312 +v -55770.171875 -75002.921875 -102983.843750 +v -55770.171875 -74240.476562 -102368.484375 +v -55770.171875 -73430.289062 -101817.500000 +v -55770.171875 -72577.781250 -101334.562500 +v -59602.199219 -75643.921875 -102252.929688 +v -59602.199219 -74819.593750 -101587.632812 +v -59602.199219 -73943.656250 -100991.929688 +v -59602.199219 -73021.968750 -100469.804688 +v -59602.199219 -72060.695312 -100024.742188 +v -63582.882812 -76242.898438 -101569.921875 +v -63582.882812 -75360.757812 -100857.968750 +v -63582.882812 -74423.382812 -100220.476562 +v -63582.882812 -73437.039062 -99661.726562 +v -63582.882812 -72408.343750 -99185.445312 +v -63582.882812 -70251.617188 -98492.476562 +v -67679.070312 -76796.679688 -100938.460938 +v -67679.070312 -75861.078125 -100183.359375 +v -67679.070312 -74866.898438 -99507.234375 +v -67679.070312 -73820.789062 -98914.625000 +v -67679.070312 -72729.757812 -98409.484375 +v -67679.070312 -70442.335938 -97674.523438 +v -67679.070312 -68065.750000 -97321.992188 +v -71526.382812 -77264.109375 -100405.460938 +v -71526.382812 -76283.390625 -99613.937500 +v -71526.382812 -75241.265625 -98905.210938 +v -71526.382812 -74144.703125 -98284.023438 +v -71526.382812 -73001.054688 -97754.523438 +v -71526.382812 -70603.320312 -96984.117188 +v -71526.382812 -68112.117188 -96614.578125 +v -71526.382812 -65593.992188 -96655.789062 +v -75417.679688 -77687.976562 -99922.125000 +v -75417.679688 -76666.343750 -99097.585938 +v -75417.679688 -75580.742188 -98359.289062 +v -75417.679688 -74438.437500 -97712.179688 +v -75417.679688 -73247.062500 -97160.585938 +v -75417.679688 -70749.296875 -96358.039062 +v -75417.679688 -68154.164062 -95973.085938 +v -75417.679688 -65530.980469 -96016.015625 +v -75417.679688 -62949.832031 -96485.671875 +v -79327.046875 -78065.804688 -99491.296875 +v -79327.046875 -77007.695312 -98637.320312 +v -79327.046875 -75883.335938 -97872.671875 +v -79327.046875 -74700.250000 -97202.460938 +v -79327.046875 -73466.351562 -96631.179688 +v -79327.046875 -70879.421875 -95799.984375 +v -79327.046875 -68191.640625 -95401.289062 +v -79327.046875 -65474.816406 -95445.742188 +v -79327.046875 -62801.519531 -95932.164062 +v -79327.046875 -60243.167969 -96847.562500 +v -83228.554688 -78395.093750 -99115.820312 +v -83228.554688 -77305.195312 -98236.187500 +v -83228.554688 -76147.062500 -97448.570312 +v -83228.554688 -74928.437500 -96758.226562 +v -83228.554688 -73657.468750 -96169.781250 +v -83228.554688 -70992.828125 -95313.617188 +v -83228.554688 -68224.304688 -94902.945312 +v -83228.554688 -65425.863281 -94948.734375 +v -83228.554688 -62672.261719 -95449.773438 +v -83228.554688 -60037.054688 -96392.664062 +v -83228.554688 -58786.023438 -97022.382812 +v -87096.289062 -78673.351562 -98798.531250 +v -87096.289062 -77556.593750 -97897.218750 +v -87096.289062 -76369.914062 -97090.187500 +v -87096.289062 -75121.257812 -96382.835938 +v -87096.289062 -73818.968750 -95779.882812 +v -87096.289062 -71088.656250 -94902.617188 +v -87096.289062 -68251.906250 -94481.828125 +v -87096.289062 -65384.500000 -94528.750000 +v -87096.289062 -62563.035156 -95042.132812 +v -87096.289062 -59862.882812 -96008.257812 +v -87096.289062 -58581.023438 -96653.500000 +v -87096.289062 -57356.175781 -97401.328125 +v -90904.335938 -78898.085938 -98542.265625 +v -90904.335938 -77759.632812 -97623.453125 +v -90904.335938 -76549.906250 -96800.742188 +v -90904.335938 -75276.992188 -96079.640625 +v -90904.335938 -73949.406250 -95464.984375 +v -90904.335938 -71166.054688 -94570.671875 +v -90904.335938 -68274.195312 -94141.710938 +v -90904.335938 -65351.089844 -94189.539062 +v -90904.335938 -62474.816406 -94712.898438 +v -90904.335938 -59722.214844 -95697.796875 +v -90904.335938 -58415.449219 -96355.562500 +v -90904.335938 -57166.812500 -97117.921875 +v -90904.335938 -55984.652344 -97979.773438 +v -94626.781250 -79066.812500 -98349.875000 +v -94626.781250 -77912.078125 -97417.906250 +v -94626.781250 -76685.039062 -96583.429688 +v -94626.781250 -75393.914062 -95852.015625 +v -94626.781250 -74047.335938 -95228.562500 +v -94626.781250 -71224.164062 -94321.460938 +v -94626.781250 -68290.937500 -93886.359375 +v -94626.781250 -65326.007812 -93934.875000 +v -94626.781250 -62408.585938 -94465.718750 +v -94626.781250 -59616.601562 -95464.703125 +v -94626.781250 -58291.144531 -96131.882812 +v -94626.781250 -57024.640625 -96905.148438 +v -94626.781250 -55825.566406 -97779.328125 +v -94626.781250 -54701.945312 -98748.578125 +v -98237.695312 -79177.031250 -98224.187500 +v -98237.695312 -78011.656250 -97283.632812 +v -98237.695312 -76773.320312 -96441.468750 +v -98237.695312 -75470.296875 -95703.312500 +v -98237.695312 -74111.312500 -95074.117188 +v -98237.695312 -71262.125000 -94158.656250 +v -98237.695312 -68301.867188 -93719.546875 +v -98237.695312 -65309.621094 -93768.507812 +v -98237.695312 -62365.320312 -94304.242188 +v -98237.695312 -59547.609375 -95312.437500 +v -98237.695312 -58209.937500 -95985.765625 +v -98237.695312 -56931.765625 -96766.156250 +v -98237.695312 -55721.644531 -97648.390625 +v -98237.695312 -54587.667969 -98626.562500 +v -98237.695312 -53537.417969 -99694.140625 +v -101711.171875 -79226.265625 -98168.046875 +v -101711.171875 -78056.140625 -97223.664062 +v -101711.171875 -76812.750000 -96378.062500 +v -101711.171875 -75504.414062 -95636.898438 +v -101711.171875 -74139.882812 -95005.132812 +v -101711.171875 -71279.078125 -94085.937500 +v -101711.171875 -68306.750000 -93645.039062 +v -101711.171875 -65302.304688 -93694.203125 +v -101711.171875 -62345.992188 -94232.117188 +v -101711.171875 -59516.792969 -95244.421875 +v -101711.171875 -58173.667969 -95920.500000 +v -101711.171875 -56890.285156 -96704.070312 +v -101711.171875 -55675.226562 -97589.906250 +v -101711.171875 -54536.625000 -98572.070312 +v -101711.171875 -53482.093750 -99643.992188 +v -101711.171875 -52518.691406 -100798.515625 +v -105021.281250 -79212.015625 -98184.296875 +v -105021.281250 -78043.257812 -97241.023438 +v -105021.281250 -76801.335938 -96396.414062 +v -105021.281250 -75494.539062 -95656.125000 +v -105021.281250 -74131.609375 -95025.101562 +v -105021.281250 -71274.171875 -94106.992188 +v -105021.281250 -68305.335938 -93666.609375 +v -105021.281250 -65304.421875 -93715.710938 +v -105021.281250 -62351.589844 -94253.000000 +v -105021.281250 -59525.714844 -95264.117188 +v -105021.281250 -58184.167969 -95939.390625 +v -105021.281250 -56902.292969 -96722.046875 +v -105021.281250 -55688.664062 -97606.835938 +v -105021.281250 -54551.402344 -98587.843750 +v -105021.281250 -53498.109375 -99658.507812 +v -105021.281250 -52535.839844 -100811.671875 +v -105021.281250 -51671.023438 -102039.617188 +v -108142.117188 -79131.789062 -98275.781250 +v -108142.117188 -77970.781250 -97338.757812 +v -108142.117188 -76737.078125 -96499.742188 +v -108142.117188 -75438.945312 -95764.359375 +v -108142.117188 -74085.046875 -95137.515625 +v -108142.117188 -71246.539062 -94225.492188 +v -108142.117188 -68297.382812 -93788.023438 +v -108142.117188 -65316.347656 -93836.804688 +v -108142.117188 -62383.082031 -94370.531250 +v -108142.117188 -59575.933594 -95374.945312 +v -108142.117188 -58243.273438 -96045.750000 +v -108142.117188 -56969.890625 -96823.210938 +v -108142.117188 -55764.304688 -97702.140625 +v -108142.117188 -54634.578125 -98676.648438 +v -108142.117188 -53588.265625 -99740.226562 +v -108142.117188 -52632.371094 -100885.742188 +v -108142.117188 -51773.285156 -102105.554688 +v -108142.117188 -51016.757812 -103391.484375 +v -111047.757812 -78983.093750 -98445.328125 +v -111047.757812 -77836.437500 -97519.890625 +v -111047.757812 -76617.992188 -96691.250000 +v -111047.757812 -75335.906250 -95964.953125 +v -111047.757812 -73998.750000 -95345.867188 +v -111047.757812 -71195.328125 -94445.109375 +v -111047.757812 -68282.632812 -94013.054688 +v -111047.757812 -65338.453125 -94061.234375 +v -111047.757812 -62441.449219 -94588.359375 +v -111047.757812 -59669.003906 -95580.359375 +v -111047.757812 -58352.820312 -96242.867188 +v -111047.757812 -57095.179688 -97010.718750 +v -111047.757812 -55904.500000 -97878.781250 +v -111047.757812 -54788.738281 -98841.242188 +v -111047.757812 -53755.359375 -99891.671875 +v -111047.757812 -52811.285156 -101023.031250 +v -111047.757812 -51962.820312 -102227.757812 +v -111047.757812 -51215.644531 -103497.789062 +v -111047.757812 -50574.757812 -104824.632812 +v -45497.484375 -67675.226562 -103280.226562 +v -45497.484375 -66248.742188 -103303.570312 +v -45497.484375 -64845.113281 -103558.968750 +v -48684.667969 -67749.414062 -102148.312500 +v -48684.667969 -66137.554688 -102174.687500 +v -48684.667969 -64551.527344 -102463.281250 +v -48684.667969 -63033.687500 -103006.367188 +v -52119.945312 -67820.390625 -101065.523438 +v -52119.945312 -66031.195312 -101094.796875 +v -52119.945312 -64270.675781 -101415.140625 +v -52119.945312 -62585.851562 -102017.976562 +v -52119.945312 -61786.003906 -102420.585938 +v -55770.171875 -65930.140625 -100068.710938 +v -59602.199219 -63752.203125 -99480.171875 +v -63582.882812 -61384.183594 -99365.843750 +v -67679.070312 -59963.628906 -99141.382812 +v -71526.382812 -58543.613281 -99178.453125 +v -75417.679688 -57125.589844 -99417.351562 +v -79327.046875 -55739.757812 -99856.640625 +v -83228.554688 -54416.140625 -100490.562500 +v -87096.289062 -53183.984375 -101309.015625 +v -90904.335938 -52071.179688 -102297.625000 +v -55770.171875 -64003.820312 -100419.210938 +v -55770.171875 -62160.328125 -101078.828125 +v -55770.171875 -61285.152344 -101519.351562 +v -55770.171875 -60448.906250 -102029.921875 +v -59602.199219 -61759.105469 -100193.312500 +v -63582.882812 -60371.621094 -99875.523438 +v -67679.070312 -58937.472656 -99767.906250 +v -71526.382812 -57525.234375 -99920.898438 +v -75417.679688 -56131.476562 -100274.875000 +v -79327.046875 -54786.183594 -100825.953125 +v -83228.554688 -53518.796875 -101565.921875 +v -87096.289062 -52357.644531 -102482.328125 +v -90904.335938 -51329.351562 -103558.570312 +v -59602.199219 -60812.910156 -100669.585938 +v -59602.199219 -59908.796875 -101221.593750 +v -59602.199219 -59052.820312 -101845.640625 +v -63582.882812 -59404.093750 -100466.250000 +v -67679.070312 -57965.949219 -100476.195312 +v -71526.382812 -56570.937500 -100744.078125 +v -75417.679688 -55210.769531 -101210.773438 +v -79327.046875 -53915.007812 -101869.945312 +v -83228.554688 -52712.332031 -102711.015625 +v -87096.289062 -51629.953125 -103719.242188 +v -90904.335938 -50693.050781 -104875.921875 +v -63582.882812 -58488.078125 -101134.070312 +v -63582.882812 -57629.699219 -101874.507812 +v -67679.070312 -56212.382812 -102118.585938 +v -67679.070312 -57055.554688 -101261.500000 +v -71526.382812 -55687.101562 -101642.500000 +v -71526.382812 -54879.644531 -102610.140625 +v -75417.679688 -54369.621094 -102218.781250 +v -79327.046875 -52442.585938 -104153.601562 +v -75417.679688 -53613.664062 -103292.164062 +v -79327.046875 -53132.062500 -102981.640625 +v -83228.554688 -52002.140625 -103918.179688 +v -83228.554688 -51392.980469 -105179.351562 +v -87096.289062 -51005.777344 -105011.492188 +v -87096.289062 -50489.292969 -106350.421875 +v -90904.335938 -50166.535156 -106240.859375 +v -41000.000000 -66138.406250 -112249.289062 +v -40000.000000 -67104.328125 -111990.468750 +v -41000.000000 -66104.328125 -111990.468750 +v -41000.000000 -66397.218750 -112697.578125 +v -41000.000000 -66238.304688 -112490.468750 +v -41000.000000 -66845.507812 -112956.390625 +v -41000.000000 -66604.328125 -112856.492188 +v -41000.000000 -67363.148438 -112956.390625 +v -41000.000000 -67104.328125 -112990.468750 +v -41000.000000 -67811.437500 -112697.578125 +v -41000.000000 -67604.328125 -112856.492188 +v -41000.000000 -68070.257812 -112249.289062 +v -41000.000000 -67970.351562 -112490.468750 +v -41000.000000 -68070.257812 -111731.648438 +v -41000.000000 -68104.328125 -111990.468750 +v -41000.000000 -67811.437500 -111283.359375 +v -41000.000000 -67970.351562 -111490.468750 +v -41000.000000 -67363.148438 -111024.539062 +v -41000.000000 -67604.328125 -111124.445312 +v -41000.000000 -66845.507812 -111024.539062 +v -41000.000000 -67104.328125 -110990.468750 +v -41000.000000 -66397.218750 -111283.359375 +v -41000.000000 -66604.328125 -111124.445312 +v -41000.000000 -66138.406250 -111731.648438 +v -41000.000000 -66238.304688 -111490.468750 +v -41000.000000 -61584.863281 -110511.531250 +v -41000.000000 -61390.156250 -111990.468750 +v -41000.000000 -61584.863281 -113469.406250 +v -41000.000000 -62155.710938 -114847.554688 +v -41000.000000 -63063.800781 -116031.000000 +v -41000.000000 -64247.242188 -116939.085938 +v -41000.000000 -65625.390625 -117509.937500 +v -41000.000000 -67104.328125 -117704.640625 +v -41000.000000 -68583.265625 -117509.937500 +v -41000.000000 -62155.710938 -109133.382812 +v -41000.000000 -63063.800781 -107949.937500 +v -41000.000000 -64247.242188 -107041.851562 +v -41000.000000 -65625.390625 -106471.000000 +v -41000.000000 -67104.328125 -106276.296875 +v -41000.000000 -68583.265625 -106471.000000 +v -41000.000000 -69961.414062 -107041.851562 +v -41000.000000 -71144.859375 -107949.937500 +v -41000.000000 -72052.945312 -109133.382812 +v -41000.000000 -72623.796875 -110511.531250 +v -41000.000000 -72818.500000 -111990.468750 +v -41000.000000 -72623.796875 -113469.406250 +v -41000.000000 -72052.945312 -114847.554688 +v -41000.000000 -71144.859375 -116031.000000 +v -41000.000000 -69961.414062 -116939.085938 +v -43413.300781 -60362.835938 -112990.476562 +v -43413.300781 -60289.070312 -111990.468750 +v -46101.402344 -59216.382812 -111990.468750 +v -46101.402344 -59301.757812 -113147.867188 +v -50247.621094 -57781.417969 -111990.468750 +v -50247.621094 -57882.324219 -113358.421875 +v -52934.566406 -56957.726562 -111990.468750 +v -52934.566406 -57067.550781 -113479.281250 +v -55750.101562 -56165.726562 -111990.468750 +v -55750.101562 -56284.121094 -113595.492188 +v -58678.261719 -55534.574219 -113706.679688 +v -55750.101562 -56636.738281 -115165.773438 +v -58678.261719 -55911.621094 -115385.742188 +v -55750.101562 -57215.949219 -116667.320312 +v -58678.261719 -56530.953125 -116991.304688 +v -55750.101562 -58009.214844 -118067.632812 +v -58678.261719 -57379.171875 -118488.609375 +v -55750.101562 -58999.359375 -119336.382812 +v -58678.261719 -58437.906250 -119845.257812 +v -55750.101562 -60164.953125 -120446.125000 +v -58678.261719 -59684.242188 -121031.867188 +v -55750.101562 -61480.761719 -121372.820312 +v -58678.261719 -61091.203125 -122022.757812 +v -55750.101562 -62918.308594 -122096.421875 +v -58678.261719 -62628.328125 -122796.484375 +v -55750.101562 -64446.464844 -122601.250000 +v -58678.261719 -64262.347656 -123336.289062 +v -55750.101562 -66032.156250 -122876.398438 +v -58678.261719 -65957.882812 -123630.492188 +v -55750.101562 -67641.062500 -122915.890625 +v -58678.261719 -67678.242188 -123672.726562 +v -55750.101562 -69238.343750 -122718.890625 +v -58678.261719 -69386.171875 -123462.078125 +v -55750.101562 -70789.429688 -122289.640625 +v -58678.261719 -71044.710938 -123003.093750 +v -55750.101562 -72260.750000 -121637.453125 +v -58678.261719 -72617.945312 -122305.726562 +v -55750.101562 -73620.445312 -120776.437500 +v -58678.261719 -74071.835938 -121385.062500 +v -55750.101562 -74839.085938 -119725.226562 +v -58678.261719 -75374.898438 -120261.039062 +v -55750.101562 -75445.312500 -119067.265625 +v -58678.261719 -76023.109375 -119557.492188 +v -55750.101562 -75995.734375 -118361.960938 +v -58678.261719 -76611.664062 -118803.328125 +v -55750.101562 -76914.859375 -116828.484375 +v -58678.261719 -77594.460938 -117163.632812 +v -55750.101562 -77571.914062 -115165.773438 +v -58678.261719 -78297.039062 -115385.742188 +v -55750.101562 -77949.351562 -113418.242188 +v -58678.261719 -78700.609375 -113517.148438 +v -55750.101562 -78037.070312 -111632.570312 +v -58678.261719 -78794.414062 -111607.773438 +v -55750.101562 -77832.750000 -109856.453125 +v -58678.261719 -78575.937500 -109708.625000 +v -55750.101562 -77341.828125 -108137.343750 +v -58678.261719 -78051.007812 -107870.429688 +v -55750.101562 -76577.437500 -106521.164062 +v -58678.261719 -77233.664062 -106142.296875 +v -55750.101562 -75559.984375 -105051.093750 +v -58678.261719 -76145.726562 -104570.382812 +v -55750.101562 -74964.609375 -104383.296875 +v -58678.261719 -75509.109375 -103856.328125 +v -55750.101562 -74316.648438 -103766.390625 +v -58678.261719 -74816.265625 -103196.687500 +v -55750.101562 -72880.648438 -102701.382812 +v -58678.261719 -73280.796875 -102057.906250 +v -55750.101562 -71290.351562 -101884.515625 +v -58678.261719 -71580.328125 -101184.453125 +v -55750.101562 -69588.226562 -101337.617188 +v -58678.261719 -69760.289062 -100599.664062 +v -55750.101562 -67819.750000 -101075.289062 +v -58678.261719 -67869.304688 -100319.164062 +v -55750.101562 -66032.156250 -101104.539062 +v -58678.261719 -65957.882812 -100350.437500 +v -55750.101562 -64273.210938 -101424.593750 +v -58678.261719 -64077.089844 -100692.664062 +v -55750.101562 -62589.890625 -102026.890625 +v -58678.261719 -62277.164062 -101336.687500 +v -55750.101562 -61027.167969 -102895.351562 +v -58678.261719 -60606.183594 -102265.312500 +v -55750.101562 -59626.785156 -104006.773438 +v -58678.261719 -59108.792969 -103453.726562 +v -55750.101562 -58999.359375 -104644.554688 +v -58678.261719 -58437.906250 -104135.679688 +v -55750.101562 -58426.152344 -105331.468750 +v -58678.261719 -57824.992188 -104870.179688 +v -55750.101562 -57457.343750 -106834.046875 +v -58678.261719 -56789.070312 -106476.851562 +v -55750.101562 -56746.238281 -108474.367188 +v -58678.261719 -56028.703125 -108230.796875 +v -55750.101562 -56311.828125 -110208.617188 +v -58678.261719 -55564.203125 -110085.187500 +v -61703.195312 -54686.941406 -111990.468750 +v -61703.195312 -54852.796875 -109967.734375 +v -64809.105469 -54179.996094 -109856.656250 +v -64809.105469 -54700.210938 -107779.835938 +v -67980.265625 -54093.781250 -107573.984375 +v -67980.265625 -54986.984375 -105513.609375 +v -71200.976562 -54460.843750 -105232.382812 +v -71200.976562 -55730.578125 -103263.085938 +v -74455.546875 -55293.898438 -102928.007812 +v -74455.546875 -56073.996094 -101993.156250 +v -77728.312500 -55702.054688 -101656.054688 +v -77728.312500 -56584.734375 -100758.812500 +v -81003.625000 -56276.269531 -100429.468750 +v -81003.625000 -58304.128906 -98820.039062 +v -84265.812500 -58082.890625 -98488.929688 +v -84265.812500 -60402.726562 -97199.718750 +v -87499.210938 -60261.191406 -96887.343750 +v -87499.210938 -62812.824219 -95974.351562 +v -90688.093750 -62738.953125 -95698.656250 +v -90688.093750 -65451.121094 -95205.164062 +v -93816.742188 -65429.000000 -94980.593750 +v -93816.742188 -68222.210938 -94934.882812 +v -96869.367188 -68232.914062 -94771.554688 +v -96869.367188 -71022.726562 -95185.382812 +v -99830.093750 -71045.328125 -95088.460938 +v -99830.093750 -73745.945312 -95956.179688 +v -102677.632812 -73758.656250 -95925.492188 +v -102677.632812 -76286.687500 -97224.031250 +v -105401.695312 -76268.265625 -97253.656250 +v -105401.695312 -78546.429688 -98943.257812 +v -109528.960938 -78409.656250 -99099.210938 +v -109528.960938 -79425.335938 -100066.210938 +v -112707.125000 -79188.453125 -100295.468750 +v -112707.125000 -80103.757812 -101322.109375 +v -115175.460938 -79791.500000 -101578.375000 +v -115175.460938 -81318.125000 -103784.132812 +v -117087.007812 -80933.046875 -104006.453125 +v -117087.007812 -82048.906250 -106365.726562 +v -118497.312500 -81637.632812 -106520.523438 +v -118497.312500 -82334.539062 -108960.992188 +v -118497.312500 -82624.609375 -111482.390625 +v -118497.312500 -82500.070312 -114017.359375 +v -118497.312500 -81964.265625 -116498.179688 +v -118497.312500 -81031.500000 -118858.585938 +v -118497.312500 -79726.695312 -121035.523438 +v -118497.312500 -78945.304688 -122036.789062 +v -117087.007812 -80083.890625 -121291.492188 +v -117087.007812 -79280.390625 -122321.085938 +v -115175.460938 -80445.320312 -121550.484375 +v -115175.460938 -79619.437500 -122608.750000 +v -112707.125000 -80773.671875 -121785.781250 +v -112707.125000 -79927.468750 -122870.093750 +v -109528.960938 -81041.632812 -121977.796875 +v -109528.960938 -80178.835938 -123083.359375 +v -105401.695312 -81210.234375 -122098.617188 +v -105401.695312 -80337.007812 -123217.562500 +v -102677.632812 -81238.593750 -122118.945312 +v -102677.632812 -80363.609375 -123240.132812 +v -99830.093750 -81211.593750 -122099.593750 +v -99830.093750 -80338.281250 -123218.640625 +v -96869.367188 -81130.695312 -122041.625000 +v -96869.367188 -80262.390625 -123154.250000 +v -93816.742188 -80997.648438 -121946.281250 +v -93816.742188 -80137.578125 -123048.359375 +v -90688.093750 -80814.226562 -121814.843750 +v -90688.093750 -79965.507812 -122902.367188 +v -87499.210938 -80582.218750 -121648.593750 +v -87499.210938 -79747.867188 -122717.710938 +v -84265.812500 -80303.460938 -121448.835938 +v -84265.812500 -79486.367188 -122495.843750 +v -81003.625000 -79979.765625 -121216.875000 +v -81003.625000 -79182.710938 -122238.210938 +v -77728.312500 -79612.976562 -120954.039062 +v -77728.312500 -78838.625000 -121946.281250 +v -74455.546875 -79204.953125 -120661.648438 +v -74455.546875 -78455.859375 -121621.523438 +v -71200.976562 -78757.539062 -120341.039062 +v -71200.976562 -78036.148438 -121265.421875 +v -67980.265625 -78272.609375 -119993.546875 +v -67980.265625 -77581.234375 -120879.460938 +v -64809.105469 -77752.046875 -119620.515625 +v -64809.105469 -77092.898438 -120465.140625 +v -61703.195312 -77197.757812 -119223.320312 +v -61703.195312 -76572.921875 -120023.976562 +v -61703.195312 -54821.339844 -113812.476562 +v -61703.195312 -55221.628906 -115595.046875 +v -61703.195312 -55879.144531 -117299.585938 +v -61703.195312 -56779.648438 -118889.195312 +v -61703.195312 -57903.652344 -120329.476562 +v -61703.195312 -59226.820312 -121589.242188 +v -61703.195312 -60720.515625 -122641.218750 +v -61703.195312 -62352.398438 -123462.640625 +v -61703.195312 -64087.148438 -124035.718750 +v -61703.195312 -65887.210938 -124348.062500 +v -61703.195312 -67713.617188 -124392.898438 +v -61703.195312 -69526.843750 -124169.257812 +v -61703.195312 -71287.617188 -123681.984375 +v -61703.195312 -72957.843750 -122941.625000 +v -61703.195312 -74501.359375 -121964.210938 +v -61703.195312 -75884.750000 -120770.890625 +v -64809.105469 -54146.812500 -113912.531250 +v -67980.265625 -53364.617188 -111990.468750 +v -67980.265625 -53513.328125 -114006.500000 +v -71200.976562 -52923.199219 -114094.039062 +v -67980.265625 -53956.242188 -115978.898438 +v -71200.976562 -53385.347656 -116152.078125 +v -67980.265625 -54683.777344 -117864.953125 +v -71200.976562 -54144.468750 -118120.023438 +v -67980.265625 -55680.175781 -119623.843750 +v -71200.976562 -55184.132812 -119955.289062 +v -67980.265625 -56923.875000 -121217.492188 +v -71200.976562 -56481.832031 -121618.140625 +v -67980.265625 -58387.949219 -122611.406250 +v -71200.976562 -58009.476562 -123072.578125 +v -67980.265625 -60040.703125 -123775.414062 +v -71200.976562 -59734.000000 -124287.117188 +v -67980.265625 -61846.367188 -124684.304688 +v -71200.976562 -61618.066406 -125235.476562 +v -67980.265625 -63765.851562 -125318.421875 +v -71200.976562 -63620.890625 -125897.125000 +v -67980.265625 -65757.601562 -125664.023438 +v -71200.976562 -65699.125000 -126257.734375 +v -67980.265625 -67778.507812 -125713.632812 +v -71200.976562 -67807.773438 -126309.500000 +v -67980.265625 -69784.812500 -125466.171875 +v -71200.976562 -69901.203125 -126051.296875 +v -67980.265625 -71733.101562 -124927.015625 +v -71200.976562 -71934.078125 -125488.726562 +v -67980.265625 -73581.187500 -124107.812500 +v -71200.976562 -73862.414062 -124633.953125 +v -67980.265625 -75289.062500 -123026.304688 +v -71200.976562 -75644.453125 -123505.492188 +v -67980.265625 -76819.773438 -121705.914062 +v -71200.976562 -77241.625000 -122127.757812 +v -74455.546875 -52217.605469 -111990.468750 +v -74455.546875 -52378.730469 -114174.804688 +v -74455.546875 -52858.625000 -116311.859375 +v -74455.546875 -53646.890625 -118355.359375 +v -74455.546875 -54726.472656 -120261.085938 +v -74455.546875 -56073.996094 -121987.781250 +v -74455.546875 -57660.292969 -123498.062500 +v -74455.546875 -59451.023438 -124759.234375 +v -74455.546875 -61407.425781 -125744.007812 +v -74455.546875 -63487.148438 -126431.054688 +v -74455.546875 -65645.171875 -126805.507812 +v -74455.546875 -67834.789062 -126859.257812 +v -74455.546875 -70008.585938 -126591.148438 +v -74455.546875 -72119.515625 -126006.976562 +v -74455.546875 -74121.882812 -125119.382812 +v -74455.546875 -75972.335938 -123947.593750 +v -74455.546875 -77630.828125 -122516.968750 +v -77728.312500 -51882.191406 -114248.460938 +v -81003.625000 -51264.390625 -111990.468750 +v -81003.625000 -51435.835938 -114314.671875 +v -84265.812500 -51041.921875 -114373.101562 +v -81003.625000 -51946.453125 -116588.562500 +v -84265.812500 -51565.378906 -116704.156250 +v -81003.625000 -52785.195312 -118762.914062 +v -84265.812500 -52425.207031 -118933.179688 +v -81003.625000 -53933.902344 -120790.664062 +v -84265.812500 -53602.792969 -121011.906250 +v -81003.625000 -55367.710938 -122627.921875 +v -84265.812500 -55072.644531 -122895.351562 +v -81003.625000 -57055.578125 -124234.906250 +v -84265.812500 -56802.949219 -124542.734375 +v -81003.625000 -58960.972656 -125576.835938 +v -84265.812500 -58756.246094 -125918.406250 +v -81003.625000 -61042.648438 -126624.664062 +v -84265.812500 -60890.253906 -126992.570312 +v -81003.625000 -63255.539062 -127355.703125 +v -84265.812500 -63158.777344 -127741.992188 +v -81003.625000 -65551.742188 -127754.132812 +v -84265.812500 -65512.710938 -128150.437500 +v -81003.625000 -67881.554688 -127811.328125 +v -84265.812500 -67901.093750 -128209.070312 +v -81003.625000 -70194.546875 -127526.046875 +v -84265.812500 -70272.234375 -127916.617188 +v -81003.625000 -72440.640625 -126904.468750 +v -84265.812500 -72574.796875 -127279.414062 +v -81003.625000 -74571.226562 -125960.046875 +v -84265.812500 -74758.945312 -126311.250000 +v -81003.625000 -76540.171875 -124713.226562 +v -84265.812500 -76777.390625 -125033.078125 +v -81003.625000 -78304.859375 -123190.992188 +v -84265.812500 -78586.445312 -123472.578125 +v -87499.210938 -50523.226562 -111990.468750 +v -87499.210938 -50702.691406 -114423.421875 +v -87499.210938 -51237.203125 -116803.710938 +v -87499.210938 -52115.191406 -119079.804688 +v -87499.210938 -53317.644531 -121202.437500 +v -87499.210938 -54818.542969 -123125.656250 +v -87499.210938 -56585.390625 -124807.835938 +v -87499.210938 -58579.937500 -126212.554688 +v -87499.210938 -60759.015625 -127309.406250 +v -87499.210938 -63075.449219 -128074.656250 +v -87499.210938 -65479.097656 -128491.726562 +v -87499.210938 -67917.921875 -128551.593750 +v -87499.210938 -70339.140625 -128252.968750 +v -87499.210938 -72690.335938 -127602.304688 +v -87499.210938 -74920.609375 -126613.695312 +v -87499.210938 -76981.679688 -125308.531250 +v -87499.210938 -78828.937500 -123715.078125 +v -90688.093750 -50420.363281 -114465.304688 +v -93816.742188 -50012.148438 -111990.468750 +v -93816.742188 -50197.148438 -114498.414062 +v -96869.367188 -50035.238281 -114522.429688 +v -93816.742188 -50748.132812 -116952.062500 +v -96869.367188 -50591.500000 -116999.578125 +v -93816.742188 -51653.183594 -119298.312500 +v -96869.367188 -51505.214844 -119368.296875 +v -93816.742188 -52892.703125 -121486.375000 +v -96869.367188 -52756.605469 -121577.312500 +v -93816.742188 -54439.859375 -123468.875000 +v -96869.367188 -54318.582031 -123578.796875 +v -93816.742188 -56261.164062 -125202.898438 +v -96869.367188 -56157.328125 -125329.429688 +v -93816.742188 -58317.191406 -126650.921875 +v -96869.367188 -58233.042969 -126791.312500 +v -93816.742188 -60563.433594 -127781.585938 +v -96869.367188 -60500.796875 -127932.804688 +v -93816.742188 -62951.269531 -128570.414062 +v -96869.367188 -62911.496094 -128729.187500 +v -93816.742188 -65429.000000 -129000.343750 +v -96869.367188 -65412.957031 -129163.234375 +v -93816.742188 -67943.000000 -129062.062500 +v -96869.367188 -67951.031250 -129225.539062 +v -93816.742188 -70438.843750 -128754.226562 +v -96869.367188 -70470.781250 -128914.757812 +v -93816.742188 -72862.507812 -128083.507812 +v -96869.367188 -72917.648438 -128237.617188 +v -93816.742188 -75161.523438 -127064.421875 +v -96869.367188 -75238.687500 -127208.773438 +v -93816.742188 -77286.125000 -125719.031250 +v -96869.367188 -77383.632812 -125850.507812 +v -93816.742188 -79190.320312 -124076.460938 +v -96869.367188 -79306.062500 -124192.203125 +v -99830.093750 -49748.941406 -111990.468750 +v -99830.093750 -49936.789062 -114537.031250 +v -99830.093750 -50496.261719 -117028.468750 +v -99830.093750 -51415.246094 -119410.851562 +v -99830.093750 -52673.851562 -121632.601562 +v -99830.093750 -54244.835938 -123645.632812 +v -99830.093750 -56094.187500 -125406.359375 +v -99830.093750 -58181.878906 -126876.679688 +v -99830.093750 -60462.710938 -128024.750000 +v -99830.093750 -62887.312500 -128825.734375 +v -99830.093750 -65403.203125 -129262.281250 +v -99830.093750 -67955.914062 -129324.945312 +v -99830.093750 -70490.195312 -129012.375000 +v -99830.093750 -72951.179688 -128331.328125 +v -99830.093750 -75285.601562 -127296.554688 +v -99830.093750 -77442.921875 -125930.445312 +v -99830.093750 -79376.437500 -124262.578125 +v -102677.632812 -49715.726562 -111990.468750 +v -102677.632812 -49903.929688 -114541.906250 +v -102677.632812 -50464.472656 -117038.117188 +v -102677.632812 -51385.218750 -119425.054688 +v -102677.632812 -52646.234375 -121651.062500 +v -102677.632812 -54220.222656 -123667.937500 +v -102677.632812 -56073.113281 -125432.039062 +v -102677.632812 -58164.800781 -126905.171875 +v -102677.632812 -60449.996094 -128055.445312 +v -102677.632812 -62879.242188 -128857.960938 +v -102677.632812 -65399.945312 -129295.343750 +v -102677.632812 -67957.546875 -129358.125000 +v -102677.632812 -70496.679688 -129044.953125 +v -102677.632812 -72962.375000 -128362.601562 +v -102677.632812 -75301.257812 -127325.843750 +v -102677.632812 -77462.710938 -125957.125000 +v -102677.632812 -79399.929688 -124286.070312 +v -105401.695312 -49750.613281 -111990.468750 +v -105401.695312 -49938.441406 -114536.789062 +v -105401.695312 -50497.859375 -117027.984375 +v -105401.695312 -51416.757812 -119410.140625 +v -105401.695312 -52675.242188 -121631.671875 +v -105401.695312 -54246.074219 -123644.507812 +v -105401.695312 -56095.250000 -125405.070312 +v -105401.695312 -58182.734375 -126875.242188 +v -105401.695312 -60463.347656 -128023.210938 +v -105401.695312 -62887.718750 -128824.117188 +v -105401.695312 -65403.367188 -129260.617188 +v -105401.695312 -67955.835938 -129323.281250 +v -105401.695312 -70489.867188 -129010.734375 +v -105401.695312 -72950.617188 -128329.757812 +v -105401.695312 -75284.812500 -127295.078125 +v -105401.695312 -77441.921875 -125929.101562 +v -105401.695312 -79375.257812 -124261.398438 +v -109528.960938 -49958.042969 -111990.468750 +v -109528.960938 -50143.625000 -114506.351562 +v -109528.960938 -50696.355469 -116967.773438 +v -109528.960938 -51604.269531 -119321.453125 +v -109528.960938 -52847.714844 -121516.437500 +v -109528.960938 -54399.769531 -123505.210938 +v -109528.960938 -56226.839844 -125244.726562 +v -109528.960938 -58289.375000 -126697.328125 +v -109528.960938 -60542.730469 -127831.570312 +v -109528.960938 -62938.121094 -128622.898438 +v -109528.960938 -65423.699219 -129054.187500 +v -109528.960938 -67945.656250 -129116.101562 +v -109528.960938 -70449.406250 -128807.289062 +v -109528.960938 -72880.734375 -128134.453125 +v -109528.960938 -75187.031250 -127112.140625 +v -109528.960938 -77318.359375 -125762.492188 +v -109528.960938 -79228.585938 -124114.718750 +v -112707.125000 -50287.695312 -111990.468750 +v -112707.125000 -50469.710938 -114457.984375 +v -112707.125000 -51011.812500 -116872.078125 +v -112707.125000 -51902.273438 -119180.507812 +v -112707.125000 -53121.808594 -121333.289062 +v -112707.125000 -54644.027344 -123283.828125 +v -112707.125000 -56435.968750 -124989.898438 +v -112707.125000 -58458.851562 -126414.578125 +v -112707.125000 -60668.882812 -127527.007812 +v -112707.125000 -63018.218750 -128303.125000 +v -112707.125000 -65456.011719 -128726.125000 +v -112707.125000 -67929.484375 -128786.843750 +v -112707.125000 -70385.093750 -128483.976562 +v -112707.125000 -72769.679688 -127824.070312 +v -112707.125000 -75031.632812 -126821.414062 +v -112707.125000 -77121.984375 -125497.710938 +v -112707.125000 -78995.484375 -123881.625000 +v -115175.460938 -50691.652344 -111990.468750 +v -115175.460938 -50869.296875 -114398.710938 +v -115175.460938 -51398.378906 -116754.812500 +v -115175.460938 -52267.445312 -119007.789062 +v -115175.460938 -53457.687500 -121108.859375 +v -115175.460938 -54943.339844 -123012.546875 +v -115175.460938 -56692.238281 -124677.640625 +v -115175.460938 -58666.527344 -126068.085938 +v -115175.460938 -60823.468750 -127153.804688 +v -115175.460938 -63116.375000 -127911.273438 +v -115175.460938 -65495.605469 -128324.109375 +v -115175.460938 -67909.664062 -128383.375000 +v -115175.460938 -70306.281250 -128087.781250 +v -115175.460938 -72633.593750 -127443.726562 +v -115175.460938 -74841.210938 -126465.156250 +v -115175.460938 -76881.343750 -125173.250000 +v -115175.460938 -78709.843750 -123595.984375 +v -117087.007812 -51136.296875 -111990.468750 +v -117087.007812 -51309.125000 -114333.468750 +v -117087.007812 -51823.875000 -116625.742188 +v -117087.007812 -52669.398438 -118817.679688 +v -117087.007812 -53827.394531 -120861.828125 +v -117087.007812 -55272.796875 -122713.945312 +v -117087.007812 -56974.316406 -124333.921875 +v -117087.007812 -58895.117188 -125686.703125 +v -117087.007812 -60993.625000 -126743.007812 +v -117087.007812 -63224.414062 -127479.960938 +v -117087.007812 -65539.187500 -127881.609375 +v -117087.007812 -67887.843750 -127939.265625 +v -117087.007812 -70219.539062 -127651.679688 +v -117087.007812 -72483.796875 -127025.078125 +v -117087.007812 -74631.609375 -126073.015625 +v -117087.007812 -76616.476562 -124816.109375 +v -117087.007812 -78395.429688 -123281.570312 +v -118497.312500 -51743.808594 -114268.984375 +v -118497.312500 -52244.394531 -116498.179688 +v -118497.312500 -53066.648438 -118629.796875 +v -118497.312500 -54192.777344 -120617.695312 +v -118497.312500 -55598.402344 -122418.835938 +v -118497.312500 -57253.093750 -123994.234375 +v -118497.312500 -59121.035156 -125309.789062 +v -118497.312500 -61161.792969 -126337.015625 +v -118497.312500 -63331.187500 -127053.687500 +v -118497.312500 -65582.257812 -127444.289062 +v -118497.312500 -67866.281250 -127500.351562 +v -118497.312500 -70133.804688 -127220.679688 +v -118497.312500 -72335.750000 -126611.320312 +v -118497.312500 -74424.453125 -125685.460938 +v -118497.312500 -76354.703125 -124463.148438 +v -118497.312500 -78084.703125 -122970.843750 +v -118497.312500 -80552.484375 -104226.171875 +v -117087.007812 -79447.781250 -101860.453125 +v -115175.460938 -78898.171875 -100576.390625 +v -112707.125000 -78192.304688 -99347.054688 +v -109528.960938 -76158.726562 -97429.804688 +v -105401.695312 -73745.304688 -95957.726562 +v -102677.632812 -71052.867188 -95056.109375 +v -99830.093750 -68239.421875 -94672.242188 +v -96869.367188 -65412.957031 -94817.703125 +v -93816.742188 -62680.546875 -95480.695312 +v -90688.093750 -60143.398438 -96627.367188 +v -87499.210938 -57892.363281 -98203.789062 +v -84265.812500 -56004.046875 -100138.820312 +v -81003.625000 -55367.710938 -101353.015625 +v -77728.312500 -54895.652344 -102622.421875 +v -74455.546875 -53975.410156 -104972.914062 +v -71200.976562 -53528.855469 -107382.218750 +v -67980.265625 -53548.132812 -109752.328125 +v -118497.312500 -79108.093750 -102139.234375 +v -117087.007812 -78578.664062 -100885.617188 +v -115175.460938 -77925.953125 -99650.765625 +v -112707.125000 -75984.648438 -97709.750000 +v -109528.960938 -73665.929688 -96149.367188 +v -105401.695312 -71044.945312 -95090.085938 +v -102677.632812 -68241.593750 -94639.093750 +v -99830.093750 -65403.203125 -94718.656250 +v -96869.367188 -62638.183594 -95322.585938 +v -93816.742188 -60050.265625 -96421.820312 +v -90688.093750 -57733.792969 -97966.468750 +v -87499.210938 -55769.613281 -99888.515625 +v -84265.812500 -55072.644531 -101085.585938 +v -81003.625000 -54537.660156 -102347.726562 +v -77728.312500 -53532.710938 -104736.289062 +v -74455.546875 -53007.640625 -107205.289062 +v -71200.976562 -52959.515625 -109655.148438 +v -118497.312500 -78262.890625 -101191.226562 +v -117087.007812 -77632.781250 -99985.062500 +v -115175.460938 -75771.335938 -98052.789062 +v -112707.125000 -73539.773438 -96453.921875 +v -109528.960938 -70997.843750 -95292.093750 +v -105401.695312 -68239.312500 -94673.906250 +v -102677.632812 -65399.945312 -94685.593750 +v -99830.093750 -62612.425781 -95226.453125 +v -96869.367188 -59982.714844 -96272.734375 +v -93816.742188 -57608.421875 -97778.843750 +v -90688.093750 -55574.503906 -99680.203125 +v -87499.210938 -54818.542969 -100855.281250 +v -84265.812500 -54221.730469 -102105.304688 +v -81003.625000 -53134.750000 -104523.570312 +v -77728.312500 -52532.308594 -107043.937500 +v -74455.546875 -52416.441406 -109565.492188 +v -118497.312500 -77343.039062 -100315.453125 +v -118497.312500 -75304.476562 -98803.554688 +v -118497.312500 -73046.859375 -97643.921875 +v -118497.312500 -70630.500000 -96867.531250 +v -118497.312500 -68119.945312 -96495.125000 +v -117087.007812 -68148.687500 -96056.625000 +v -117087.007812 -65539.187500 -96099.328125 +v -115175.460938 -65495.605469 -95656.828125 +v -115175.460938 -62856.414062 -96137.039062 +v -112707.125000 -62751.863281 -95746.851562 +v -112707.125000 -60163.984375 -96672.804688 +v -109528.960938 -60027.937500 -96372.539062 +v -109528.960938 -57578.363281 -97733.851562 +v -105401.695312 -57463.121094 -97561.382812 +v -105401.695312 -55241.460938 -99324.617188 +v -102677.632812 -55217.613281 -99299.148438 +v -102677.632812 -54220.222656 -100312.992188 +v -99830.093750 -54244.835938 -100335.304688 +v -99830.093750 -53335.375000 -101425.179688 +v -96869.367188 -53414.335938 -101485.765625 +v -96869.367188 -51886.019531 -103856.109375 +v -93816.742188 -52030.371094 -103933.273438 +v -93816.742188 -50919.230469 -106496.367188 +v -90688.093750 -51132.910156 -106568.906250 +v -90688.093750 -50463.089844 -109242.992188 +v -87499.210938 -50744.695312 -109289.484375 +v -84265.812500 -51083.054688 -109345.343750 +v -81003.625000 -51475.960938 -109410.210938 +v -77728.312500 -51921.171875 -109483.718750 +v -81003.625000 -52105.015625 -106898.890625 +v -118497.312500 -65582.257812 -96536.648438 +v -117087.007812 -62971.496094 -96566.531250 +v -115175.460938 -60330.703125 -97040.757812 +v -112707.125000 -57761.507812 -98007.953125 +v -109528.960938 -55383.261719 -99476.007812 +v -105401.695312 -54246.074219 -100336.429688 +v -102677.632812 -53309.023438 -101404.960938 +v -99830.093750 -51798.246094 -103809.195312 +v -96869.367188 -50764.234375 -106443.757812 +v -93816.742188 -50240.445312 -109206.226562 +v -118497.312500 -63085.234375 -96991.000000 +v -117087.007812 -60514.210938 -97445.765625 +v -115175.460938 -57985.933594 -98343.828125 +v -112707.125000 -55608.609375 -99716.609375 +v -109528.960938 -54399.769531 -100475.726562 +v -105401.695312 -53336.699219 -101426.195312 +v -102677.632812 -51768.949219 -103793.539062 +v -99830.093750 -50669.992188 -106411.765625 +v -96869.367188 -50078.949219 -109179.570312 +v -118497.312500 -60695.570312 -97846.039062 +v -117087.007812 -58232.964844 -98713.531250 +v -115175.460938 -55884.750000 -100011.445312 +v -112707.125000 -54644.027344 -100697.109375 +v -109528.960938 -53501.265625 -101552.468750 +v -105401.695312 -51799.718750 -103809.984375 +v -102677.632812 -50638.535156 -106401.085938 +v -99830.093750 -49980.753906 -109163.351562 +v -118497.312500 -58477.105469 -99078.914062 +v -118497.312500 -56489.101562 -100656.710938 +v -118497.312500 -55598.402344 -101562.101562 +v -118497.312500 -54784.667969 -102537.257812 +v -117087.007812 -54436.035156 -102269.742188 +v -117087.007812 -53021.781250 -104463.187500 +v -115175.460938 -52629.640625 -104253.585938 +v -115175.460938 -51562.671875 -106714.789062 +v -112707.125000 -51180.152344 -106584.937500 +v -112707.125000 -50512.308594 -109251.117188 +v -109528.960938 -50187.062500 -109197.414062 +v -118497.312500 -53409.332031 -104670.343750 +v -117087.007812 -51983.718750 -106857.710938 +v -115175.460938 -50910.871094 -109316.914062 +v -118497.312500 -52399.835938 -106998.968750 +v -117087.007812 -51349.574219 -109389.351562 +v -118497.312500 -51783.148438 -109460.929688 +v -105401.695312 -49982.402344 -109163.625000 +v -102677.632812 -49947.980469 -109157.945312 +v -52934.566406 -57093.253906 -110337.632812 +v -52934.566406 -57496.207031 -108728.953125 +v -52934.566406 -58155.824219 -107207.390625 +v -52934.566406 -59054.488281 -105813.609375 +v -52934.566406 -59586.195312 -105176.429688 +v -52934.566406 -60168.191406 -104584.828125 +v -52934.566406 -61467.179688 -103553.875000 +v -52934.566406 -62916.753906 -102748.296875 +v -52934.566406 -64478.195312 -102189.601562 +v -52934.566406 -66109.789062 -101892.726562 +v -52934.566406 -67767.945312 -101865.593750 +v -52934.566406 -69408.382812 -102108.929688 +v -52934.566406 -70987.265625 -102616.234375 +v -52934.566406 -72462.421875 -103373.953125 +v -52934.566406 -73794.445312 -104361.851562 +v -52934.566406 -74395.492188 -104934.093750 +v -52934.566406 -74947.757812 -105553.531250 +v -52934.566406 -75891.539062 -106917.171875 +v -52934.566406 -76600.593750 -108416.328125 +v -52934.566406 -77055.960938 -110010.960938 +v -52934.566406 -77245.492188 -111658.484375 +v -52934.566406 -77164.125000 -113314.867188 +v -52934.566406 -76814.015625 -114935.867188 +v -52934.566406 -76204.539062 -116478.195312 +v -52934.566406 -75351.960938 -117900.632812 +v -52934.566406 -74841.390625 -118554.875000 +v -52934.566406 -74279.054688 -119165.195312 +v -52934.566406 -73148.648438 -120140.296875 +v -52934.566406 -71887.406250 -120938.968750 +v -52934.566406 -70522.617188 -121543.937500 +v -52934.566406 -69083.828125 -121942.101562 +v -52934.566406 -67602.195312 -122124.843750 +v -52934.566406 -66109.789062 -122088.210938 +v -52934.566406 -64638.906250 -121832.984375 +v -52934.566406 -63221.394531 -121364.703125 +v -52934.566406 -61887.933594 -120693.500000 +v -52934.566406 -60667.394531 -119833.898438 +v -52934.566406 -59586.195312 -118804.507812 +v -52934.566406 -58667.738281 -117627.617188 +v -52934.566406 -57931.910156 -116328.695312 +v -52934.566406 -57394.636719 -114935.867188 +v -50247.621094 -57905.941406 -110471.804688 +v -50247.621094 -58276.183594 -108993.718750 +v -50247.621094 -58882.253906 -107595.679688 +v -50247.621094 -59707.964844 -106315.039062 +v -50247.621094 -60196.507812 -105729.585938 +v -50247.621094 -60731.257812 -105186.007812 +v -50247.621094 -61924.796875 -104238.750000 +v -50247.621094 -63256.695312 -103498.562500 +v -50247.621094 -64691.382812 -102985.226562 +v -50247.621094 -66190.523438 -102712.445312 +v -50247.621094 -67714.078125 -102687.515625 +v -50247.621094 -69221.343750 -102911.101562 +v -50247.621094 -70672.054688 -103377.218750 +v -50247.621094 -72027.460938 -104073.429688 +v -50247.621094 -73251.351562 -104981.132812 +v -50247.621094 -73803.601562 -105506.914062 +v -50247.621094 -74311.039062 -106076.078125 +v -50247.621094 -75178.203125 -107329.015625 +v -50247.621094 -75829.695312 -108706.468750 +v -50247.621094 -76248.101562 -110171.656250 +v -50247.621094 -76422.250000 -111685.429688 +v -50247.621094 -76347.484375 -113207.351562 +v -50247.621094 -76025.796875 -114696.765625 +v -50247.621094 -75465.796875 -116113.890625 +v -50247.621094 -74682.429688 -117420.859375 +v -50247.621094 -74213.304688 -118021.984375 +v -50247.621094 -73696.625000 -118582.765625 +v -50247.621094 -72657.984375 -119478.703125 +v -50247.621094 -71499.117188 -120212.539062 +v -50247.621094 -70245.125000 -120768.398438 +v -50247.621094 -68923.140625 -121134.242188 +v -50247.621094 -67561.781250 -121302.148438 +v -50247.621094 -66190.523438 -121268.484375 +v -50247.621094 -64839.046875 -121033.984375 +v -50247.621094 -63536.605469 -120603.718750 +v -50247.621094 -62311.394531 -119987.000000 +v -50247.621094 -61189.937500 -119197.179688 +v -50247.621094 -60196.507812 -118251.351562 +v -50247.621094 -59352.609375 -117170.000000 +v -50247.621094 -58676.515625 -115976.523438 +v -50247.621094 -58182.859375 -114696.765625 +v -46101.402344 -59321.738281 -110705.554688 +v -46101.402344 -59634.992188 -109454.968750 +v -46101.402344 -60147.781250 -108272.117188 +v -46101.402344 -60846.398438 -107188.593750 +v -46101.402344 -61259.746094 -106693.250000 +v -46101.402344 -61712.187500 -106233.335938 +v -46101.402344 -62722.019531 -105431.882812 +v -46101.402344 -63848.917969 -104805.625000 +v -46101.402344 -65062.777344 -104371.296875 +v -46101.402344 -66331.171875 -104140.500000 +v -46101.402344 -67620.226562 -104119.406250 +v -46101.402344 -68895.492188 -104308.578125 +v -46101.402344 -70122.914062 -104702.953125 +v -46101.402344 -71269.703125 -105292.007812 +v -46101.402344 -72305.210938 -106059.992188 +v -46101.402344 -72772.460938 -106504.851562 +v -46101.402344 -73201.796875 -106986.406250 +v -46101.402344 -73935.492188 -108046.492188 +v -46101.402344 -74486.703125 -109211.937500 +v -46101.402344 -74840.710938 -110451.609375 +v -46101.402344 -74988.054688 -111732.382812 +v -46101.402344 -74924.796875 -113020.054688 +v -46101.402344 -74652.625000 -114280.218750 +v -46101.402344 -74178.812500 -115479.218750 +v -46101.402344 -73516.023438 -116585.023438 +v -46101.402344 -73119.101562 -117093.625000 +v -46101.402344 -72681.953125 -117568.085938 +v -46101.402344 -71803.171875 -118326.125000 +v -46101.402344 -70822.679688 -118947.015625 +v -46101.402344 -69761.695312 -119417.320312 +v -46101.402344 -68643.187500 -119726.851562 +v -46101.402344 -67491.375000 -119868.914062 +v -46101.402344 -66331.171875 -119840.429688 +v -46101.402344 -65187.714844 -119642.023438 +v -46101.402344 -64085.742188 -119277.984375 +v -46101.402344 -63049.113281 -118756.187500 +v -46101.402344 -62100.269531 -118087.937500 +v -46101.402344 -61259.746094 -117287.687500 +v -46101.402344 -60545.738281 -116372.773438 +v -46101.402344 -59973.707031 -115363.000000 +v -46101.402344 -59556.035156 -114280.218750 +v -43413.300781 -60380.101562 -110880.296875 +v -43413.300781 -60650.757812 -109799.773438 +v -43413.300781 -61093.808594 -108777.781250 +v -43413.300781 -61697.421875 -107841.601562 +v -43413.300781 -62054.554688 -107413.625000 +v -43413.300781 -62445.472656 -107016.257812 +v -43413.300781 -63317.976562 -106323.789062 +v -43413.300781 -64291.625000 -105782.695312 +v -43413.300781 -65340.410156 -105407.437500 +v -43413.300781 -66436.320312 -105208.031250 +v -43413.300781 -67550.070312 -105189.804688 +v -43413.300781 -68651.914062 -105353.250000 +v -43413.300781 -69712.414062 -105693.992188 +v -43413.300781 -70703.250000 -106202.937500 +v -43413.300781 -71597.937500 -106866.484375 +v -43413.300781 -72001.648438 -107250.851562 +v -43413.300781 -72372.593750 -107666.914062 +v -43413.300781 -73006.515625 -108582.843750 +v -43413.300781 -73482.765625 -109589.796875 +v -43413.300781 -73788.632812 -110660.875000 +v -43413.300781 -73915.937500 -111767.476562 +v -43413.300781 -73861.281250 -112880.039062 +v -43413.300781 -73626.125000 -113968.835938 +v -43413.300781 -73216.750000 -115004.781250 +v -43413.300781 -72644.085938 -115960.203125 +v -43413.300781 -72301.148438 -116399.640625 +v -43413.300781 -71923.445312 -116809.585938 +v -43413.300781 -71164.171875 -117464.531250 +v -43413.300781 -70317.015625 -118000.984375 +v -43413.300781 -69400.320312 -118407.335938 +v -43413.300781 -68433.921875 -118674.773438 +v -43413.300781 -67438.734375 -118797.515625 +v -43413.300781 -66436.320312 -118772.906250 +v -43413.300781 -65448.355469 -118601.476562 +v -43413.300781 -64496.242188 -118286.945312 +v -43413.300781 -63600.585938 -117836.109375 +v -43413.300781 -62780.777344 -117258.734375 +v -43413.300781 -62054.554688 -116567.312500 +v -43413.300781 -61437.648438 -115776.820312 +v -43413.300781 -60943.410156 -114904.367188 +v -43413.300781 -60582.535156 -113968.835938 +v -90688.093750 -50964.074219 -116886.562500 +v -90688.093750 -51857.175781 -119201.835938 +v -90688.093750 -53080.328125 -121361.007812 +v -90688.093750 -54607.062500 -123317.328125 +v -90688.093750 -56404.320312 -125028.468750 +v -90688.093750 -58433.203125 -126457.367188 +v -90688.093750 -60649.789062 -127573.101562 +v -90688.093750 -63006.097656 -128351.523438 +v -90688.093750 -65451.121094 -128775.773438 +v -90688.093750 -67931.929688 -128836.671875 +v -90688.093750 -70394.820312 -128532.906250 +v -90688.093750 -72786.484375 -127871.039062 +v -90688.093750 -75055.148438 -126865.414062 +v -90688.093750 -77151.703125 -125537.781250 +v -90688.093750 -79030.757812 -123916.898438 +v -77728.312500 -52378.261719 -116457.570312 +v -77728.312500 -53193.109375 -118569.984375 +v -77728.312500 -54309.093750 -120539.968750 +v -77728.312500 -55702.054688 -122324.882812 +v -77728.312500 -57341.843750 -123886.093750 +v -77728.312500 -59192.957031 -125189.796875 +v -77728.312500 -61215.328125 -126207.773438 +v -77728.312500 -63365.179688 -126917.984375 +v -77728.312500 -65595.968750 -127305.062500 +v -77728.312500 -67859.414062 -127360.625000 +v -77728.312500 -70106.515625 -127083.476562 +v -77728.312500 -72288.625000 -126479.601562 +v -77728.312500 -74358.507812 -125562.085938 +v -77728.312500 -76271.367188 -124350.789062 +v -77728.312500 -77985.781250 -122871.921875 +v -64809.105469 -54569.085938 -115792.992188 +v -64809.105469 -55262.707031 -117591.140625 +v -64809.105469 -56212.664062 -119268.046875 +v -64809.105469 -57398.390625 -120787.414062 +v -64809.105469 -58794.222656 -122116.359375 +v -64809.105469 -60369.945312 -123226.109375 +v -64809.105469 -62091.445312 -124092.640625 +v -64809.105469 -63921.460938 -124697.195312 +v -64809.105469 -65820.375000 -125026.687500 +v -64809.105469 -67747.078125 -125073.984375 +v -64809.105469 -69659.875000 -124838.062500 +v -64809.105469 -71517.351562 -124324.031250 +v -64809.105469 -73279.296875 -123543.015625 +v -64809.105469 -74907.570312 -122511.921875 +v -64809.105469 -76366.929688 -121253.070312 +v -117087.007812 -81425.625000 -119052.945312 +v -117087.007812 -82384.781250 -116625.742188 +v -117087.007812 -82935.750000 -114074.710938 +v -117087.007812 -83063.812500 -111468.007812 +v -117087.007812 -82765.539062 -108875.257812 +v -115175.460938 -81824.406250 -119249.609375 +v -115175.460938 -82810.281250 -116754.812500 +v -115175.460938 -83376.593750 -114132.750000 +v -115175.460938 -83508.218750 -111453.460938 +v -115175.460938 -83201.640625 -108788.515625 +v -115175.460938 -82465.046875 -106209.101562 +v -112707.125000 -82186.710938 -119428.273438 +v -112707.125000 -83196.843750 -116872.078125 +v -112707.125000 -83777.093750 -114185.476562 +v -112707.125000 -83911.960938 -111440.242188 +v -112707.125000 -83597.835938 -108709.703125 +v -112707.125000 -82843.117188 -106066.812500 +v -112707.125000 -81667.960938 -103582.148438 +v -109528.960938 -82482.367188 -119574.078125 +v -109528.960938 -83512.296875 -116967.773438 +v -109528.960938 -84103.921875 -114228.507812 +v -109528.960938 -84241.429688 -111429.460938 +v -109528.960938 -83921.148438 -108645.390625 +v -109528.960938 -83151.640625 -105950.687500 +v -109528.960938 -81953.445312 -103417.328125 +v -109528.960938 -80358.585938 -101112.976562 +v -105401.695312 -82668.398438 -119665.820312 +v -105401.695312 -83710.796875 -117027.984375 +v -105401.695312 -84309.578125 -114255.585938 +v -105401.695312 -84448.750000 -111422.671875 +v -105401.695312 -84124.593750 -108604.929688 +v -105401.695312 -83345.773438 -105877.625000 +v -105401.695312 -82133.085938 -103313.609375 +v -105401.695312 -80518.929688 -100981.390625 +v -105401.695312 -79574.390625 -99921.953125 +v -102677.632812 -82699.695312 -119681.250000 +v -102677.632812 -83744.187500 -117038.117188 +v -102677.632812 -84344.171875 -114260.132812 +v -102677.632812 -84483.625000 -111421.531250 +v -102677.632812 -84158.812500 -108598.117188 +v -102677.632812 -83378.421875 -105865.328125 +v -102677.632812 -82163.304688 -103296.164062 +v -102677.632812 -80545.898438 -100959.257812 +v -102677.632812 -79599.460938 -99897.695312 +v -102677.632812 -78569.429688 -98917.023438 +v -99830.093750 -82669.898438 -119666.562500 +v -99830.093750 -83712.398438 -117028.468750 +v -99830.093750 -84311.234375 -114255.796875 +v -99830.093750 -84450.421875 -111422.617188 +v -99830.093750 -84126.234375 -108604.601562 +v -99830.093750 -83347.335938 -105877.031250 +v -99830.093750 -82134.531250 -103312.773438 +v -99830.093750 -80520.226562 -100980.328125 +v -99830.093750 -79575.585938 -99920.796875 +v -99830.093750 -78547.531250 -98942.000000 +v -99830.093750 -76269.148438 -97252.234375 +v -96869.367188 -82580.640625 -119622.539062 +v -96869.367188 -83617.156250 -116999.578125 +v -96869.367188 -84212.562500 -114242.812500 +v -96869.367188 -84350.945312 -111425.875000 +v -96869.367188 -84028.617188 -108624.015625 +v -96869.367188 -83254.187500 -105912.093750 +v -96869.367188 -82048.343750 -103362.539062 +v -96869.367188 -80443.289062 -101043.468750 +v -96869.367188 -79504.070312 -99990.007812 +v -96869.367188 -78481.906250 -99016.828125 +v -96869.367188 -76216.593750 -97336.757812 +v -96869.367188 -73707.859375 -96048.132812 +v -93816.742188 -82433.835938 -119550.148438 +v -93816.742188 -83460.523438 -116952.062500 +v -93816.742188 -84050.281250 -114221.445312 +v -93816.742188 -84187.359375 -111431.226562 +v -93816.742188 -83868.085938 -108655.953125 +v -93816.742188 -83101.000000 -105969.750000 +v -93816.742188 -81906.585938 -103444.382812 +v -93816.742188 -80316.757812 -101147.304688 +v -93816.742188 -79386.453125 -100103.835938 +v -93816.742188 -78373.984375 -99139.890625 +v -93816.742188 -76130.156250 -97475.750000 +v -93816.742188 -73645.218750 -96199.351562 +v -93816.742188 -70985.554688 -95344.789062 +v -90688.093750 -82231.453125 -119450.335938 +v -90688.093750 -83244.585938 -116886.562500 +v -90688.093750 -83826.554688 -114191.992188 +v -90688.093750 -83961.820312 -111438.609375 +v -90688.093750 -83646.765625 -108699.976562 +v -90688.093750 -82889.804688 -106049.234375 +v -90688.093750 -81711.164062 -103557.210938 +v -90688.093750 -80142.328125 -101290.460938 +v -90688.093750 -79224.296875 -100260.773438 +v -90688.093750 -78225.195312 -99309.546875 +v -90688.093750 -76010.992188 -97667.382812 +v -90688.093750 -73558.867188 -96407.835938 +v -90688.093750 -70934.312500 -95564.554688 +v -90688.093750 -68207.453125 -95160.062500 +v -87499.210938 -81975.468750 -119324.101562 +v -87499.210938 -82971.453125 -116803.710938 +v -87499.210938 -83543.578125 -114154.734375 +v -87499.210938 -83676.554688 -111447.953125 +v -87499.210938 -83366.828125 -108755.656250 +v -87499.210938 -82622.679688 -106149.773438 +v -87499.210938 -81463.984375 -103699.914062 +v -87499.210938 -79921.695312 -101471.531250 +v -87499.210938 -79019.203125 -100459.265625 +v -87499.210938 -78037.007812 -99524.132812 +v -87499.210938 -75860.273438 -97909.757812 +v -87499.210938 -73449.640625 -96671.531250 +v -87499.210938 -70869.500000 -95842.515625 +v -87499.210938 -68188.781250 -95444.867188 +v -87499.210938 -65479.097656 -95489.210938 +v -84265.812500 -81667.890625 -119172.421875 +v -84265.812500 -82643.281250 -116704.156250 +v -84265.812500 -83203.570312 -114109.976562 +v -84265.812500 -83333.796875 -111459.171875 +v -84265.812500 -83030.476562 -108822.562500 +v -84265.812500 -82301.718750 -106270.578125 +v -84265.812500 -81166.984375 -103871.390625 +v -84265.812500 -79656.593750 -101689.085938 +v -84265.812500 -78772.773438 -100697.757812 +v -84265.812500 -77810.890625 -99781.976562 +v -84265.812500 -75679.179688 -98200.984375 +v -84265.812500 -73318.406250 -96988.367188 +v -84265.812500 -70791.632812 -96176.500000 +v -84265.812500 -68166.351562 -95787.078125 +v -84265.812500 -65512.710938 -95830.500000 +v -84265.812500 -62901.582031 -96305.609375 +v -81003.625000 -81310.734375 -118996.296875 +v -81003.625000 -82262.203125 -116588.562500 +v -81003.625000 -82808.750000 -114057.992188 +v -81003.625000 -82935.781250 -111472.203125 +v -81003.625000 -82639.906250 -108900.250000 +v -81003.625000 -81929.023438 -106410.851562 +v -81003.625000 -80822.117188 -104070.500000 +v -81003.625000 -79348.765625 -101941.718750 +v -81003.625000 -78486.617188 -100974.703125 +v -81003.625000 -77548.328125 -100081.375000 +v -81003.625000 -75468.890625 -98539.156250 +v -81003.625000 -73166.007812 -97356.273438 +v -81003.625000 -70701.203125 -96564.320312 +v -81003.625000 -68140.312500 -96184.445312 +v -81003.625000 -65551.742188 -96226.804688 +v -81003.625000 -63004.652344 -96690.265625 +v -81003.625000 -60567.074219 -97562.445312 +v -77728.312500 -80906.031250 -118796.718750 +v -77728.312500 -81830.390625 -116457.570312 +v -77728.312500 -82361.375000 -113999.093750 +v -77728.312500 -82484.789062 -111486.960938 +v -77728.312500 -82197.335938 -108988.281250 +v -77728.312500 -81506.703125 -106569.796875 +v -77728.312500 -80431.328125 -104296.117188 +v -77728.312500 -78999.953125 -102227.984375 +v -77728.312500 -78162.359375 -101288.515625 +v -77728.312500 -77250.804688 -100420.632812 +v -77728.312500 -75230.601562 -98922.351562 +v -77728.312500 -72993.328125 -97773.164062 +v -77728.312500 -70598.734375 -97003.773438 +v -77728.312500 -68110.796875 -96634.718750 +v -77728.312500 -65595.968750 -96675.875000 +v -77728.312500 -63121.441406 -97126.125000 +v -77728.312500 -60753.304688 -97973.460938 +v -77728.312500 -58554.828125 -99195.234375 +v -74455.546875 -80455.820312 -118574.695312 +v -74455.546875 -81350.031250 -116311.859375 +v -74455.546875 -81863.695312 -113933.578125 +v -74455.546875 -81983.078125 -111503.390625 +v -74455.546875 -81705.007812 -109086.210938 +v -74455.546875 -81036.898438 -106746.617188 +v -74455.546875 -79996.609375 -104547.109375 +v -74455.546875 -78611.921875 -102546.429688 +v -74455.546875 -77801.656250 -101637.609375 +v -74455.546875 -76919.828125 -100798.039062 +v -74455.546875 -74965.531250 -99348.632812 +v -74455.546875 -72801.226562 -98236.929688 +v -74455.546875 -70484.750000 -97492.632812 +v -74455.546875 -68077.968750 -97135.617188 +v -74455.546875 -65645.171875 -97175.429688 +v -74455.546875 -63251.359375 -97611.000000 +v -74455.546875 -60960.472656 -98430.687500 +v -74455.546875 -58833.707031 -99612.609375 +v -74455.546875 -56927.878906 -101125.187500 +v -71200.976562 -79962.164062 -118331.250000 +v -71200.976562 -80823.312500 -116152.078125 +v -71200.976562 -81317.976562 -113861.734375 +v -71200.976562 -81432.953125 -111521.398438 +v -71200.976562 -81165.156250 -109193.593750 +v -71200.976562 -80521.750000 -106940.507812 +v -71200.976562 -79519.929688 -104822.320312 +v -71200.976562 -78186.437500 -102895.617188 +v -71200.976562 -77406.125000 -102020.398438 +v -71200.976562 -76556.906250 -101211.867188 +v -71200.976562 -74674.867188 -99816.054688 +v -71200.976562 -72590.593750 -98745.453125 +v -71200.976562 -70359.757812 -98028.679688 +v -71200.976562 -68041.968750 -97684.867188 +v -71200.976562 -65699.125000 -97723.203125 +v -71200.976562 -63393.820312 -98142.671875 +v -71200.976562 -61187.636719 -98932.054688 +v -71200.976562 -59139.507812 -100070.273438 +v -71200.976562 -57304.144531 -101526.921875 +v -71200.976562 -56481.832031 -102362.796875 +v -67980.265625 -79427.101562 -118067.390625 +v -67980.265625 -80252.414062 -115978.898438 +v -67980.265625 -80726.492188 -113783.859375 +v -67980.265625 -80836.687500 -111540.914062 +v -67980.265625 -80580.039062 -109309.984375 +v -67980.265625 -79963.406250 -107150.656250 +v -67980.265625 -79003.265625 -105120.609375 +v -67980.265625 -77725.265625 -103274.085938 +v -67980.265625 -76977.429688 -102435.289062 +v -67980.265625 -76163.546875 -101660.406250 +v -67980.265625 -74359.828125 -100322.671875 +v -67980.265625 -72362.289062 -99296.632812 +v -67980.265625 -70224.289062 -98609.679688 +v -67980.265625 -68002.945312 -98280.171875 +v -67980.265625 -65757.601562 -98316.914062 +v -67980.265625 -63548.230469 -98718.929688 +v -67980.265625 -61433.851562 -99475.460938 +v -67980.265625 -59470.953125 -100566.312500 +v -67980.265625 -57711.968750 -101962.343750 +v -67980.265625 -56923.875000 -102763.445312 +v -67980.265625 -56203.882812 -103626.257812 +v -64809.105469 -78852.726562 -117784.140625 +v -64809.105469 -79639.570312 -115792.992188 +v -64809.105469 -80091.554688 -113700.265625 +v -64809.105469 -80196.609375 -111561.875000 +v -64809.105469 -79951.921875 -109434.921875 +v -64809.105469 -79364.039062 -107376.242188 +v -64809.105469 -78448.648438 -105440.820312 +v -64809.105469 -77230.218750 -103680.367188 +v -64809.105469 -76517.242188 -102880.656250 +v -64809.105469 -75741.296875 -102141.898438 +v -64809.105469 -74021.648438 -100866.515625 +v -64809.105469 -72117.210938 -99888.296875 +v -64809.105469 -70078.867188 -99233.367188 +v -64809.105469 -67961.062500 -98919.218750 +v -64809.105469 -65820.375000 -98954.250000 +v -64809.105469 -63713.980469 -99337.523438 +v -64809.105469 -61698.156250 -100058.796875 +v -64809.105469 -59826.750000 -101098.804688 +v -64809.105469 -58149.750000 -102429.765625 +v -64809.105469 -57398.390625 -103193.515625 +v -64809.105469 -56711.957031 -104016.125000 +v -64809.105469 -55551.781250 -105815.500000 +v -61703.195312 -78241.148438 -117482.539062 +v -61703.195312 -78987.031250 -115595.046875 +v -61703.195312 -79415.484375 -113611.265625 +v -61703.195312 -79515.070312 -111584.179688 +v -61703.195312 -79283.117188 -109567.953125 +v -61703.195312 -78725.835938 -107616.445312 +v -61703.195312 -77858.101562 -105781.773438 +v -61703.195312 -76703.101562 -104112.960938 +v -61703.195312 -76027.234375 -103354.890625 +v -61703.195312 -75291.679688 -102654.585938 +v -61703.195312 -73661.554688 -101445.593750 +v -61703.195312 -71856.257812 -100518.296875 +v -61703.195312 -69924.023438 -99897.460938 +v -61703.195312 -67916.460938 -99599.664062 +v -61703.195312 -65887.210938 -99632.875000 +v -61703.195312 -63890.472656 -99996.195312 +v -61703.195312 -61979.585938 -100679.921875 +v -61703.195312 -60205.597656 -101665.789062 +v -61703.195312 -58615.898438 -102927.460938 +v -61703.195312 -57903.652344 -103651.460938 +v -61703.195312 -57252.953125 -104431.242188 +v -61703.195312 -56153.171875 -106136.953125 +v -61703.195312 -55345.929688 -107999.031250 +v -117087.007812 -75536.531250 -98430.382812 +v -115175.460938 -73385.187500 -96827.132812 +v -112707.125000 -70922.984375 -95613.140625 +v -109528.960938 -68225.750000 -94880.898438 +v -105401.695312 -65403.367188 -94720.320312 +v -102677.632812 -62603.828125 -95194.367188 +v -99830.093750 -59941.640625 -96182.078125 +v -96869.367188 -57517.488281 -97642.742188 +v -93816.742188 -55420.246094 -99515.500000 +v -90688.093750 -54607.062500 -100663.601562 +v -87499.210938 -53949.656250 -101896.531250 +v -84265.812500 -52783.550781 -104335.851562 +v -117087.007812 -73215.031250 -97237.929688 +v -115175.460938 -70831.257812 -96006.539062 +v -112707.125000 -68204.187500 -95209.843750 +v -109528.960938 -65423.699219 -94926.750000 +v -105401.695312 -62612.855469 -95228.070312 +v -102677.632812 -59927.929688 -96151.820312 +v -99830.093750 -57462.191406 -97559.992188 +v -96869.367188 -55308.355469 -99396.039062 +v -93816.742188 -54439.859375 -100512.062500 +v -90688.093750 -53723.218750 -101722.781250 +v -87499.210938 -52481.101562 -104174.187500 +v -84265.812500 -51727.925781 -106770.882812 +v -117087.007812 -70730.289062 -96439.570312 +v -115175.460938 -68177.765625 -95612.937500 +v -112707.125000 -65456.011719 -95254.812500 +v -109528.960938 -62666.542969 -95428.429688 +v -105401.695312 -59942.328125 -96183.593750 +v -102677.632812 -57443.738281 -97532.375000 +v -99830.093750 -55240.320312 -99323.398438 +v -96869.367188 -54318.582031 -100402.140625 +v -93816.742188 -53544.191406 -101585.406250 +v -90688.093750 -52229.386719 -104039.648438 +v -87499.210938 -51403.183594 -106660.648438 +v -117087.007812 -56188.703125 -100335.976562 +v -117087.007812 -55272.796875 -101266.992188 +v -115175.460938 -54943.339844 -100968.390625 +v -112707.125000 -53762.796875 -101753.148438 +v -109528.960938 -51982.656250 -103907.765625 +v -105401.695312 -50671.574219 -106412.296875 +v -115175.460938 -54083.277344 -101999.062500 +v -112707.125000 -52273.382812 -104063.164062 +v -109528.960938 -50867.996094 -106478.976562 +v -98000.000000 -63240.625000 110955.195312 +v -104000.000000 -67104.328125 111990.468750 +v -98000.000000 -63104.328125 111990.468750 +v -98000.000000 -64275.902344 109162.039062 +v -98000.000000 -63640.226562 109990.468750 +v -98000.000000 -66069.054688 108126.765625 +v -98000.000000 -65104.328125 108526.367188 +v -98000.000000 -68139.601562 108126.765625 +v -98000.000000 -67104.328125 107990.468750 +v -98000.000000 -69932.757812 109162.039062 +v -98000.000000 -69104.328125 108526.367188 +v -98000.000000 -70968.031250 110955.195312 +v -98000.000000 -70568.429688 109990.468750 +v -98000.000000 -70968.031250 113025.742188 +v -98000.000000 -71104.328125 111990.468750 +v -98000.000000 -69932.757812 114818.898438 +v -98000.000000 -70568.429688 113990.468750 +v -98000.000000 -68139.601562 115854.171875 +v -98000.000000 -69104.328125 115454.570312 +v -98000.000000 -66069.054688 115854.171875 +v -98000.000000 -67104.328125 115990.468750 +v -98000.000000 -64275.902344 114818.898438 +v -98000.000000 -65104.328125 115454.570312 +v -98000.000000 -63240.625000 113025.742188 +v -98000.000000 -63640.226562 113990.468750 +v -90304.375000 -63240.625000 113025.742188 +v -90304.375000 -63104.328125 111990.468750 +v -90304.375000 -63240.625000 110955.195312 +v -90304.375000 -63640.226562 109990.468750 +v -90304.375000 -64275.902344 109162.039062 +v -90304.375000 -65104.328125 108526.367188 +v -90304.375000 -66069.054688 108126.765625 +v -90304.375000 -67104.328125 107990.468750 +v -90304.375000 -68139.601562 108126.765625 +v -90304.375000 -69104.328125 108526.367188 +v -90304.375000 -69932.757812 109162.039062 +v -90304.375000 -70568.429688 109990.468750 +v -90304.375000 -70968.031250 110955.195312 +v -90304.375000 -71104.328125 111990.468750 +v -90304.375000 -70968.031250 113025.742188 +v -90304.375000 -70568.429688 113990.468750 +v -90304.375000 -69932.757812 114818.898438 +v -90304.375000 -69104.328125 115454.570312 +v -90304.375000 -68139.601562 115854.171875 +v -90304.375000 -67104.328125 115990.468750 +v -90304.375000 -66069.054688 115854.171875 +v -90304.375000 -65104.328125 115454.570312 +v -90304.375000 -64275.902344 114818.898438 +v -90304.375000 -63640.226562 113990.468750 +v -98000.000000 -63240.625000 -113025.742188 +v -104000.000000 -67104.328125 -111990.468750 +v -98000.000000 -63104.328125 -111990.468750 +v -98000.000000 -64275.902344 -114818.898438 +v -98000.000000 -63640.226562 -113990.468750 +v -98000.000000 -66069.054688 -115854.171875 +v -98000.000000 -65104.328125 -115454.570312 +v -98000.000000 -68139.601562 -115854.171875 +v -98000.000000 -67104.328125 -115990.468750 +v -98000.000000 -69932.757812 -114818.898438 +v -98000.000000 -69104.328125 -115454.570312 +v -98000.000000 -70968.031250 -113025.742188 +v -98000.000000 -70568.429688 -113990.468750 +v -98000.000000 -70968.031250 -110955.195312 +v -98000.000000 -71104.328125 -111990.468750 +v -98000.000000 -69932.757812 -109162.039062 +v -98000.000000 -70568.429688 -109990.468750 +v -98000.000000 -68139.601562 -108126.765625 +v -98000.000000 -69104.328125 -108526.367188 +v -98000.000000 -66069.054688 -108126.765625 +v -98000.000000 -67104.328125 -107990.468750 +v -98000.000000 -64275.902344 -109162.039062 +v -98000.000000 -65104.328125 -108526.367188 +v -98000.000000 -63240.625000 -110955.195312 +v -98000.000000 -63640.226562 -109990.468750 +v -90304.375000 -63240.625000 -110955.195312 +v -90304.375000 -63104.328125 -111990.468750 +v -90304.375000 -63240.625000 -113025.742188 +v -90304.375000 -63640.226562 -113990.468750 +v -90304.375000 -64275.902344 -114818.898438 +v -90304.375000 -65104.328125 -115454.570312 +v -90304.375000 -66069.054688 -115854.171875 +v -90304.375000 -67104.328125 -115990.468750 +v -90304.375000 -68139.601562 -115854.171875 +v -90304.375000 -69104.328125 -115454.570312 +v -90304.375000 -69932.757812 -114818.898438 +v -90304.375000 -70568.429688 -113990.468750 +v -90304.375000 -70968.031250 -113025.742188 +v -90304.375000 -71104.328125 -111990.468750 +v -90304.375000 -70968.031250 -110955.195312 +v -90304.375000 -70568.429688 -109990.468750 +v -90304.375000 -69932.757812 -109162.039062 +v -90304.375000 -69104.328125 -108526.367188 +v -90304.375000 -68139.601562 -108126.765625 +v -90304.375000 -67104.328125 -107990.468750 +v -90304.375000 -66069.054688 -108126.765625 +v -90304.375000 -65104.328125 -108526.367188 +v -90304.375000 -64275.902344 -109162.039062 +v -90304.375000 -63640.226562 -109990.468750 +v -120399.726562 -74963.898438 -4000.000000 +v -123995.414062 -76089.734375 0.000000 +v -122666.929688 -74280.250000 -3138.742188 +v -125476.867188 -75106.007812 0.000000 +v -124100.289062 -74670.906250 -1569.371094 +v -126845.632812 -74194.789062 0.000000 +v -125496.390625 -73768.523438 -1569.371094 +v -126779.523438 -72933.031250 -1569.371094 +v -124042.328125 -73424.257812 -3138.742188 +v -125304.453125 -72630.882812 -3138.742188 +v -122599.296875 -73082.609375 -4708.113281 +v -123843.226562 -72332.101562 -4708.113281 +v -121165.101562 -72743.015625 -6277.484375 +v -122393.023438 -72035.937500 -6277.484375 +v -119737.554688 -72404.898438 -7846.855469 +v -120951.039062 -71741.671875 -7846.855469 +v -118314.453125 -72067.703125 -9416.226562 +v -119514.460938 -71448.546875 -9416.226562 +v -116893.484375 -71730.820312 -10985.723633 +v -118080.312500 -71155.804688 -10985.787109 +v -115472.804688 -71393.781250 -12554.968750 +v -116646.296875 -70862.804688 -12554.968750 +v -113481.898438 -70920.984375 -14749.560547 +v -114635.070312 -70451.085938 -14749.560547 +v -111480.796875 -70445.101562 -16944.150391 +v -112610.257812 -70035.273438 -16944.150391 +v -109463.500000 -69964.578125 -19138.742188 +v -110564.195312 -69613.359375 -19138.742188 +v -107424.000000 -69477.859375 -21333.333984 +v -108489.187500 -69183.320312 -21333.333984 +v -105474.742188 -69011.750000 -23403.123047 +v -106498.765625 -68768.484375 -23403.123047 +v -103495.351562 -68537.453125 -25472.912109 +v -104469.335938 -68342.945312 -25472.912109 +v -101910.304688 -68156.898438 -27104.683594 +v -102837.648438 -67998.796875 -27104.683594 +v -100300.937500 -67769.812500 -28736.455078 +v -101174.562500 -67646.117188 -28736.455078 +v -98664.773438 -67375.546875 -30368.228516 +v -99476.898438 -67284.070312 -30368.228516 +v -97344.468750 -66946.773438 -32000.000000 +v -100144.843750 -67187.289062 -30368.228516 +v -98826.820312 -66784.500000 -32000.000000 +v -101445.554688 -66945.812500 -30368.228516 +v -102710.125000 -66647.453125 -30368.228516 +v -104528.523438 -66857.710938 -28736.455078 +v -105319.437500 -66603.101562 -28736.455078 +v -107094.343750 -66768.476562 -27104.683594 +v -107804.640625 -66398.750000 -27104.683594 +v -109539.039062 -66528.445312 -25472.912109 +v -110098.203125 -66028.062500 -25472.912109 +v -112265.835938 -66148.554688 -23403.123047 +v -112700.851562 -65543.640625 -23403.123047 +v -114855.554688 -65636.820312 -21333.333984 +v -115145.625000 -65030.031250 -21333.333984 +v -117448.375000 -65098.312500 -19138.742188 +v -117592.343750 -64753.550781 -19138.742188 +v -119916.093750 -64794.054688 -16944.150391 +v -120071.710938 -64350.367188 -16944.150391 +v -122414.640625 -64377.324219 -14749.560547 +v -122510.898438 -64070.761719 -14749.560547 +v -124867.789062 -64087.066406 -12554.968750 +v -124964.742188 -63769.285156 -12554.968750 +v -126661.148438 -63765.980469 -10986.829102 +v -126848.453125 -63032.734375 -10986.924805 +v -128570.937500 -62990.609375 -9416.226562 +v -128709.945312 -61868.835938 -9416.226562 +v -130455.476562 -61778.363281 -7846.855469 +v -130431.179688 -60411.675781 -7846.855469 +v -132191.171875 -60275.636719 -6277.484375 +v -131975.015625 -58697.890625 -6277.484375 +v -133726.109375 -58516.804688 -4708.113281 +v -133267.359375 -56758.003906 -4708.113281 +v -134987.656250 -56545.699219 -3138.742188 +v -134123.343750 -54408.261719 -3138.742188 +v -135784.000000 -54174.179688 -1569.371094 +v -134541.156250 -52064.316406 -1569.371094 +v -136334.718750 -52155.359375 0.000000 +v -135304.046875 -50777.203125 0.000000 +v -129271.226562 -72561.890625 0.000000 +v -127956.609375 -72157.078125 -1569.371094 +v -126460.187500 -71893.070312 -3138.742188 +v -124978.351562 -71632.898438 -4708.113281 +v -123508.015625 -71375.710938 -6277.484375 +v -122046.109375 -71120.664062 -7846.855469 +v -120589.546875 -70866.914062 -9416.226562 +v -119135.007812 -70613.562500 -10985.849609 +v -117680.125000 -70359.882812 -12554.968750 +v -115638.062500 -70002.804688 -14749.560547 +v -113579.945312 -69640.953125 -16944.150391 +v -111497.343750 -69272.023438 -19138.742188 +v -109381.828125 -68893.687500 -21333.333984 +v -107348.882812 -68526.164062 -23403.123047 +v -105272.101562 -68146.273438 -25472.912109 +v -103599.273438 -67836.781250 -27104.683594 +v -101891.343750 -67517.437500 -28736.455078 +v -131321.515625 -71139.406250 0.000000 +v -130021.359375 -70756.804688 -1569.371094 +v -128488.546875 -70557.671875 -3138.742188 +v -126970.695312 -70362.414062 -4708.113281 +v -125464.546875 -70170.140625 -6277.484375 +v -123966.843750 -69979.960938 -7846.855469 +v -122474.312500 -69790.984375 -9416.226562 +v -120983.335938 -69602.273438 -10985.975586 +v -119491.734375 -69413.062500 -12554.968750 +v -117396.945312 -69145.742188 -14749.560547 +v -115284.226562 -68873.101562 -16944.150391 +v -113144.671875 -68592.695312 -19138.742188 +v -110969.343750 -68302.078125 -21333.333984 +v -108876.937500 -68016.453125 -23403.123047 +v -106737.312500 -67717.539062 -25472.912109 +v -105012.281250 -67471.164062 -27104.683594 +v -103249.585938 -67214.257812 -28736.455078 +v -133041.218750 -69882.507812 0.000000 +v -131740.093750 -69519.031250 -1569.371094 +v -130178.648438 -69371.578125 -3138.742188 +v -128631.804688 -69227.328125 -4708.113281 +v -127096.437500 -69085.523438 -6277.484375 +v -125569.445312 -68945.359375 -7846.855469 +v -124047.703125 -68806.070312 -9416.226562 +v -122527.617188 -68666.828125 -10986.101562 +v -121007.546875 -68526.992188 -12554.968750 +v -118873.679688 -68328.734375 -14749.560547 +v -116723.335938 -68125.468750 -16944.150391 +v -114548.000000 -67915.070312 -19138.742188 +v -112339.171875 -67695.382812 -21333.333984 +v -110217.609375 -67477.781250 -23403.123047 +v -108051.546875 -67248.234375 -25472.912109 +v -106307.835938 -67057.679688 -27104.683594 +v -134470.703125 -68752.703125 0.000000 +v -132702.640625 -68773.601562 -1569.371094 +v -131125.859375 -68654.140625 -3138.742188 +v -129563.265625 -68537.367188 -4708.113281 +v -128011.945312 -68422.625000 -6277.484375 +v -126469.007812 -68309.242188 -7846.855469 +v -124931.546875 -68196.531250 -9416.226562 +v -123396.085938 -68083.804688 -10986.184570 +v -121861.453125 -67970.492188 -12554.968750 +v -119708.593750 -67809.617188 -14749.560547 +v -117541.500000 -67644.312500 -16944.150391 +v -115352.234375 -67472.742188 -19138.742188 +v -113132.882812 -67293.078125 -21333.333984 +v -111005.031250 -67114.570312 -23403.123047 +v -108836.703125 -66925.695312 -25472.912109 +v -133545.281250 -68069.937500 -1569.371094 +v -135646.203125 -67717.414062 0.000000 +v -134442.984375 -67237.437500 -1569.371094 +v -136600.109375 -66749.562500 0.000000 +v -135187.781250 -66441.960938 -1569.371094 +v -137361.140625 -65827.093750 0.000000 +v -135843.046875 -65605.437500 -1569.371094 +v -137954.625000 -64932.601562 0.000000 +v -136192.406250 -65070.351562 -1569.371094 +v -136485.718750 -64539.214844 -1569.371094 +v -134529.578125 -65043.058594 -3138.742188 +v -134810.265625 -64519.937500 -3138.742188 +v -132867.375000 -65015.503906 -4708.113281 +v -133134.812500 -64500.660156 -4708.113281 +v -131205.687500 -64987.707031 -6277.484375 +v -131459.359375 -64481.382812 -6277.484375 +v -129544.382812 -64959.695312 -7846.855469 +v -129783.914062 -64462.109375 -7846.855469 +v -127883.351562 -64931.484375 -9416.226562 +v -128108.468750 -64442.832031 -9416.226562 +v -126221.375000 -64903.074219 -10986.660156 +v -126431.804688 -64423.539062 -10986.733398 +v -124561.687500 -64874.550781 -12554.968750 +v -124757.570312 -64404.277344 -12554.968750 +v -122239.109375 -64834.406250 -14749.560547 +v -138402.718750 -64052.855469 0.000000 +v -136659.046875 -64174.882812 -1569.371094 +v -134975.703125 -64161.320312 -3138.742188 +v -133291.875000 -64148.183594 -4708.113281 +v -131607.656250 -64135.421875 -6277.484375 +v -129923.078125 -64122.980469 -7846.855469 +v -128238.203125 -64110.808594 -9416.226562 +v -126551.820312 -64098.843750 -10986.781250 +v -138937.031250 -62303.023438 0.000000 +v -137124.171875 -62846.097656 -1569.371094 +v -136827.828125 -63770.800781 -1569.371094 +v -137353.093750 -61510.164062 -1569.371094 +v -139087.156250 -60539.152344 0.000000 +v -137375.843750 -59960.402344 -1569.371094 +v -138940.875000 -58762.195312 0.000000 +v -137155.890625 -58227.171875 -1569.371094 +v -138558.265625 -56998.699219 0.000000 +v -136674.046875 -56367.109375 -1569.371094 +v -137979.296875 -55287.011719 0.000000 +v -137231.375000 -53663.789062 0.000000 +v -132959.171875 -50148.054688 -1569.371094 +v -134149.453125 -49535.550781 0.000000 +v -131055.203125 -48490.820312 -1569.371094 +v -132877.234375 -48429.050781 0.000000 +v -131490.671875 -47450.386719 0.000000 +v -128846.742188 -47108.531250 -1569.371094 +v -129990.875000 -46587.929688 0.000000 +v -128377.570312 -45827.375000 0.000000 +v -126352.398438 -45976.207031 -1569.371094 +v -126649.945312 -45153.398438 0.000000 +v -123603.539062 -45048.695312 -1569.371094 +v -124807.414062 -44551.277344 0.000000 +v -120649.757812 -44281.390625 -1569.371094 +v -120780.203125 -43515.316406 0.000000 +v -117555.273438 -43641.820312 -1569.371094 +v -116303.664062 -42653.375000 0.000000 +v -114392.820312 -43110.515625 -1569.371094 +v -111365.062500 -41939.992188 0.000000 +v -111238.453125 -42677.074219 -1569.371094 +v -108703.828125 -41640.125000 0.000000 +v -108170.312500 -42334.812500 -1569.371094 +v -105894.281250 -41382.031250 0.000000 +v -105273.101562 -42076.621094 -1569.371094 +v -102912.617188 -41170.226562 0.000000 +v -102644.484375 -41892.554688 -1569.371094 +v -100398.507812 -41769.171875 -1569.371094 +v -101810.492188 -42584.195312 -3138.742188 +v -99604.375000 -42463.941406 -3138.742188 +v -100969.218750 -43279.605469 -4708.113281 +v -98808.210938 -43159.710938 -4708.113281 +v -100121.546875 -43978.332031 -6277.484375 +v -98010.265625 -43856.359375 -6277.484375 +v -99268.367188 -44679.910156 -7846.855469 +v -97210.781250 -44553.769531 -7846.855469 +v -98410.562500 -45383.878906 -9416.226562 +v -96410.015625 -45251.812500 -9416.226562 +v -97547.007812 -46091.437500 -10989.276367 +v -95606.257812 -45952.066406 -10989.410156 +v -96684.656250 -46797.156250 -12554.968750 +v -94805.609375 -46649.316406 -12554.968750 +v -95472.851562 -47787.929688 -14749.559570 +v -93682.414062 -47627.136719 -14749.559570 +v -94259.656250 -48779.421875 -16944.150391 +v -92558.828125 -48605.152344 -16944.150391 +v -93047.507812 -49770.375000 -19138.742188 +v -91435.531250 -49583.019531 -19138.742188 +v -91838.843750 -50759.523438 -21333.333984 +v -90313.203125 -50560.410156 -21333.333984 +v -90704.281250 -51689.640625 -23403.123047 +v -89256.203125 -51481.480469 -23403.123047 +v -89577.015625 -52615.980469 -25472.912109 +v -88201.226562 -52401.546875 -25472.912109 +v -88694.789062 -53342.929688 -27104.683594 +v -87371.320312 -53126.015625 -27104.683594 +v -87819.367188 -54066.351562 -28736.455078 +v -86543.304688 -53849.546875 -28736.455078 +v -86951.742188 -54785.738281 -30368.228516 +v -85717.460938 -54572.003906 -30368.228516 +v -85023.171875 -55314.535156 -32000.000000 +v -85116.242188 -54477.917969 -30368.228516 +v -84525.976562 -54392.132812 -30368.228516 +v -85326.984375 -53672.464844 -28736.455078 +v -82539.578125 -53359.656250 -28736.365234 +v -83295.742188 -52653.230469 -27104.492188 +v -80395.664062 -52452.601562 -27103.945312 +v -81089.820312 -51757.503906 -25471.677734 +v -78039.648438 -51648.234375 -25470.224609 +v -78820.203125 -50777.562500 -23398.841797 +v -75549.218750 -50744.890625 -23395.761719 +v -76204.843750 -49883.121094 -21323.005859 +v -72647.156250 -49915.246094 -21317.746094 +v -73176.257812 -49012.664062 -19118.412109 +v -71234.500000 -49056.613281 -19114.578125 +v -71671.726562 -48159.468750 -16914.833984 +v -69565.304688 -48228.199219 -16909.886719 +v -69902.609375 -47340.050781 -14710.405273 +v -67609.671875 -47436.472656 -14704.449219 +v -67841.734375 -46561.621094 -12506.178711 +v -65341.714844 -46688.820312 -12499.438477 +v -65428.574219 -46077.890625 -10934.995117 +v -62742.968750 -46234.746094 -10927.993164 +v -62749.144531 -45633.398438 -9352.961914 +v -59866.343750 -45821.921875 -9345.639648 +v -59794.535156 -45239.777344 -7779.573730 +v -53519.578125 -45705.449219 -7765.066406 +v -53271.710938 -45155.550781 -6203.273926 +v -46388.160156 -45734.734375 -6189.634766 +v -45977.679688 -45221.210938 -4633.940918 +v -38530.515625 -45914.070312 -4622.214844 +v -37989.328125 -45440.070312 -3074.701172 +v -30066.451172 -46243.292969 -3065.943848 +v -29445.669922 -45810.585938 -1528.905884 +v -12858.987305 -47686.117188 -1519.462036 +v -14895.896484 -46985.289062 0.000000 +v -6615.713379 -48001.730469 0.000000 +v -99726.828125 -41010.187500 0.000000 +v -99458.617188 -41725.371094 -1569.371094 +v -98678.593750 -42419.558594 -3138.742188 +v -97898.031250 -43114.007812 -4708.113281 +v -97117.000000 -43808.683594 -6277.484375 +v -96335.570312 -44503.554688 -7846.855469 +v -95553.796875 -45198.585938 -9416.226562 +v -94769.820312 -45895.472656 -10989.477539 +v -93989.507812 -46589.019531 -12554.968750 +v -92895.390625 -47561.378906 -14749.559570 +v -91801.171875 -48533.789062 -16944.150391 +v -90707.039062 -49506.164062 -19138.742188 +v -89613.148438 -50478.414062 -21333.333984 +v -88581.867188 -51395.183594 -23403.123047 +v -87551.109375 -52311.695312 -25472.912109 +v -86738.968750 -53034.019531 -27104.683594 +v -85927.320312 -53756.105469 -28736.455078 +v -98662.890625 -41690.847656 -1569.371094 +v -96296.023438 -40908.066406 0.000000 +v -95183.945312 -41579.230469 -1568.945068 +v -92572.289062 -40870.421875 0.000000 +v -91408.804688 -41533.570312 -1567.719604 +v -88504.453125 -40903.878906 0.000000 +v -87283.093750 -41560.769531 -1565.774048 +v -84042.070312 -41014.812500 0.000000 +v -82753.710938 -41667.421875 -1563.187256 +v -79139.429688 -41209.031250 0.000000 +v -77773.203125 -41859.484375 -1560.038452 +v -75101.554688 -41989.167969 -1558.278076 +v -77336.703125 -42474.613281 -3121.952393 +v -74718.093750 -42594.226562 -3118.785400 +v -76905.242188 -43097.300781 -4685.593262 +v -74342.914062 -43207.621094 -4681.345215 +v -76478.835938 -43726.613281 -6250.811523 +v -73975.734375 -43828.316406 -6245.780273 +v -76057.492188 -44361.601562 -7817.458984 +v -73616.296875 -44455.261719 -7811.913574 +v -75641.226562 -45001.324219 -9385.385742 +v -73264.335938 -45087.421875 -9379.568359 +v -75228.609375 -45647.109375 -10959.960938 +v -72918.359375 -45726.066406 -10954.241211 +v -74823.968750 -46291.207031 -12524.483398 +v -72581.796875 -46363.226562 -12518.733398 +v -74264.695312 -47198.070312 -14721.374023 +v -72120.585938 -47260.726562 -14716.056641 +v -73715.445312 -48106.078125 -16919.486328 +v -73759.500000 -41491.457031 0.000000 +v -72304.070312 -42142.003906 -1556.406738 +v -71977.437500 -42736.476562 -3115.418945 +v -71663.156250 -43339.968750 -4676.829590 +v -71360.609375 -43951.347656 -6240.432129 +v -71069.140625 -44569.492188 -7806.019531 +v -70788.117188 -45193.269531 -9373.384766 +v -70515.914062 -45823.894531 -10948.152344 +v -70254.867188 -46453.218750 -12512.621094 +v -70882.343750 -41666.960938 0.000000 +v -69378.335938 -42318.421875 -1554.434570 +v -69112.296875 -42901.800781 -3111.870850 +v -68863.625000 -43494.781250 -4672.070801 +v -68631.203125 -44096.164062 -6234.795410 +v -68413.921875 -44704.742188 -7799.807129 +v -68210.656250 -45319.312500 -9366.867188 +v -68019.593750 -45941.042969 -10941.725586 +v -67877.937500 -41865.800781 0.000000 +v -66323.078125 -42518.742188 -1552.371338 +v -66121.382812 -43090.531250 -3108.158936 +v -65943.031250 -43672.406250 -4667.091797 +v -65786.320312 -44263.109375 -6228.898438 +v -65649.539062 -44861.371094 -7793.308105 +v -65530.984375 -45465.921875 -9360.048828 +v -64745.878906 -42088.191406 0.000000 +v -63138.343750 -42743.167969 -1550.226807 +v -63004.691406 -43302.886719 -3104.301025 +v -62901.359375 -43873.089844 -4661.917480 +v -62825.933594 -44452.453125 -6222.770020 +v -62776.000000 -45039.664062 -7786.553223 +v -61487.050781 -42334.246094 0.000000 +v -59825.601562 -42991.773438 -1548.011108 +v -59763.609375 -43538.968750 -3100.314941 +v -59739.929688 -44096.941406 -4656.570801 +v -59751.316406 -44664.328125 -6216.437012 +v -54599.789062 -42897.125000 0.000000 +v -52829.941406 -43561.109375 -1543.405396 +v -52921.640625 -44081.972656 -3092.029053 +v -53070.648438 -44613.921875 -4645.456543 +v -47253.703125 -43552.605469 0.000000 +v -45381.484375 -44224.363281 -1538.633179 +v -45639.554688 -44717.285156 -3083.443848 +v -39513.269531 -44296.476562 0.000000 +v -37554.105469 -44976.589844 -1533.773682 +v -31466.958984 -45122.320312 0.000000 +v -4639.153809 -48705.500000 -1515.044189 +v 1492.998169 -49059.496094 0.000000 +v 3357.714844 -49763.128906 -1510.934570 +v 9309.508789 -50146.515625 0.000000 +v 11009.469727 -50846.417969 -1507.212280 +v 16724.322266 -51250.671875 0.000000 +v 18208.320312 -51942.875000 -1503.956421 +v 20251.398438 -51805.472656 0.000000 +v 21609.718750 -52492.265625 -1502.528076 +v 23645.076172 -52360.183594 0.000000 +v 24867.218750 -53040.515625 -1501.246094 +v 26897.445312 -52913.441406 0.000000 +v 27974.152344 -53586.261719 -1500.120239 +v 30002.310547 -53463.949219 0.000000 +v 30925.605469 -54128.234375 -1499.160400 +v 32955.109375 -54010.480469 0.000000 +v 33718.292969 -54665.226562 -1498.376587 +v 35752.785156 -54551.898438 0.000000 +v 36350.406250 -55196.144531 -1497.778442 +v 38393.648438 -55087.136719 0.000000 +v 38821.472656 -55719.984375 -1497.376221 +v 40877.257812 -55615.242188 0.000000 +v 41132.218750 -56235.859375 -1497.179443 +v 43204.285156 -56135.351562 0.000000 +v 43284.425781 -56742.992188 -1497.198242 +v 45376.386719 -56646.718750 0.000000 +v 47396.070312 -57148.714844 0.000000 +v 45280.785156 -57240.738281 -1497.442383 +v 49266.566406 -57640.828125 0.000000 +v 47124.773438 -57728.578125 -1497.921875 +v 50991.703125 -58122.683594 0.000000 +v 48820.484375 -58206.136719 -1498.646484 +v 52575.757812 -58594.054688 0.000000 +v 50372.511719 -58673.191406 -1499.626221 +v 54023.359375 -59054.851562 0.000000 +v 51785.789062 -59129.671875 -1500.870728 +v 55339.328125 -59505.144531 0.000000 +v 53065.472656 -59575.679688 -1502.390259 +v 54216.765625 -60011.484375 -1504.194336 +v 50419.128906 -59600.847656 -3018.241455 +v 51538.636719 -60026.203125 -3021.487305 +v 47541.527344 -59622.824219 -4546.484863 +v 48642.273438 -60038.281250 -4550.838379 +v 44456.390625 -59641.859375 -6086.051758 +v 45549.925781 -60047.910156 -6091.208008 +v 41187.437500 -59658.203125 -7635.873047 +v 42283.843750 -60055.265625 -7641.556152 +v 37758.386719 -59672.097656 -9194.879883 +v 38866.285156 -60060.539062 -9200.841797 +v 34165.347656 -59683.875000 -10773.964844 +v 35291.691406 -60063.925781 -10780.144531 +v 30514.871094 -59693.535156 -12336.174805 +v 31665.734375 -60065.558594 -12342.067383 +v 25227.607422 -59704.351562 -14547.265625 +v 26419.226562 -60065.328125 -14552.714844 +v 19831.283203 -59712.507812 -16767.126953 +v 21067.888672 -60062.601562 -16771.894531 +v 14390.761719 -59718.675781 -18992.832031 +v 15672.567383 -60057.871094 -18996.763672 +v 8970.901367 -59723.535156 -21221.460938 +v 10294.109375 -60051.644531 -21224.474609 +v 3936.498291 -59727.523438 -23323.404297 +v 5291.666504 -60044.851562 -23325.550781 +v -967.419373 -59731.507812 -25422.894531 +v 409.394470 -60037.589844 -25424.240234 +v -4705.911133 -59735.023438 -27074.746094 +v -3321.510010 -60031.812500 -27075.552734 +v -8302.818359 -59739.167969 -28722.349609 +v -6920.983887 -60026.214844 -28722.728516 +v -11731.479492 -59744.218750 -30364.501953 +v -10364.014648 -60021.003906 -30364.601562 +v -10497.979492 -60654.777344 -32000.000000 +v -7648.673828 -60586.082031 -30364.851562 +v -4963.364746 -61165.101562 -30365.171875 +v -1527.380493 -61205.214844 -28724.890625 +v 1105.267334 -61816.714844 -28726.384766 +v 4577.808105 -61867.027344 -27083.310547 +v 7007.853027 -62488.574219 -27087.115234 +v 10430.850586 -62545.664062 -25443.558594 +v 11634.860352 -62887.402344 -25447.152344 +v 15921.050781 -62958.347656 -23362.066406 +v 16873.371094 -63279.136719 -23368.250000 +v 21072.396484 -63350.523438 -21284.396484 +v 21623.464844 -63622.742188 -21293.730469 +v 25978.562500 -63707.796875 -19087.089844 +v 26353.429688 -63994.011719 -19100.142578 +v 30594.460938 -64092.152344 -16897.320312 +v 30935.541016 -64689.207031 -16930.394531 +v 34945.574219 -64817.367188 -14733.839844 +v 32678.138672 -65028.136719 -16000.000000 +v 36250.406250 -65148.554688 -14000.000000 +v 38948.671875 -64945.378906 -12537.966797 +v 38036.539062 -65208.765625 -13000.000000 +v 39822.671875 -65268.972656 -12000.000000 +v 41779.789062 -65036.023438 -10982.511719 +v 41608.808594 -65329.183594 -11000.000000 +v 43394.941406 -65389.394531 -10000.000000 +v 44657.292969 -65128.300781 -9399.026367 +v 45181.074219 -65449.601562 -9000.000000 +v 47502.363281 -65219.726562 -7830.460449 +v 46967.207031 -65509.812500 -8000.000000 +v 48753.343750 -65570.023438 -7000.000000 +v 50340.136719 -65311.156250 -6262.608887 +v 50539.476562 -65630.234375 -6000.000000 +v 53169.757812 -65402.601562 -4695.553711 +v 52325.609375 -65690.437500 -5000.000000 +v 54111.742188 -65750.648438 -4000.000000 +v 55990.375000 -65494.085938 -3129.378418 +v 57684.011719 -65871.070312 -2000.000000 +v 58801.136719 -65585.625000 -1564.166260 +v 59470.144531 -65931.281250 -1000.000000 +v 61256.277344 -65991.484375 0.000000 +v 61705.527344 -65568.328125 0.000000 +v 62029.960938 -65154.914062 0.000000 +v 59398.578125 -64800.667969 -1551.651978 +v 62236.878906 -64749.917969 0.000000 +v 59545.554688 -64399.562500 -1545.659912 +v 62332.175781 -64351.828125 0.000000 +v 59583.468750 -64004.878906 -1540.071167 +v 62339.449219 -64154.859375 0.000000 +v 62320.441406 -63958.988281 0.000000 +v 59514.035156 -63614.292969 -1534.875854 +v 62205.007812 -63569.644531 0.000000 +v 59341.128906 -63226.222656 -1530.064209 +v 61988.039062 -63181.992188 0.000000 +v 61670.605469 -62794.226562 0.000000 +v 58693.265625 -62451.050781 -1521.552246 +v 60733.527344 -62011.394531 0.000000 +v 57636.753906 -61664.574219 -1514.455933 +v 59383.078125 -61208.421875 0.000000 +v 56154.539062 -60854.472656 -1508.696411 +v 57595.875000 -60375.292969 0.000000 +v 29105.871094 -64907.718750 -18000.000000 +v 26920.908203 -64560.847656 -19127.404297 +v 22105.416016 -63894.039062 -21303.738281 +v 17518.294922 -63539.082031 -23374.902344 +v 12690.933594 -63202.355469 -25451.031250 +v 8284.203125 -62826.906250 -27089.265625 +v 3629.960449 -62427.382812 -28728.177734 +v -2287.216309 -61762.812500 -30365.566406 +v 25533.603516 -64787.296875 -20000.000000 +v 22904.011719 -64432.246094 -21324.640625 +v 18100.179688 -63797.304688 -23382.033203 +v 13425.252930 -63451.039062 -25455.205078 +v 9413.470703 -63137.187500 -27091.587891 +v 4967.348145 -62761.738281 -28729.191406 +v 307.237946 -62361.597656 -30366.041016 +v -2277.437012 -62443.992188 -32000.000000 +v 21961.335938 -64666.878906 -22000.000000 +v 19115.566406 -64310.683594 -23396.927734 +v 14103.345703 -63697.457031 -25459.679688 +v 10213.326172 -63377.863281 -27094.085938 +v 6160.191406 -63067.261719 -28730.285156 +v 1692.278320 -62691.316406 -30366.308594 +v 18389.070312 -64546.460938 -24000.000000 +v 15329.138672 -64188.824219 -25469.025391 +v 10962.907227 -63616.070312 -27096.763672 +v 7019.761230 -63300.828125 -28731.462891 +v 2937.210693 -62991.957031 -30366.597656 +v -1186.467896 -62694.910156 -32000.000000 +v 14816.801758 -64426.042969 -26000.000000 +v 12346.712891 -64092.511719 -27102.357422 +v 7835.573730 -63531.945312 -28732.724609 +v 3849.331055 -63219.421875 -30366.908203 +v -231.520050 -62914.761719 -32000.000000 +v 11244.535156 -64305.621094 -28000.000000 +v 9367.715820 -63995.964844 -28735.359375 +v 4724.821289 -63444.730469 -30367.242188 +v 1207.875488 -63253.371094 -32000.000000 +v 7672.267578 -64185.203125 -30000.000000 +v 6393.106934 -63899.167969 -30367.937500 +v 2673.822266 -63590.429688 -32000.000000 +v -18730.597656 -59027.996094 -32000.000000 +v -13105.346680 -59471.378906 -30364.416016 +v -9697.427734 -59455.445312 -28722.029297 +v -6109.996094 -59440.863281 -27074.066406 +v -2371.272949 -59427.296875 -25421.759766 +v 2544.460205 -59411.015625 -23321.595703 +v 7600.606445 -59395.132812 -21218.923828 +v 13050.817383 -59377.960938 -18989.523438 +v 18525.480469 -59359.632812 -16763.111328 +v 23955.941406 -59339.332031 -14542.676758 +v 29273.544922 -59316.230469 -12331.210938 +v 32941.535156 -59297.691406 -10768.736328 +v 36546.316406 -59276.699219 -9189.858398 +v 39980.707031 -59253.402344 -7631.086914 +v 43246.953125 -59227.355469 -6081.708984 +v 46319.957031 -59198.250000 -4542.818359 +v 49174.601562 -59165.789062 -3015.508057 +v -26978.335938 -57578.792969 -32000.000000 +v -20059.802734 -58170.722656 -30364.212891 +v -18657.841797 -58422.230469 -30364.226562 +v -17261.238281 -58678.109375 -30364.251953 +v -13953.475586 -58625.886719 -28721.408203 +v -12522.627930 -58898.796875 -28721.560547 +v -8975.231445 -58861.234375 -27073.072266 +v -7532.918457 -59149.621094 -27073.511719 +v -3801.527588 -59125.218750 -25420.830078 +v -35241.503906 -56321.578125 -32000.000000 +v -28573.626953 -56757.058594 -30364.375000 +v -27143.519531 -56980.847656 -30364.320312 +v -25717.593750 -57209.601562 -30364.277344 +v -22775.671875 -57070.089844 -28721.503906 +v -21278.400391 -57319.269531 -28721.378906 +v -18023.287109 -57196.925781 -27072.685547 +v -16469.613281 -57465.894531 -27072.505859 +v -12949.021484 -57360.562500 -25419.150391 +v -11357.621094 -57648.343750 -25419.001953 +v -6596.050293 -57535.722656 -23317.203125 +v -4977.235840 -57844.902344 -23317.224609 +v 18.693159 -57752.058594 -21212.791016 +v 1635.028564 -58080.488281 -21213.197266 +v 7084.705078 -58001.035156 -18982.054688 +v 8669.925781 -58347.238281 -18983.099609 +v 14174.250000 -58284.433594 -16755.316406 +v 15699.091797 -58645.593750 -16757.232422 +v 21162.546875 -58597.000000 -14535.958984 +v 22601.904297 -58970.246094 -14538.917969 +v 27938.716797 -58933.558594 -12327.145508 +v -43521.183594 -55308.347656 -32000.000000 +v -38681.835938 -55357.371094 -30364.976562 +v -35778.980469 -55724.167969 -30364.769531 +v -32886.859375 -56118.785156 -30364.587891 +v -30403.183594 -55895.210938 -28722.679688 +v -28860.392578 -56119.531250 -28722.378906 +v -26042.626953 -55911.902344 -27074.808594 +v -24407.330078 -56159.792969 -27074.234375 +v -21287.972656 -55969.214844 -25422.039062 +v -19571.390625 -56240.132812 -25421.199219 +v -15256.810547 -56020.726562 -23320.703125 +v -13450.856445 -56318.671875 -23319.560547 +v -8827.192383 -56121.773438 -21216.066406 +v -6956.842285 -56445.300781 -21214.757812 +v -1816.428955 -56259.941406 -18984.089844 +v 94.846298 -56608.484375 -18982.787109 +v 5374.048340 -56445.355469 -16754.937500 +v 7294.304688 -56816.593750 -16753.875000 +v 12607.644531 -56673.949219 -14532.123047 +v 14505.784180 -57065.214844 -14531.528320 +v 19751.626953 -56940.894531 -12319.153320 +v 21599.689453 -57349.296875 -12319.214844 +v 25235.080078 -57272.828125 -10755.691406 +v 26999.310547 -57689.984375 -10756.664062 +v 30575.908203 -57623.441406 -9178.529297 +v 32244.648438 -58047.421875 -9180.113281 +v 35654.472656 -57991.046875 -7621.798340 +v 37218.617188 -58419.863281 -7624.080566 +v 40461.453125 -58372.144531 -6075.352051 +v 41916.906250 -58804.156250 -6078.152344 +v 44972.589844 -58764.304688 -4539.815430 +v -51815.617188 -54577.414062 -32000.000000 +v -44509.632812 -54712.894531 -30365.451172 +v -41592.945312 -55020.097656 -30365.205078 +v -36643.144531 -55062.281250 -28724.148438 +v -33510.757812 -55465.132812 -28723.365234 +v -31029.345703 -55202.167969 -27076.902344 +v -27692.068359 -55669.394531 -27075.447266 +v -24787.640625 -55441.464844 -25424.064453 +v -23027.132812 -55702.832031 -25422.996094 +v -18972.429688 -55435.609375 -23323.568359 +v -17097.804688 -55726.199219 -23322.042969 +v -12713.839844 -55481.617188 -21219.550781 +v -10746.647461 -55800.351562 -21217.669922 +v -5832.488281 -55565.289062 -18987.888672 +v -3792.574219 -55912.011719 -18985.796875 +v 1291.977661 -55700.671875 -16758.589844 +v 3373.074707 -56073.207031 -16756.519531 +v 8523.909180 -55884.375000 -14535.143555 +v 10613.734375 -56280.164062 -14533.337891 +v 15726.619141 -56112.046875 -12321.110352 +v 17794.279297 -56528.304688 -12319.795898 +v 21353.679688 -56422.503906 -10755.971680 +v 23353.828125 -56850.175781 -10755.471680 +v 26866.271484 -56755.695312 -9177.660156 +v 28784.035156 -57192.730469 -9177.722656 +v 32140.425781 -57110.250000 -7619.519043 +v 33962.921875 -57554.410156 -7620.288086 +v 37156.527344 -57482.027344 -6071.911133 +v 38876.058594 -57931.371094 -6073.281250 +v 41880.746094 -57868.000000 -4535.702637 +v 43494.433594 -58320.871094 -4537.451172 +v 46289.976562 -58265.660156 -3011.506348 +v 47799.925781 -58720.765625 -3013.268799 +v -60120.785156 -54160.894531 -32000.000000 +v -56177.550781 -53800.011719 -30366.517578 +v -53265.738281 -53977.117188 -30366.248047 +v -50348.750000 -54190.328125 -30365.976562 +v -49294.593750 -53752.417969 -28727.933594 +v -42957.812500 -54345.375000 -28725.945312 +v -41258.675781 -53968.652344 -27082.376953 +v -37823.660156 -54349.839844 -27080.402344 +v -35707.109375 -54004.273438 -25432.343750 +v -32011.910156 -54455.554688 -25429.273438 +v -28778.625000 -54061.070312 -23333.572266 +v -24779.187500 -54592.960938 -23329.142578 +v -21017.130859 -54245.832031 -21229.515625 +v -16783.796875 -54854.625000 -21224.078125 +v -12315.640625 -54539.058594 -18996.244141 +v -10096.543945 -54878.109375 -18993.132812 +v -5416.641113 -54587.687500 -16767.490234 +v -3105.125488 -54957.156250 -16764.103516 +v 1688.100708 -54691.640625 -14543.810547 +v 4059.398926 -55089.335938 -14540.410156 +v 8862.565430 -54847.695312 -12328.759766 +v 11259.847656 -55270.992188 -12325.624023 +v 14631.593750 -55115.441406 -10761.456055 +v 16992.574219 -55554.445312 -10758.996094 +v 20340.212891 -55412.234375 -9181.616211 +v 22645.339844 -55864.796875 -9179.639648 +v 25860.677734 -55737.472656 -7621.346680 +v 28091.242188 -56201.187500 -7620.079590 +v 31158.285156 -56086.421875 -6071.721680 +v 33300.492188 -56559.042969 -6071.159180 +v 36184.757812 -56455.457031 -4533.911133 +v 38229.570312 -56934.886719 -4533.956543 +v 40901.492188 -56841.207031 -3008.901123 +v 42845.066406 -57325.593750 -3009.340332 +v -68431.101562 -54124.476562 -32000.000000 +v -64857.445312 -53518.210938 -30367.281250 +v -63418.265625 -53538.093750 -30367.162109 +v -61975.730469 -53568.507812 -30367.039062 +v -61826.574219 -53005.519531 -28731.957031 +v -58725.957031 -53128.402344 -28730.986328 +v -58339.640625 -52581.371094 -27093.078125 +v -54973.539062 -52779.789062 -27090.945312 +v -54306.238281 -52251.863281 -25449.958984 +v -50629.929688 -52526.410156 -25446.330078 +v -49368.144531 -51884.828125 -23360.755859 +v -45262.632812 -52246.105469 -23354.962891 +v -43537.437500 -51638.101562 -21265.748047 +v -34402.929688 -52578.097656 -21249.974609 +v -31595.753906 -52032.351562 -19030.021484 +v -26595.453125 -52615.042969 -19020.398438 +v -23297.322266 -52122.035156 -16800.570312 +v -17942.955078 -52796.406250 -16789.708984 +v -14233.498047 -52359.734375 -14573.071289 +v -8641.615234 -53120.281250 -14561.829102 +v -4635.159180 -52740.703125 -12351.925781 +v 1046.661011 -53577.562500 -12341.290039 +v 4031.178711 -53347.179688 -10776.836914 +v 6847.351074 -53789.066406 -10772.226562 +v 9844.661133 -53574.402344 -9195.334961 +v 12654.460938 -54036.007812 -9191.098633 +v 15563.166016 -53840.027344 -7632.269043 +v 18340.726562 -54318.875000 -7628.722656 +v 21134.789062 -54138.945312 -6079.563965 +v 23858.056641 -54632.578125 -6076.820801 +v 26494.166016 -54467.238281 -4538.691406 +v 29144.953125 -54973.214844 -4536.799805 +v 31582.667969 -54820.929688 -3011.020752 +v 34147.558594 -55336.914062 -3009.944824 +v -76738.890625 -54418.039062 -32000.000000 +v -73409.265625 -53590.851562 -30367.882812 +v -70575.898438 -53533.539062 -30367.708984 +v -69152.460938 -53516.472656 -30367.611328 +v -69440.984375 -52890.273438 -28734.119141 +v -67935.445312 -52893.281250 -28733.724609 +v -68148.250000 -52268.488281 -27098.888672 +v -66547.828125 -52292.433594 -27098.007812 +v -66675.140625 -51669.570312 -25461.757812 +v -64965.304688 -51715.695312 -25460.216797 +v -65005.148438 -50928.089844 -23382.890625 +v -63141.394531 -51001.109375 -23380.337891 +v -63046.371094 -50217.093750 -21301.359375 +v -61006.421875 -50319.003906 -21297.658203 +v -60751.167969 -49494.816406 -19092.212891 +v -56208.789062 -49778.664062 -19082.179688 +v -55609.816406 -48983.925781 -16875.525391 +v -50496.625000 -49369.929688 -16862.914062 +v -49525.527344 -48612.710938 -14656.726562 +v -43802.992188 -49105.828125 -14642.049805 +v -42457.058594 -48394.289062 -12438.689453 +v -36130.402344 -48997.726562 -12422.788086 +v -34915.367188 -48528.441406 -10858.235352 +v -21393.234375 -49980.246094 -10827.338867 +v -19615.261719 -49585.300781 -9251.295898 +v -12612.238281 -50422.722656 -9236.696289 +v -10669.167969 -50072.003906 -7675.731445 +v -3574.456543 -50985.351562 -7662.786621 +v -1524.306396 -50675.906250 -6110.471680 +v 5512.812988 -51653.679688 -6099.833496 +v 7593.919922 -51383.304688 -4558.120605 +v 14425.450195 -52412.027344 -4550.264160 +v 16459.291016 -52177.546875 -3021.059082 +v 19777.087891 -52710.667969 -3018.489502 +v -80887.171875 -54755.511719 -32000.000000 +v -79015.929688 -53837.046875 -30368.136719 +v -76223.289062 -53685.632812 -30368.027344 +v -73900.578125 -52933.562500 -28735.154297 +v -70937.187500 -52896.371094 -28734.490234 +v -71304.132812 -52250.761719 -27100.511719 +v -69733.789062 -52254.734375 -27099.724609 +v -70031.179688 -51611.023438 -25464.626953 +v -68363.898438 -51634.824219 -25463.230469 +v -68642.632812 -50820.292969 -23387.693359 +v -66839.085938 -50867.980469 -23385.345703 +v -67008.179688 -50056.058594 -21308.386719 +v -65047.269531 -50129.570312 -21304.939453 +v -65098.777344 -49274.218750 -19101.710938 +v -62950.179688 -49376.718750 -19097.039062 +v -62865.156250 -48530.531250 -16893.554688 +v -60506.234375 -48664.582031 -16887.699219 +v -60280.484375 -47832.023438 -14685.048828 +v -55032.617188 -48186.652344 -14671.138672 +v -54491.546875 -47390.687500 -12470.151367 +v -48599.523438 -47856.640625 -12454.562500 +v -47979.398438 -47321.230469 -10890.078125 +v -41548.320312 -47890.460938 -10874.169922 +v -40684.476562 -47385.597656 -9298.589844 +v -33754.515625 -48057.859375 -9282.503906 +v -32679.060547 -47594.179688 -7719.394531 +v -17959.068359 -49195.531250 -7689.647461 +v -16435.167969 -48809.785156 -6134.843262 +v -8877.029297 -49724.183594 -6122.217285 +v -7259.116699 -49380.000000 -4577.019531 +v 331.852753 -50368.703125 -4567.103027 +v 1967.900146 -50064.265625 -3033.613037 +v 9435.643555 -51114.113281 -3026.916504 +v -81784.359375 -54065.507812 -30368.205078 +v -79704.281250 -53145.871094 -28736.107422 +v -76823.671875 -53010.484375 -28735.697266 +v -77429.257812 -52331.175781 -27103.076172 +v -74398.289062 -52269.875000 -27101.919922 +v -74902.062500 -51600.601562 -25468.292969 +v -71676.718750 -51597.761719 -25465.941406 +v -72157.421875 -50760.511719 -23392.015625 +v -70415.453125 -50784.605469 -23389.919922 +v -70808.179688 -49949.308594 -21314.806641 +v -68928.554688 -49996.109375 -21311.679688 +v -69241.195312 -49114.582031 -19110.501953 +v -67195.945312 -49186.980469 -19106.205078 +v -67395.421875 -48312.687500 -16904.675781 +v -65161.910156 -48413.335938 -16899.222656 +v -65241.332031 -47550.378906 -14698.217773 +v -62797.902344 -47682.140625 -14691.741211 +v -62755.015625 -46835.156250 -12492.433594 +v -60082.773438 -47000.855469 -12485.196289 +v -59963.953125 -46411.828125 -10920.753906 +v -54136.222656 -46826.859375 -10905.693359 +v -53809.007812 -46262.210938 -9330.419922 +v -47395.359375 -46784.941406 -9314.649414 +v -46863.289062 -46256.449219 -7750.034180 +v -39888.628906 -46888.195312 -7734.727539 +v -39167.128906 -46397.234375 -6175.746094 +v -31696.796875 -47136.351562 -6161.833984 +v -30821.376953 -46685.632812 -4610.468750 +v -15063.737305 -48429.007812 -4587.680176 +v -13864.951172 -48054.136719 -3048.954102 +v -5838.726562 -49040.191406 -3041.006348 +v -88226.460938 -55034.402344 -30368.228516 +v -89138.242188 -56122.609375 -32000.000000 +v -89531.875000 -55316.218750 -30368.228516 +v -90860.039062 -55630.859375 -30368.228516 +v -90520.070312 -54619.718750 -28736.455078 +v -91921.117188 -54953.652344 -28736.455078 +v -91532.843750 -53909.078125 -27104.683594 +v -93016.085938 -54255.890625 -27104.683594 +v -92567.054688 -53186.113281 -25472.912109 +v -94140.601562 -53540.199219 -25472.912109 +v -93904.773438 -52254.187500 -23403.123047 +v -95602.687500 -52610.738281 -23403.123047 +v -95265.492188 -51309.039062 -21333.333984 +v -97096.460938 -51662.046875 -21333.333984 +v -96726.195312 -50296.574219 -19138.742188 +v -98705.062500 -50641.140625 -19138.742188 +v -98197.867188 -49277.812500 -16944.150391 +v -100328.765625 -49611.070312 -16944.150391 +v -99672.828125 -48257.152344 -14749.559570 +v -101957.015625 -48578.242188 -14749.559570 +v -101143.429688 -47239.000000 -12554.968750 +v -103579.242188 -47549.066406 -12554.968750 +v -102185.875000 -46516.464844 -10989.006836 +v -104727.367188 -46820.406250 -10988.872070 +v -103223.890625 -45795.945312 -9416.226562 +v -105867.929688 -46096.199219 -9416.226562 +v -104247.890625 -45083.753906 -7846.855469 +v -106989.898438 -45383.339844 -7846.855469 +v -105257.335938 -44379.929688 -6277.484375 +v -108091.796875 -44682.652344 -6277.484375 +v -106249.421875 -43686.093750 -4708.113281 +v -109169.765625 -43996.484375 -4708.113281 +v -107221.351562 -43003.847656 -3138.742188 +v -110219.937500 -43327.179688 -3138.742188 +v -92223.242188 -55987.441406 -30368.228516 +v -93224.468750 -57200.292969 -32000.000000 +v -93609.617188 -56386.109375 -30368.228516 +v -95244.796875 -57861.671875 -32000.000000 +v -94971.601562 -56812.437500 -30368.228516 +v -96371.148438 -57295.929688 -30368.228516 +v -96270.101562 -56219.257812 -28736.455078 +v -97747.054688 -56738.335938 -28736.455078 +v -97625.265625 -55583.765625 -27104.683594 +v -99183.476562 -56131.359375 -27104.683594 +v -99029.820312 -54911.378906 -25472.912109 +v -100672.664062 -55481.335938 -25472.912109 +v -100871.101562 -54013.917969 -23403.123047 +v -102625.359375 -54604.796875 -23403.123047 +v -102765.375000 -53076.882812 -21333.333984 +v -104634.656250 -53682.082031 -21333.333984 +v -104815.226562 -52052.453125 -19138.742188 +v -106809.296875 -52667.675781 -19138.742188 +v -106890.343750 -51009.156250 -16944.150391 +v -109010.914062 -51631.261719 -16944.150391 +v -108973.054688 -49960.191406 -14749.559570 +v -111220.648438 -50588.222656 -14749.560547 +v -111045.703125 -48918.738281 -12554.968750 +v -113419.632812 -49553.953125 -12554.968750 +v -112509.234375 -48187.238281 -10988.468750 +v -114972.390625 -48829.507812 -10988.333984 +v -113957.460938 -47468.500000 -9416.226562 +v -116508.500000 -48120.546875 -9416.226562 +v -115375.937500 -46771.316406 -7846.855469 +v -118012.976562 -47436.441406 -7846.855469 +v -116760.859375 -46099.195312 -6277.484375 +v -119481.617188 -46781.578125 -6277.484375 +v -118105.773438 -45456.949219 -4708.113281 +v -120907.523438 -46161.578125 -4708.113281 +v -119404.226562 -44849.406250 -3138.742188 +v -122283.796875 -45582.074219 -3138.742188 +v -97855.203125 -57860.601562 -30368.228516 +v -97298.507812 -58640.617188 -32000.000000 +v -99140.671875 -58397.648438 -30368.228516 +v -100124.460938 -58865.507812 -30368.228516 +v -100656.851562 -57923.214844 -28736.455078 +v -101708.523438 -58442.828125 -28736.455078 +v -102233.507812 -57388.945312 -27104.683594 +v -103353.609375 -57960.332031 -27104.683594 +v -103862.898438 -56802.503906 -25472.912109 +v -105051.898438 -57425.687500 -25472.912109 +v -105993.382812 -55995.609375 -23403.123047 +v -107270.359375 -56684.507812 -23403.123047 +v -108180.421875 -55132.753906 -21333.333984 +v -109545.898438 -55887.394531 -21333.333984 +v -110543.500000 -54174.183594 -19138.742188 +v -112003.195312 -54998.542969 -19138.742188 +v -112933.539062 -53188.941406 -16944.150391 +v -114487.695312 -54083.027344 -16944.150391 +v -115331.687500 -52195.675781 -14749.560547 +v -116980.382812 -53159.492188 -14749.560547 +v -117719.093750 -51213.039062 -12554.968750 +v -119462.226562 -52246.578125 -12554.968750 +v -119406.656250 -50528.273438 -10988.064453 +v -121217.218750 -51611.539062 -10987.929688 +v -121077.476562 -49863.171875 -9416.226562 +v -122955.179688 -50996.417969 -9416.226562 +v -122716.742188 -49227.746094 -7846.855469 +v -124661.367188 -50410.828125 -7846.855469 +v -124320.195312 -48627.746094 -6277.484375 +v -126331.414062 -49860.656250 -6277.484375 +v -125880.937500 -48070.000000 -4708.113281 +v -127958.375000 -49352.718750 -4708.113281 +v -127392.085938 -47561.320312 -3138.742188 +v -129535.289062 -48893.835938 -3138.742188 +v -100123.773438 -60028.492188 -32000.000000 +v -101112.875000 -59391.316406 -30368.228516 +v -102755.625000 -59024.859375 -28736.455078 +v -104456.929688 -58601.441406 -27104.683594 +v -106209.289062 -58128.367188 -25472.912109 +v -108493.734375 -57468.292969 -23403.123047 +v -110832.953125 -56754.949219 -21333.333984 +v -113355.968750 -55957.007812 -19138.742188 +v -115905.085938 -55133.675781 -16944.150391 +v -118462.062500 -54302.707031 -14749.560547 +v -121008.632812 -53481.855469 -12554.968750 +v -122810.687500 -52911.695312 -10987.794922 +v -124596.445312 -52360.707031 -9416.226562 +v -126351.687500 -51837.742188 -7846.855469 +v -128072.257812 -51348.500000 -6277.484375 +v -129751.476562 -50899.476562 -4708.113281 +v -131382.671875 -50497.164062 -3138.742188 +v -102092.492188 -59988.113281 -30368.228516 +v -101445.851562 -60931.210938 -32000.000000 +v -103021.085938 -60654.750000 -30368.228516 +v -103919.679688 -61442.007812 -30368.228516 +v -104750.562500 -60408.687500 -28736.455078 +v -105675.328125 -61254.117188 -28736.455078 +v -106526.007812 -60118.757812 -27104.683594 +v -107467.289062 -61030.136719 -27104.683594 +v -108341.515625 -59790.578125 -25472.912109 +v -109290.898438 -60774.683594 -25472.912109 +v -110692.773438 -59328.085938 -23403.123047 +v -111642.265625 -60412.636719 -23403.123047 +v -113087.023438 -58824.562500 -21333.333984 +v -114027.585938 -60016.835938 -21333.333984 +v -115659.187500 -58258.652344 -19138.742188 +v -116583.242188 -59570.820312 -19138.742188 +v -118251.835938 -57673.183594 -16944.150391 +v -119155.078125 -59108.714844 -16944.150391 +v -120850.648438 -57081.832031 -14749.560547 +v -121731.781250 -58641.769531 -14749.560547 +v -123441.296875 -56498.273438 -12554.968750 +v -124302.039062 -58181.230469 -12554.968750 +v -125278.695312 -56093.820312 -10987.526367 +v -126127.742188 -57862.429688 -10987.391602 +v -127103.851562 -55704.363281 -9416.226562 +v -127944.382812 -57556.054688 -9416.226562 +v -128904.781250 -55336.375000 -7846.855469 +v -129741.585938 -57267.296875 -7846.855469 +v -130678.500000 -54994.359375 -6277.484375 +v -131517.281250 -56999.910156 -6277.484375 +v -132419.765625 -54683.324219 -4708.113281 +v -102639.578125 -62007.167969 -32000.000000 +v -104526.695312 -62046.722656 -30368.228516 +v -106297.820312 -61908.121094 -28736.455078 +v -108097.078125 -61741.335938 -27104.683594 +v -109920.867188 -61549.976562 -25472.912109 +v -112263.843750 -61277.562500 -23403.123047 +v -114633.132812 -60978.796875 -21333.333984 +v -117165.828125 -60641.433594 -19138.742188 +v -119711.054688 -60291.511719 -16944.150391 +v -122260.054688 -59937.812500 -14749.560547 +v -124804.062500 -59589.113281 -12554.968750 +v -126613.445312 -59347.957031 -10987.274414 +v -128416.437500 -59116.554688 -9416.226562 +v -130204.054688 -58898.878906 -7846.855469 +v -103423.367188 -62848.941406 -32000.000000 +v -104984.429688 -62549.027344 -30368.228516 +v -106763.687500 -62457.007812 -28736.455078 +v -108563.257812 -62345.195312 -27104.683594 +v -110380.531250 -62216.125000 -25472.912109 +v -112707.000000 -62031.554688 -23403.123047 +v -115052.468750 -61828.472656 -21333.333984 +v -117554.187500 -61598.691406 -19138.742188 +v -120064.953125 -61360.089844 -16944.150391 +v -122578.445312 -61118.832031 -14749.560547 +v -125088.328125 -60881.089844 -12554.968750 +v -126875.671875 -60716.820312 -10987.158203 +v -128659.171875 -60559.433594 -9416.226562 +v -105395.882812 -63088.058594 -30368.228516 +v -103719.109375 -63261.230469 -32000.000000 +v -105624.554688 -63513.957031 -30368.228516 +v -103889.273438 -63590.464844 -32000.000000 +v -105712.601562 -63785.562500 -30368.228516 +v -103982.968750 -63870.628906 -32000.000000 +v -105743.734375 -63948.695312 -30368.228516 +v -104001.281250 -64098.851562 -32000.000000 +v -105740.265625 -64185.480469 -30368.228516 +v -103973.757812 -64372.695312 -32000.000000 +v -105678.796875 -64545.996094 -30368.228516 +v -103929.265625 -64558.761719 -32000.000000 +v -105595.664062 -64759.550781 -30368.228516 +v -103874.109375 -64676.628906 -32000.000000 +v -103681.304688 -65000.820312 -32000.000000 +v -105321.132812 -65224.625000 -30368.228516 +v -103336.312500 -65366.894531 -32000.000000 +v -104846.445312 -65722.289062 -30368.228516 +v -102925.828125 -65702.101562 -32000.000000 +v -104247.320312 -66121.007812 -30368.228516 +v -102431.992188 -65965.984375 -32000.000000 +v -101745.773438 -66219.765625 -32000.000000 +v -103508.710938 -66428.828125 -30368.228516 +v -106041.710938 -66263.109375 -28736.455078 +v -106618.875000 -65827.718750 -28736.455078 +v -108368.750000 -65929.562500 -27104.683594 +v -108807.281250 -65374.890625 -27104.683594 +v -110530.765625 -65449.562500 -25472.912109 +v -110786.539062 -64903.003906 -25472.912109 +v -112968.976562 -64966.089844 -23403.123047 +v -113073.687500 -64674.621094 -23403.123047 +v -115267.531250 -64712.949219 -21333.333984 +v -115385.851562 -64296.453125 -21333.333984 +v -117728.781250 -64323.410156 -19138.742188 +v -117796.992188 -64038.250000 -19138.742188 +v -120153.914062 -64054.535156 -16944.150391 +v -120214.789062 -63780.578125 -16944.150391 +v -122589.929688 -63774.742188 -14749.560547 +v -122715.242188 -63142.488281 -14749.560547 +v -125126.875000 -63077.328125 -12554.968750 +v -125203.078125 -62067.304688 -12554.968750 +v -126957.078125 -61965.746094 -10987.041016 +v -97704.093750 -67462.812500 -30368.228516 +v -95229.929688 -67083.078125 -32000.000000 +v -98825.609375 -68208.914062 -28000.000000 +v -102421.296875 -69334.742188 -24000.000000 +v -100810.164062 -68312.054688 -27104.683594 +v -99264.593750 -67889.492188 -28736.455078 +v -109612.671875 -71586.406250 -16000.000000 +v -106177.070312 -69779.031250 -21333.333984 +v -104268.031250 -69257.289062 -23403.123047 +v -102342.164062 -68730.867188 -25472.912109 +v -113208.359375 -72712.234375 -12000.000000 +v -112169.703125 -71416.117188 -14749.560547 +v -110182.390625 -70873.351562 -16944.150391 +v -108185.953125 -70327.953125 -19138.742188 +v -116804.046875 -73838.070312 -8000.000000 +v -116981.828125 -72729.734375 -9416.226562 +v -115566.500000 -72343.476562 -10985.661133 +v -114151.242188 -71957.156250 -12554.968750 +v -119817.148438 -73503.226562 -6277.484375 +v -118398.289062 -73116.203125 -7846.855469 +v -121239.617188 -73891.132812 -4708.113281 +v 56577.417969 -64721.968750 -3106.864990 +v 53721.167969 -64645.535156 -4665.356445 +v 50832.917969 -64571.054688 -6226.842773 +v 47915.761719 -64498.210938 -7791.042480 +v 44972.789062 -64426.691406 -9357.671875 +v 41980.558594 -64355.558594 -10940.442383 +v 39021.757812 -64286.371094 -12497.088867 +v 34820.054688 -64189.316406 -14696.044922 +v 56724.757812 -64328.183594 -3096.084961 +v 53856.121094 -64260.058594 -4650.896973 +v 50943.886719 -64194.734375 -6209.717285 +v 47992.300781 -64131.769531 -7772.167969 +v 45005.609375 -64070.710938 -9337.870117 +v 41961.332031 -64010.593750 -10920.283203 +v 38943.882812 -63952.535156 -12477.515625 +v 34650.378906 -63871.472656 -14677.948242 +v 30324.734375 -63790.300781 -16881.484375 +v 56766.066406 -63941.000000 -3086.030762 +v 53887.945312 -63881.121094 -4637.411133 +v 50954.546875 -63824.691406 -6193.744629 +v 47971.312500 -63771.156250 -7754.563965 +v 44943.687500 -63719.972656 -9319.401367 +v 41850.222656 -63670.160156 -10901.471680 +v 38777.007812 -63622.449219 -12459.259766 +v 34396.003906 -63556.179688 -14661.069336 +v 29974.982422 -63489.769531 -16866.712891 +v 25528.820312 -63421.722656 -19074.916016 +v 56696.953125 -63556.683594 -3076.684326 +v 53802.675781 -63502.785156 -4624.874512 +v 50838.308594 -63452.062500 -6178.896484 +v 47810.949219 -63404.000000 -7738.199219 +v 44727.703125 -63358.066406 -9302.232422 +v 41568.500000 -63313.359375 -10883.972656 +v 38421.960938 -63270.484375 -12442.289062 +v 33927.468750 -63210.816406 -14645.378906 +v 29384.779297 -63150.792969 -16852.982422 +v 24813.312500 -63088.980469 -19063.599609 +v 20232.486328 -63023.941406 -21275.718750 +v 56525.070312 -63174.570312 -3068.027832 +v 53613.996094 -63125.835938 -4613.263672 +v 50616.851562 -63079.578125 -6165.144531 +v 47542.597656 -63035.359375 -7723.042969 +v 44400.187500 -62992.742188 -9286.332031 +v 41171.082031 -62950.933594 -10867.753906 +v 37946.710938 -62910.546875 -12426.572266 +v 33332.089844 -62853.949219 -14630.846680 +v 28661.203125 -62796.707031 -16840.265625 +v 23958.539062 -62737.605469 -19053.117188 +v 19248.582031 -62675.453125 -21267.683594 +v 14821.799805 -62612.953125 -23356.339844 +v 55893.074219 -62413.460938 -3052.714600 +v 52965.203125 -62377.546875 -4592.724121 +v 49922.015625 -62343.011719 -6140.817383 +v 46775.882812 -62309.539062 -7696.231445 +v 43539.171875 -62276.832031 -9258.203125 +v 40196.394531 -62244.308594 -10839.027344 +v 36843.488281 -62212.468750 -12398.767578 +v 32028.947266 -62167.238281 -14605.138672 +v 27143.662109 -62120.859375 -16817.769531 +v 22221.451172 -62072.492188 -19034.574219 +v 17296.136719 -62021.300781 -21253.466797 +v 12678.471680 -61969.679688 -23346.208984 +v 8116.502441 -61914.101562 -25437.203125 +v 54864.191406 -61642.472656 -3039.948242 +v 51931.824219 -61620.503906 -4575.600586 +v 48855.457031 -61598.535156 -6120.536133 +v 45650.906250 -61576.441406 -7673.878906 +v 42333.980469 -61554.078125 -9234.752930 +v 38892.441406 -61531.136719 -10815.025391 +v 35426.253906 -61508.035156 -12375.587891 +v 30434.568359 -61474.328125 -14583.707031 +v 25359.132812 -61438.964844 -16799.015625 +v 20243.185547 -61401.578125 -19019.117188 +v 15129.961914 -61361.800781 -21241.613281 +v 10348.880859 -61321.773438 -23337.763672 +v 5644.955078 -61278.996094 -25431.904297 +v 2014.650635 -61243.128906 -27080.138672 +v 53422.750000 -60849.804688 -3029.586670 +v 50500.855469 -60843.804688 -4561.702148 +v 47407.976562 -60836.503906 -6104.075195 +v 44163.234375 -60827.941406 -7655.736816 +v 40785.746094 -60818.144531 -9215.719727 +v 37266.605469 -60807.062500 -10795.486328 +v 33709.035156 -60795.000000 -12356.773438 +v 28572.820312 -60776.117188 -14566.311523 +v 23341.496094 -60755.117188 -16783.792969 +v 18067.355469 -60732.093750 -19006.570312 +v 12802.682617 -60707.144531 -21231.994141 +v 7893.086426 -60681.925781 -23330.910156 +v 3082.291992 -60655.152344 -25427.603516 +v -612.029968 -60632.996094 -27077.564453 +v -4196.183594 -60609.960938 -28723.677734 +v 44639.871094 -57800.531250 -3010.202881 +v 38805.691406 -56347.859375 -3008.867188 +v 36554.980469 -55846.179688 -3009.221191 +v 28860.712891 -54299.191406 -3012.430908 +v 25983.419922 -53772.777344 -3014.157715 +v 22953.958984 -53242.851562 -3016.183105 +v -82222.351562 -42301.074219 -3127.617188 +v -81691.851562 -42940.480469 -4693.191406 +v -81162.523438 -43584.929688 -6259.811035 +v -80634.671875 -44233.703125 -7827.376953 +v -80108.617188 -44886.085938 -9395.791016 +v -79582.937500 -45543.539062 -10970.158203 +v -79063.132812 -46198.820312 -12534.769531 +v -78338.453125 -47120.496094 -14730.883789 +v -77619.945312 -48043.074219 -16927.808594 +v -76908.460938 -48964.601562 -19125.271484 +v -86671.531250 -42210.945312 -3132.270996 +v -86059.093750 -42864.878906 -4699.433594 +v -85446.117188 -43522.101562 -6267.204102 +v -84832.960938 -44182.152344 -7835.524902 +v -84219.976562 -44844.566406 -9404.339844 +v -83605.593750 -45510.941406 -10978.479492 +v -82995.890625 -46174.601562 -12543.218750 +v -82142.734375 -47107.058594 -14738.696289 +v -81292.914062 -48040.121094 -16934.644531 +v -80447.367188 -48972.511719 -19130.906250 +v -79607.062500 -49902.960938 -21327.326172 +v -90731.140625 -42198.695312 -3135.771240 +v -90052.468750 -42865.714844 -4704.128418 +v -89373.031250 -43534.394531 -6272.764648 +v -88693.054688 -44204.503906 -7841.653809 +v -88012.765625 -44875.804688 -9410.769531 +v -87330.429688 -45550.019531 -10984.660156 +v -86652.218750 -46221.039062 -12549.574219 +v -85701.765625 -47162.886719 -14744.572266 +v -84752.726562 -48105.046875 -16939.787109 +v -83805.734375 -49046.875000 -19135.144531 +v -82861.437500 -49987.726562 -21330.574219 +v -81973.875000 -50873.601562 -23401.156250 +v -94453.578125 -42258.183594 -3137.975830 +v -93722.804688 -42937.660156 -4707.085449 +v -92991.695312 -43617.593750 -6276.266602 +v -92260.343750 -44297.921875 -7845.513672 +v -91528.812500 -44978.578125 -9414.818359 +v -90795.203125 -45661.347656 -10988.436523 +v -90065.546875 -46340.621094 -12553.577148 +v -89042.554688 -47293.300781 -14748.273438 +v -88019.890625 -48246.070312 -16943.025391 +v -86997.781250 -49198.746094 -19137.814453 +v -85976.445312 -50151.156250 -21332.621094 +v -85014.078125 -51049.000000 -23402.615234 +v -84052.757812 -51946.300781 -25472.593750 +v -97892.507812 -42382.992188 -3138.742188 +v -97122.125000 -43075.140625 -4708.113281 +v -96351.750000 -43767.285156 -6277.484375 +v -95581.367188 -44459.433594 -7846.855469 +v -94810.984375 -45151.578125 -9416.226562 +v -94038.671875 -45845.468750 -10989.544922 +v -93270.226562 -46535.871094 -12554.968750 +v -92192.937500 -47503.761719 -14749.559570 +v -91115.648438 -48471.652344 -16944.150391 +v -90038.351562 -49439.542969 -19138.742188 +v -88961.062500 -50407.433594 -21333.333984 +v -87945.039062 -51320.281250 -23403.123047 +v -86929.007812 -52233.128906 -25472.912109 +v -86128.000000 -52952.796875 -27104.683594 +v -104386.523438 -42759.613281 -3138.742188 +v -103485.375000 -43450.562500 -4708.113281 +v -102571.414062 -44148.503906 -6277.484375 +v -101646.437500 -44852.460938 -7846.855469 +v -100712.210938 -45561.468750 -9416.226562 +v -99768.390625 -46276.164062 -10989.141602 +v -98823.156250 -46990.738281 -12554.968750 +v -97492.203125 -47995.605469 -14749.559570 +v -96158.484375 -49001.984375 -16944.150391 +v -94826.859375 -50007.222656 -19138.742188 +v -93502.195312 -51008.664062 -21333.333984 +v -92263.609375 -51947.281250 -23403.123047 +v -91039.617188 -52877.929688 -25472.912109 +v -90087.625000 -53604.546875 -27104.683594 +v -89149.234375 -54323.738281 -28736.455078 +v -113300.382812 -43737.269531 -3138.742188 +v -112168.132812 -44389.820312 -4708.113281 +v -111000.929688 -45065.023438 -6277.484375 +v -109803.640625 -45759.726562 -7846.855469 +v -108581.117188 -46470.785156 -9416.226562 +v -107335.703125 -47196.511719 -10988.737305 +v -106079.781250 -47929.375000 -12554.968750 +v -104303.218750 -48967.128906 -14749.559570 +v -102519.078125 -50009.792969 -16944.150391 +v -100740.664062 -51048.750000 -19138.742188 +v -98981.234375 -52075.394531 -21333.333984 +v -97351.218750 -53024.636719 -23403.123047 +v -95761.054688 -53948.050781 -25472.912109 +v -94542.804688 -54653.109375 -27104.683594 +v -93361.718750 -55334.082031 -28736.455078 +v -116386.695312 -44241.203125 -3138.742188 +v -115171.203125 -44873.316406 -4708.113281 +v -113914.523438 -45534.167969 -6277.484375 +v -112622.375000 -46219.757812 -7846.855469 +v -111300.492188 -46926.101562 -9416.226562 +v -109951.992188 -47650.593750 -10988.602539 +v -108590.398438 -48385.050781 -12554.968750 +v -106662.929688 -49427.875000 -14749.559570 +v -104726.539062 -50476.921875 -16944.150391 +v -102796.882812 -51521.273438 -19138.742188 +v -100889.617188 -52550.000000 -21333.333984 +v -99125.398438 -53496.101562 -23403.123047 +v -97408.156250 -54409.425781 -25472.912109 +v -96096.039062 -55100.371094 -27104.683594 +v -94827.710938 -55760.757812 -28736.455078 +v -124964.250000 -46472.039062 -3138.742188 +v -123519.390625 -47020.113281 -4708.113281 +v -122024.750000 -47614.054688 -6277.484375 +v -120487.234375 -48247.480469 -7846.855469 +v -118913.765625 -48914.027344 -9416.226562 +v -117308.601562 -49608.480469 -10988.199219 +v -115686.671875 -50320.968750 -12554.968750 +v -113390.906250 -51340.980469 -14749.560547 +v -111084.367188 -52370.921875 -16944.150391 +v -108785.960938 -53393.367188 -19138.742188 +v -106514.625000 -54390.878906 -21333.333984 +v -104414.257812 -55293.152344 -23403.123047 +v -102370.679688 -56143.125000 -25472.912109 +v -100809.992188 -56766.769531 -27104.683594 +v -99302.242188 -57341.648438 -28736.455078 +v -132917.640625 -52356.507812 -3138.742188 +v -131244.312500 -52696.742188 -4708.113281 +v -129527.250000 -53079.160156 -6277.484375 +v -127772.531250 -53497.898438 -7846.855469 +v -125986.226562 -53947.097656 -9416.226562 +v -124172.031250 -54421.527344 -10987.660156 +v -122343.203125 -54913.414062 -12554.968750 +v -119761.421875 -55622.429688 -14749.560547 +v -117170.164062 -56340.582031 -16944.150391 +v -114586.062500 -57051.835938 -19138.742188 +v -112025.726562 -57740.160156 -21333.333984 +v -109647.726562 -58353.921875 -23403.123047 +v -107319.593750 -58919.578125 -25472.912109 +v -105528.453125 -59322.800781 -27104.683594 +v -103783.804688 -59681.175781 -28736.455078 +v -135454.140625 -58358.828125 -3138.742188 +v -135665.812500 -60047.746094 -3138.742188 +v -135644.093750 -61560.136719 -3138.742188 +v -135422.531250 -62863.558594 -3138.742188 +v -135137.140625 -63765.855469 -3138.742188 +v -134193.828125 -65566.460938 -3138.742188 +v -132547.234375 -65525.707031 -4708.113281 +v -130902.781250 -65483.351562 -6277.484375 +v -129260.023438 -65439.562500 -7846.855469 +v -127618.492188 -65394.527344 -9416.226562 +v -125976.695312 -65348.382812 -10986.586914 +v -124337.281250 -65301.394531 -12554.968750 +v -122042.945312 -65234.476562 -14749.560547 +v -119747.062500 -65166.621094 -16944.150391 +v -133559.484375 -66385.812500 -3138.742188 +v -131937.781250 -66328.007812 -4708.113281 +v -130321.500000 -66268.640625 -6277.484375 +v -128709.437500 -66207.796875 -7846.855469 +v -127100.382812 -66145.562500 -9416.226562 +v -125492.257812 -66081.992188 -10986.474609 +v -123886.546875 -66017.281250 -12554.968750 +v -121638.656250 -65924.867188 -14749.560547 +v -119386.375000 -65830.492188 -16944.150391 +v -117126.429688 -65734.398438 -19138.742188 +v -132833.000000 -67163.835938 -3138.742188 +v -131232.984375 -67090.351562 -4708.113281 +v -129641.062500 -67016.757812 -6277.484375 +v -128055.320312 -66942.867188 -7846.855469 +v -126473.890625 -66868.453125 -9416.226562 +v -124894.093750 -66793.265625 -10986.371094 +v -123316.375000 -66717.226562 -12554.968750 +v -121106.304688 -66608.859375 -14749.560547 +v -118888.390625 -66497.664062 -16944.150391 +v -116657.468750 -66383.078125 -19138.742188 +v -114408.351562 -66264.523438 -21333.333984 +v -131954.937500 -67972.960938 -3138.742188 +v -130378.117188 -67877.375000 -4708.113281 +v -128812.203125 -67782.734375 -6277.484375 +v -127254.601562 -67688.593750 -7846.855469 +v -125702.679688 -67594.492188 -9416.226562 +v -124153.171875 -67499.945312 -10986.267578 +v -122605.445312 -67404.625000 -12554.968750 +v -120436.007812 -67268.960938 -14749.560547 +v -118255.203125 -67129.500000 -16944.150391 +v -116055.898438 -66985.007812 -19138.742188 +v -113830.937500 -66834.250000 -21333.333984 +v -111702.578125 -66685.203125 -23403.123047 +v 40127.109375 -57405.890625 -4534.545898 +v 33990.058594 -55968.207031 -4534.385742 +v 31643.708984 -55473.847656 -4535.356445 +v 23692.994141 -53956.960938 -4541.007324 +v 20744.482422 -53443.511719 -4543.724121 +v 17653.218750 -52928.105469 -4546.817871 +v -133936.828125 -60153.574219 -4708.113281 +v -133923.906250 -61622.500000 -4708.113281 +v -133715.765625 -62887.535156 -4708.113281 +v -133444.781250 -63762.886719 -4708.113281 +v 35299.074219 -57024.433594 -6071.212891 +v 28870.775391 -55607.265625 -6072.871582 +v 26437.242188 -55122.351562 -6074.580566 +v 18270.363281 -53642.550781 -6082.781738 +v 15269.159180 -53144.554688 -6086.445801 +v 12137.158203 -52646.207031 -6090.527832 +v -132193.921875 -61695.746094 -6277.484375 +v -132004.500000 -62917.230469 -6277.484375 +v -131750.921875 -63761.656250 -6277.484375 +v 38659.281250 -58840.664062 -7627.166504 +v 35226.105469 -58874.171875 -9185.746094 +v 31616.732422 -58905.242188 -10764.423828 +v 30183.972656 -56658.992188 -7619.459961 +v 23491.632812 -55268.601562 -7623.230469 +v 20984.476562 -54795.414062 -7625.699707 +v 12655.957031 -53359.996094 -7636.307129 +v 9624.773438 -52879.964844 -7640.806152 +v 3220.837158 -51924.921875 -7651.062012 +v -130289.343750 -62951.855469 -7846.855469 +v -130055.773438 -63761.921875 -7846.855469 +v 33793.515625 -58464.394531 -9182.507812 +v 28648.986328 -58101.269531 -10758.420898 +v 23340.072266 -57753.066406 -12320.012695 +v 16308.891602 -57453.507812 -14531.584961 +v 9133.809570 -57186.484375 -16753.355469 +v 1940.615112 -56957.207031 -18981.910156 +v -5136.583984 -56770.417969 -21213.759766 +v -11681.058594 -56619.515625 -23318.626953 +v -17878.421875 -56515.136719 -25420.482422 +v -22787.046875 -56412.636719 -27073.732422 +v -27325.736328 -56349.550781 -28722.107422 +v -31445.531250 -56325.691406 -30364.507812 +v 24820.505859 -56312.851562 -9178.310547 +v 17905.519531 -54955.960938 -9184.206055 +v 15342.723633 -54496.882812 -9187.377930 +v 6918.656250 -53113.187500 -9200.055664 +v 746.507019 -52196.714844 -9210.814453 +v -5792.477051 -51296.515625 -9223.115234 +v -128359.562500 -63763.445312 -9416.226562 +v 30187.054688 -58506.414062 -10760.997070 +v 26506.882812 -58545.414062 -12323.945312 +v 19233.412109 -55990.378906 -10757.157227 +v 12151.875977 -54674.238281 -10764.502930 +v 9555.903320 -54231.777344 -10768.103516 +v -1897.609741 -52470.355469 -10787.390625 +v -8166.089844 -51610.660156 -10799.501953 +v -14694.673828 -50777.550781 -10812.906250 +v 24974.937500 -58151.855469 -12321.578125 +v 18018.189453 -57838.429688 -14532.323242 +v 10893.012695 -57554.644531 -16753.404297 +v 3720.680420 -57305.753906 -18981.482422 +v -3367.069580 -57096.765625 -21213.087891 +v -9948.272461 -56922.820312 -23317.916016 +v -16209.924805 -56793.773438 -25419.896484 +v -21182.529297 -56670.035156 -27073.302734 +v -25799.751953 -56584.894531 -28721.871094 +v -30007.707031 -56538.562500 -30364.437500 +v 13548.317383 -55692.714844 -12323.063477 +v 6358.804688 -54423.718750 -12332.436523 +v 3751.976807 -54000.003906 -12336.625000 +v -10627.645508 -51921.894531 -12364.084961 +v -16857.988281 -51129.894531 -12377.508789 +v -23243.822266 -50373.144531 -12391.939453 +v 19635.380859 -58219.667969 -14533.770508 +v 6338.704590 -55487.187500 -14537.511719 +v -772.166992 -54294.964844 -14547.682617 +v -3317.392090 -53900.210938 -14551.996094 +v -20030.265625 -51626.312500 -14585.483398 +v -25961.027344 -50927.304688 -14598.826172 +v -37922.246094 -49660.386719 -14627.347656 +v -122743.335938 -62214.683594 -14749.560547 +v -120281.468750 -62364.417969 -16944.150391 +v -117821.203125 -62512.375000 -19138.742188 +v -115366.265625 -62654.414062 -21333.333984 +v -113059.187500 -62779.238281 -23403.123047 +v -110763.296875 -62891.656250 -25472.912109 +v -108963.210938 -62969.257812 -27104.683594 +v -107173.562500 -63035.292969 -28736.455078 +v 17148.878906 -59004.023438 -16759.822266 +v 11651.832031 -59035.832031 -18986.812500 +v 6182.957520 -59066.621094 -21216.845703 +v 1115.796997 -59095.562500 -23320.113281 +v 12572.747070 -57920.718750 -16754.050781 +v 5435.223145 -57653.796875 -18981.523438 +v -1648.627197 -57424.066406 -21212.759766 +v -8253.133789 -57228.292969 -23317.435547 +v -14566.599609 -57075.656250 -25419.451172 +v -19594.423828 -56931.578125 -27072.953125 +v -24282.919922 -56825.195312 -28721.669922 +v -868.046143 -55328.410156 -16761.126953 +v -7799.165527 -54220.812500 -16771.265625 +v -12759.411133 -53498.234375 -16779.871094 +v -28763.396484 -51481.230469 -16812.246094 +v -39778.917969 -50323.632812 -16837.205078 +v -45203.671875 -49818.273438 -16850.070312 +v -120302.632812 -63208.886719 -16944.150391 +v -117839.898438 -63786.125000 -19138.742188 +v -115440.296875 -64021.761719 -21333.333984 +v -113176.164062 -64271.031250 -23403.123047 +v -110878.375000 -64636.300781 -25472.912109 +v -109061.187500 -64854.140625 -27104.683594 +v -107071.187500 -65299.875000 -28736.455078 +v 10191.959961 -58692.230469 -18984.677734 +v 3200.784912 -58409.164062 -21213.998047 +v -3396.799805 -58155.625000 -23317.515625 +v -9792.710938 -57938.843750 -25419.017578 +v -14933.802734 -57738.386719 -27072.417969 +v -19791.478516 -57572.597656 -28721.292969 +v -24296.054688 -57443.039062 -30364.244141 +v -7934.547852 -55220.425781 -18990.339844 +v -16910.574219 -53873.703125 -19003.335938 +v -21684.587891 -53230.472656 -19011.445312 +v -41663.093750 -50984.023438 -19050.593750 +v -46630.269531 -50527.910156 -19061.197266 +v -51491.750000 -50124.449219 -19071.783203 +v -117890.757812 -63274.347656 -19138.742188 +v -115481.335938 -63336.703125 -21333.333984 +v -113212.710938 -63390.707031 -23403.123047 +v -110949.226562 -63438.187500 -25472.912109 +v -109169.312500 -63469.824219 -27104.683594 +v -107394.187500 -63495.378906 -28736.455078 +v 4716.595215 -58737.929688 -21215.208984 +v -350.467407 -58781.101562 -23318.949219 +v -5258.875000 -58825.218750 -25420.097656 +v -14726.974609 -55166.164062 -21221.691406 +v -25386.968750 -53660.500000 -21235.732422 +v -29860.957031 -53103.308594 -21242.595703 +v -48053.968750 -51231.019531 -21273.878906 +v -52489.832031 -50872.414062 -21281.994141 +v -56815.191406 -50567.011719 -21289.964844 +v -115465.812500 -63790.730469 -21333.333984 +v -113217.968750 -64005.894531 -23403.123047 +v -110966.468750 -64245.609375 -25472.912109 +v -109146.429688 -64606.132812 -27104.683594 +v -107331.070312 -64806.253906 -28736.455078 +v -1854.639282 -58467.734375 -23318.085938 +v -8254.565430 -58231.906250 -25419.199219 +v -13416.185547 -58014.285156 -27072.425781 +v -18315.230469 -57830.011719 -28721.251953 +v -22879.119141 -57681.066406 -30364.222656 +v -20878.953125 -55149.507812 -23325.267578 +v -32853.597656 -53557.648438 -23338.464844 +v -36977.792969 -53085.558594 -23343.722656 +v -53414.925781 -51568.378906 -23366.539062 +v -57381.007812 -51301.214844 -23372.218750 +v -61248.656250 -51087.437500 -23377.701172 +v -113227.984375 -63793.617188 -23403.123047 +v -110991.851562 -63794.519531 -25472.912109 +v -109230.445312 -63793.472656 -27104.683594 +v -107470.617188 -63790.574219 -28736.455078 +v -6743.298340 -58527.394531 -25419.556641 +v -10436.754883 -58575.796875 -27072.750000 +v -28366.796875 -54935.632812 -25426.494141 +v -39434.898438 -53583.789062 -25435.642578 +v -46914.566406 -52842.527344 -25442.693359 +v -57928.628906 -52023.082031 -25453.521484 +v -61484.757812 -51844.058594 -25456.960938 +v -63234.941406 -51773.714844 -25458.615234 +v -110996.101562 -63989.605469 -25472.912109 +v -109224.406250 -64225.566406 -27104.683594 +v -107413.281250 -64576.023438 -28736.455078 +v -11917.101562 -58293.453125 -27072.535156 +v -16849.947266 -58091.429688 -28721.255859 +v -21466.974609 -57923.644531 -30364.210938 +v -34410.046875 -54761.480469 -27078.564453 +v -48144.750000 -53302.679688 -27086.597656 +v -51571.917969 -53021.550781 -27088.773438 +v -61661.703125 -52430.195312 -27095.136719 +v -63304.027344 -52372.789062 -27096.126953 +v -64932.929688 -52327.027344 -27097.085938 +v -109244.859375 -63976.386719 -27104.683594 +v -107494.046875 -63962.765625 -28736.455078 +v -11103.863281 -59175.347656 -28721.767578 +v -14484.684570 -59202.777344 -30364.347656 +v -15395.954102 -58356.746094 -28721.306641 +v -39794.332031 -54688.722656 -28725.013672 +v -52454.468750 -53505.628906 -28728.958984 +v -55600.195312 -53296.367188 -28729.982422 +v -63366.039062 -52961.410156 -28732.423828 +v -64897.617188 -52928.339844 -28732.875000 +v -66420.875000 -52905.812500 -28733.310547 +v -107482.335938 -64205.523438 -28736.455078 +v -15870.050781 -58938.332031 -30364.292969 +v -59081.675781 -53662.597656 -30366.783203 +v -66293.023438 -53508.347656 -30367.396484 +v -67724.765625 -53507.929688 -30367.505859 +v 58920.863281 -66295.429688 -1023.058105 +v 60114.773438 -66774.835938 0.000000 +v 58296.378906 -66669.179688 -1023.026733 +v 59365.019531 -67180.734375 0.000000 +v 57937.632812 -66859.296875 -1023.003967 +v 57547.210938 -67051.593750 -1022.976929 +v 56032.816406 -66782.976562 -2045.886597 +v 55616.292969 -66972.328125 -2045.781738 +v 54118.800781 -66705.640625 -3068.660400 +v 53673.226562 -66891.953125 -3068.432861 +v 52196.105469 -66627.328125 -4091.338867 +v 51718.746094 -66810.515625 -4090.948242 +v 48326.769531 -66467.929688 -6136.459961 +v 47778.488281 -66644.601562 -6135.645508 +v 44428.992188 -66305.132812 -8181.353027 +v 43801.417969 -66474.921875 -8180.019531 +v 40506.964844 -66139.281250 -10226.121094 +v 39793.425781 -66301.812500 -10224.216797 +v 36564.863281 -65970.710938 -12270.866211 +v 35760.410156 -66125.593750 -12268.382812 +v 28637.191406 -65626.820312 -16360.705078 +v 27642.873047 -65765.171875 -16357.205078 +v 23811.980469 -65414.789062 -18841.847656 +v 22701.964844 -65542.289062 -18837.943359 +v 18983.175781 -65200.898438 -21323.597656 +v 17760.769531 -65316.886719 -21319.541016 +v 12925.310547 -64930.593750 -24441.449219 +v 11571.125000 -65031.175781 -24437.677734 +v 9919.573242 -64795.816406 -25992.546875 +v 8505.190430 -64888.308594 -25989.292969 +v 6888.354980 -64659.542969 -27560.914062 +v 5418.459961 -64743.605469 -27558.097656 +v 2617.200684 -64467.054688 -29779.892578 +v 1078.135498 -64538.671875 -29778.248047 +v -396.581604 -64229.921875 -32000.000000 +v -6749.990234 -64463.250000 -32000.000000 +v -1815.461792 -64676.144531 -29774.232422 +v -4521.158203 -64805.175781 -29769.769531 +v 37.703880 -65061.617188 -27543.570312 +v -2589.221924 -65217.871094 -27534.828125 +v 738.904785 -65414.937500 -25962.048828 +v -1850.972412 -65590.968750 -25950.646484 +v 1542.065430 -65801.078125 -24393.527344 +v -1028.983887 -65996.632812 -24379.519531 +v 6005.216797 -66442.398438 -21256.986328 +v 3494.742676 -66673.289062 -21241.037109 +v 9269.493164 -67041.625000 -18762.380859 +v 6775.362793 -67299.148438 -18746.406250 +v 12696.519531 -67679.023438 -16275.157227 +v 10199.093750 -67961.195312 -16260.482422 +v 20188.136719 -68594.109375 -12199.732422 +v 17724.347656 -68912.375000 -12189.208008 +v 22810.470703 -69230.757812 -10163.530273 +v 20287.064453 -69564.734375 -10155.489258 +v 25444.023438 -69888.679688 -8131.899414 +v 22839.390625 -70236.000000 -8126.364746 +v 28054.437500 -70564.437500 -6102.871582 +v 25341.882812 -70922.453125 -6099.596191 +v 30599.566406 -71254.562500 -4073.658691 +v 27744.734375 -71620.484375 -4072.160645 +v 30388.853516 -71789.515625 -3057.477295 +v 27330.490234 -72153.484375 -3056.659668 +v 29983.332031 -72326.765625 -2040.364258 +v 26683.578125 -72686.257812 -2040.019653 +v 29333.716797 -72863.734375 -1021.487183 +v 25747.078125 -73216.257812 -1021.407837 +v 28537.488281 -73383.234375 0.000000 +v 24064.546875 -73772.570312 0.000000 +v 58483.804688 -67596.398438 0.000000 +v 56669.851562 -67442.734375 -1022.910645 +v 54683.285156 -67357.343750 -2045.525513 +v 52680.824219 -67270.664062 -3067.875977 +v 50663.496094 -67182.726562 -4089.993164 +v 46588.359375 -67003.234375 -6133.654297 +v 42466.132812 -66819.179688 -8176.759766 +v 38305.058594 -66630.859375 -10219.560547 +v 34113.382812 -66438.585938 -12262.307617 +v 25671.238281 -66043.414062 -16348.646484 +v 20535.146484 -65797.664062 -18828.394531 +v 15405.163086 -65548.007812 -21309.621094 +v 8993.957031 -65229.785156 -24428.455078 +v 5826.079590 -65069.851562 -25981.279297 +v 2644.771973 -64907.347656 -27551.214844 +v 57460.667969 -68021.703125 0.000000 +v 55744.773438 -67809.546875 -1022.837097 +v 53701.816406 -67718.382812 -2045.240845 +v 51640.476562 -67625.773438 -3067.257324 +v 49562.007812 -67531.757812 -4088.932617 +v 45358.726562 -67339.625000 -6131.442871 +v 41102.039062 -67142.242188 -8173.139648 +v 36802.000000 -66939.875000 -10214.389648 +v 32468.675781 -66732.781250 -12255.562500 +v 23742.416016 -66305.460938 -16339.141602 +v 18438.435547 -66038.453125 -18817.791016 +v 13147.853516 -65766.109375 -21298.605469 +v 6550.260742 -65417.246094 -24418.212891 +v 3297.317383 -65241.101562 -25972.326172 +v 56283.992188 -68456.265625 0.000000 +v 54698.914062 -68183.468750 -1022.752930 +v 52596.082031 -68086.359375 -2044.915405 +v 50473.367188 -67987.664062 -3066.550049 +v 48332.203125 -67887.429688 -4087.719482 +v 44000.273438 -67682.382812 -6128.913574 +v 39611.773438 -67471.429688 -8168.998535 +v 35178.183594 -67254.773438 -10208.475586 +v 30710.974609 -67032.601562 -12247.845703 +v 21721.634766 -66572.523438 -16328.270508 +v 16265.006836 -66283.804688 -18805.662109 +v 10830.082031 -65988.218750 -21286.003906 +v 4066.864258 -65607.820312 -24406.498047 +v 54940.984375 -68899.367188 0.000000 +v 53525.167969 -68564.093750 -1022.659729 +v 51360.171875 -68460.875000 -2044.554932 +v 49174.640625 -68355.953125 -3065.766846 +v 46970.144531 -68249.343750 -4086.376465 +v 42510.527344 -68031.109375 -6126.112793 +v 37993.882812 -67806.312500 -8164.413574 +v 33432.781250 -67575.078125 -10201.927734 +v 28839.775391 -67337.546875 -12239.302734 +v 19608.324219 -66844.078125 -16316.234375 +v 14013.972656 -66533.179688 -18792.234375 +v 8450.567383 -66213.804688 -21272.052734 +v 52215.703125 -68950.835938 -1022.559082 +v 53417.617188 -69349.960938 0.000000 +v 50761.960938 -69342.890625 -1022.452576 +v 51698.585938 -69806.640625 0.000000 +v 49154.597656 -69739.226562 -1022.341736 +v 49767.289062 -70267.585938 0.000000 +v 47383.488281 -70138.578125 -1022.228149 +v 47605.750000 -70730.585938 0.000000 +v 45437.691406 -70539.421875 -1022.113342 +v 45194.496094 -71192.992188 0.000000 +v 43305.367188 -70940.000000 -1021.998901 +v 42512.074219 -71651.789062 0.000000 +v 40973.550781 -71338.304688 -1021.886475 +v 38427.796875 -71732.164062 -1021.777466 +v 38411.101562 -71188.718750 -2041.563965 +v 35828.832031 -71575.625000 -2041.142456 +v 35836.007812 -71036.593750 -3059.266846 +v 33218.753906 -71416.437500 -3058.350830 +v 33250.226562 -70881.875000 -4075.229736 +v 39534.425781 -72103.718750 0.000000 +v 35651.882812 -72119.281250 -1021.673523 +v 33025.257812 -71955.757812 -2040.740479 +v 36234.273438 -72545.296875 0.000000 +v 32627.458984 -72497.281250 -1021.576233 +v 32580.496094 -72972.984375 0.000000 +v 19115.244141 -74137.734375 0.000000 +v 17584.882812 -73870.265625 -1021.284729 +v 21840.845703 -73552.507812 -1021.339844 +v 23103.757812 -73031.851562 -2039.712769 +v 24025.441406 -72505.984375 -3055.910889 +v 24671.062500 -71977.351562 -4070.758301 +v 22441.589844 -71273.781250 -6096.472656 +v 20071.800781 -70578.812500 -8121.002441 +v 17620.738281 -69896.140625 -10147.583984 +v 15134.384766 -69229.687500 -12178.716797 +v 7602.120605 -68243.570312 -16245.654297 +v 4198.187012 -67557.718750 -18730.035156 +v 917.792542 -66905.765625 -21224.441406 +v -3645.437012 -66193.898438 -24364.693359 +v -4477.410645 -65768.914062 -25938.310547 +v -5237.841797 -65375.804688 -27525.146484 +v -7233.935059 -64935.207031 -29764.667969 +v 16445.728516 -74310.296875 0.000000 +v 12945.284180 -74167.460938 -1021.244080 +v 14999.234375 -73672.242188 -2039.236572 +v 10413.333008 -73962.781250 -2039.079346 +v 12405.317383 -73471.609375 -3054.208984 +v 7872.167480 -73755.648438 -3053.867432 +v 9805.729492 -73268.242188 -4066.555908 +v 5324.542969 -73545.921875 -4065.969727 +v 4599.937988 -72852.773438 -6084.786621 +v 220.934448 -73118.101562 -6083.564453 +v -597.348572 -72424.804688 -8096.757324 +v -4875.454590 -72678.179688 -8094.756836 +v -5765.338379 -71983.320312 -10105.296875 +v -9942.585938 -72225.007812 -10102.439453 +v -10883.240234 -71527.281250 -12113.233398 +v -14958.421875 -71757.429688 -12109.505859 +v -20885.611328 -70567.453125 -16138.613281 +v -24748.056641 -70774.476562 -16133.361328 +v -26743.871094 -69951.437500 -18594.070312 +v -30468.281250 -70144.078125 -18588.210938 +v -32399.521484 -69307.648438 -21066.177734 +v -35976.394531 -69485.367188 -21060.089844 +v -39158.125000 -68456.968750 -24202.123047 +v -42532.832031 -68614.859375 -24196.462891 +v -42365.082031 -68014.062500 -25782.232422 +v -45631.152344 -68161.414062 -25777.402344 +v -45465.132812 -67555.953125 -27382.292969 +v -48614.765625 -67692.398438 -27378.068359 +v -49634.062500 -66882.750000 -29675.644531 +v -52607.332031 -67002.734375 -29673.179688 +v -44671.414062 -65855.773438 -32000.000000 +v -69952.687500 -66782.968750 -32000.000000 +v -55603.605469 -67119.859375 -29671.685547 +v -58623.933594 -67233.632812 -29671.257812 +v -55056.957031 -67948.828125 -27374.777344 +v -56699.285156 -68009.156250 -27375.146484 +v -54085.175781 -68498.023438 -25774.523438 +v -55829.855469 -68559.476562 -25775.718750 +v -53170.214844 -69034.710938 -24193.736328 +v -55026.292969 -69096.328125 -24195.646484 +v -49493.890625 -70011.640625 -21059.210938 +v -51570.222656 -70073.843750 -21062.068359 +v -46998.507812 -70769.265625 -18590.115234 +v -49280.898438 -70829.937500 -18593.669922 +v -44642.378906 -71498.984375 -16138.255859 +v -47159.308594 -71557.070312 -16142.186523 +v -39435.933594 -72610.726562 -12115.769531 +v -42349.917969 -72666.750000 -12119.105469 +v -38539.898438 -73175.460938 -10109.797852 +v -41736.304688 -73227.703125 -10112.788086 +v -38072.761719 -73728.492188 -8102.002441 +v -41589.101562 -73776.914062 -8104.408203 +v -38121.449219 -74273.109375 -6089.459961 +v -41998.171875 -74318.109375 -6091.126465 +v -38776.898438 -74813.453125 -4069.596680 +v -43056.667969 -74855.835938 -4070.492920 +v -41584.867188 -75105.039062 -3056.504883 +v -46184.765625 -75143.414062 -3057.085938 +v -44858.972656 -75395.242188 -2040.560425 +v -49805.816406 -75430.054688 -2040.855347 +v -48638.515625 -75685.281250 -1021.703247 +v -53959.738281 -75717.007812 -1021.786865 +v -51710.296875 -75969.078125 0.000000 +v -58165.835938 -76003.132812 0.000000 +v 13636.797852 -74475.718750 0.000000 +v 7884.043945 -74442.242188 -1021.219421 +v 5424.317383 -74231.023438 -2038.984009 +v 2954.035400 -74017.562500 -3053.660156 +v 476.117065 -73801.703125 -4065.614746 +v -4490.951172 -73362.148438 -6082.824219 +v -9453.533203 -72911.062500 -8093.544434 +v -14388.275391 -72447.187500 -10100.708008 +v -19271.822266 -71969.218750 -12107.247070 +v -28791.916016 -70965.929688 -16130.178711 +v -34341.828125 -70323.125000 -18584.660156 +v -39671.613281 -69651.656250 -21056.400391 +v -45989.132812 -68764.281250 -24193.033203 +v -48961.171875 -68301.859375 -25774.578125 +v -51811.156250 -67823.578125 -27375.509766 +v 10680.760742 -74633.671875 0.000000 +v 7569.446777 -74783.875000 0.000000 +v 2358.727295 -74693.000000 -1021.212402 +v 4294.194824 -74926.070312 0.000000 +v -592.511353 -74808.953125 -1021.215942 +v 845.825989 -75060.031250 0.000000 +v -3677.858887 -74918.445312 -1021.224487 +v -2785.370361 -75185.578125 0.000000 +v -6904.015137 -75021.367188 -1021.238159 +v -6609.659180 -75302.554688 0.000000 +v -10278.006836 -75117.625000 -1021.257263 +v -10637.878906 -75410.859375 0.000000 +v -13807.222656 -75207.187500 -1021.281921 +v -14881.459961 -75510.437500 0.000000 +v -17499.408203 -75290.000000 -1021.312378 +v -19352.445312 -75601.281250 0.000000 +v -21362.677734 -75366.085938 -1021.348755 +v -24063.509766 -75683.421875 0.000000 +v -25405.521484 -75435.476562 -1021.391296 +v -29636.822266 -75498.218750 -1021.440186 +v -27171.699219 -75193.921875 -2039.648804 +v -31298.277344 -75253.882812 -2039.838013 +v -28958.322266 -74952.039062 -3055.104980 +v -32981.062500 -75009.476562 -3055.516113 +v -30761.808594 -74709.546875 -4068.092529 +v -34681.585938 -74764.718750 -4068.797363 +v -34405.046875 -74221.757812 -6087.990234 +v -29027.976562 -75756.960938 0.000000 +v -34065.867188 -75554.421875 -1021.495667 +v -35615.300781 -75307.335938 -2040.052490 +v -37186.843750 -75060.437500 -3055.982178 +v -34259.847656 -75822.054688 0.000000 +v -38702.347656 -75604.210938 -1021.557861 +v -40132.238281 -75354.398438 -2040.292969 +v -39773.800781 -75878.914062 0.000000 +v -43556.382812 -75647.765625 -1021.627014 +v -45585.242188 -75927.804688 0.000000 +v -59531.492188 -75743.242188 -1021.877991 +v -64969.507812 -76030.453125 0.000000 +v -65365.679688 -75764.304688 -1021.976807 +v -72139.742188 -76051.601562 0.000000 +v -71474.671875 -75780.570312 -1022.083557 +v -79695.781250 -76067.195312 0.000000 +v -77871.335938 -75792.468750 -1022.198425 +v -87657.687500 -76077.945312 0.000000 +v -84569.015625 -75800.460938 -1022.321655 +v -96046.375000 -76084.656250 0.000000 +v -91581.546875 -75805.070312 -1022.453308 +v -98923.351562 -75806.859375 -1022.593689 +v -91557.453125 -75530.171875 -2043.756592 +v -98691.140625 -75528.875000 -2044.299561 +v -91549.289062 -75256.710938 -3064.031738 +v -98471.914062 -75252.132812 -3065.211914 +v -91555.078125 -74984.476562 -4083.400879 +v -98264.101562 -74976.453125 -4085.424561 +v -91600.625000 -74442.890625 -6119.909180 +v -97876.406250 -74427.625000 -6124.128418 +v -91678.312500 -73903.773438 -8154.257324 +v -97515.445312 -73881.070312 -8161.164551 +v -91772.359375 -73365.484375 -10187.420898 +v -97168.625000 -73335.429688 -10197.287109 +v -91866.984375 -72826.375000 -12220.376953 +v -96823.328125 -72789.375000 -12233.249023 +v -91994.851562 -71739.156250 -16289.569336 +v -96086.875000 -71690.671875 -16307.704102 +v -91989.335938 -71069.382812 -18762.486328 +v -95575.906250 -71016.312500 -18782.716797 +v -91886.835938 -70388.226562 -21241.146484 +v -94989.023438 -70333.046875 -21262.166016 +v -91577.421875 -69512.195312 -24364.794922 +v -94109.859375 -69458.664062 -24384.335938 +v -91331.343750 -69064.046875 -25931.621094 +v -93598.273438 -69013.421875 -25949.294922 +v -91014.812500 -68607.796875 -27503.701172 +v -93030.906250 -68561.726562 -27518.287109 +v -90430.171875 -67944.382812 -29746.501953 +v -92117.804688 -67907.726562 -29755.013672 +v -88915.828125 -67268.648438 -32000.000000 +v -93822.585938 -67855.898438 -29764.066406 +v -95495.171875 -67790.539062 -29773.667969 +v -97112.148438 -68424.640625 -27550.250000 +v -98221.921875 -68867.460938 -25988.001953 +v -95078.953125 -68500.148438 -27533.796875 +v -95909.875000 -68947.375000 -25968.082031 +v -104883.632812 -76088.195312 0.000000 +v -106609.312500 -75806.445312 -1022.742981 +v -106158.742188 -75525.265625 -2044.876953 +v -105717.625000 -75245.015625 -3066.466553 +v -105284.828125 -74965.578125 -4087.576416 +v -104439.757812 -74408.648438 -6128.615234 +v -103614.531250 -73853.507812 -8168.510254 +v -102800.179688 -73299.187500 -10207.778320 +v -101987.734375 -72744.734375 -12246.935547 +v -100332.625000 -71631.523438 -16326.988281 +v -99284.546875 -70950.890625 -18804.232422 +v -98183.609375 -70264.054688 -21284.517578 +v -96701.476562 -69390.062500 -24405.117188 +v -114192.125000 -76089.539062 0.000000 +v -114654.703125 -75804.515625 -1022.901367 +v -113974.820312 -75520.031250 -2045.489502 +v -113299.929688 -75236.070312 -3067.797852 +v -112629.437500 -74952.578125 -4089.859375 +v -111299.312500 -74386.718750 -6133.375000 +v -109979.742188 -73821.921875 -8176.302734 +v -108666.039062 -73257.671875 -10218.908203 +v -107353.492188 -72693.429688 -12261.456055 +v -104713.117188 -71562.882812 -16347.446289 +v -103088.835938 -70874.375000 -18827.056641 +v -101437.156250 -70182.632812 -21308.230469 +v -99311.179688 -69307.867188 -24427.162109 +v -82593.960938 -67211.671875 -32000.000000 +v -85444.640625 -67977.507812 -29724.082031 +v -87099.117188 -67977.734375 -29731.048828 +v -88763.593750 -67966.953125 -29738.517578 +v -89033.851562 -68639.398438 -27490.019531 +v -74127.429688 -67763.585938 -29688.435547 +v -75718.570312 -67809.882812 -29692.207031 +v -77318.031250 -67852.421875 -29696.398438 +v -75751.375000 -68572.250000 -27417.851562 +v -77586.210938 -68605.367188 -27425.775391 +v -76464.523438 -69090.492188 -25836.974609 +v -78493.500000 -69114.007812 -25847.550781 +v -77420.015625 -69581.609375 -24272.019531 +v -79669.460938 -69594.609375 -24284.705078 +v -77582.304688 -70489.960938 -21155.001953 +v -80297.046875 -70489.851562 -21169.800781 +v -78734.664062 -71172.632812 -18693.812500 +v -81896.351562 -71161.773438 -18709.199219 +v -80562.500000 -71825.617188 -16241.807617 +v -84241.828125 -71806.054688 -16256.646484 +v -82539.007812 -72877.757812 -12197.009766 +v -87110.656250 -72855.703125 -12208.303711 +v -86601.687500 -73389.164062 -10178.166992 +v -19390.138672 -64927.460938 -32000.000000 +v -26568.642578 -65860.351562 -29718.951172 +v -29389.132812 -65992.226562 -29712.130859 +v -32226.085938 -66123.343750 -29705.521484 +v -27427.455078 -66658.859375 -27433.486328 +v -30340.552734 -66815.468750 -27422.689453 +v -26877.845703 -67199.304688 -25829.580078 +v -29872.230469 -67370.585938 -25817.667969 +v -26381.054688 -67758.218750 -24242.705078 +v -29475.123047 -67941.382812 -24230.304688 +v -22299.076172 -68717.078125 -21096.488281 +v -25567.818359 -68922.382812 -21084.611328 +v -19697.544922 -69530.460938 -18611.814453 +v -23156.990234 -69746.453125 -18602.013672 +v -17189.605469 -70346.234375 -16145.733398 +v -9955.425781 -65066.085938 -29759.017578 +v -12690.767578 -65197.781250 -29752.916016 +v -7913.387207 -65535.230469 -27514.693359 +v -10614.729492 -65695.703125 -27503.626953 +v -7139.447754 -65948.234375 -25925.240234 +v -9838.479492 -66128.468750 -25911.628906 +v -6308.719727 -66392.304688 -24349.263672 +v -9020.080078 -66591.257812 -24333.449219 +v -1726.942139 -67139.062500 -21207.433594 +v -4440.879883 -67372.335938 -21190.246094 +v 1536.393799 -67816.375000 -18713.490234 +v -1211.979980 -68074.023438 -18697.000000 +v 4903.285156 -68524.929688 -16230.874023 +v 2099.737549 -68803.937500 -16216.342773 +v 12414.142578 -69544.453125 -12168.403320 +v 9558.527344 -69854.976562 -12158.411133 +v 14805.341797 -70223.148438 -10139.924805 +v 11833.359375 -70543.835938 -10132.622070 +v 17132.304688 -70915.085938 -8115.889160 +v 14010.167969 -71242.718750 -8111.102539 +v 19340.986328 -71616.210938 -6093.548828 +v 16025.277344 -71947.515625 -6090.871094 +v 21361.531250 -72322.828125 -4069.474121 +v 17796.457031 -72654.625000 -4068.330566 +v 20452.775391 -72844.679688 -3055.243896 +v 16588.511719 -73167.281250 -3054.672363 +v 19218.554688 -73361.250000 -2039.449707 +v 6038.489258 -64298.589844 -29783.171875 +v 4013.184082 -64401.082031 -29781.269531 +v 10126.746094 -64454.511719 -27566.535156 +v 13021.971680 -64565.125000 -25998.908203 +v 15886.827148 -64674.675781 -24448.982422 +v 14144.988281 -64835.808594 -24444.615234 +v 20081.572266 -65090.363281 -21327.001953 +v 21652.566406 -64895.226562 -21331.699219 +v 26243.511719 -65070.679688 -18849.646484 +v 30830.876953 -65245.621094 -16367.695312 +v 38377.824219 -65532.031250 -12275.828125 +v 42139.953125 -65673.898438 -10229.923828 +v 45892.148438 -65814.625000 -8184.015137 +v 49632.621094 -65954.015625 -6138.086426 +v 53359.601562 -66091.890625 -4092.118896 +v 55217.472656 -66160.195312 -3069.115234 +v 57071.300781 -66228.046875 -2046.095825 +v -84743.125000 -75528.539062 -2043.247192 +v -84935.585938 -75258.164062 -3062.924805 +v -85144.070312 -74989.109375 -4081.502686 +v -85599.843750 -74453.984375 -6115.951172 +v -86091.898438 -73921.296875 -8147.777832 +v -78233.828125 -75523.445312 -2042.770752 +v -78616.523438 -75256.007812 -3061.889404 +v -79016.804688 -74989.898438 -4079.727051 +v -79859.703125 -74460.617188 -6112.249023 +v -80741.625000 -73933.539062 -8141.716309 +v -81641.695312 -73406.609375 -10169.509766 +v -72016.054688 -75514.382812 -2042.326416 +v -72579.039062 -75249.750000 -3060.923828 +v -73160.750000 -74986.390625 -4078.071045 +v -74368.953125 -74462.398438 -6108.796387 +v -75617.804688 -73940.210938 -8136.064453 +v -76884.437500 -73417.640625 -10161.437500 +v -78146.007812 -72892.476562 -12186.476562 +v -66076.757812 -75500.898438 -2041.913452 +v -66810.421875 -75238.953125 -3060.026611 +v -67563.585938 -74978.179688 -4076.532227 +v -69116.218750 -74459.015625 -6105.587402 +v -70710.164062 -73941.109375 -8130.811035 +v -72320.914062 -73422.171875 -10153.934570 +v -73923.992188 -72899.929688 -12176.688477 +v -77009.101562 -71836.375000 -16228.015625 +v -60403.281250 -75482.578125 -2041.531128 +v -61298.253906 -75223.242188 -3059.195557 +v -62213.179688 -74964.929688 -4075.107422 +v -64089.980469 -74450.218750 -6102.616699 +v -66007.859375 -73936.109375 -8125.947754 +v -67941.007812 -73420.257812 -10146.988281 +v -69863.593750 -72900.335938 -12167.625977 +v -73573.812500 -71838.898438 -16215.248047 +v -75665.867188 -71174.679688 -18679.568359 +v -54983.519531 -75459.070312 -2041.178711 +v -56030.757812 -75202.273438 -3058.429688 +v -57098.097656 -74946.328125 -4073.793945 +v -59279.640625 -74435.789062 -6099.877930 +v -61501.292969 -73925.093750 -8121.463867 +v -63736.187500 -73411.890625 -10140.583984 +v -65957.460938 -72893.820312 -12159.271484 +v -70251.710938 -71833.632812 -16203.476562 +v -72686.468750 -71168.507812 -18666.435547 +v -74934.648438 -70481.601562 -21141.357422 +v -23226.505859 -75127.367188 -2039.484253 +v -25109.810547 -74888.046875 -3054.747559 +v -27009.035156 -74647.890625 -4067.479004 +v -30841.050781 -74164.062500 -6086.711426 +v -34694.140625 -73673.914062 -8099.908691 +v -19454.037109 -75054.156250 -2039.343506 +v -21427.109375 -74817.468750 -3054.441650 +v -23415.119141 -74579.718750 -4066.954590 +v -27421.917969 -74100.039062 -6085.617676 +v -31446.363281 -73613.242188 -8098.118164 +v -35460.390625 -73117.429688 -10107.240234 +v -15846.014648 -74974.257812 -2039.225830 +v -17902.187500 -74740.273438 -3054.185791 +v -19972.289062 -74505.000000 -4066.515869 +v -24140.455078 -74029.671875 -6084.703125 +v -28322.876953 -73546.484375 -8096.621094 +v -32491.916016 -73053.625000 -10105.101562 +v -36619.937500 -72549.296875 -12112.979492 +v -12394.541016 -74887.679688 -2039.130493 +v -14527.381836 -74656.453125 -3053.978516 +v -16673.136719 -74423.734375 -4066.160400 +v -20989.820312 -73952.960938 -6083.961914 +v -25317.458984 -73473.632812 -8095.407227 +v -29628.912109 -72984.039062 -10103.369141 +v -33897.046875 -72482.437500 -12110.717773 +v -42194.812500 -71436.343750 -16135.069336 +v -9092.082031 -74794.429688 -2039.056641 +v -11295.385742 -74566.023438 -3053.817871 +v -13510.605469 -74335.937500 -4065.885254 +v -17963.500000 -73869.914062 -6083.388184 +v -22424.187500 -73394.703125 -8094.467773 +v -26866.087891 -72908.671875 -10102.027344 +v -31262.623047 -72410.171875 -12108.967773 +v -39813.285156 -71369.164062 -16132.602539 +v -44769.355469 -70704.679688 -18587.365234 +v -5931.455078 -74694.578125 -2039.003540 +v -8199.244141 -74469.046875 -3053.702637 +v -10477.980469 -74241.671875 -4065.687500 +v -15055.301758 -73780.585938 -6082.976074 +v -19637.441406 -73309.742188 -8093.792969 +v -24198.423828 -72827.570312 -10101.062500 +v -28712.269531 -72332.515625 -12107.709961 +v -37494.644531 -71297.453125 -16130.831055 +v -42591.015625 -70636.164062 -18585.386719 +v -47456.972656 -69946.179688 -21057.156250 +v -2905.837891 -74588.187500 -2038.970459 +v -5232.354492 -74365.601562 -3053.630859 +v -7568.893066 -74141.007812 -4065.564209 +v -12259.365234 -73685.039062 -6082.719238 +v -16951.908203 -73218.796875 -8093.372559 +v -21621.179688 -72740.789062 -10100.462891 +v -26241.835938 -72249.523438 -12106.926758 +v -35235.921875 -71221.234375 -16129.727539 +v -40461.199219 -70563.726562 -18584.156250 +v -45457.808594 -69877.445312 -21055.876953 +v -51339.351562 -68970.734375 -24192.546875 +v -8.732517 -74475.382812 -2038.956665 +v -2388.433838 -74255.789062 -3053.601074 +v -4777.290527 -74034.039062 -4065.512939 +v -9570.124023 -73583.375000 -6082.612305 +v -14362.544922 -73121.968750 -8093.197754 +v -19129.863281 -72648.398438 -10100.212891 +v -23847.388672 -72161.257812 -12106.600586 +v -33034.304688 -71140.531250 -16129.267578 +v -38377.742188 -70487.382812 -18583.644531 +v -43494.839844 -69805.445312 -21055.343750 +v -49532.789062 -68904.351562 -24192.052734 +v -52359.234375 -68434.625000 -25773.951172 +v 40787.011719 -70797.328125 -2041.999023 +v 38254.363281 -70652.226562 -3060.212402 +v 35709.351562 -70504.640625 -4076.851074 +v 30589.906250 -70201.875000 -6106.252441 +v 42969.730469 -70403.601562 -2042.441650 +v 40485.828125 -70265.453125 -3061.174072 +v 37987.867188 -70124.960938 -4078.500488 +v 32957.312500 -69836.781250 -6109.691406 +v 27893.152344 -69538.804688 -8137.529785 +v 44970.980469 -70009.507812 -2042.885620 +v 42540.960938 -69878.242188 -3062.139160 +v 40095.285156 -69744.757812 -4080.155029 +v 35164.355469 -69471.031250 -6113.141602 +v 30192.992188 -69188.140625 -8143.177734 +v 25195.986328 -68895.890625 -10171.596680 +v 46801.343750 -69616.812500 -2043.325073 +v 44429.218750 -69492.320312 -3063.093994 +v 42040.035156 -69365.750000 -4081.792725 +v 37217.707031 -69106.273438 -6116.555664 +v 32348.806641 -68838.281250 -8148.767578 +v 27447.789062 -68561.671875 -10179.580078 +v 22529.101562 -68276.328125 -12210.147461 +v 48470.527344 -69227.015625 -2043.753784 +v 46159.187500 -69109.179688 -3064.025635 +v 43829.687500 -68989.390625 -4083.390381 +v 39123.214844 -68743.937500 -6119.887207 +v 34365.101562 -68490.617188 -8154.221191 +v 29569.351562 -68229.398438 -10187.370117 +v 24749.957031 -67960.273438 -12220.310547 +v 15096.228516 -67398.148438 -16289.475586 +v 49987.433594 -68841.359375 -2044.165771 +v 47738.652344 -68730.054688 -3064.920898 +v 45471.039062 -68616.921875 -4084.925781 +v 40886.007812 -68385.218750 -6123.088379 +v 36245.718750 -68146.304688 -8159.462402 +v 31563.560547 -67900.218750 -10194.855469 +v 26852.919922 -67647.031250 -12230.076172 +v 17399.730469 -67119.546875 -16303.235352 +v 11681.936523 -66786.039062 -18777.732422 +v 56414.449219 -66595.812500 -2045.974487 +v 54525.906250 -66521.539062 -3068.851562 +v 52631.089844 -66446.414062 -4091.666504 +v 48824.023438 -66293.750000 -6137.143066 +v 44996.011719 -66138.148438 -8182.471191 +v 41149.804688 -65979.937500 -10227.718750 +v 37288.164062 -65819.460938 -12272.951172 +v 29529.613281 -65493.000000 -16363.641602 +v 24808.402344 -65292.324219 -18845.125000 +v -52207.324219 -74922.093750 -4072.588867 +v -50996.574219 -75175.750000 -3057.727051 +v -47530.234375 -74892.000000 -4071.489502 +v -54674.988281 -74415.515625 -6097.365723 +v -57181.156250 -73907.953125 -8117.350586 +v -59698.179688 -73397.078125 -10134.708984 +v -62198.402344 -72880.515625 -12151.606445 +v -67037.828125 -71820.945312 -16192.677734 +v -69792.835938 -71154.671875 -18654.386719 +v -72351.679688 -70465.460938 -21128.841797 +v -75211.453125 -69560.968750 -24260.382812 +v -46043.492188 -74356.789062 -6092.995605 +v -45250.371094 -73819.093750 -8107.136719 +v -45055.769531 -73274.000000 -10116.224609 +v -45367.027344 -72717.328125 -12123.006836 +v -49749.089844 -71610.648438 -16146.886719 +v -51619.074219 -70886.687500 -18598.056641 +v -53687.714844 -70132.812500 -21065.761719 +v -56908.542969 -69155.609375 -24198.302734 +v -57593.914062 -68619.046875 -25777.560547 +v -58355.070312 -68068.039062 -27376.033203 +v -60143.460938 -67289.257812 -29671.474609 +v -50266.085938 -74389.226562 -6095.073242 +v -53038.312500 -73884.609375 -8113.598145 +v -55818.695312 -73375.820312 -10129.349609 +v -58579.027344 -72860.546875 -12144.614258 +v -63926.656250 -71801.226562 -16182.826172 +v -66980.562500 -71133.679688 -18643.396484 +v -69830.031250 -70442.179688 -21117.421875 +v -73041.523438 -69533.468750 -24249.767578 +v -74464.085938 -69060.398438 -25827.312500 +v 13953.176758 -72970.476562 -4067.350342 +v 12477.143555 -72265.468750 -6088.486816 +v 10692.596680 -71559.585938 -8106.718750 +v 8695.667969 -70856.218750 -10125.785156 +v 6561.238770 -70159.468750 -12148.883789 +v -812.083435 -69079.156250 -16202.264648 +v -4049.300293 -68329.523438 -18680.789062 +v -7225.744141 -67604.687500 -21173.113281 +v -11780.762695 -66790.117188 -24317.470703 +v -12575.667969 -66309.117188 -25897.673828 +v -13343.169922 -65856.859375 -27492.111328 +v -15438.448242 -65330.015625 -29746.457031 +v 8676.449219 -72567.906250 -6086.443359 +v 3408.024658 -72152.648438 -8099.469238 +v -1832.445801 -71723.765625 -10109.169922 +v -7025.309082 -71280.343750 -12118.287109 +v -49064.128906 -73854.992188 -8110.196777 +v -48504.746094 -73314.203125 -10120.121094 +v -48492.679688 -72762.242188 -12127.490234 +v -52415.406250 -71659.625000 -16152.382812 +v -54015.726562 -70939.562500 -18603.300781 +v -55848.210938 -70188.570312 -21070.318359 +v -58817.980469 -69212.609375 -24201.736328 +v -59378.015625 -68676.789062 -25780.076172 +v -60024.718750 -68125.531250 -27377.458984 +v -61669.417969 -67344.148438 -29671.992188 +v -52090.011719 -73348.171875 -10124.491211 +v -55092.562500 -72834.054688 -12138.276367 +v -60913.371094 -71774.835938 -16173.896484 +v -64245.984375 -71106.031250 -18633.433594 +v -67367.117188 -70412.390625 -21107.072266 +v -70908.820312 -69499.875000 -24240.142578 +v -72491.273438 -69024.523438 -25818.542969 +v -73935.500000 -68533.757812 -27410.669922 +v 7164.462402 -71863.578125 -8102.815430 +v 5381.270020 -71158.312500 -10119.524414 +v 3414.550049 -70456.078125 -12139.963867 +v -3836.607422 -69349.125000 -16188.840820 +v -6978.473633 -68581.617188 -18665.083984 +v -10083.533203 -67835.132812 -21156.271484 +v -14592.220703 -66988.210938 -24301.542969 +v -15352.125977 -66489.656250 -25883.568359 +v -16099.730469 -66018.304688 -27480.308594 +v -18199.453125 -65462.593750 -29739.736328 +v 1877.057983 -71448.132812 -10113.949219 +v -3366.424561 -71018.328125 -12124.521484 +v -13647.045898 -70112.335938 -16154.517578 +v -88051.945312 -71777.296875 -16272.558594 +v -85157.843750 -71141.281250 -18725.753906 +v -83081.023438 -70480.500000 -21185.787109 +v -81960.812500 -69599.132812 -24298.462891 +v -80552.789062 -69130.093750 -25859.068359 +v -79440.515625 -68632.265625 -27434.460938 +v -78925.835938 -67890.320312 -29701.021484 +v -51732.539062 -72801.218750 -12132.574219 +v -55162.156250 -71703.617188 -16158.700195 +v -56473.683594 -70988.445312 -18609.431641 +v -58053.640625 -70241.148438 -21075.765625 +v -60755.664062 -69267.359375 -24205.972656 +v -61182.863281 -68732.750000 -25783.287109 +v -61708.648438 -68181.718750 -27379.443359 +v -63201.957031 -67398.406250 -29672.824219 +v -57993.386719 -71742.156250 -16165.862305 +v -61585.625000 -71072.250000 -18624.470703 +v -64960.496094 -70376.734375 -21097.759766 +v -68812.031250 -69460.945312 -24231.486328 +v -70545.250000 -68983.679688 -25810.640625 +v -72138.148438 -68490.742188 -27404.208984 +v 109.079369 -70742.976562 -12131.794922 +v -6979.289062 -69612.304688 -16176.273438 +v -10003.070312 -68829.046875 -18650.107422 +v -13016.628906 -68062.648438 -21139.953125 +v -17456.046875 -67184.828125 -24285.884766 +v -18169.136719 -66669.531250 -25869.511719 +v -18885.343750 -66179.664062 -27468.382812 +v -20974.445312 -65595.312500 -29732.849609 +v -10246.772461 -69867.203125 -16164.765625 +v -16356.836914 -69304.734375 -18623.246094 +v -88522.304688 -71110.601562 -18743.507812 +v -88876.453125 -70430.312500 -21221.429688 +v -89105.703125 -69551.546875 -24346.462891 +v -89111.523438 -69100.242188 -25915.035156 +v -58995.949219 -71032.875000 -18616.480469 +v -60306.042969 -70290.437500 -21082.136719 +v -62722.707031 -69319.929688 -24211.039062 +v -63009.195312 -68786.984375 -25787.218750 +v -63407.296875 -68236.664062 -27382.005859 +v -64741.226562 -67452.125000 -29673.982422 +v -13127.439453 -69070.507812 -18636.085938 +v -16027.878906 -68286.179688 -21124.394531 +v -20374.042969 -67379.203125 -24270.712891 +v -21028.064453 -66848.171875 -25855.697266 +v -21701.083984 -66340.500000 -27456.494141 +v -23763.958984 -65727.976562 -29725.888672 +v -86676.421875 -69578.664062 -24329.316406 +v -85940.289062 -70460.898438 -21202.986328 +v -84294.757812 -69594.226562 -24313.324219 +v -86920.265625 -69124.085938 -25899.509766 +v -87069.242188 -68658.718750 -27477.222656 +v -82642.859375 -69137.867188 -25871.550781 +v -81315.656250 -68652.070312 -27443.927734 +v -80542.054688 -67922.734375 -29706.091797 +v -84763.765625 -69136.296875 -25885.023438 +v -85128.031250 -68666.523438 -27465.289062 +v -66749.632812 -69417.460938 -24223.767578 +v -62607.585938 -70335.867188 -21089.458984 +v -64720.277344 -69370.179688 -24216.960938 +v -68624.929688 -68938.695312 -25803.582031 +v -70358.585938 -68444.062500 -27398.447266 +v -72544.242188 -67714.421875 -29685.074219 +v -64857.765625 -68839.570312 -25791.894531 +v -65121.128906 -68290.421875 -27385.166016 +v -66287.382812 -67505.398438 -29675.476562 +v -66729.382812 -68890.367188 -25797.341797 +v -68596.242188 -68394.546875 -27393.367188 +v -70968.828125 -67663.242188 -29682.109375 +v -35859.882812 -68291.492188 -24209.794922 +v -28932.478516 -69119.593750 -21074.429688 +v -32633.554688 -68119.367188 -24219.261719 +v -39159.289062 -67860.570312 -25788.867188 +v -42359.824219 -67414.867188 -27388.019531 +v -46682.812500 -66760.343750 -29678.986328 +v -32915.652344 -67538.250000 -25806.781250 +v -33288.746094 -66969.757812 -27412.582031 +v -35080.183594 -66253.476562 -29699.220703 +v -36010.460938 -67701.757812 -25797.117188 +v -39296.632812 -67269.843750 -27395.083984 +v -43752.652344 -66635.992188 -29683.111328 +v -23348.259766 -67570.585938 -24256.248047 +v -19120.681641 -68504.664062 -21109.828125 +v -23930.410156 -67024.960938 -25842.322266 +v -24548.058594 -66500.390625 -27444.808594 +v 11195.573242 -64709.179688 -25995.253906 +v -83802.187500 -67967.367188 -29717.609375 +v -83211.648438 -68663.851562 -27454.197266 +v -82167.664062 -67948.734375 -29711.617188 +v -69401.015625 -67610.960938 -29679.529297 +v -66850.609375 -68343.101562 -27388.947266 +v -67840.593750 -67558.304688 -29677.322266 +v -40842.703125 -66509.968750 -29687.919922 +v -36273.550781 -67121.351562 -27403.326172 +v -37952.140625 -66382.406250 -29693.322266 +v 8217.055664 -64581.320312 -27563.275391 +v 59470.144531 -65931.281250 1000.000000 +v 58801.136719 -65585.625000 1564.166260 +v 57684.011719 -65871.070312 2000.000000 +v 55990.375000 -65494.085938 3129.378418 +v 54111.742188 -65750.648438 4000.000000 +v 53169.757812 -65402.601562 4695.553711 +v 52325.609375 -65690.437500 5000.000000 +v 50539.476562 -65630.234375 6000.000000 +v 50340.136719 -65311.156250 6262.608887 +v 48753.343750 -65570.023438 7000.000000 +v 47502.363281 -65219.726562 7830.460449 +v 46967.207031 -65509.812500 8000.000000 +v 45181.074219 -65449.601562 9000.000000 +v 44657.292969 -65128.300781 9399.026367 +v 43394.941406 -65389.394531 10000.000000 +v 41779.789062 -65036.023438 10982.511719 +v 41608.808594 -65329.183594 11000.000000 +v 39822.671875 -65268.972656 12000.000000 +v 38948.671875 -64945.378906 12537.966797 +v 38036.539062 -65208.765625 13000.000000 +v 36250.406250 -65148.554688 14000.000000 +v 34945.574219 -64817.367188 14733.839844 +v 32678.138672 -65028.136719 16000.000000 +v 30935.541016 -64689.207031 16930.394531 +v 29105.871094 -64907.718750 18000.000000 +v 26920.908203 -64560.847656 19127.404297 +v 25533.603516 -64787.296875 20000.000000 +v 22904.011719 -64432.246094 21324.640625 +v 21961.335938 -64666.878906 22000.000000 +v 19115.566406 -64310.683594 23396.927734 +v 18389.070312 -64546.460938 24000.000000 +v 15329.138672 -64188.824219 25469.025391 +v 14816.801758 -64426.042969 26000.000000 +v 12346.712891 -64092.511719 27102.357422 +v 11244.535156 -64305.621094 28000.000000 +v 9367.715820 -63995.964844 28735.359375 +v 7672.267578 -64185.203125 30000.000000 +v 6393.106934 -63899.167969 30367.937500 +v 2673.822266 -63590.429688 32000.000000 +v 4724.821289 -63444.730469 30367.242188 +v 1207.875488 -63253.371094 32000.000000 +v 3849.331055 -63219.421875 30366.908203 +v -231.520050 -62914.761719 32000.000000 +v 2937.210693 -62991.957031 30366.597656 +v -1186.467896 -62694.910156 32000.000000 +v 1692.278320 -62691.316406 30366.308594 +v -2277.437012 -62443.992188 32000.000000 +v 307.237946 -62361.597656 30366.041016 +v -2287.216309 -61762.812500 30365.566406 +v 1105.267334 -61816.714844 28726.384766 +v -1527.380493 -61205.214844 28724.890625 +v 2014.650635 -61243.128906 27080.138672 +v -612.029968 -60632.996094 27077.564453 +v 3082.291992 -60655.152344 25427.603516 +v 409.394470 -60037.589844 25424.240234 +v 5291.666504 -60044.851562 23325.550781 +v 3936.498291 -59727.523438 23323.404297 +v 8970.901367 -59723.535156 21221.460938 +v 7600.606445 -59395.132812 21218.923828 +v 13050.817383 -59377.960938 18989.523438 +v 11651.832031 -59035.832031 18986.812500 +v 17148.878906 -59004.023438 16759.822266 +v 15699.091797 -58645.593750 16757.232422 +v 21162.546875 -58597.000000 14535.958984 +v 19635.380859 -58219.667969 14533.770508 +v 24974.937500 -58151.855469 12321.578125 +v 23340.072266 -57753.066406 12320.012695 +v 26999.310547 -57689.984375 10756.664062 +v 25235.080078 -57272.828125 10755.691406 +v 30575.908203 -57623.441406 9178.529297 +v 28784.035156 -57192.730469 9177.722656 +v 32140.425781 -57110.250000 7619.519043 +v 30183.972656 -56658.992188 7619.459961 +v 33300.492188 -56559.042969 6071.159180 +v 31158.285156 -56086.421875 6071.721680 +v 33990.058594 -55968.207031 4534.385742 +v 31643.708984 -55473.847656 4535.356445 +v 34147.558594 -55336.914062 3009.944824 +v 31582.667969 -54820.929688 3011.020752 +v 33718.292969 -54665.226562 1498.376587 +v 30925.605469 -54128.234375 1499.160400 +v 59398.578125 -64800.667969 1551.651978 +v 56577.417969 -64721.968750 3106.864990 +v 53721.167969 -64645.535156 4665.356445 +v 50832.917969 -64571.054688 6226.842773 +v 47915.761719 -64498.210938 7791.042480 +v 44972.789062 -64426.691406 9357.671875 +v 41980.558594 -64355.558594 10940.442383 +v 41961.332031 -64010.593750 10920.283203 +v 39021.757812 -64286.371094 12497.088867 +v 38943.882812 -63952.535156 12477.515625 +v 34820.054688 -64189.316406 14696.044922 +v 34650.378906 -63871.472656 14677.948242 +v 30594.460938 -64092.152344 16897.320312 +v 30324.734375 -63790.300781 16881.484375 +v 26353.429688 -63994.011719 19100.142578 +v 25978.562500 -63707.796875 19087.089844 +v 22105.416016 -63894.039062 21303.738281 +v 21623.464844 -63622.742188 21293.730469 +v 18100.179688 -63797.304688 23382.033203 +v 17518.294922 -63539.082031 23374.902344 +v 14103.345703 -63697.457031 25459.679688 +v 13425.252930 -63451.039062 25455.205078 +v 10962.907227 -63616.070312 27096.763672 +v 10213.326172 -63377.863281 27094.085938 +v 7835.573730 -63531.945312 28732.724609 +v 7019.761230 -63300.828125 28731.462891 +v 59545.554688 -64399.562500 1545.659912 +v 56724.757812 -64328.183594 3096.084961 +v 53856.121094 -64260.058594 4650.896973 +v 50943.886719 -64194.734375 6209.717285 +v 47992.300781 -64131.769531 7772.167969 +v 45005.609375 -64070.710938 9337.870117 +v 41850.222656 -63670.160156 10901.471680 +v 38777.007812 -63622.449219 12459.259766 +v 34396.003906 -63556.179688 14661.069336 +v 29974.982422 -63489.769531 16866.712891 +v 25528.820312 -63421.722656 19074.916016 +v 21072.396484 -63350.523438 21284.396484 +v 16873.371094 -63279.136719 23368.250000 +v 12690.933594 -63202.355469 25451.031250 +v 9413.470703 -63137.187500 27091.587891 +v 6160.191406 -63067.261719 28730.285156 +v 59583.468750 -64004.878906 1540.071167 +v 56766.066406 -63941.000000 3086.030762 +v 53887.945312 -63881.121094 4637.411133 +v 50954.546875 -63824.691406 6193.744629 +v 47971.312500 -63771.156250 7754.563965 +v 44943.687500 -63719.972656 9319.401367 +v 41568.500000 -63313.359375 10883.972656 +v 38421.960938 -63270.484375 12442.289062 +v 33927.468750 -63210.816406 14645.378906 +v 29384.779297 -63150.792969 16852.982422 +v 24813.312500 -63088.980469 19063.599609 +v 20232.486328 -63023.941406 21275.718750 +v 15921.050781 -62958.347656 23362.066406 +v 11634.860352 -62887.402344 25447.152344 +v 8284.203125 -62826.906250 27089.265625 +v 4967.348145 -62761.738281 28729.191406 +v 59514.035156 -63614.292969 1534.875854 +v 59341.128906 -63226.222656 1530.064209 +v 58693.265625 -62451.050781 1521.552246 +v 57636.753906 -61664.574219 1514.455933 +v 56154.539062 -60854.472656 1508.696411 +v 54216.765625 -60011.484375 1504.194336 +v 53065.472656 -59575.679688 1502.390259 +v 51785.789062 -59129.671875 1500.870728 +v 50419.128906 -59600.847656 3018.241455 +v 49174.601562 -59165.789062 3015.508057 +v 47541.527344 -59622.824219 4546.484863 +v 46319.957031 -59198.250000 4542.818359 +v 44456.390625 -59641.859375 6086.051758 +v 43246.953125 -59227.355469 6081.708984 +v 41187.437500 -59658.203125 7635.873047 +v 39980.707031 -59253.402344 7631.086914 +v 37758.386719 -59672.097656 9194.879883 +v 36546.316406 -59276.699219 9189.858398 +v 32941.535156 -59297.691406 10768.736328 +v 31616.732422 -58905.242188 10764.423828 +v 29273.544922 -59316.230469 12331.210938 +v 27938.716797 -58933.558594 12327.145508 +v 23955.941406 -59339.332031 14542.676758 +v 22601.904297 -58970.246094 14538.917969 +v 18525.480469 -59359.632812 16763.111328 +v 50372.511719 -58673.191406 1499.626221 +v 47799.925781 -58720.765625 3013.268799 +v 44972.589844 -58764.304688 4539.815430 +v 41916.906250 -58804.156250 6078.152344 +v 38659.281250 -58840.664062 7627.166504 +v 35226.105469 -58874.171875 9185.746094 +v 30187.054688 -58506.414062 10760.997070 +v 26506.882812 -58545.414062 12323.945312 +v 48820.484375 -58206.136719 1498.646484 +v 46289.976562 -58265.660156 3011.506348 +v 43494.433594 -58320.871094 4537.451172 +v 40461.453125 -58372.144531 6075.352051 +v 37218.617188 -58419.863281 7624.080566 +v 33793.515625 -58464.394531 9182.507812 +v 28648.986328 -58101.269531 10758.420898 +v 47124.773438 -57728.578125 1497.921875 +v 44639.871094 -57800.531250 3010.202881 +v 41880.746094 -57868.000000 4535.702637 +v 38876.058594 -57931.371094 6073.281250 +v 35654.472656 -57991.046875 7621.798340 +v 32244.648438 -58047.421875 9180.113281 +v 45280.785156 -57240.738281 1497.442383 +v 42845.066406 -57325.593750 3009.340332 +v 40127.109375 -57405.890625 4534.545898 +v 37156.527344 -57482.027344 6071.911133 +v 33962.921875 -57554.410156 7620.288086 +v 43284.425781 -56742.992188 1497.198242 +v 41132.218750 -56235.859375 1497.179443 +v 38821.472656 -55719.984375 1497.376221 +v 36350.406250 -55196.144531 1497.778442 +v 27974.152344 -53586.261719 1500.120239 +v 24867.218750 -53040.515625 1501.246094 +v 21609.718750 -52492.265625 1502.528076 +v 18208.320312 -51942.875000 1503.956421 +v 11009.469727 -50846.417969 1507.212280 +v 3357.714844 -49763.128906 1510.934570 +v -4639.153809 -48705.500000 1515.044189 +v -12858.987305 -47686.117188 1519.462036 +v -29445.669922 -45810.585938 1528.905884 +v -37554.105469 -44976.589844 1533.773682 +v -45381.484375 -44224.363281 1538.633179 +v -52829.941406 -43561.109375 1543.405396 +v -59825.601562 -42991.773438 1548.011108 +v -63138.343750 -42743.167969 1550.226807 +v -66323.078125 -42518.742188 1552.371338 +v -69378.335938 -42318.421875 1554.434570 +v -72304.070312 -42142.003906 1556.406738 +v -75101.554688 -41989.167969 1558.278076 +v -71977.437500 -42736.476562 3115.418945 +v -74718.093750 -42594.226562 3118.785400 +v -71663.156250 -43339.968750 4676.829590 +v -74342.914062 -43207.621094 4681.345215 +v -71360.609375 -43951.347656 6240.432129 +v -73975.734375 -43828.316406 6245.780273 +v -71069.140625 -44569.492188 7806.019531 +v -73616.296875 -44455.261719 7811.913574 +v -70788.117188 -45193.269531 9373.384766 +v -73264.335938 -45087.421875 9379.568359 +v -72918.359375 -45726.066406 10954.241211 +v -75228.609375 -45647.109375 10959.960938 +v -72581.796875 -46363.226562 12518.733398 +v -74823.968750 -46291.207031 12524.483398 +v -72120.585938 -47260.726562 14716.056641 +v -74264.695312 -47198.070312 14721.374023 +v -71671.726562 -48159.468750 16914.833984 +v -73715.445312 -48106.078125 16919.486328 +v -71234.500000 -49056.613281 19114.578125 +v -73176.257812 -49012.664062 19118.412109 +v -70808.179688 -49949.308594 21314.806641 +v -72647.156250 -49915.246094 21317.746094 +v -70415.453125 -50784.605469 23389.919922 +v -72157.421875 -50760.511719 23392.015625 +v -70031.179688 -51611.023438 25464.626953 +v -71676.718750 -51597.761719 25465.941406 +v -69733.789062 -52254.734375 27099.724609 +v -71304.132812 -52250.761719 27100.511719 +v -69440.984375 -52890.273438 28734.119141 +v -70937.187500 -52896.371094 28734.490234 +v -69152.460938 -53516.472656 30367.611328 +v -70575.898438 -53533.539062 30367.708984 +v -68431.101562 -54124.476562 32000.000000 +v -73409.265625 -53590.851562 30367.882812 +v -76223.289062 -53685.632812 30368.027344 +v -76823.671875 -53010.484375 28735.697266 +v -79704.281250 -53145.871094 28736.107422 +v -80395.664062 -52452.601562 27103.945312 +v -83295.742188 -52653.230469 27104.492188 +v -84052.757812 -51946.300781 25472.593750 +v -86929.007812 -52233.128906 25472.912109 +v -87945.039062 -51320.281250 23403.123047 +v -88581.867188 -51395.183594 23403.123047 +v -89613.148438 -50478.414062 21333.333984 +v -90313.203125 -50560.410156 21333.333984 +v -91435.531250 -49583.019531 19138.742188 +v -93047.507812 -49770.375000 19138.742188 +v -94259.656250 -48779.421875 16944.150391 +v -96158.484375 -49001.984375 16944.150391 +v -97492.203125 -47995.605469 14749.559570 +v -99672.828125 -48257.152344 14749.559570 +v -101143.429688 -47239.000000 12554.968750 +v -103579.242188 -47549.066406 12554.968750 +v -104727.367188 -46820.406250 10988.872070 +v -107335.703125 -47196.511719 10988.737305 +v -105867.929688 -46096.199219 9416.226562 +v -108581.117188 -46470.785156 9416.226562 +v -109803.640625 -45759.726562 7846.855469 +v -112622.375000 -46219.757812 7846.855469 +v -113914.523438 -45534.167969 6277.484375 +v -116760.859375 -46099.195312 6277.484375 +v -118105.773438 -45456.949219 4708.113281 +v -120907.523438 -46161.578125 4708.113281 +v -122283.796875 -45582.074219 3138.742188 +v -124964.250000 -46472.039062 3138.742188 +v -126352.398438 -45976.207031 1569.371094 +v -128846.742188 -47108.531250 1569.371094 +v -77773.203125 -41859.484375 1560.038452 +v -77336.703125 -42474.613281 3121.952393 +v -76905.242188 -43097.300781 4685.593262 +v -76478.835938 -43726.613281 6250.811523 +v -76057.492188 -44361.601562 7817.458984 +v -75641.226562 -45001.324219 9385.385742 +v -79582.937500 -45543.539062 10970.158203 +v -79063.132812 -46198.820312 12534.769531 +v -78338.453125 -47120.496094 14730.883789 +v -77619.945312 -48043.074219 16927.808594 +v -76908.460938 -48964.601562 19125.271484 +v -76204.843750 -49883.121094 21323.005859 +v -75549.218750 -50744.890625 23395.761719 +v -74902.062500 -51600.601562 25468.292969 +v -74398.289062 -52269.875000 27101.919922 +v -73900.578125 -52933.562500 28735.154297 +v -82753.710938 -41667.421875 1563.187256 +v -82222.351562 -42301.074219 3127.617188 +v -81691.851562 -42940.480469 4693.191406 +v -81162.523438 -43584.929688 6259.811035 +v -80634.671875 -44233.703125 7827.376953 +v -80108.617188 -44886.085938 9395.791016 +v -83605.593750 -45510.941406 10978.479492 +v -82995.890625 -46174.601562 12543.218750 +v -82142.734375 -47107.058594 14738.696289 +v -81292.914062 -48040.121094 16934.644531 +v -80447.367188 -48972.511719 19130.906250 +v -79607.062500 -49902.960938 21327.326172 +v -78820.203125 -50777.562500 23398.841797 +v -78039.648438 -51648.234375 25470.224609 +v -77429.257812 -52331.175781 27103.076172 +v -87283.093750 -41560.769531 1565.774048 +v -86671.531250 -42210.945312 3132.270996 +v -86059.093750 -42864.878906 4699.433594 +v -85446.117188 -43522.101562 6267.204102 +v -84832.960938 -44182.152344 7835.524902 +v -84219.976562 -44844.566406 9404.339844 +v -87330.429688 -45550.019531 10984.660156 +v -86652.218750 -46221.039062 12549.574219 +v -85701.765625 -47162.886719 14744.572266 +v -84752.726562 -48105.046875 16939.787109 +v -83805.734375 -49046.875000 19135.144531 +v -82861.437500 -49987.726562 21330.574219 +v -81973.875000 -50873.601562 23401.156250 +v -81089.820312 -51757.503906 25471.677734 +v -91408.804688 -41533.570312 1567.719604 +v -90731.140625 -42198.695312 3135.771240 +v -90052.468750 -42865.714844 4704.128418 +v -89373.031250 -43534.394531 6272.764648 +v -88693.054688 -44204.503906 7841.653809 +v -88012.765625 -44875.804688 9410.769531 +v -90795.203125 -45661.347656 10988.436523 +v -90065.546875 -46340.621094 12553.577148 +v -89042.554688 -47293.300781 14748.273438 +v -88019.890625 -48246.070312 16943.025391 +v -86997.781250 -49198.746094 19137.814453 +v -85976.445312 -50151.156250 21332.621094 +v -85014.078125 -51049.000000 23402.615234 +v -95183.945312 -41579.230469 1568.945068 +v -94453.578125 -42258.183594 3137.975830 +v -93722.804688 -42937.660156 4707.085449 +v -92991.695312 -43617.593750 6276.266602 +v -92260.343750 -44297.921875 7845.513672 +v -91528.812500 -44978.578125 9414.818359 +v -94038.671875 -45845.468750 10989.544922 +v -93270.226562 -46535.871094 12554.968750 +v -92192.937500 -47503.761719 14749.559570 +v -91115.648438 -48471.652344 16944.150391 +v -90038.351562 -49439.542969 19138.742188 +v -88961.062500 -50407.433594 21333.333984 +v -98662.890625 -41690.847656 1569.371094 +v -97892.507812 -42382.992188 3138.742188 +v -97122.125000 -43075.140625 4708.113281 +v -96351.750000 -43767.285156 6277.484375 +v -95581.367188 -44459.433594 7846.855469 +v -94810.984375 -45151.578125 9416.226562 +v -94769.820312 -45895.472656 10989.477539 +v -93989.507812 -46589.019531 12554.968750 +v -95606.257812 -45952.066406 10989.410156 +v -94805.609375 -46649.316406 12554.968750 +v -97547.007812 -46091.437500 10989.276367 +v -96684.656250 -46797.156250 12554.968750 +v -99768.390625 -46276.164062 10989.141602 +v -98823.156250 -46990.738281 12554.968750 +v -102185.875000 -46516.464844 10989.006836 +v -100398.507812 -41769.171875 1569.371094 +v -99458.617188 -41725.371094 1569.371094 +v -102644.484375 -41892.554688 1569.371094 +v -105273.101562 -42076.621094 1569.371094 +v -108170.312500 -42334.812500 1569.371094 +v -111238.453125 -42677.074219 1569.371094 +v -114392.820312 -43110.515625 1569.371094 +v -117555.273438 -43641.820312 1569.371094 +v -113300.382812 -43737.269531 3138.742188 +v -116386.695312 -44241.203125 3138.742188 +v -112168.132812 -44389.820312 4708.113281 +v -115171.203125 -44873.316406 4708.113281 +v -111000.929688 -45065.023438 6277.484375 +v -120649.757812 -44281.390625 1569.371094 +v -119404.226562 -44849.406250 3138.742188 +v -123603.539062 -45048.695312 1569.371094 +v -131055.203125 -48490.820312 1569.371094 +v -127392.085938 -47561.320312 3138.742188 +v -129535.289062 -48893.835938 3138.742188 +v -125880.937500 -48070.000000 4708.113281 +v -127958.375000 -49352.718750 4708.113281 +v -124320.195312 -48627.746094 6277.484375 +v -126331.414062 -49860.656250 6277.484375 +v -122716.742188 -49227.746094 7846.855469 +v -124661.367188 -50410.828125 7846.855469 +v -121077.476562 -49863.171875 9416.226562 +v -122955.179688 -50996.417969 9416.226562 +v -121217.218750 -51611.539062 10987.929688 +v -122810.687500 -52911.695312 10987.794922 +v -121008.632812 -53481.855469 12554.968750 +v -122343.203125 -54913.414062 12554.968750 +v -118462.062500 -54302.707031 14749.560547 +v -119761.421875 -55622.429688 14749.560547 +v -115905.085938 -55133.675781 16944.150391 +v -117170.164062 -56340.582031 16944.150391 +v -113355.968750 -55957.007812 19138.742188 +v -114586.062500 -57051.835938 19138.742188 +v -110832.953125 -56754.949219 21333.333984 +v -112025.726562 -57740.160156 21333.333984 +v -108493.734375 -57468.292969 23403.123047 +v -109647.726562 -58353.921875 23403.123047 +v -106209.289062 -58128.367188 25472.912109 +v -107319.593750 -58919.578125 25472.912109 +v -104456.929688 -58601.441406 27104.683594 +v -105528.453125 -59322.800781 27104.683594 +v -102755.625000 -59024.859375 28736.455078 +v -103783.804688 -59681.175781 28736.455078 +v -101112.875000 -59391.316406 30368.228516 +v -102092.492188 -59988.113281 30368.228516 +v -100123.773438 -60028.492188 32000.000000 +v -101445.851562 -60931.210938 32000.000000 +v -103021.085938 -60654.750000 30368.228516 +v -103919.679688 -61442.007812 30368.228516 +v -105675.328125 -61254.117188 28736.455078 +v -106297.820312 -61908.121094 28736.455078 +v -108097.078125 -61741.335938 27104.683594 +v -108563.257812 -62345.195312 27104.683594 +v -110380.531250 -62216.125000 25472.912109 +v -110763.296875 -62891.656250 25472.912109 +v -113059.187500 -62779.238281 23403.123047 +v -113212.710938 -63390.707031 23403.123047 +v -115481.335938 -63336.703125 21333.333984 +v -115465.812500 -63790.730469 21333.333984 +v -117839.898438 -63786.125000 19138.742188 +v -117796.992188 -64038.250000 19138.742188 +v -120153.914062 -64054.535156 16944.150391 +v -120071.710938 -64350.367188 16944.150391 +v -122414.640625 -64377.324219 14749.560547 +v -122239.109375 -64834.406250 14749.560547 +v -124561.687500 -64874.550781 12554.968750 +v -124337.281250 -65301.394531 12554.968750 +v -126221.375000 -64903.074219 10986.660156 +v -125976.695312 -65348.382812 10986.586914 +v -127883.351562 -64931.484375 9416.226562 +v -127618.492188 -65394.527344 9416.226562 +v -129260.023438 -65439.562500 7846.855469 +v -128709.437500 -66207.796875 7846.855469 +v -130321.500000 -66268.640625 6277.484375 +v -129641.062500 -67016.757812 6277.484375 +v -131232.984375 -67090.351562 4708.113281 +v -130378.117188 -67877.375000 4708.113281 +v -131954.937500 -67972.960938 3138.742188 +v -131125.859375 -68654.140625 3138.742188 +v -132702.640625 -68773.601562 1569.371094 +v -131740.093750 -69519.031250 1569.371094 +v -132959.171875 -50148.054688 1569.371094 +v -134541.156250 -52064.316406 1569.371094 +v -135784.000000 -54174.179688 1569.371094 +v -136674.046875 -56367.109375 1569.371094 +v -137155.890625 -58227.171875 1569.371094 +v -137375.843750 -59960.402344 1569.371094 +v -137353.093750 -61510.164062 1569.371094 +v -137124.171875 -62846.097656 1569.371094 +v -136827.828125 -63770.800781 1569.371094 +v -136659.046875 -64174.882812 1569.371094 +v -135137.140625 -63765.855469 3138.742188 +v -134975.703125 -64161.320312 3138.742188 +v -133444.781250 -63762.886719 4708.113281 +v -133291.875000 -64148.183594 4708.113281 +v -131750.921875 -63761.656250 6277.484375 +v -131607.656250 -64135.421875 6277.484375 +v -130055.773438 -63761.921875 7846.855469 +v -129923.078125 -64122.980469 7846.855469 +v -128359.562500 -63763.445312 9416.226562 +v -128238.203125 -64110.808594 9416.226562 +v -126551.820312 -64098.843750 10986.781250 +v -126431.804688 -64423.539062 10986.733398 +v -124757.570312 -64404.277344 12554.968750 +v -136485.718750 -64539.214844 1569.371094 +v -136192.406250 -65070.351562 1569.371094 +v -135843.046875 -65605.437500 1569.371094 +v -134529.578125 -65043.058594 3138.742188 +v -134193.828125 -65566.460938 3138.742188 +v -132867.375000 -65015.503906 4708.113281 +v -132547.234375 -65525.707031 4708.113281 +v -131205.687500 -64987.707031 6277.484375 +v -130902.781250 -65483.351562 6277.484375 +v -129544.382812 -64959.695312 7846.855469 +v -135187.781250 -66441.960938 1569.371094 +v -133559.484375 -66385.812500 3138.742188 +v -131937.781250 -66328.007812 4708.113281 +v -134442.984375 -67237.437500 1569.371094 +v -132833.000000 -67163.835938 3138.742188 +v -133545.281250 -68069.937500 1569.371094 +v -130021.359375 -70756.804688 1569.371094 +v -127956.609375 -72157.078125 1569.371094 +v -126779.523438 -72933.031250 1569.371094 +v -126460.187500 -71893.070312 3138.742188 +v -125304.453125 -72630.882812 3138.742188 +v -124978.351562 -71632.898438 4708.113281 +v -123843.226562 -72332.101562 4708.113281 +v -123508.015625 -71375.710938 6277.484375 +v -122393.023438 -72035.937500 6277.484375 +v -122046.109375 -71120.664062 7846.855469 +v -120951.039062 -71741.671875 7846.855469 +v -120589.546875 -70866.914062 9416.226562 +v -119514.460938 -71448.546875 9416.226562 +v -118080.312500 -71155.804688 10985.787109 +v -116893.484375 -71730.820312 10985.723633 +v -116646.296875 -70862.804688 12554.968750 +v -115472.804688 -71393.781250 12554.968750 +v -114635.070312 -70451.085938 14749.560547 +v -113481.898438 -70920.984375 14749.560547 +v -112610.257812 -70035.273438 16944.150391 +v -111480.796875 -70445.101562 16944.150391 +v -110564.195312 -69613.359375 19138.742188 +v -109463.500000 -69964.578125 19138.742188 +v -108489.187500 -69183.320312 21333.333984 +v -107424.000000 -69477.859375 21333.333984 +v -106498.765625 -68768.484375 23403.123047 +v -105474.742188 -69011.750000 23403.123047 +v -104469.335938 -68342.945312 25472.912109 +v -103495.351562 -68537.453125 25472.912109 +v -102837.648438 -67998.796875 27104.683594 +v -101910.304688 -68156.898438 27104.683594 +v -101174.562500 -67646.117188 28736.455078 +v -100300.937500 -67769.812500 28736.455078 +v -99476.898438 -67284.070312 30368.228516 +v -98664.773438 -67375.546875 30368.228516 +v -98826.820312 -66784.500000 32000.000000 +v -97344.468750 -66946.773438 32000.000000 +v -97704.093750 -67462.812500 30368.228516 +v -95229.929688 -67083.078125 32000.000000 +v -98825.609375 -68208.914062 28000.000000 +v -99264.593750 -67889.492188 28736.455078 +v -100810.164062 -68312.054688 27104.683594 +v -125496.390625 -73768.523438 1569.371094 +v -124042.328125 -73424.257812 3138.742188 +v -122599.296875 -73082.609375 4708.113281 +v -121165.101562 -72743.015625 6277.484375 +v -119737.554688 -72404.898438 7846.855469 +v -118314.453125 -72067.703125 9416.226562 +v -115566.500000 -72343.476562 10985.661133 +v -114151.242188 -71957.156250 12554.968750 +v -112169.703125 -71416.117188 14749.560547 +v -110182.390625 -70873.351562 16944.150391 +v -108185.953125 -70327.953125 19138.742188 +v -106177.070312 -69779.031250 21333.333984 +v -104268.031250 -69257.289062 23403.123047 +v -102342.164062 -68730.867188 25472.912109 +v -124100.289062 -74670.906250 1569.371094 +v -120399.726562 -74963.898438 4000.000000 +v -122666.929688 -74280.250000 3138.742188 +v -116804.046875 -73838.070312 8000.000000 +v -119817.148438 -73503.226562 6277.484375 +v -121239.617188 -73891.132812 4708.113281 +v -113208.359375 -72712.234375 12000.000000 +v -116981.828125 -72729.734375 9416.226562 +v -118398.289062 -73116.203125 7846.855469 +v -109612.671875 -71586.406250 16000.000000 +v -102421.296875 -69334.742188 24000.000000 +v -101745.773438 -66219.765625 32000.000000 +v -101445.554688 -66945.812500 30368.228516 +v -100144.843750 -67187.289062 30368.228516 +v -102431.992188 -65965.984375 32000.000000 +v -103508.710938 -66428.828125 30368.228516 +v -102710.125000 -66647.453125 30368.228516 +v -103249.585938 -67214.257812 28736.455078 +v -101891.343750 -67517.437500 28736.455078 +v -103599.273438 -67836.781250 27104.683594 +v -104247.320312 -66121.007812 30368.228516 +v -102925.828125 -65702.101562 32000.000000 +v -104846.445312 -65722.289062 30368.228516 +v -103336.312500 -65366.894531 32000.000000 +v -105321.132812 -65224.625000 30368.228516 +v -103681.304688 -65000.820312 32000.000000 +v -105595.664062 -64759.550781 30368.228516 +v -103874.109375 -64676.628906 32000.000000 +v -103929.265625 -64558.761719 32000.000000 +v -105678.796875 -64545.996094 30368.228516 +v -103973.757812 -64372.695312 32000.000000 +v -105740.265625 -64185.480469 30368.228516 +v -104001.281250 -64098.851562 32000.000000 +v -105743.734375 -63948.695312 30368.228516 +v -103982.968750 -63870.628906 32000.000000 +v -105712.601562 -63785.562500 30368.228516 +v -103889.273438 -63590.464844 32000.000000 +v -105624.554688 -63513.957031 30368.228516 +v -103719.109375 -63261.230469 32000.000000 +v -105395.882812 -63088.058594 30368.228516 +v -103423.367188 -62848.941406 32000.000000 +v -104984.429688 -62549.027344 30368.228516 +v -102639.578125 -62007.167969 32000.000000 +v -104526.695312 -62046.722656 30368.228516 +v -100124.460938 -58865.507812 30368.228516 +v -97298.507812 -58640.617188 32000.000000 +v -99140.671875 -58397.648438 30368.228516 +v -97855.203125 -57860.601562 30368.228516 +v -100656.851562 -57923.214844 28736.455078 +v -99302.242188 -57341.648438 28736.455078 +v -102233.507812 -57388.945312 27104.683594 +v -100809.992188 -56766.769531 27104.683594 +v -103862.898438 -56802.503906 25472.912109 +v -102370.679688 -56143.125000 25472.912109 +v -105993.382812 -55995.609375 23403.123047 +v -104414.257812 -55293.152344 23403.123047 +v -108180.421875 -55132.753906 21333.333984 +v -106514.625000 -54390.878906 21333.333984 +v -110543.500000 -54174.183594 19138.742188 +v -108785.960938 -53393.367188 19138.742188 +v -112933.539062 -53188.941406 16944.150391 +v -111084.367188 -52370.921875 16944.150391 +v -115331.687500 -52195.675781 14749.560547 +v -113390.906250 -51340.980469 14749.560547 +v -117719.093750 -51213.039062 12554.968750 +v -115686.671875 -50320.968750 12554.968750 +v -117308.601562 -49608.480469 10988.199219 +v -113419.632812 -49553.953125 12554.968750 +v -114972.390625 -48829.507812 10988.333984 +v -111045.703125 -48918.738281 12554.968750 +v -112509.234375 -48187.238281 10988.468750 +v -108590.398438 -48385.050781 12554.968750 +v -109951.992188 -47650.593750 10988.602539 +v -106079.781250 -47929.375000 12554.968750 +v -95244.796875 -57861.671875 32000.000000 +v -96371.148438 -57295.929688 30368.228516 +v -97747.054688 -56738.335938 28736.455078 +v -99183.476562 -56131.359375 27104.683594 +v -100672.664062 -55481.335938 25472.912109 +v -102625.359375 -54604.796875 23403.123047 +v -104634.656250 -53682.082031 21333.333984 +v -106809.296875 -52667.675781 19138.742188 +v -109010.914062 -51631.261719 16944.150391 +v -111220.648438 -50588.222656 14749.560547 +v -94971.601562 -56812.437500 30368.228516 +v -93224.468750 -57200.292969 32000.000000 +v -93609.617188 -56386.109375 30368.228516 +v -92223.242188 -55987.441406 30368.228516 +v -94827.710938 -55760.757812 28736.455078 +v -93361.718750 -55334.082031 28736.455078 +v -96096.039062 -55100.371094 27104.683594 +v -94542.804688 -54653.109375 27104.683594 +v -97408.156250 -54409.425781 25472.912109 +v -95761.054688 -53948.050781 25472.912109 +v -99125.398438 -53496.101562 23403.123047 +v -97351.218750 -53024.636719 23403.123047 +v -100889.617188 -52550.000000 21333.333984 +v -98981.234375 -52075.394531 21333.333984 +v -102796.882812 -51521.273438 19138.742188 +v -100740.664062 -51048.750000 19138.742188 +v -104726.539062 -50476.921875 16944.150391 +v -102519.078125 -50009.792969 16944.150391 +v -106662.929688 -49427.875000 14749.559570 +v -104303.218750 -48967.128906 14749.559570 +v -89138.242188 -56122.609375 32000.000000 +v -90860.039062 -55630.859375 30368.228516 +v -91921.117188 -54953.652344 28736.455078 +v -93016.085938 -54255.890625 27104.683594 +v -94140.601562 -53540.199219 25472.912109 +v -95602.687500 -52610.738281 23403.123047 +v -97096.460938 -51662.046875 21333.333984 +v -98705.062500 -50641.140625 19138.742188 +v -100328.765625 -49611.070312 16944.150391 +v -101957.015625 -48578.242188 14749.559570 +v -85023.171875 -55314.535156 32000.000000 +v -88226.460938 -55034.402344 30368.228516 +v -89531.875000 -55316.218750 30368.228516 +v -80887.171875 -54755.511719 32000.000000 +v -84525.976562 -54392.132812 30368.228516 +v -85116.242188 -54477.917969 30368.228516 +v -85717.460938 -54572.003906 30368.228516 +v -86543.304688 -53849.546875 28736.455078 +v -87819.367188 -54066.351562 28736.455078 +v -88694.789062 -53342.929688 27104.683594 +v -90087.625000 -53604.546875 27104.683594 +v -91039.617188 -52877.929688 25472.912109 +v -92567.054688 -53186.113281 25472.912109 +v -93904.773438 -52254.187500 23403.123047 +v -76738.890625 -54418.039062 32000.000000 +v -79015.929688 -53837.046875 30368.136719 +v -81784.359375 -54065.507812 30368.205078 +v -85326.984375 -53672.464844 28736.455078 +v -85927.320312 -53756.105469 28736.455078 +v -86738.968750 -53034.019531 27104.683594 +v -87371.320312 -53126.015625 27104.683594 +v -88201.226562 -52401.546875 25472.912109 +v -89577.015625 -52615.980469 25472.912109 +v -90704.281250 -51689.640625 23403.123047 +v -92263.609375 -51947.281250 23403.123047 +v -93502.195312 -51008.664062 21333.333984 +v -95265.492188 -51309.039062 21333.333984 +v -96726.195312 -50296.574219 19138.742188 +v -60120.785156 -54160.894531 32000.000000 +v -66293.023438 -53508.347656 30367.396484 +v -67724.765625 -53507.929688 30367.505859 +v -51815.617188 -54577.414062 32000.000000 +v -56177.550781 -53800.011719 30366.517578 +v -59081.675781 -53662.597656 30366.783203 +v -61975.730469 -53568.507812 30367.039062 +v -61826.574219 -53005.519531 28731.957031 +v -63366.039062 -52961.410156 28732.423828 +v -63304.027344 -52372.789062 27096.126953 +v -64932.929688 -52327.027344 27097.085938 +v -64965.304688 -51715.695312 25460.216797 +v -66675.140625 -51669.570312 25461.757812 +v -66839.085938 -50867.980469 23385.345703 +v -68642.632812 -50820.292969 23387.693359 +v -68928.554688 -49996.109375 21311.679688 +v -43521.183594 -55308.347656 32000.000000 +v -50348.750000 -54190.328125 30365.976562 +v -53265.738281 -53977.117188 30366.248047 +v -55600.195312 -53296.367188 28729.982422 +v -58725.957031 -53128.402344 28730.986328 +v -58339.640625 -52581.371094 27093.078125 +v -61661.703125 -52430.195312 27095.136719 +v -61484.757812 -51844.058594 25456.960938 +v -63234.941406 -51773.714844 25458.615234 +v -63141.394531 -51001.109375 23380.337891 +v -65005.148438 -50928.089844 23382.890625 +v -65047.269531 -50129.570312 21304.939453 +v -67008.179688 -50056.058594 21308.386719 +v -67195.945312 -49186.980469 19106.205078 +v -69241.195312 -49114.582031 19110.501953 +v -69565.304688 -48228.199219 16909.886719 +v -35241.503906 -56321.578125 32000.000000 +v -38681.835938 -55357.371094 30364.976562 +v -41592.945312 -55020.097656 30365.205078 +v -44509.632812 -54712.894531 30365.451172 +v -42957.812500 -54345.375000 28725.945312 +v -49294.593750 -53752.417969 28727.933594 +v -48144.750000 -53302.679688 27086.597656 +v -51571.917969 -53021.550781 27088.773438 +v -50629.929688 -52526.410156 25446.330078 +v -54306.238281 -52251.863281 25449.958984 +v -53414.925781 -51568.378906 23366.539062 +v -57381.007812 -51301.214844 23372.218750 +v -56815.191406 -50567.011719 21289.964844 +v -61006.421875 -50319.003906 21297.658203 +v -60751.167969 -49494.816406 19092.212891 +v -62950.179688 -49376.718750 19097.039062 +v -62865.156250 -48530.531250 16893.554688 +v -65161.910156 -48413.335938 16899.222656 +v -65241.332031 -47550.378906 14698.217773 +v -67609.671875 -47436.472656 14704.449219 +v -67841.734375 -46561.621094 12506.178711 +v -70254.867188 -46453.218750 12512.621094 +v -70515.914062 -45823.894531 10948.152344 +v -26978.335938 -57578.792969 32000.000000 +v -30007.707031 -56538.562500 30364.437500 +v -31445.531250 -56325.691406 30364.507812 +v -32886.859375 -56118.785156 30364.587891 +v -30403.183594 -55895.210938 28722.679688 +v -33510.757812 -55465.132812 28723.365234 +v -31029.345703 -55202.167969 27076.902344 +v -34410.046875 -54761.480469 27078.564453 +v -32011.910156 -54455.554688 25429.273438 +v -35707.109375 -54004.273438 25432.343750 +v -32853.597656 -53557.648438 23338.464844 +v -36977.792969 -53085.558594 23343.722656 +v -34402.929688 -52578.097656 21249.974609 +v -43537.437500 -51638.101562 21265.748047 +v -41663.093750 -50984.023438 19050.593750 +v -46630.269531 -50527.910156 19061.197266 +v -45203.671875 -49818.273438 16850.070312 +v -50496.625000 -49369.929688 16862.914062 +v -49525.527344 -48612.710938 14656.726562 +v -55032.617188 -48186.652344 14671.138672 +v -54491.546875 -47390.687500 12470.151367 +v -60082.773438 -47000.855469 12485.196289 +v -59963.953125 -46411.828125 10920.753906 +v -62742.968750 -46234.746094 10927.993164 +v -59866.343750 -45821.921875 9345.639648 +v -62749.144531 -45633.398438 9352.961914 +v -62776.000000 -45039.664062 7786.553223 +v -65649.539062 -44861.371094 7793.308105 +v -65786.320312 -44263.109375 6228.898438 +v -68631.203125 -44096.164062 6234.795410 +v -68863.625000 -43494.781250 4672.070801 +v -18730.597656 -59027.996094 32000.000000 +v -20059.802734 -58170.722656 30364.212891 +v -21466.974609 -57923.644531 30364.210938 +v -22879.119141 -57681.066406 30364.222656 +v -19791.478516 -57572.597656 28721.292969 +v -21278.400391 -57319.269531 28721.378906 +v -18023.287109 -57196.925781 27072.685547 +v -19594.423828 -56931.578125 27072.953125 +v -16209.924805 -56793.773438 25419.896484 +v -17878.421875 -56515.136719 25420.482422 +v -13450.856445 -56318.671875 23319.560547 +v -15256.810547 -56020.726562 23320.703125 +v -10746.647461 -55800.351562 21217.669922 +v -12713.839844 -55481.617188 21219.550781 +v -7934.547852 -55220.425781 18990.339844 +v -10096.543945 -54878.109375 18993.132812 +v -5416.641113 -54587.687500 16767.490234 +v -7799.165527 -54220.812500 16771.265625 +v -3317.392090 -53900.210938 14551.996094 +v -8641.615234 -53120.281250 14561.829102 +v -4635.159180 -52740.703125 12351.925781 +v -10627.645508 -51921.894531 12364.084961 +v -8166.089844 -51610.660156 10799.501953 +v -14694.673828 -50777.550781 10812.906250 +v -5792.477051 -51296.515625 9223.115234 +v -12612.238281 -50422.722656 9236.696289 +v -10669.167969 -50072.003906 7675.731445 +v -17959.068359 -49195.531250 7689.647461 +v -16435.167969 -48809.785156 6134.843262 +v -31696.796875 -47136.351562 6161.833984 +v -30821.376953 -46685.632812 4610.468750 +v -38530.515625 -45914.070312 4622.214844 +v -37989.328125 -45440.070312 3074.701172 +v -45639.554688 -44717.285156 3083.443848 +v -10497.979492 -60654.777344 32000.000000 +v -13105.346680 -59471.378906 30364.416016 +v -14484.684570 -59202.777344 30364.347656 +v -15870.050781 -58938.332031 30364.292969 +v -12522.627930 -58898.796875 28721.560547 +v -13953.475586 -58625.886719 28721.408203 +v -10436.754883 -58575.796875 27072.750000 +v -11917.101562 -58293.453125 27072.535156 +v -8254.565430 -58231.906250 25419.199219 +v -9792.710938 -57938.843750 25419.017578 +v -4977.235840 -57844.902344 23317.224609 +v -6596.050293 -57535.722656 23317.203125 +v -1648.627197 -57424.066406 21212.759766 +v -3367.069580 -57096.765625 21213.087891 +v 1940.615112 -56957.207031 18981.910156 +v 94.846298 -56608.484375 18982.787109 +v 5374.048340 -56445.355469 16754.937500 +v 3373.074707 -56073.207031 16756.519531 +v 8523.909180 -55884.375000 14535.143555 +v 6338.704590 -55487.187500 14537.511719 +v 11259.847656 -55270.992188 12325.624023 +v 8862.565430 -54847.695312 12328.759766 +v 12151.875977 -54674.238281 10764.502930 +v 9555.903320 -54231.777344 10768.103516 +v 15342.723633 -54496.882812 9187.377930 +v 12654.460938 -54036.007812 9191.098633 +v 15563.166016 -53840.027344 7632.269043 +v 12655.957031 -53359.996094 7636.307129 +v 15269.159180 -53144.554688 6086.445801 +v 12137.158203 -52646.207031 6090.527832 +v 14425.450195 -52412.027344 4550.264160 +v 7593.919922 -51383.304688 4558.120605 +v 9435.643555 -51114.113281 3026.916504 +v 1967.900146 -50064.265625 3033.613037 +v -4963.364746 -61165.101562 30365.171875 +v -7648.673828 -60586.082031 30364.851562 +v -10364.014648 -60021.003906 30364.601562 +v -6920.983887 -60026.214844 28722.728516 +v -8302.818359 -59739.167969 28722.349609 +v -4705.911133 -59735.023438 27074.746094 +v -6109.996094 -59440.863281 27074.066406 +v -2371.272949 -59427.296875 25421.759766 +v -3801.527588 -59125.218750 25420.830078 +v 1115.796997 -59095.562500 23320.113281 +v -350.467407 -58781.101562 23318.949219 +v 4716.595215 -58737.929688 21215.208984 +v 3200.784912 -58409.164062 21213.998047 +v 8669.925781 -58347.238281 18983.099609 +v 7084.705078 -58001.035156 18982.054688 +v 12572.747070 -57920.718750 16754.050781 +v 10893.012695 -57554.644531 16753.404297 +v 16308.891602 -57453.507812 14531.584961 +v 14505.784180 -57065.214844 14531.528320 +v 19751.626953 -56940.894531 12319.153320 +v 17794.279297 -56528.304688 12319.795898 +v 21353.679688 -56422.503906 10755.971680 +v 19233.412109 -55990.378906 10757.157227 +v 24820.505859 -56312.851562 9178.310547 +v 22645.339844 -55864.796875 9179.639648 +v 25860.677734 -55737.472656 7621.346680 +v 23491.632812 -55268.601562 7623.230469 +v 26437.242188 -55122.351562 6074.580566 +v 23858.056641 -54632.578125 6076.820801 +v 26494.166016 -54467.238281 4538.691406 +v 23692.994141 -53956.960938 4541.007324 +v 25983.419922 -53772.777344 3014.157715 +v 22953.958984 -53242.851562 3016.183105 +v -128488.546875 -70557.671875 3138.742188 +v -126970.695312 -70362.414062 4708.113281 +v -125464.546875 -70170.140625 6277.484375 +v -123966.843750 -69979.960938 7846.855469 +v -122474.312500 -69790.984375 9416.226562 +v -119135.007812 -70613.562500 10985.849609 +v -117680.125000 -70359.882812 12554.968750 +v -115638.062500 -70002.804688 14749.560547 +v -113579.945312 -69640.953125 16944.150391 +v -111497.343750 -69272.023438 19138.742188 +v -109381.828125 -68893.687500 21333.333984 +v -107348.882812 -68526.164062 23403.123047 +v -105272.101562 -68146.273438 25472.912109 +v -130178.648438 -69371.578125 3138.742188 +v -128631.804688 -69227.328125 4708.113281 +v -127096.437500 -69085.523438 6277.484375 +v -125569.445312 -68945.359375 7846.855469 +v -124047.703125 -68806.070312 9416.226562 +v -120983.335938 -69602.273438 10985.975586 +v -119491.734375 -69413.062500 12554.968750 +v -117396.945312 -69145.742188 14749.560547 +v -115284.226562 -68873.101562 16944.150391 +v -113144.671875 -68592.695312 19138.742188 +v -110969.343750 -68302.078125 21333.333984 +v -108876.937500 -68016.453125 23403.123047 +v -106737.312500 -67717.539062 25472.912109 +v -105012.281250 -67471.164062 27104.683594 +v -134810.265625 -64519.937500 3138.742188 +v -133134.812500 -64500.660156 4708.113281 +v -131459.359375 -64481.382812 6277.484375 +v -129783.914062 -64462.109375 7846.855469 +v -128108.468750 -64442.832031 9416.226562 +v -135422.531250 -62863.558594 3138.742188 +v -133715.765625 -62887.535156 4708.113281 +v -132004.500000 -62917.230469 6277.484375 +v -130289.343750 -62951.855469 7846.855469 +v -128570.937500 -62990.609375 9416.226562 +v -126661.148438 -63765.980469 10986.829102 +v -124867.789062 -64087.066406 12554.968750 +v -122510.898438 -64070.761719 14749.560547 +v -135644.093750 -61560.136719 3138.742188 +v -133923.906250 -61622.500000 4708.113281 +v -132193.921875 -61695.746094 6277.484375 +v -130455.476562 -61778.363281 7846.855469 +v -128709.945312 -61868.835938 9416.226562 +v -126848.453125 -63032.734375 10986.924805 +v -124964.742188 -63769.285156 12554.968750 +v -122589.929688 -63774.742188 14749.560547 +v -120214.789062 -63780.578125 16944.150391 +v -135665.812500 -60047.746094 3138.742188 +v -133936.828125 -60153.574219 4708.113281 +v -132191.171875 -60275.636719 6277.484375 +v -130431.179688 -60411.675781 7846.855469 +v -128659.171875 -60559.433594 9416.226562 +v -126957.078125 -61965.746094 10987.041016 +v -125126.875000 -63077.328125 12554.968750 +v -122715.242188 -63142.488281 14749.560547 +v -120302.632812 -63208.886719 16944.150391 +v -117890.757812 -63274.347656 19138.742188 +v -135454.140625 -58358.828125 3138.742188 +v -133726.109375 -58516.804688 4708.113281 +v -131975.015625 -58697.890625 6277.484375 +v -130204.054688 -58898.878906 7846.855469 +v -128416.437500 -59116.554688 9416.226562 +v -126875.671875 -60716.820312 10987.158203 +v -125203.078125 -62067.304688 12554.968750 +v -122743.335938 -62214.683594 14749.560547 +v -120281.468750 -62364.417969 16944.150391 +v -117821.203125 -62512.375000 19138.742188 +v -115366.265625 -62654.414062 21333.333984 +v -134987.656250 -56545.699219 3138.742188 +v -133267.359375 -56758.003906 4708.113281 +v -131517.281250 -56999.910156 6277.484375 +v -129741.585938 -57267.296875 7846.855469 +v -127944.382812 -57556.054688 9416.226562 +v -126613.445312 -59347.957031 10987.274414 +v -125088.328125 -60881.089844 12554.968750 +v -122578.445312 -61118.832031 14749.560547 +v -120064.953125 -61360.089844 16944.150391 +v -117554.187500 -61598.691406 19138.742188 +v -115052.468750 -61828.472656 21333.333984 +v -112707.000000 -62031.554688 23403.123047 +v -134123.343750 -54408.261719 3138.742188 +v -132419.765625 -54683.324219 4708.113281 +v -130678.500000 -54994.359375 6277.484375 +v -128904.781250 -55336.375000 7846.855469 +v -127103.851562 -55704.363281 9416.226562 +v -126127.742188 -57862.429688 10987.391602 +v -124804.062500 -59589.113281 12554.968750 +v -122260.054688 -59937.812500 14749.560547 +v -119711.054688 -60291.511719 16944.150391 +v -117165.828125 -60641.433594 19138.742188 +v -114633.132812 -60978.796875 21333.333984 +v -112263.843750 -61277.562500 23403.123047 +v -109920.867188 -61549.976562 25472.912109 +v -132917.640625 -52356.507812 3138.742188 +v -131244.312500 -52696.742188 4708.113281 +v -129527.250000 -53079.160156 6277.484375 +v -127772.531250 -53497.898438 7846.855469 +v -125986.226562 -53947.097656 9416.226562 +v -125278.695312 -56093.820312 10987.526367 +v -124302.039062 -58181.230469 12554.968750 +v -121731.781250 -58641.769531 14749.560547 +v -119155.078125 -59108.714844 16944.150391 +v -116583.242188 -59570.820312 19138.742188 +v -114027.585938 -60016.835938 21333.333984 +v -111642.265625 -60412.636719 23403.123047 +v -109290.898438 -60774.683594 25472.912109 +v -107467.289062 -61030.136719 27104.683594 +v -131382.671875 -50497.164062 3138.742188 +v -129751.476562 -50899.476562 4708.113281 +v -128072.257812 -51348.500000 6277.484375 +v -126351.687500 -51837.742188 7846.855469 +v -124596.445312 -52360.707031 9416.226562 +v -124172.031250 -54421.527344 10987.660156 +v -123441.296875 -56498.273438 12554.968750 +v -120850.648438 -57081.832031 14749.560547 +v -118251.835938 -57673.183594 16944.150391 +v -115659.187500 -58258.652344 19138.742188 +v -113087.023438 -58824.562500 21333.333984 +v -110692.773438 -59328.085938 23403.123047 +v -108341.515625 -59790.578125 25472.912109 +v -106526.007812 -60118.757812 27104.683594 +v -104750.562500 -60408.687500 28736.455078 +v -110219.937500 -43327.179688 3138.742188 +v -109169.765625 -43996.484375 4708.113281 +v -108091.796875 -44682.652344 6277.484375 +v -106989.898438 -45383.339844 7846.855469 +v -107221.351562 -43003.847656 3138.742188 +v -106249.421875 -43686.093750 4708.113281 +v -105257.335938 -44379.929688 6277.484375 +v -104247.890625 -45083.753906 7846.855469 +v -103223.890625 -45795.945312 9416.226562 +v -104386.523438 -42759.613281 3138.742188 +v -103485.375000 -43450.562500 4708.113281 +v -102571.414062 -44148.503906 6277.484375 +v -101646.437500 -44852.460938 7846.855469 +v -100712.210938 -45561.468750 9416.226562 +v -101810.492188 -42584.195312 3138.742188 +v -100969.218750 -43279.605469 4708.113281 +v -100121.546875 -43978.332031 6277.484375 +v -99268.367188 -44679.910156 7846.855469 +v -98410.562500 -45383.878906 9416.226562 +v -99604.375000 -42463.941406 3138.742188 +v -98808.210938 -43159.710938 4708.113281 +v -98010.265625 -43856.359375 6277.484375 +v -97210.781250 -44553.769531 7846.855469 +v -96410.015625 -45251.812500 9416.226562 +v -98678.593750 -42419.558594 3138.742188 +v -97898.031250 -43114.007812 4708.113281 +v -97117.000000 -43808.683594 6277.484375 +v -96335.570312 -44503.554688 7846.855469 +v -95553.796875 -45198.585938 9416.226562 +v -69112.296875 -42901.800781 3111.870850 +v -66121.382812 -43090.531250 3108.158936 +v -65943.031250 -43672.406250 4667.091797 +v -63004.691406 -43302.886719 3104.301025 +v -62901.359375 -43873.089844 4661.917480 +v -62825.933594 -44452.453125 6222.770020 +v -59763.609375 -43538.968750 3100.314941 +v -59739.929688 -44096.941406 4656.570801 +v -59751.316406 -44664.328125 6216.437012 +v -59794.535156 -45239.777344 7779.573730 +v -52921.640625 -44081.972656 3092.029053 +v -53070.648438 -44613.921875 4645.456543 +v -53271.710938 -45155.550781 6203.273926 +v -53519.578125 -45705.449219 7765.066406 +v -53809.007812 -46262.210938 9330.419922 +v -30066.451172 -46243.292969 3065.943848 +v -13864.951172 -48054.136719 3048.954102 +v -5838.726562 -49040.191406 3041.006348 +v 16459.291016 -52177.546875 3021.059082 +v 19777.087891 -52710.667969 3018.489502 +v 28860.712891 -54299.191406 3012.430908 +v 36554.980469 -55846.179688 3009.221191 +v 38805.691406 -56347.859375 3008.867188 +v 40901.492188 -56841.207031 3008.901123 +v 51538.636719 -60026.203125 3021.487305 +v 48642.273438 -60038.281250 4550.838379 +v 45549.925781 -60047.910156 6091.208008 +v 42283.843750 -60055.265625 7641.556152 +v 38866.285156 -60060.539062 9200.841797 +v 34165.347656 -59683.875000 10773.964844 +v 30514.871094 -59693.535156 12336.174805 +v 25227.607422 -59704.351562 14547.265625 +v 19831.283203 -59712.507812 16767.126953 +v 14390.761719 -59718.675781 18992.832031 +v 53422.750000 -60849.804688 3029.586670 +v 50500.855469 -60843.804688 4561.702148 +v 47407.976562 -60836.503906 6104.075195 +v 44163.234375 -60827.941406 7655.736816 +v 40785.746094 -60818.144531 9215.719727 +v 35291.691406 -60063.925781 10780.144531 +v 31665.734375 -60065.558594 12342.067383 +v 26419.226562 -60065.328125 14552.714844 +v 21067.888672 -60062.601562 16771.894531 +v 15672.567383 -60057.871094 18996.763672 +v 10294.109375 -60051.644531 21224.474609 +v 54864.191406 -61642.472656 3039.948242 +v 51931.824219 -61620.503906 4575.600586 +v 48855.457031 -61598.535156 6120.536133 +v 45650.906250 -61576.441406 7673.878906 +v 42333.980469 -61554.078125 9234.752930 +v 37266.605469 -60807.062500 10795.486328 +v 33709.035156 -60795.000000 12356.773438 +v 28572.820312 -60776.117188 14566.311523 +v 23341.496094 -60755.117188 16783.792969 +v 18067.355469 -60732.093750 19006.570312 +v 12802.682617 -60707.144531 21231.994141 +v 7893.086426 -60681.925781 23330.910156 +v 55893.074219 -62413.460938 3052.714600 +v 52965.203125 -62377.546875 4592.724121 +v 49922.015625 -62343.011719 6140.817383 +v 46775.882812 -62309.539062 7696.231445 +v 43539.171875 -62276.832031 9258.203125 +v 38892.441406 -61531.136719 10815.025391 +v 35426.253906 -61508.035156 12375.587891 +v 30434.568359 -61474.328125 14583.707031 +v 25359.132812 -61438.964844 16799.015625 +v 20243.185547 -61401.578125 19019.117188 +v 15129.961914 -61361.800781 21241.613281 +v 10348.880859 -61321.773438 23337.763672 +v 5644.955078 -61278.996094 25431.904297 +v 56525.070312 -63174.570312 3068.027832 +v 53613.996094 -63125.835938 4613.263672 +v 50616.851562 -63079.578125 6165.144531 +v 47542.597656 -63035.359375 7723.042969 +v 44400.187500 -62992.742188 9286.332031 +v 40196.394531 -62244.308594 10839.027344 +v 36843.488281 -62212.468750 12398.767578 +v 32028.947266 -62167.238281 14605.138672 +v 27143.662109 -62120.859375 16817.769531 +v 22221.451172 -62072.492188 19034.574219 +v 17296.136719 -62021.300781 21253.466797 +v 12678.471680 -61969.679688 23346.208984 +v 8116.502441 -61914.101562 25437.203125 +v 4577.808105 -61867.027344 27083.310547 +v 56696.953125 -63556.683594 3076.684326 +v 53802.675781 -63502.785156 4624.874512 +v 50838.308594 -63452.062500 6178.896484 +v 47810.949219 -63404.000000 7738.199219 +v 44727.703125 -63358.066406 9302.232422 +v 41171.082031 -62950.933594 10867.753906 +v 37946.710938 -62910.546875 12426.572266 +v 33332.089844 -62853.949219 14630.846680 +v 28661.203125 -62796.707031 16840.265625 +v 23958.539062 -62737.605469 19053.117188 +v 19248.582031 -62675.453125 21267.683594 +v 14821.799805 -62612.953125 23356.339844 +v 10430.850586 -62545.664062 25443.558594 +v 7007.853027 -62488.574219 27087.115234 +v 3629.960449 -62427.382812 28728.177734 +v -129563.265625 -68537.367188 4708.113281 +v -128812.203125 -67782.734375 6277.484375 +v -128055.320312 -66942.867188 7846.855469 +v -127100.382812 -66145.562500 9416.226562 +v -125492.257812 -66081.992188 10986.474609 +v -123886.546875 -66017.281250 12554.968750 +v -122042.945312 -65234.476562 14749.560547 +v -119916.093750 -64794.054688 16944.150391 +v -117728.781250 -64323.410156 19138.742188 +v -115440.296875 -64021.761719 21333.333984 +v -113227.984375 -63793.617188 23403.123047 +v -110949.226562 -63438.187500 25472.912109 +v -108963.210938 -62969.257812 27104.683594 +v -106763.687500 -62457.007812 28736.455078 +v -128011.945312 -68422.625000 6277.484375 +v -126469.007812 -68309.242188 7846.855469 +v -124931.546875 -68196.531250 9416.226562 +v -122527.617188 -68666.828125 10986.101562 +v -121007.546875 -68526.992188 12554.968750 +v -118873.679688 -68328.734375 14749.560547 +v -116723.335938 -68125.468750 16944.150391 +v -114548.000000 -67915.070312 19138.742188 +v -112339.171875 -67695.382812 21333.333984 +v -110217.609375 -67477.781250 23403.123047 +v -108051.546875 -67248.234375 25472.912109 +v -106307.835938 -67057.679688 27104.683594 +v -104528.523438 -66857.710938 28736.455078 +v -123519.390625 -47020.113281 4708.113281 +v -122024.750000 -47614.054688 6277.484375 +v -120487.234375 -48247.480469 7846.855469 +v -118913.765625 -48914.027344 9416.226562 +v -119406.656250 -50528.273438 10988.064453 +v -119462.226562 -52246.578125 12554.968750 +v -116980.382812 -53159.492188 14749.560547 +v -114487.695312 -54083.027344 16944.150391 +v -112003.195312 -54998.542969 19138.742188 +v -109545.898438 -55887.394531 21333.333984 +v -107270.359375 -56684.507812 23403.123047 +v -105051.898438 -57425.687500 25472.912109 +v -103353.609375 -57960.332031 27104.683594 +v -101708.523438 -58442.828125 28736.455078 +v -119481.617188 -46781.578125 6277.484375 +v -115375.937500 -46771.316406 7846.855469 +v -111300.492188 -46926.101562 9416.226562 +v -45977.679688 -45221.210938 4633.940918 +v -39167.128906 -46397.234375 6175.746094 +v -32679.060547 -47594.179688 7719.394531 +v -19615.261719 -49585.300781 9251.295898 +v -21393.234375 -49980.246094 10827.338867 +v -16857.988281 -51129.894531 12377.508789 +v -14233.498047 -52359.734375 14573.071289 +v -12759.411133 -53498.234375 16779.871094 +v -12315.640625 -54539.058594 18996.244141 +v -14726.974609 -55166.164062 21221.691406 +v -17097.804688 -55726.199219 23322.042969 +v -19571.390625 -56240.132812 25421.199219 +v -21182.529297 -56670.035156 27073.302734 +v -22775.671875 -57070.089844 28721.503906 +v -24296.054688 -57443.039062 30364.244141 +v -46388.160156 -45734.734375 6189.634766 +v -46863.289062 -46256.449219 7750.034180 +v -47395.359375 -46784.941406 9314.649414 +v -54136.222656 -46826.859375 10905.693359 +v -15063.737305 -48429.007812 4587.680176 +v -7259.116699 -49380.000000 4577.019531 +v -8877.029297 -49724.183594 6122.217285 +v 331.852753 -50368.703125 4567.103027 +v -1524.306396 -50675.906250 6110.471680 +v -3574.456543 -50985.351562 7662.786621 +v 5512.812988 -51653.679688 6099.833496 +v 9624.773438 -52879.964844 7640.806152 +v 9844.661133 -53574.402344 9195.334961 +v 6847.351074 -53789.066406 10772.226562 +v 6358.804688 -54423.718750 12332.436523 +v 4059.398926 -55089.335938 14540.410156 +v 1291.977661 -55700.671875 16758.589844 +v -1816.428955 -56259.941406 18984.089844 +v -5136.583984 -56770.417969 21213.759766 +v -8253.133789 -57228.292969 23317.435547 +v -11357.621094 -57648.343750 25419.001953 +v -13416.185547 -58014.285156 27072.425781 +v -15395.954102 -58356.746094 28721.306641 +v -17261.238281 -58678.109375 30364.251953 +v 17653.218750 -52928.105469 4546.817871 +v 20744.482422 -53443.511719 4543.724121 +v 18270.363281 -53642.550781 6082.781738 +v 21134.789062 -54138.945312 6079.563965 +v 20984.476562 -54795.414062 7625.699707 +v 20340.212891 -55412.234375 9181.616211 +v 16992.574219 -55554.445312 10758.996094 +v 15726.619141 -56112.046875 12321.110352 +v 12607.644531 -56673.949219 14532.123047 +v 9133.809570 -57186.484375 16753.355469 +v 5435.223145 -57653.796875 18981.523438 +v 1635.028564 -58080.488281 21213.197266 +v -1854.639282 -58467.734375 23318.085938 +v -5258.875000 -58825.218750 25420.097656 +v -7532.918457 -59149.621094 27073.511719 +v -9697.427734 -59455.445312 28722.029297 +v -11731.479492 -59744.218750 30364.501953 +v 29144.953125 -54973.214844 4536.799805 +v 28870.775391 -55607.265625 6072.871582 +v 28091.242188 -56201.187500 7620.079590 +v 26866.271484 -56755.695312 9177.660156 +v 23353.828125 -56850.175781 10755.471680 +v 21599.689453 -57349.296875 12319.214844 +v 18018.189453 -57838.429688 14532.323242 +v 14174.250000 -58284.433594 16755.316406 +v 10191.959961 -58692.230469 18984.677734 +v 6182.957520 -59066.621094 21216.845703 +v 2544.460205 -59411.015625 23321.595703 +v -967.419373 -59731.507812 25422.894531 +v -3321.510010 -60031.812500 27075.552734 +v -4196.183594 -60609.960938 28723.677734 +v 36184.757812 -56455.457031 4533.911133 +v 38229.570312 -56934.886719 4533.956543 +v 35299.074219 -57024.433594 6071.212891 +v -125702.679688 -67594.492188 9416.226562 +v -127254.601562 -67688.593750 7846.855469 +v -126473.890625 -66868.453125 9416.226562 +v -123396.085938 -68083.804688 10986.184570 +v -121861.453125 -67970.492188 12554.968750 +v -119708.593750 -67809.617188 14749.560547 +v -117541.500000 -67644.312500 16944.150391 +v -115352.234375 -67472.742188 19138.742188 +v -113132.882812 -67293.078125 21333.333984 +v -111005.031250 -67114.570312 23403.123047 +v -108836.703125 -66925.695312 25472.912109 +v -107094.343750 -66768.476562 27104.683594 +v -105319.437500 -66603.101562 28736.455078 +v -124894.093750 -66793.265625 10986.371094 +v -123316.375000 -66717.226562 12554.968750 +v -121638.656250 -65924.867188 14749.560547 +v -119747.062500 -65166.621094 16944.150391 +v -117592.343750 -64753.550781 19138.742188 +v -115385.851562 -64296.453125 21333.333984 +v -113217.968750 -64005.894531 23403.123047 +v -110991.851562 -63794.519531 25472.912109 +v -109169.312500 -63469.824219 27104.683594 +v -107173.562500 -63035.292969 28736.455078 +v -124153.171875 -67499.945312 10986.267578 +v -122605.445312 -67404.625000 12554.968750 +v -120436.007812 -67268.960938 14749.560547 +v -118255.203125 -67129.500000 16944.150391 +v -116055.898438 -66985.007812 19138.742188 +v -113830.937500 -66834.250000 21333.333984 +v -111702.578125 -66685.203125 23403.123047 +v -109539.039062 -66528.445312 25472.912109 +v -107804.640625 -66398.750000 27104.683594 +v -106041.710938 -66263.109375 28736.455078 +v -116508.500000 -48120.546875 9416.226562 +v -118012.976562 -47436.441406 7846.855469 +v -113957.460938 -47468.500000 9416.226562 +v -68210.656250 -45319.312500 9366.867188 +v -68413.921875 -44704.742188 7799.807129 +v -65530.984375 -45465.921875 9360.048828 +v -68019.593750 -45941.042969 10941.725586 +v -65428.574219 -46077.890625 10934.995117 +v -40684.476562 -47385.597656 9298.589844 +v -39888.628906 -46888.195312 7734.727539 +v -33754.515625 -48057.859375 9282.503906 +v -47979.398438 -47321.230469 10890.078125 +v -48599.523438 -47856.640625 12454.562500 +v -34915.367188 -48528.441406 10858.235352 +v -23243.822266 -50373.144531 12391.939453 +v -20030.265625 -51626.312500 14585.483398 +v -17942.955078 -52796.406250 16789.708984 +v -16910.574219 -53873.703125 19003.335938 +v -16783.796875 -54854.625000 21224.078125 +v -18972.429688 -55435.609375 23323.568359 +v -21287.972656 -55969.214844 25422.039062 +v -22787.046875 -56412.636719 27073.732422 +v -24282.919922 -56825.195312 28721.669922 +v -25717.593750 -57209.601562 30364.277344 +v -41548.320312 -47890.460938 10874.169922 +v -42457.058594 -48394.289062 12438.689453 +v -43802.992188 -49105.828125 14642.049805 +v 746.507019 -52196.714844 9210.814453 +v 3220.837158 -51924.921875 7651.062012 +v 6918.656250 -53113.187500 9200.055664 +v -1897.609741 -52470.355469 10787.390625 +v 4031.178711 -53347.179688 10776.836914 +v 17905.519531 -54955.960938 9184.206055 +v 18340.726562 -54318.875000 7628.722656 +v 14631.593750 -55115.441406 10761.456055 +v 13548.317383 -55692.714844 12323.063477 +v 10613.734375 -56280.164062 14533.337891 +v 7294.304688 -56816.593750 16753.875000 +v 3720.680420 -57305.753906 18981.482422 +v 18.693159 -57752.058594 21212.791016 +v -3396.799805 -58155.625000 23317.515625 +v -6743.298340 -58527.394531 25419.556641 +v -8975.231445 -58861.234375 27073.072266 +v -11103.863281 -59175.347656 28721.767578 +v -121106.304688 -66608.859375 14749.560547 +v -118888.390625 -66497.664062 16944.150391 +v -116657.468750 -66383.078125 19138.742188 +v -114408.351562 -66264.523438 21333.333984 +v -112265.835938 -66148.554688 23403.123047 +v -110098.203125 -66028.062500 25472.912109 +v -108368.750000 -65929.562500 27104.683594 +v -106618.875000 -65827.718750 28736.455078 +v -108973.054688 -49960.191406 14749.559570 +v -106890.343750 -51009.156250 16944.150391 +v -104815.226562 -52052.453125 19138.742188 +v -102765.375000 -53076.882812 21333.333984 +v -100871.101562 -54013.917969 23403.123047 +v -99029.820312 -54911.378906 25472.912109 +v -97625.265625 -55583.765625 27104.683594 +v -96270.101562 -56219.257812 28736.455078 +v -95472.851562 -47787.929688 14749.559570 +v -93682.414062 -47627.136719 14749.559570 +v -92895.390625 -47561.378906 14749.559570 +v -69902.609375 -47340.050781 14710.405273 +v -67395.421875 -48312.687500 16904.675781 +v -65098.777344 -49274.218750 19101.710938 +v -63046.371094 -50217.093750 21301.359375 +v -61248.656250 -51087.437500 23377.701172 +v -57928.628906 -52023.082031 25453.521484 +v -54973.539062 -52779.789062 27090.945312 +v -52454.468750 -53505.628906 28728.958984 +v -65341.714844 -46688.820312 12499.438477 +v -62755.015625 -46835.156250 12492.433594 +v -62797.902344 -47682.140625 14691.741211 +v -60280.484375 -47832.023438 14685.048828 +v -55609.816406 -48983.925781 16875.525391 +v -51491.750000 -50124.449219 19071.783203 +v -48053.968750 -51231.019531 21273.878906 +v -45262.632812 -52246.105469 23354.962891 +v -39434.898438 -53583.789062 25435.642578 +v -37823.660156 -54349.839844 27080.402344 +v -36643.144531 -55062.281250 28724.148438 +v -35778.980469 -55724.167969 30364.769531 +v -36130.402344 -48997.726562 12422.788086 +v -25961.027344 -50927.304688 14598.826172 +v -23297.322266 -52122.035156 16800.570312 +v -21684.587891 -53230.472656 19011.445312 +v -21017.130859 -54245.832031 21229.515625 +v -20878.953125 -55149.507812 23325.267578 +v -23027.132812 -55702.832031 25422.996094 +v -24407.330078 -56159.792969 27074.234375 +v -25799.751953 -56584.894531 28721.871094 +v -27143.519531 -56980.847656 30364.320312 +v -37922.246094 -49660.386719 14627.347656 +v -39778.917969 -50323.632812 16837.205078 +v 1046.661011 -53577.562500 12341.290039 +v 3751.976807 -54000.003906 12336.625000 +v -772.166992 -54294.964844 14547.682617 +v 1688.100708 -54691.640625 14543.810547 +v -868.046143 -55328.410156 16761.126953 +v -3792.574219 -55912.011719 18985.796875 +v -6956.842285 -56445.300781 21214.757812 +v -9948.272461 -56922.820312 23317.916016 +v -12949.021484 -57360.562500 25419.150391 +v -14933.802734 -57738.386719 27072.417969 +v -16849.947266 -58091.429688 28721.255859 +v -18657.841797 -58422.230469 30364.226562 +v -119386.375000 -65830.492188 16944.150391 +v -117448.375000 -65098.312500 19138.742188 +v -115267.531250 -64712.949219 21333.333984 +v -113176.164062 -64271.031250 23403.123047 +v -110996.101562 -63989.605469 25472.912109 +v -109230.445312 -63793.472656 27104.683594 +v -107394.187500 -63495.378906 28736.455078 +v -117126.429688 -65734.398438 19138.742188 +v -114855.554688 -65636.820312 21333.333984 +v -112700.851562 -65543.640625 23403.123047 +v -110530.765625 -65449.562500 25472.912109 +v -108807.281250 -65374.890625 27104.683594 +v -107071.187500 -65299.875000 28736.455078 +v -98197.867188 -49277.812500 16944.150391 +v -94826.859375 -50007.222656 19138.742188 +v -91838.843750 -50759.523438 21333.333984 +v -89256.203125 -51481.480469 23403.123047 +v -87551.109375 -52311.695312 25472.912109 +v -86128.000000 -52952.796875 27104.683594 +v -82539.578125 -53359.656250 28736.365234 +v -92558.828125 -48605.152344 16944.150391 +v -91801.171875 -48533.789062 16944.150391 +v -90707.039062 -49506.164062 19138.742188 +v -60506.234375 -48664.582031 16887.699219 +v -56208.789062 -49778.664062 19082.179688 +v -52489.832031 -50872.414062 21281.994141 +v -49368.144531 -51884.828125 23360.755859 +v -46914.566406 -52842.527344 25442.693359 +v -41258.675781 -53968.652344 27082.376953 +v -39794.332031 -54688.722656 28725.013672 +v -28763.396484 -51481.230469 16812.246094 +v -26595.453125 -52615.042969 19020.398438 +v -25386.968750 -53660.500000 21235.732422 +v -24779.187500 -54592.960938 23329.142578 +v -24787.640625 -55441.464844 25424.064453 +v -26042.626953 -55911.902344 27074.808594 +v -27325.736328 -56349.550781 28722.107422 +v -28573.626953 -56757.058594 30364.375000 +v -31595.753906 -52032.351562 19030.021484 +v -3105.125488 -54957.156250 16764.103516 +v -5832.488281 -55565.289062 18987.888672 +v -8827.192383 -56121.773438 21216.066406 +v -11681.058594 -56619.515625 23318.626953 +v -14566.599609 -57075.656250 25419.451172 +v -16469.613281 -57465.894531 27072.505859 +v -18315.230469 -57830.011719 28721.251953 +v -110786.539062 -64903.003906 25472.912109 +v -112968.976562 -64966.089844 23403.123047 +v -115145.625000 -65030.031250 21333.333984 +v -110878.375000 -64636.300781 25472.912109 +v -113073.687500 -64674.621094 23403.123047 +v -109061.187500 -64854.140625 27104.683594 +v -107331.070312 -64806.253906 28736.455078 +v -110966.468750 -64245.609375 25472.912109 +v -109146.429688 -64606.132812 27104.683594 +v -107413.281250 -64576.023438 28736.455078 +v -109244.859375 -63976.386719 27104.683594 +v -107470.617188 -63790.574219 28736.455078 +v -109224.406250 -64225.566406 27104.683594 +v -107482.335938 -64205.523438 28736.455078 +v -91532.843750 -53909.078125 27104.683594 +v -89149.234375 -54323.738281 28736.455078 +v -86951.742188 -54785.738281 30368.228516 +v -68363.898438 -51634.824219 25463.230469 +v -66547.828125 -52292.433594 27098.007812 +v -64897.617188 -52928.339844 28732.875000 +v -63418.265625 -53538.093750 30367.162109 +v -68148.250000 -52268.488281 27098.888672 +v -67935.445312 -52893.281250 28733.724609 +v -28366.796875 -54935.632812 25426.494141 +v -28778.625000 -54061.070312 23333.572266 +v -27692.068359 -55669.394531 27075.447266 +v -28860.392578 -56119.531250 28722.378906 +v -29860.957031 -53103.308594 21242.595703 +v -107494.046875 -63962.765625 28736.455078 +v -90520.070312 -54619.718750 28736.455078 +v -66420.875000 -52905.812500 28733.310547 +v -64857.445312 -53518.210938 30367.281250 +v -114654.703125 -75804.515625 1022.901367 +v -113974.820312 -75520.031250 2045.489502 +v -113299.929688 -75236.070312 3067.797852 +v -112629.437500 -74952.578125 4089.859375 +v -105717.625000 -75245.015625 3066.466553 +v -105284.828125 -74965.578125 4087.576416 +v -98471.914062 -75252.132812 3065.211914 +v -98264.101562 -74976.453125 4085.424561 +v -91549.289062 -75256.710938 3064.031738 +v -91555.078125 -74984.476562 4083.400879 +v -84935.585938 -75258.164062 3062.924805 +v -85144.070312 -74989.109375 4081.502686 +v -78616.523438 -75256.007812 3061.889404 +v -79016.804688 -74989.898438 4079.727051 +v -72579.039062 -75249.750000 3060.923828 +v -73160.750000 -74986.390625 4078.071045 +v -66810.421875 -75238.953125 3060.026611 +v -67563.585938 -74978.179688 4076.532227 +v -61298.253906 -75223.242188 3059.195557 +v -62213.179688 -74964.929688 4075.107422 +v -56030.757812 -75202.273438 3058.429688 +v -57098.097656 -74946.328125 4073.793945 +v -50996.574219 -75175.750000 3057.727051 +v -52207.324219 -74922.093750 4072.588867 +v -46184.765625 -75143.414062 3057.085938 +v -47530.234375 -74892.000000 4071.489502 +v -41584.867188 -75105.039062 3056.504883 +v -43056.667969 -74855.835938 4070.492920 +v -37186.843750 -75060.437500 3055.982178 +v -38776.898438 -74813.453125 4069.596680 +v -32981.062500 -75009.476562 3055.516113 +v -34681.585938 -74764.718750 4068.797363 +v -28958.322266 -74952.039062 3055.104980 +v -30761.808594 -74709.546875 4068.092529 +v -25109.810547 -74888.046875 3054.747559 +v -27009.035156 -74647.890625 4067.479004 +v -21427.109375 -74817.468750 3054.441650 +v -23415.119141 -74579.718750 4066.954590 +v -17902.187500 -74740.273438 3054.185791 +v -19972.289062 -74505.000000 4066.515869 +v -14527.381836 -74656.453125 3053.978516 +v -16673.136719 -74423.734375 4066.160400 +v -11295.385742 -74566.023438 3053.817871 +v -13510.605469 -74335.937500 4065.885254 +v -8199.244141 -74469.046875 3053.702637 +v -10477.980469 -74241.671875 4065.687500 +v -5232.354492 -74365.601562 3053.630859 +v -7568.893066 -74141.007812 4065.564209 +v -2388.433838 -74255.789062 3053.601074 +v -4777.290527 -74034.039062 4065.512939 +v 2954.035400 -74017.562500 3053.660156 +v 476.117065 -73801.703125 4065.614746 +v 7872.167480 -73755.648438 3053.867432 +v 5324.542969 -73545.921875 4065.969727 +v 12405.317383 -73471.609375 3054.208984 +v 9805.729492 -73268.242188 4066.555908 +v 16588.511719 -73167.281250 3054.672363 +v 13953.176758 -72970.476562 4067.350342 +v 20452.775391 -72844.679688 3055.243896 +v 17796.457031 -72654.625000 4068.330566 +v 24025.441406 -72505.984375 3055.910889 +v 21361.531250 -72322.828125 4069.474121 +v 27330.490234 -72153.484375 3056.659668 +v 24671.062500 -71977.351562 4070.758301 +v 30388.853516 -71789.515625 3057.477295 +v 27744.734375 -71620.484375 4072.160645 +v 33218.753906 -71416.437500 3058.350830 +v 30599.566406 -71254.562500 4073.658691 +v 35836.007812 -71036.593750 3059.266846 +v 33250.226562 -70881.875000 4075.229736 +v 38254.363281 -70652.226562 3060.212402 +v 35709.351562 -70504.640625 4076.851074 +v 40485.828125 -70265.453125 3061.174072 +v 37987.867188 -70124.960938 4078.500488 +v 42540.960938 -69878.242188 3062.139160 +v 40095.285156 -69744.757812 4080.155029 +v 44429.218750 -69492.320312 3063.093994 +v 42040.035156 -69365.750000 4081.792725 +v 46159.187500 -69109.179688 3064.025635 +v 43829.687500 -68989.390625 4083.390381 +v 47738.652344 -68730.054688 3064.920898 +v 45471.039062 -68616.921875 4084.925781 +v 49174.640625 -68355.953125 3065.766846 +v 46970.144531 -68249.343750 4086.376465 +v 50473.367188 -67987.664062 3066.550049 +v 48332.203125 -67887.429688 4087.719482 +v 51640.476562 -67625.773438 3067.257324 +v 49562.007812 -67531.757812 4088.932617 +v 52680.824219 -67270.664062 3067.875977 +v 50663.496094 -67182.726562 4089.993164 +v 53673.226562 -66891.953125 3068.432861 +v 51718.746094 -66810.515625 4090.948242 +v 54118.800781 -66705.640625 3068.660400 +v 52196.105469 -66627.328125 4091.338867 +v 54525.906250 -66521.539062 3068.851562 +v 52631.089844 -66446.414062 4091.666504 +v 55217.472656 -66160.195312 3069.115234 +v 53359.601562 -66091.890625 4092.118896 +v -106609.312500 -75806.445312 1022.742981 +v -98923.351562 -75806.859375 1022.593689 +v -91581.546875 -75805.070312 1022.453308 +v -84569.015625 -75800.460938 1022.321655 +v -77871.335938 -75792.468750 1022.198425 +v -71474.671875 -75780.570312 1022.083557 +v -65365.679688 -75764.304688 1021.976807 +v -59531.492188 -75743.242188 1021.877991 +v -66076.757812 -75500.898438 2041.913452 +v -60403.281250 -75482.578125 2041.531128 +v -53959.738281 -75717.007812 1021.786865 +v -54983.519531 -75459.070312 2041.178711 +v -48638.515625 -75685.281250 1021.703247 +v -49805.816406 -75430.054688 2040.855347 +v -43556.382812 -75647.765625 1021.627014 +v -44858.972656 -75395.242188 2040.560425 +v -38702.347656 -75604.210938 1021.557861 +v -40132.238281 -75354.398438 2040.292969 +v -34065.867188 -75554.421875 1021.495667 +v -35615.300781 -75307.335938 2040.052490 +v -29636.822266 -75498.218750 1021.440186 +v -31298.277344 -75253.882812 2039.838013 +v -25405.521484 -75435.476562 1021.391296 +v -27171.699219 -75193.921875 2039.648804 +v -21362.677734 -75366.085938 1021.348755 +v -23226.505859 -75127.367188 2039.484253 +v -17499.408203 -75290.000000 1021.312378 +v -13807.222656 -75207.187500 1021.281921 +v -10278.006836 -75117.625000 1021.257263 +v -6904.015137 -75021.367188 1021.238159 +v -3677.858887 -74918.445312 1021.224487 +v -592.511353 -74808.953125 1021.215942 +v 2358.727295 -74693.000000 1021.212402 +v 7884.043945 -74442.242188 1021.219421 +v 12945.284180 -74167.460938 1021.244080 +v 17584.882812 -73870.265625 1021.284729 +v 21840.845703 -73552.507812 1021.339844 +v 25747.078125 -73216.257812 1021.407837 +v 29333.716797 -72863.734375 1021.487183 +v 23103.757812 -73031.851562 2039.712769 +v 26683.578125 -72686.257812 2040.019653 +v 32627.458984 -72497.281250 1021.576233 +v 29983.332031 -72326.765625 2040.364258 +v 35651.882812 -72119.281250 1021.673523 +v 33025.257812 -71955.757812 2040.740479 +v 38427.796875 -71732.164062 1021.777466 +v 35828.832031 -71575.625000 2041.142456 +v 40973.550781 -71338.304688 1021.886475 +v 38411.101562 -71188.718750 2041.563965 +v 43305.367188 -70940.000000 1021.998901 +v 40787.011719 -70797.328125 2041.999023 +v 45437.691406 -70539.421875 1022.113342 +v 42969.730469 -70403.601562 2042.441650 +v 47383.488281 -70138.578125 1022.228149 +v 44970.980469 -70009.507812 2042.885620 +v 49154.597656 -69739.226562 1022.341736 +v 50761.960938 -69342.890625 1022.452576 +v 52215.703125 -68950.835938 1022.559082 +v 53525.167969 -68564.093750 1022.659729 +v 54698.914062 -68183.468750 1022.752930 +v 55744.773438 -67809.546875 1022.837097 +v 56669.851562 -67442.734375 1022.910645 +v 57547.210938 -67051.593750 1022.976929 +v 57937.632812 -66859.296875 1023.003967 +v 55616.292969 -66972.328125 2045.781738 +v 56032.816406 -66782.976562 2045.886597 +v 58296.378906 -66669.179688 1023.026733 +v 56414.449219 -66595.812500 2045.974487 +v 58920.863281 -66295.429688 1023.058105 +v 57071.300781 -66228.046875 2046.095825 +v 49632.621094 -65954.015625 6138.086426 +v 48824.023438 -66293.750000 6137.143066 +v 44996.011719 -66138.148438 8182.471191 +v 44428.992188 -66305.132812 8181.353027 +v 40506.964844 -66139.281250 10226.121094 +v 39793.425781 -66301.812500 10224.216797 +v 35760.410156 -66125.593750 12268.382812 +v 34113.382812 -66438.585938 12262.307617 +v 25671.238281 -66043.414062 16348.646484 +v 23742.416016 -66305.460938 16339.141602 +v 18438.435547 -66038.453125 18817.791016 +v 16265.006836 -66283.804688 18805.662109 +v 10830.082031 -65988.218750 21286.003906 +v 8450.567383 -66213.804688 21272.052734 +v 1542.065430 -65801.078125 24393.527344 +v -1028.983887 -65996.632812 24379.519531 +v -1850.972412 -65590.968750 25950.646484 +v -4477.410645 -65768.914062 25938.310547 +v -5237.841797 -65375.804688 27525.146484 +v -7913.387207 -65535.230469 27514.693359 +v -12690.767578 -65197.781250 29752.916016 +v -15438.448242 -65330.015625 29746.457031 +v -19390.138672 -64927.460938 32000.000000 +v -18199.453125 -65462.593750 29739.736328 +v -20974.445312 -65595.312500 29732.849609 +v -13343.169922 -65856.859375 27492.111328 +v -16099.730469 -66018.304688 27480.308594 +v -12575.667969 -66309.117188 25897.673828 +v -15352.125977 -66489.656250 25883.568359 +v -11780.762695 -66790.117188 24317.470703 +v -14592.220703 -66988.210938 24301.542969 +v -4440.879883 -67372.335938 21190.246094 +v -7225.744141 -67604.687500 21173.113281 +v 1536.393799 -67816.375000 18713.490234 +v -1211.979980 -68074.023438 18697.000000 +v 7602.120605 -68243.570312 16245.654297 +v 4903.285156 -68524.929688 16230.874023 +v 17724.347656 -68912.375000 12189.208008 +v 15134.384766 -69229.687500 12178.716797 +v 22810.470703 -69230.757812 10163.530273 +v 20287.064453 -69564.734375 10155.489258 +v 27893.152344 -69538.804688 8137.529785 +v 25444.023438 -69888.679688 8131.899414 +v 32957.312500 -69836.781250 6109.691406 +v 30589.906250 -70201.875000 6106.252441 +v 45892.148438 -65814.625000 8184.015137 +v 42139.953125 -65673.898438 10229.923828 +v 38377.824219 -65532.031250 12275.828125 +v 30830.876953 -65245.621094 16367.695312 +v 26243.511719 -65070.679688 18849.646484 +v 21652.566406 -64895.226562 21331.699219 +v 15886.827148 -64674.675781 24448.982422 +v 10126.746094 -64454.511719 27566.535156 +v 13021.971680 -64565.125000 25998.908203 +v 14144.988281 -64835.808594 24444.615234 +v 20081.572266 -65090.363281 21327.001953 +v 24808.402344 -65292.324219 18845.125000 +v 29529.613281 -65493.000000 16363.641602 +v 37288.164062 -65819.460938 12272.951172 +v 41149.804688 -65979.937500 10227.718750 +v 6038.489258 -64298.589844 29783.171875 +v -396.581604 -64229.921875 32000.000000 +v 4013.184082 -64401.082031 29781.269531 +v 8217.055664 -64581.320312 27563.275391 +v 11195.573242 -64709.179688 25995.253906 +v 9919.573242 -64795.816406 25992.546875 +v 12925.310547 -64930.593750 24441.449219 +v 11571.125000 -65031.175781 24437.677734 +v 18983.175781 -65200.898438 21323.597656 +v 17760.769531 -65316.886719 21319.541016 +v 23811.980469 -65414.789062 18841.847656 +v 22701.964844 -65542.289062 18837.943359 +v 28637.191406 -65626.820312 16360.705078 +v 27642.873047 -65765.171875 16357.205078 +v 36564.863281 -65970.710938 12270.866211 +v -6749.990234 -64463.250000 32000.000000 +v 1078.135498 -64538.671875 29778.248047 +v 2617.200684 -64467.054688 29779.892578 +v -7233.935059 -64935.207031 29764.667969 +v -4521.158203 -64805.175781 29769.769531 +v -1815.461792 -64676.144531 29774.232422 +v 2644.771973 -64907.347656 27551.214844 +v 5418.459961 -64743.605469 27558.097656 +v 8505.190430 -64888.308594 25989.292969 +v -44671.414062 -65855.773438 32000.000000 +v -26568.642578 -65860.351562 29718.951172 +v -23763.958984 -65727.976562 29725.888672 +v -69952.687500 -66782.968750 32000.000000 +v -52607.332031 -67002.734375 29673.179688 +v -49634.062500 -66882.750000 29675.644531 +v -46682.812500 -66760.343750 29678.986328 +v -42359.824219 -67414.867188 27388.019531 +v -39296.632812 -67269.843750 27395.083984 +v -39159.289062 -67860.570312 25788.867188 +v -36010.460938 -67701.757812 25797.117188 +v -35859.882812 -68291.492188 24209.794922 +v -32633.554688 -68119.367188 24219.261719 +v -25567.818359 -68922.382812 21084.611328 +v -22299.076172 -68717.078125 21096.488281 +v -16356.836914 -69304.734375 18623.246094 +v -13127.439453 -69070.507812 18636.085938 +v -6979.289062 -69612.304688 16176.273438 +v -3836.607422 -69349.125000 16188.840820 +v 6561.238770 -70159.468750 12148.883789 +v 9558.527344 -69854.976562 12158.411133 +v 14805.341797 -70223.148438 10139.924805 +v 17620.738281 -69896.140625 10147.583984 +v 22839.390625 -70236.000000 8126.364746 +v -82593.960938 -67211.671875 32000.000000 +v -72544.242188 -67714.421875 29685.074219 +v -70968.828125 -67663.242188 29682.109375 +v -69401.015625 -67610.960938 29679.529297 +v -66850.609375 -68343.101562 27388.947266 +v -65121.128906 -68290.421875 27385.166016 +v -63009.195312 -68786.984375 25787.218750 +v -61182.863281 -68732.750000 25783.287109 +v -60755.664062 -69267.359375 24205.972656 +v -58817.980469 -69212.609375 24201.736328 +v -53687.714844 -70132.812500 21065.761719 +v -51570.222656 -70073.843750 21062.068359 +v -46998.507812 -70769.265625 18590.115234 +v -44769.355469 -70704.679688 18587.365234 +v -39813.285156 -71369.164062 16132.602539 +v -37494.644531 -71297.453125 16130.831055 +v -28712.269531 -72332.515625 12107.709961 +v -26241.835938 -72249.523438 12106.926758 +v -21621.179688 -72740.789062 10100.462891 +v -19129.863281 -72648.398438 10100.212891 +v -14362.544922 -73121.968750 8093.197754 +v -9453.533203 -72911.062500 8093.544434 +v -4490.951172 -73362.148438 6082.824219 +v 220.934448 -73118.101562 6083.564453 +v -88915.828125 -67268.648438 32000.000000 +v -83802.187500 -67967.367188 29717.609375 +v -82167.664062 -67948.734375 29711.617188 +v -80542.054688 -67922.734375 29706.091797 +v -79440.515625 -68632.265625 27434.460938 +v -77586.210938 -68605.367188 27425.775391 +v -76464.523438 -69090.492188 25836.974609 +v -74464.085938 -69060.398438 25827.312500 +v -75211.453125 -69560.968750 24260.382812 +v -73041.523438 -69533.468750 24249.767578 +v -69830.031250 -70442.179688 21117.421875 +v -67367.117188 -70412.390625 21107.072266 +v -64245.984375 -71106.031250 18633.433594 +v -61585.625000 -71072.250000 18624.470703 +v -57993.386719 -71742.156250 16165.862305 +v -55162.156250 -71703.617188 16158.700195 +v -48492.679688 -72762.242188 12127.490234 +v -45367.027344 -72717.328125 12123.006836 +v -41736.304688 -73227.703125 10112.788086 +v -38539.898438 -73175.460938 10109.797852 +v -34694.140625 -73673.914062 8099.908691 +v -31446.363281 -73613.242188 8098.118164 +v -27421.917969 -74100.039062 6085.617676 +v -24140.455078 -74029.671875 6084.703125 +v -93822.585938 -67855.898438 29764.066406 +v -92117.804688 -67907.726562 29755.013672 +v -90430.171875 -67944.382812 29746.501953 +v -91014.812500 -68607.796875 27503.701172 +v -89033.851562 -68639.398438 27490.019531 +v -89111.523438 -69100.242188 25915.035156 +v -86920.265625 -69124.085938 25899.509766 +v -89105.703125 -69551.546875 24346.462891 +v -86676.421875 -69578.664062 24329.316406 +v -85940.289062 -70460.898438 21202.986328 +v -83081.023438 -70480.500000 21185.787109 +v -81896.351562 -71161.773438 18709.199219 +v -78734.664062 -71172.632812 18693.812500 +v -77009.101562 -71836.375000 16228.015625 +v -73573.812500 -71838.898438 16215.248047 +v -69863.593750 -72900.335938 12167.625977 +v -65957.460938 -72893.820312 12159.271484 +v -63736.187500 -73411.890625 10140.583984 +v -59698.179688 -73397.078125 10134.708984 +v -57181.156250 -73907.953125 8117.350586 +v -53038.312500 -73884.609375 8113.598145 +v -50266.085938 -74389.226562 6095.073242 +v -46043.492188 -74356.789062 6092.995605 +v -95495.171875 -67790.539062 29773.667969 +v -97112.148438 -68424.640625 27550.250000 +v -98221.921875 -68867.460938 25988.001953 +v -99311.179688 -69307.867188 24427.162109 +v -95909.875000 -68947.375000 25968.082031 +v -96701.476562 -69390.062500 24405.117188 +v -93598.273438 -69013.421875 25949.294922 +v -94109.859375 -69458.664062 24384.335938 +v -91331.343750 -69064.046875 25931.621094 +v -91577.421875 -69512.195312 24364.794922 +v -101437.156250 -70182.632812 21308.230469 +v -103088.835938 -70874.375000 18827.056641 +v -104713.117188 -71562.882812 16347.446289 +v -100332.625000 -71631.523438 16326.988281 +v -101987.734375 -72744.734375 12246.935547 +v -96823.328125 -72789.375000 12233.249023 +v -97168.625000 -73335.429688 10197.287109 +v -91772.359375 -73365.484375 10187.420898 +v -91678.312500 -73903.773438 8154.257324 +v -86091.898438 -73921.296875 8147.777832 +v -85599.843750 -74453.984375 6115.951172 +v -79859.703125 -74460.617188 6112.249023 +v -107353.492188 -72693.429688 12261.456055 +v -108666.039062 -73257.671875 10218.908203 +v -109979.742188 -73821.921875 8176.302734 +v -111299.312500 -74386.718750 6133.375000 +v -104439.757812 -74408.648438 6128.615234 +v 54683.285156 -67357.343750 2045.525513 +v 53701.816406 -67718.382812 2045.240845 +v 52596.082031 -68086.359375 2044.915405 +v 51360.171875 -68460.875000 2044.554932 +v 49987.433594 -68841.359375 2044.165771 +v 48470.527344 -69227.015625 2043.753784 +v 46801.343750 -69616.812500 2043.325073 +v 19218.554688 -73361.250000 2039.449707 +v 14999.234375 -73672.242188 2039.236572 +v 10413.333008 -73962.781250 2039.079346 +v 5424.317383 -74231.023438 2038.984009 +v -8.732517 -74475.382812 2038.956665 +v -2905.837891 -74588.187500 2038.970459 +v -5931.455078 -74694.578125 2039.003540 +v -9092.082031 -74794.429688 2039.056641 +v -12394.541016 -74887.679688 2039.130493 +v -15846.014648 -74974.257812 2039.225830 +v -19454.037109 -75054.156250 2039.343506 +v -72016.054688 -75514.382812 2042.326416 +v -78233.828125 -75523.445312 2042.770752 +v -84743.125000 -75528.539062 2043.247192 +v -91557.453125 -75530.171875 2043.756592 +v -98691.140625 -75528.875000 2044.299561 +v -106158.742188 -75525.265625 2044.876953 +v 48326.769531 -66467.929688 6136.459961 +v 47778.488281 -66644.601562 6135.645508 +v 46588.359375 -67003.234375 6133.654297 +v 45358.726562 -67339.625000 6131.442871 +v 44000.273438 -67682.382812 6128.913574 +v 42510.527344 -68031.109375 6126.112793 +v 40886.007812 -68385.218750 6123.088379 +v 39123.214844 -68743.937500 6119.887207 +v 37217.707031 -69106.273438 6116.555664 +v 35164.355469 -69471.031250 6113.141602 +v 28054.437500 -70564.437500 6102.871582 +v 25341.882812 -70922.453125 6099.596191 +v 20071.800781 -70578.812500 8121.002441 +v 22441.589844 -71273.781250 6096.472656 +v 17132.304688 -70915.085938 8115.889160 +v 11833.359375 -70543.835938 10132.622070 +v 19340.986328 -71616.210938 6093.548828 +v 14010.167969 -71242.718750 8111.102539 +v 8695.667969 -70856.218750 10125.785156 +v 3414.550049 -70456.078125 12139.963867 +v 16025.277344 -71947.515625 6090.871094 +v 10692.596680 -71559.585938 8106.718750 +v 5381.270020 -71158.312500 10119.524414 +v 109.079369 -70742.976562 12131.794922 +v -10246.772461 -69867.203125 16164.765625 +v 12477.143555 -72265.468750 6088.486816 +v 7164.462402 -71863.578125 8102.815430 +v 1877.057983 -71448.132812 10113.949219 +v -3366.424561 -71018.328125 12124.521484 +v -13647.045898 -70112.335938 16154.517578 +v -19697.544922 -69530.460938 18611.814453 +v 8676.449219 -72567.906250 6086.443359 +v 3408.024658 -72152.648438 8099.469238 +v -1832.445801 -71723.765625 10109.169922 +v -7025.309082 -71280.343750 12118.287109 +v -17189.605469 -70346.234375 16145.733398 +v -23156.990234 -69746.453125 18602.013672 +v -28932.478516 -69119.593750 21074.429688 +v 4599.937988 -72852.773438 6084.786621 +v -597.348572 -72424.804688 8096.757324 +v -5765.338379 -71983.320312 10105.296875 +v -10883.240234 -71527.281250 12113.233398 +v -20885.611328 -70567.453125 16138.613281 +v -26743.871094 -69951.437500 18594.070312 +v -32399.521484 -69307.648438 21066.177734 +v -39158.125000 -68456.968750 24202.123047 +v -9570.124023 -73583.375000 6082.612305 +v -12259.365234 -73685.039062 6082.719238 +v -15055.301758 -73780.585938 6082.976074 +v -17963.500000 -73869.914062 6083.388184 +v -20989.820312 -73952.960938 6083.961914 +v -30841.050781 -74164.062500 6086.711426 +v -34405.046875 -74221.757812 6087.990234 +v -38121.449219 -74273.109375 6089.459961 +v -41998.171875 -74318.109375 6091.126465 +v -54674.988281 -74415.515625 6097.365723 +v -59279.640625 -74435.789062 6099.877930 +v -64089.980469 -74450.218750 6102.616699 +v -69116.218750 -74459.015625 6105.587402 +v -74368.953125 -74462.398438 6108.796387 +v -91600.625000 -74442.890625 6119.909180 +v -97876.406250 -74427.625000 6124.128418 +v 43801.417969 -66474.921875 8180.019531 +v 42466.132812 -66819.179688 8176.759766 +v 41102.039062 -67142.242188 8173.139648 +v 39611.773438 -67471.429688 8168.998535 +v 37993.882812 -67806.312500 8164.413574 +v 36245.718750 -68146.304688 8159.462402 +v 34365.101562 -68490.617188 8154.221191 +v 32348.806641 -68838.281250 8148.767578 +v 30192.992188 -69188.140625 8143.177734 +v -4875.454590 -72678.179688 8094.756836 +v -14388.275391 -72447.187500 10100.708008 +v -23847.388672 -72161.257812 12106.600586 +v -35235.921875 -71221.234375 16129.727539 +v -42591.015625 -70636.164062 18585.386719 +v -49493.890625 -70011.640625 21059.210938 +v -56908.542969 -69155.609375 24198.302734 +v -59378.015625 -68676.789062 25780.076172 +v -63407.296875 -68236.664062 27382.005859 +v -67840.593750 -67558.304688 29677.322266 +v -16951.908203 -73218.796875 8093.372559 +v -19637.441406 -73309.742188 8093.792969 +v -22424.187500 -73394.703125 8094.467773 +v -25317.458984 -73473.632812 8095.407227 +v -28322.876953 -73546.484375 8096.621094 +v -38072.761719 -73728.492188 8102.002441 +v -41589.101562 -73776.914062 8104.408203 +v -45250.371094 -73819.093750 8107.136719 +v -49064.128906 -73854.992188 8110.196777 +v -61501.292969 -73925.093750 8121.463867 +v -66007.859375 -73936.109375 8125.947754 +v -70710.164062 -73941.109375 8130.811035 +v -75617.804688 -73940.210938 8136.064453 +v -80741.625000 -73933.539062 8141.716309 +v -97515.445312 -73881.070312 8161.164551 +v -103614.531250 -73853.507812 8168.510254 +v 38305.058594 -66630.859375 10219.560547 +v 36802.000000 -66939.875000 10214.389648 +v 35178.183594 -67254.773438 10208.475586 +v 33432.781250 -67575.078125 10201.927734 +v 31563.560547 -67900.218750 10194.855469 +v 29569.351562 -68229.398438 10187.370117 +v 27447.789062 -68561.671875 10179.580078 +v 25195.986328 -68895.890625 10171.596680 +v -9942.585938 -72225.007812 10102.439453 +v -14958.421875 -71757.429688 12109.505859 +v -24748.056641 -70774.476562 16133.361328 +v -30468.281250 -70144.078125 18588.210938 +v -35976.394531 -69485.367188 21060.089844 +v -42532.832031 -68614.859375 24196.462891 +v -42365.082031 -68014.062500 25782.232422 +v -24198.423828 -72827.570312 10101.062500 +v -26866.087891 -72908.671875 10102.027344 +v -29628.912109 -72984.039062 10103.369141 +v -32491.916016 -73053.625000 10105.101562 +v -35460.390625 -73117.429688 10107.240234 +v -45055.769531 -73274.000000 10116.224609 +v -48504.746094 -73314.203125 10120.121094 +v -52090.011719 -73348.171875 10124.491211 +v -55818.695312 -73375.820312 10129.349609 +v -67941.007812 -73420.257812 10146.988281 +v -72320.914062 -73422.171875 10153.934570 +v -76884.437500 -73417.640625 10161.437500 +v -81641.695312 -73406.609375 10169.509766 +v -86601.687500 -73389.164062 10178.166992 +v -102800.179688 -73299.187500 10207.778320 +v 32468.675781 -66732.781250 12255.562500 +v 30710.974609 -67032.601562 12247.845703 +v 28839.775391 -67337.546875 12239.302734 +v 26852.919922 -67647.031250 12230.076172 +v 24749.957031 -67960.273438 12220.310547 +v 22529.101562 -68276.328125 12210.147461 +v 20188.136719 -68594.109375 12199.732422 +v 12414.142578 -69544.453125 12168.403320 +v 2099.737549 -68803.937500 16216.342773 +v -4049.300293 -68329.523438 18680.789062 +v -10083.533203 -67835.132812 21156.271484 +v -17456.046875 -67184.828125 24285.884766 +v -18169.136719 -66669.531250 25869.511719 +v -18885.343750 -66179.664062 27468.382812 +v -19271.822266 -71969.218750 12107.247070 +v -33034.304688 -71140.531250 16129.267578 +v -40461.199219 -70563.726562 18584.156250 +v -47456.972656 -69946.179688 21057.156250 +v -55026.292969 -69096.328125 24195.646484 +v -57593.914062 -68619.046875 25777.560547 +v -61708.648438 -68181.718750 27379.443359 +v -66287.382812 -67505.398438 29675.476562 +v -31262.623047 -72410.171875 12108.967773 +v -33897.046875 -72482.437500 12110.717773 +v -36619.937500 -72549.296875 12112.979492 +v -39435.933594 -72610.726562 12115.769531 +v -42349.917969 -72666.750000 12119.105469 +v -51732.539062 -72801.218750 12132.574219 +v -55092.562500 -72834.054688 12138.276367 +v -58579.027344 -72860.546875 12144.614258 +v -62198.402344 -72880.515625 12151.606445 +v -73923.992188 -72899.929688 12176.688477 +v -78146.007812 -72892.476562 12186.476562 +v -82539.007812 -72877.757812 12197.009766 +v -87110.656250 -72855.703125 12208.303711 +v -91866.984375 -72826.375000 12220.376953 +v 21721.634766 -66572.523438 16328.270508 +v 19608.324219 -66844.078125 16316.234375 +v 17399.730469 -67119.546875 16303.235352 +v 15096.228516 -67398.148438 16289.475586 +v 12696.519531 -67679.023438 16275.157227 +v 10199.093750 -67961.195312 16260.482422 +v -812.083435 -69079.156250 16202.264648 +v -10003.070312 -68829.046875 18650.107422 +v -19120.681641 -68504.664062 21109.828125 +v -29475.123047 -67941.382812 24230.304688 +v -32915.652344 -67538.250000 25806.781250 +v -36273.550781 -67121.351562 27403.326172 +v -43752.652344 -66635.992188 29683.111328 +v -28791.916016 -70965.929688 16130.178711 +v -34341.828125 -70323.125000 18584.660156 +v -39671.613281 -69651.656250 21056.400391 +v -45989.132812 -68764.281250 24193.033203 +v -45631.152344 -68161.414062 25777.402344 +v -45465.132812 -67555.953125 27382.292969 +v -42194.812500 -71436.343750 16135.069336 +v -44642.378906 -71498.984375 16138.255859 +v -47159.308594 -71557.070312 16142.186523 +v -49749.089844 -71610.648438 16146.886719 +v -52415.406250 -71659.625000 16152.382812 +v -60913.371094 -71774.835938 16173.896484 +v -63926.656250 -71801.226562 16182.826172 +v -67037.828125 -71820.945312 16192.677734 +v -70251.710938 -71833.632812 16203.476562 +v -80562.500000 -71825.617188 16241.807617 +v -84241.828125 -71806.054688 16256.646484 +v -88051.945312 -71777.296875 16272.558594 +v -91994.851562 -71739.156250 16289.569336 +v -96086.875000 -71690.671875 16307.704102 +v 20535.146484 -65797.664062 18828.394531 +v 15405.163086 -65548.007812 21309.621094 +v 8993.957031 -65229.785156 24428.455078 +v 14013.972656 -66533.179688 18792.234375 +v 11681.936523 -66786.039062 18777.732422 +v 9269.493164 -67041.625000 18762.380859 +v 6775.362793 -67299.148438 18746.406250 +v 4198.187012 -67557.718750 18730.035156 +v -6978.473633 -68581.617188 18665.083984 +v -13016.628906 -68062.648438 21139.953125 +v -20374.042969 -67379.203125 24270.712891 +v -21028.064453 -66848.171875 25855.697266 +v -21701.083984 -66340.500000 27456.494141 +v -38377.742188 -70487.382812 18583.644531 +v -45457.808594 -69877.445312 21055.876953 +v -53170.214844 -69034.710938 24193.736328 +v -55829.855469 -68559.476562 25775.718750 +v -60024.718750 -68125.531250 27377.458984 +v -64741.226562 -67452.125000 29673.982422 +v -49280.898438 -70829.937500 18593.669922 +v -51619.074219 -70886.687500 18598.056641 +v -54015.726562 -70939.562500 18603.300781 +v -56473.683594 -70988.445312 18609.431641 +v -58995.949219 -71032.875000 18616.480469 +v -66980.562500 -71133.679688 18643.396484 +v -69792.835938 -71154.671875 18654.386719 +v -72686.468750 -71168.507812 18666.435547 +v -75665.867188 -71174.679688 18679.568359 +v -85157.843750 -71141.281250 18725.753906 +v -88522.304688 -71110.601562 18743.507812 +v -91989.335938 -71069.382812 18762.486328 +v -95575.906250 -71016.312500 18782.716797 +v -99284.546875 -70950.890625 18804.232422 +v 13147.853516 -65766.109375 21298.605469 +v 4066.864258 -65607.820312 24406.498047 +v 738.904785 -65414.937500 25962.048828 +v 6005.216797 -66442.398438 21256.986328 +v 3494.742676 -66673.289062 21241.037109 +v 917.792542 -66905.765625 21224.441406 +v -1726.942139 -67139.062500 21207.433594 +v -16027.878906 -68286.179688 21124.394531 +v -26381.054688 -67758.218750 24242.705078 +v -29872.230469 -67370.585938 25817.667969 +v -33288.746094 -66969.757812 27412.582031 +v -40842.703125 -66509.968750 29687.919922 +v -43494.839844 -69805.445312 21055.343750 +v -49532.789062 -68904.351562 24192.052734 +v -48961.171875 -68301.859375 25774.578125 +v -48614.765625 -67692.398438 27378.068359 +v -55848.210938 -70188.570312 21070.318359 +v -58053.640625 -70241.148438 21075.765625 +v -60306.042969 -70290.437500 21082.136719 +v -62607.585938 -70335.867188 21089.458984 +v -64960.496094 -70376.734375 21097.759766 +v -72351.679688 -70465.460938 21128.841797 +v -74934.648438 -70481.601562 21141.357422 +v -77582.304688 -70489.960938 21155.001953 +v -80297.046875 -70489.851562 21169.800781 +v -88876.453125 -70430.312500 21221.429688 +v -91886.835938 -70388.226562 21241.146484 +v -94989.023438 -70333.046875 21262.166016 +v -98183.609375 -70264.054688 21284.517578 +v 6550.260742 -65417.246094 24418.212891 +v 5826.079590 -65069.851562 25981.279297 +v -3645.437012 -66193.898438 24364.693359 +v -6308.719727 -66392.304688 24349.263672 +v -9020.080078 -66591.257812 24333.449219 +v -23348.259766 -67570.585938 24256.248047 +v -23930.410156 -67024.960938 25842.322266 +v -24548.058594 -66500.390625 27444.808594 +v -29389.132812 -65992.226562 29712.130859 +v -51339.351562 -68970.734375 24192.546875 +v -54085.175781 -68498.023438 25774.523438 +v -58355.070312 -68068.039062 27376.033203 +v -63201.957031 -67398.406250 29672.824219 +v -62722.707031 -69319.929688 24211.039062 +v -64720.277344 -69370.179688 24216.960938 +v -66749.632812 -69417.460938 24223.767578 +v -68812.031250 -69460.945312 24231.486328 +v -70908.820312 -69499.875000 24240.142578 +v -77420.015625 -69581.609375 24272.019531 +v -79669.460938 -69594.609375 24284.705078 +v -81960.812500 -69599.132812 24298.462891 +v -84294.757812 -69594.226562 24313.324219 +v 3297.317383 -65241.101562 25972.326172 +v -2589.221924 -65217.871094 27534.828125 +v -9955.425781 -65066.085938 29759.017578 +v -7139.447754 -65948.234375 25925.240234 +v -9838.479492 -66128.468750 25911.628906 +v -26877.845703 -67199.304688 25829.580078 +v -30340.552734 -66815.468750 27422.689453 +v -37952.140625 -66382.406250 29693.322266 +v -52359.234375 -68434.625000 25773.951172 +v -51811.156250 -67823.578125 27375.509766 +v -55603.605469 -67119.859375 29671.685547 +v -64857.765625 -68839.570312 25791.894531 +v -66729.382812 -68890.367188 25797.341797 +v -68624.929688 -68938.695312 25803.582031 +v -70545.250000 -68983.679688 25810.640625 +v -72491.273438 -69024.523438 25818.542969 +v -78493.500000 -69114.007812 25847.550781 +v -80552.789062 -69130.093750 25859.068359 +v -82642.859375 -69137.867188 25871.550781 +v -84763.765625 -69136.296875 25885.023438 +v 6888.354980 -64659.542969 27560.914062 +v 37.703880 -65061.617188 27543.570312 +v -10614.729492 -65695.703125 27503.626953 +v -27427.455078 -66658.859375 27433.486328 +v -32226.085938 -66123.343750 29705.521484 +v -35080.183594 -66253.476562 29699.220703 +v -55056.957031 -67948.828125 27374.777344 +v -56699.285156 -68009.156250 27375.146484 +v -58623.933594 -67233.632812 29671.257812 +v -60143.460938 -67289.257812 29671.474609 +v -61669.417969 -67344.148438 29671.992188 +v -68596.242188 -68394.546875 27393.367188 +v -70358.585938 -68444.062500 27398.447266 +v -72138.148438 -68490.742188 27404.208984 +v -74127.429688 -67763.585938 29688.435547 +v -73935.500000 -68533.757812 27410.669922 +v -75718.570312 -67809.882812 29692.207031 +v -75751.375000 -68572.250000 27417.851562 +v -77318.031250 -67852.421875 29696.398438 +v -78925.835938 -67890.320312 29701.021484 +v -81315.656250 -68652.070312 27443.927734 +v -83211.648438 -68663.851562 27454.197266 +v -85128.031250 -68666.523438 27465.289062 +v -85444.640625 -67977.507812 29724.082031 +v -87069.242188 -68658.718750 27477.222656 +v -87099.117188 -67977.734375 29731.048828 +v -88763.593750 -67966.953125 29738.517578 +v -93030.906250 -68561.726562 27518.287109 +v -95078.953125 -68500.148438 27533.796875 +# 37338 vertices, 0 vertices normals + +f 1 2 3 +f 3 2 4 +f 3 4 5 +f 5 4 6 +f 5 6 7 +f 7 6 8 +f 7 8 9 +f 9 8 10 +f 9 10 11 +f 11 10 12 +f 11 12 13 +f 13 12 14 +f 13 14 15 +f 15 14 16 +f 15 16 17 +f 17 16 18 +f 17 18 19 +f 19 18 20 +f 19 20 21 +f 22 23 1 +f 1 23 24 +f 1 24 4 +f 4 24 25 +f 4 25 6 +f 6 25 26 +f 6 26 8 +f 8 26 27 +f 8 27 10 +f 10 27 28 +f 10 28 12 +f 12 28 29 +f 12 29 14 +f 14 29 30 +f 14 30 16 +f 16 30 31 +f 16 31 18 +f 18 31 32 +f 18 32 33 +f 34 35 22 +f 22 35 36 +f 22 36 24 +f 24 36 37 +f 24 37 25 +f 25 37 38 +f 25 38 26 +f 26 38 39 +f 26 39 27 +f 27 39 40 +f 27 40 28 +f 28 40 41 +f 28 41 29 +f 29 41 42 +f 29 42 30 +f 30 42 43 +f 30 43 31 +f 31 43 44 +f 31 44 45 +f 46 47 34 +f 34 47 48 +f 34 48 36 +f 36 48 49 +f 36 49 37 +f 37 49 50 +f 37 50 38 +f 38 50 51 +f 38 51 39 +f 39 51 52 +f 39 52 40 +f 40 52 53 +f 40 53 41 +f 41 53 54 +f 41 54 42 +f 42 54 55 +f 42 55 43 +f 43 55 56 +f 43 56 57 +f 58 59 46 +f 46 59 60 +f 46 60 48 +f 48 60 61 +f 48 61 49 +f 49 61 62 +f 49 62 50 +f 50 62 63 +f 50 63 51 +f 51 63 64 +f 51 64 52 +f 52 64 65 +f 52 65 53 +f 53 65 66 +f 53 66 54 +f 54 66 67 +f 54 67 55 +f 55 67 68 +f 55 68 56 +f 59 58 69 +f 69 58 70 +f 69 70 71 +f 71 70 72 +f 71 72 73 +f 74 75 73 +f 73 75 76 +f 73 76 77 +f 77 76 78 +f 77 78 71 +f 71 78 69 +f 79 80 74 +f 74 80 81 +f 74 81 82 +f 82 81 83 +f 82 83 75 +f 75 83 84 +f 75 84 85 +f 85 84 61 +f 85 61 60 +f 80 79 86 +f 86 79 87 +f 86 87 88 +f 88 87 89 +f 88 89 90 +f 87 91 89 +f 88 90 92 +f 92 90 93 +f 92 93 94 +f 94 93 95 +f 94 95 67 +f 67 95 68 +f 57 44 43 +f 45 96 31 +f 31 96 97 +f 31 97 32 +f 33 98 18 +f 18 98 20 +f 21 99 19 +f 19 99 100 +f 19 100 17 +f 17 100 15 +f 100 101 15 +f 15 101 13 +f 101 102 13 +f 13 102 11 +f 102 103 11 +f 11 103 104 +f 11 104 105 +f 11 105 106 +f 106 105 107 +f 106 107 108 +f 108 107 109 +f 108 109 110 +f 110 109 111 +f 110 111 5 +f 5 111 112 +f 5 112 113 +f 113 112 114 +f 114 112 111 +f 113 3 5 +f 71 73 77 +f 75 74 82 +f 60 59 69 +f 60 69 78 +f 46 48 47 +f 34 36 35 +f 22 24 23 +f 1 4 2 +f 80 115 116 +f 116 115 117 +f 116 117 118 +f 118 117 63 +f 118 63 62 +f 115 119 117 +f 117 119 64 +f 117 64 63 +f 80 86 115 +f 115 86 120 +f 115 120 119 +f 119 120 121 +f 119 121 65 +f 65 121 66 +f 119 65 64 +f 83 81 116 +f 116 81 80 +f 83 116 118 +f 121 120 92 +f 92 120 88 +f 66 121 94 +f 94 121 92 +f 94 67 66 +f 120 86 88 +f 84 83 118 +f 84 118 62 +f 11 106 9 +f 9 106 108 +f 9 108 7 +f 7 108 110 +f 7 110 5 +f 61 84 62 +f 76 75 85 +f 60 78 85 +f 85 78 76 +f 122 123 73 +f 73 123 124 +f 73 124 74 +f 74 124 125 +f 74 125 126 +f 126 125 127 +f 126 127 128 +f 128 127 129 +f 128 129 130 +f 123 122 131 +f 131 122 132 +f 131 132 133 +f 133 134 131 +f 131 134 135 +f 131 135 124 +f 124 135 125 +f 134 136 135 +f 135 136 137 +f 135 137 127 +f 127 137 138 +f 127 138 129 +f 128 130 139 +f 139 130 140 +f 139 140 141 +f 141 140 142 +f 141 142 143 +f 143 142 144 +f 143 144 91 +f 140 145 142 +f 142 145 146 +f 142 146 147 +f 147 148 142 +f 142 148 149 +f 142 149 150 +f 150 151 142 +f 142 151 152 +f 142 152 144 +f 91 87 143 +f 143 87 153 +f 143 153 141 +f 141 153 139 +f 87 79 153 +f 153 79 154 +f 153 154 139 +f 139 154 128 +f 79 74 154 +f 154 74 126 +f 154 126 128 +f 131 124 123 +f 127 125 135 +f 155 156 157 +f 157 156 158 +f 157 158 159 +f 159 158 160 +f 159 160 161 +f 161 160 162 +f 161 162 163 +f 163 162 164 +f 163 164 165 +f 165 164 166 +f 165 166 167 +f 167 166 168 +f 167 168 169 +f 155 170 156 +f 156 170 171 +f 156 171 172 +f 172 171 173 +f 172 173 174 +f 174 173 175 +f 174 175 176 +f 176 175 177 +f 177 175 178 +f 178 175 179 +f 179 175 180 +f 179 180 181 +f 181 180 182 +f 170 183 171 +f 171 183 184 +f 171 184 185 +f 185 186 171 +f 171 186 187 +f 171 187 188 +f 188 189 171 +f 171 189 173 +f 189 180 173 +f 173 180 175 +f 176 190 174 +f 174 190 191 +f 174 191 192 +f 192 191 193 +f 192 193 194 +f 194 193 195 +f 194 195 196 +f 196 195 197 +f 196 197 160 +f 160 197 162 +f 193 198 195 +f 195 198 199 +f 195 199 197 +f 197 199 164 +f 197 164 162 +f 198 168 199 +f 199 168 166 +f 199 166 164 +f 167 169 200 +f 200 169 201 +f 200 201 202 +f 202 201 203 +f 202 203 204 +f 204 203 205 +f 204 205 206 +f 206 205 207 +f 206 207 208 +f 208 207 209 +f 208 209 210 +f 210 209 211 +f 210 211 212 +f 212 211 213 +f 212 213 214 +f 214 213 215 +f 214 215 216 +f 216 215 217 +f 217 215 218 +f 217 218 219 +f 219 218 220 +f 220 218 221 +f 220 221 222 +f 222 221 223 +f 223 221 224 +f 224 221 225 +f 225 221 226 +f 226 221 227 +f 226 227 228 +f 228 227 229 +f 228 229 230 +f 230 229 231 +f 230 231 232 +f 232 231 233 +f 232 233 234 +f 234 233 235 +f 234 235 236 +f 236 235 237 +f 236 237 238 +f 238 237 205 +f 238 205 203 +f 201 239 203 +f 203 239 238 +f 238 239 236 +f 236 239 240 +f 236 240 234 +f 234 240 241 +f 234 241 232 +f 232 241 242 +f 232 242 230 +f 230 242 243 +f 230 243 244 +f 230 244 228 +f 228 244 245 +f 228 245 246 +f 246 247 228 +f 228 247 248 +f 228 248 226 +f 247 249 248 +f 248 249 250 +f 248 250 251 +f 208 252 206 +f 206 252 253 +f 206 253 204 +f 204 253 254 +f 204 254 202 +f 202 254 200 +f 252 255 253 +f 253 255 256 +f 253 256 254 +f 254 256 257 +f 254 257 200 +f 200 257 167 +f 256 255 258 +f 258 255 259 +f 258 259 163 +f 163 259 161 +f 196 160 158 +f 158 156 260 +f 260 156 172 +f 260 172 192 +f 192 172 174 +f 257 256 258 +f 257 258 165 +f 165 258 163 +f 205 237 207 +f 207 237 209 +f 237 235 209 +f 209 235 211 +f 235 233 211 +f 211 233 213 +f 233 231 213 +f 213 231 215 +f 227 221 218 +f 231 229 215 +f 215 229 218 +f 229 227 218 +f 194 196 260 +f 260 196 158 +f 194 260 192 +f 167 257 165 +f 73 193 191 +f 73 191 122 +f 193 72 198 +f 198 72 70 +f 168 58 169 +f 169 58 46 +f 240 1 241 +f 129 261 130 +f 130 261 262 +f 130 262 182 +f 181 263 179 +f 179 263 264 +f 179 264 178 +f 178 264 177 +f 176 265 266 +f 176 266 190 +f 190 266 191 +f 191 266 267 +f 191 267 132 +f 133 268 134 +f 137 269 270 +f 137 270 138 +f 132 122 191 +f 182 180 130 +f 263 262 261 +f 270 263 261 +f 265 264 269 +f 269 264 270 +f 266 265 268 +f 267 266 268 +f 145 140 188 +f 188 140 189 +f 189 140 180 +f 152 271 144 +f 144 271 272 +f 144 272 155 +f 155 272 170 +f 170 272 273 +f 170 273 183 +f 187 276 188 +f 188 276 277 +f 188 277 146 +f 150 279 280 +f 151 280 271 +f 151 271 152 +f 146 145 188 +f 155 157 144 +f 273 272 271 +f 280 273 271 +f 276 275 278 +f 278 275 279 +f 277 276 278 +f 44 57 212 +f 210 56 208 +f 208 56 68 +f 252 95 255 +f 259 90 161 +f 161 89 91 +f 161 91 159 +f 159 91 144 +f 159 144 157 +f 21 281 99 +f 99 281 224 +f 99 224 225 +f 283 32 284 +f 285 96 45 +f 285 45 212 +f 212 45 44 +f 212 214 285 +f 284 216 217 +f 284 219 283 +f 283 220 282 +f 282 222 281 +f 225 100 99 +f 113 286 3 +f 3 286 242 +f 3 242 241 +f 113 114 286 +f 286 114 287 +f 286 287 243 +f 246 288 289 +f 246 289 247 +f 250 290 251 +f 251 290 103 +f 251 103 102 +f 114 111 287 +f 287 111 109 +f 287 109 288 +f 288 109 107 +f 288 107 289 +f 289 107 105 +f 289 105 104 +f 289 104 290 +f 290 104 103 +f 251 101 248 +f 243 242 286 +f 291 292 293 +f 293 292 294 +f 293 294 295 +f 295 294 296 +f 295 296 297 +f 297 296 298 +f 297 298 299 +f 297 299 300 +f 300 299 301 +f 300 301 302 +f 302 301 303 +f 302 303 304 +f 304 303 305 +f 304 305 306 +f 306 305 307 +f 304 306 308 +f 308 306 309 +f 308 309 310 +f 310 311 308 +f 308 311 312 +f 308 312 304 +f 304 312 302 +f 311 313 312 +f 312 313 314 +f 312 314 302 +f 302 314 300 +f 313 315 314 +f 314 315 316 +f 314 316 317 +f 317 316 318 +f 317 318 319 +f 319 318 320 +f 319 320 321 +f 321 320 322 +f 321 322 323 +f 323 324 321 +f 321 324 325 +f 321 325 293 +f 293 325 326 +f 293 326 291 +f 291 326 327 +f 327 326 328 +f 328 326 329 +f 329 326 330 +f 329 330 331 +f 331 330 332 +f 332 330 333 +f 332 333 334 +f 334 333 335 +f 335 333 336 +f 324 337 325 +f 325 337 338 +f 325 338 339 +f 325 339 340 +f 340 339 341 +f 340 341 342 +f 342 343 340 +f 340 343 344 +f 340 344 345 +f 345 333 340 +f 340 333 330 +f 340 330 326 +f 314 317 300 +f 300 317 297 +f 321 293 295 +f 317 319 297 +f 297 319 295 +f 319 321 295 +f 340 326 325 +f 346 347 307 +f 307 347 348 +f 307 348 306 +f 306 348 349 +f 306 349 350 +f 350 349 351 +f 350 351 352 +f 352 351 353 +f 352 353 354 +f 354 353 355 +f 355 353 356 +f 355 356 357 +f 357 356 358 +f 357 358 359 +f 359 358 360 +f 359 360 361 +f 361 360 362 +f 361 362 363 +f 363 362 364 +f 363 364 365 +f 365 364 366 +f 366 364 367 +f 367 364 368 +f 367 368 369 +f 369 368 370 +f 370 368 371 +f 371 368 372 +f 371 372 373 +f 373 372 374 +f 373 374 375 +f 375 374 376 +f 376 374 377 +f 376 377 346 +f 346 377 347 +f 365 378 363 +f 363 378 379 +f 363 379 380 +f 380 379 381 +f 380 381 382 +f 382 381 383 +f 382 383 384 +f 384 383 385 +f 384 385 386 +f 381 387 383 +f 383 387 388 +f 383 388 389 +f 389 390 383 +f 383 390 391 +f 383 391 392 +f 392 393 383 +f 383 393 394 +f 383 394 385 +f 386 395 384 +f 384 395 396 +f 384 396 397 +f 397 396 359 +f 397 359 361 +f 395 398 396 +f 396 398 357 +f 396 357 359 +f 398 355 357 +f 354 309 352 +f 352 309 306 +f 352 306 350 +f 364 362 368 +f 368 362 399 +f 368 399 372 +f 372 399 400 +f 372 400 374 +f 374 400 401 +f 374 401 377 +f 377 401 348 +f 377 348 347 +f 362 360 399 +f 399 360 402 +f 399 402 400 +f 400 402 403 +f 400 403 401 +f 401 403 349 +f 401 349 348 +f 382 384 397 +f 356 353 404 +f 404 353 351 +f 404 351 403 +f 403 351 349 +f 356 404 358 +f 358 404 402 +f 358 402 360 +f 402 404 403 +f 382 397 405 +f 405 397 361 +f 405 361 363 +f 363 380 405 +f 405 380 382 +f 406 407 408 +f 408 407 409 +f 408 409 410 +f 410 409 411 +f 410 411 412 +f 412 413 410 +f 410 413 414 +f 410 414 415 +f 415 416 410 +f 410 416 417 +f 410 417 418 +f 418 419 410 +f 410 419 420 +f 410 420 421 +f 421 420 422 +f 421 422 423 +f 423 422 424 +f 423 424 425 +f 425 424 426 +f 425 426 427 +f 427 426 428 +f 427 428 429 +f 429 428 430 +f 429 430 431 +f 431 430 432 +f 431 432 433 +f 433 432 434 +f 433 434 435 +f 420 436 422 +f 422 436 437 +f 422 437 424 +f 424 437 438 +f 424 438 426 +f 426 438 439 +f 426 439 428 +f 428 439 440 +f 428 440 430 +f 430 440 441 +f 430 441 432 +f 437 436 442 +f 442 436 443 +f 442 443 444 +f 442 444 438 +f 438 444 445 +f 438 445 446 +f 446 445 447 +f 446 447 448 +f 448 447 449 +f 448 449 450 +f 450 451 448 +f 448 451 452 +f 448 452 446 +f 446 452 439 +f 446 439 438 +f 451 453 452 +f 452 453 440 +f 452 440 439 +f 453 441 440 +f 433 435 454 +f 454 435 455 +f 454 455 456 +f 456 455 457 +f 456 457 458 +f 458 457 459 +f 458 459 460 +f 460 459 461 +f 460 461 462 +f 462 461 463 +f 462 463 464 +f 464 463 465 +f 464 465 466 +f 466 465 467 +f 466 467 468 +f 468 467 469 +f 468 469 470 +f 470 469 471 +f 471 469 472 +f 471 472 473 +f 473 472 474 +f 473 474 475 +f 475 474 476 +f 475 476 477 +f 477 476 478 +f 477 478 479 +f 479 478 480 +f 479 480 481 +f 481 480 482 +f 481 482 483 +f 483 482 484 +f 483 484 485 +f 485 484 486 +f 486 484 487 +f 487 484 488 +f 488 484 489 +f 489 484 490 +f 489 490 491 +f 491 490 492 +f 491 492 493 +f 493 492 490 +f 493 490 494 +f 494 490 495 +f 494 495 496 +f 496 495 497 +f 496 497 498 +f 498 497 499 +f 498 499 500 +f 500 499 501 +f 500 501 502 +f 502 501 474 +f 502 474 472 +f 455 503 457 +f 457 503 504 +f 457 504 459 +f 459 504 505 +f 459 505 461 +f 461 505 506 +f 461 506 463 +f 463 506 507 +f 463 507 465 +f 465 507 508 +f 465 508 467 +f 467 508 509 +f 467 509 469 +f 469 509 472 +f 503 510 504 +f 504 510 511 +f 504 511 505 +f 505 511 512 +f 505 512 506 +f 506 512 513 +f 506 513 507 +f 507 513 514 +f 507 514 508 +f 508 514 515 +f 508 515 509 +f 509 515 502 +f 509 502 472 +f 511 510 516 +f 516 510 517 +f 516 517 518 +f 518 517 519 +f 518 519 520 +f 520 519 521 +f 520 521 522 +f 522 521 523 +f 522 523 524 +f 522 524 494 +f 494 524 493 +f 525 526 485 +f 485 526 527 +f 485 527 483 +f 483 527 481 +f 526 525 528 +f 528 525 529 +f 528 529 530 +f 530 531 528 +f 528 531 532 +f 528 532 533 +f 533 534 528 +f 528 534 535 +f 528 535 526 +f 526 535 536 +f 526 536 527 +f 527 536 481 +f 534 537 535 +f 535 537 538 +f 535 538 539 +f 539 538 540 +f 539 540 541 +f 539 541 477 +f 477 541 475 +f 470 542 468 +f 468 542 543 +f 468 543 544 +f 544 543 545 +f 544 545 546 +f 546 545 547 +f 546 547 548 +f 548 547 549 +f 548 549 550 +f 550 549 551 +f 550 551 552 +f 552 551 553 +f 552 553 554 +f 554 553 406 +f 554 406 408 +f 408 410 555 +f 555 410 421 +f 555 421 423 +f 554 408 556 +f 556 408 555 +f 556 555 557 +f 557 555 423 +f 557 423 425 +f 552 554 558 +f 558 554 556 +f 558 556 559 +f 559 556 557 +f 559 557 560 +f 560 557 425 +f 560 425 427 +f 550 552 561 +f 561 552 558 +f 561 558 562 +f 562 558 559 +f 562 559 563 +f 563 559 560 +f 563 560 564 +f 564 560 427 +f 564 427 429 +f 548 550 565 +f 565 550 561 +f 565 561 566 +f 566 561 562 +f 566 562 567 +f 567 562 563 +f 567 563 568 +f 568 563 564 +f 568 564 569 +f 569 564 429 +f 569 429 431 +f 546 548 570 +f 570 548 565 +f 570 565 571 +f 571 565 566 +f 571 566 572 +f 572 566 567 +f 572 567 573 +f 573 567 568 +f 573 568 574 +f 574 568 569 +f 574 569 433 +f 433 569 431 +f 466 468 544 +f 544 546 575 +f 575 546 570 +f 575 570 576 +f 576 570 571 +f 576 571 577 +f 577 571 572 +f 577 572 578 +f 578 572 573 +f 578 573 579 +f 579 573 574 +f 579 574 454 +f 454 574 433 +f 478 476 501 +f 501 476 474 +f 536 535 539 +f 536 539 479 +f 479 539 477 +f 536 479 481 +f 480 478 499 +f 499 478 501 +f 500 502 515 +f 466 575 464 +f 464 575 576 +f 464 576 462 +f 462 576 577 +f 462 577 460 +f 460 577 578 +f 460 578 458 +f 458 578 579 +f 458 579 456 +f 456 579 454 +f 575 466 544 +f 500 515 580 +f 580 515 514 +f 580 514 581 +f 581 514 513 +f 581 513 582 +f 582 513 512 +f 582 512 516 +f 516 512 511 +f 482 480 497 +f 497 480 499 +f 484 482 495 +f 495 482 497 +f 498 580 583 +f 583 580 581 +f 583 581 584 +f 584 581 582 +f 584 582 518 +f 518 582 516 +f 580 498 500 +f 442 438 437 +f 498 583 496 +f 496 583 585 +f 496 585 494 +f 494 585 522 +f 585 583 584 +f 490 484 495 +f 518 520 584 +f 584 520 585 +f 520 522 585 +f 398 407 406 +f 398 406 553 +f 354 551 549 +f 354 549 547 +f 354 547 309 +f 309 547 545 +f 309 545 310 +f 311 542 470 +f 311 470 313 +f 318 475 320 +f 320 475 541 +f 540 586 541 +f 541 586 587 +f 541 587 323 +f 323 587 324 +f 324 588 337 +f 337 588 338 +f 338 588 589 +f 341 590 342 +f 342 590 591 +f 342 591 343 +f 344 591 345 +f 345 591 592 +f 345 592 529 +f 531 592 593 +f 531 593 532 +f 532 593 533 +f 529 525 345 +f 323 322 541 +f 588 587 586 +f 589 588 595 +f 595 588 586 +f 590 589 594 +f 594 589 595 +f 591 590 593 +f 593 590 594 +f 592 591 593 +f 525 485 345 +f 388 418 389 +f 389 418 596 +f 390 596 391 +f 392 597 598 +f 394 599 385 +f 386 600 395 +f 395 600 601 +f 395 601 409 +f 409 601 411 +f 413 603 414 +f 414 603 604 +f 414 604 415 +f 415 605 416 +f 416 605 417 +f 417 605 418 +f 418 605 596 +f 409 407 395 +f 597 596 605 +f 598 597 604 +f 604 597 605 +f 599 598 603 +f 603 598 604 +f 600 599 602 +f 602 599 603 +f 601 600 602 +f 379 436 381 +f 381 436 420 +f 381 420 419 +f 419 387 381 +f 451 606 453 +f 453 606 607 +f 453 607 371 +f 371 607 370 +f 370 607 608 +f 370 608 369 +f 366 609 610 +f 365 610 611 +f 378 611 379 +f 379 611 612 +f 379 612 443 +f 444 612 613 +f 444 613 445 +f 445 613 614 +f 445 614 447 +f 447 614 449 +f 449 614 615 +f 450 606 451 +f 443 436 379 +f 371 373 453 +f 608 607 606 +f 609 608 615 +f 615 608 606 +f 610 609 614 +f 614 609 615 +f 611 610 613 +f 613 610 614 +f 612 611 613 +f 292 519 294 +f 294 519 517 +f 296 510 298 +f 298 510 299 +f 299 510 503 +f 299 503 301 +f 301 455 303 +f 307 435 434 +f 346 434 432 +f 346 432 376 +f 375 453 373 +f 485 486 333 +f 333 486 336 +f 336 486 335 +f 335 486 616 +f 335 616 334 +f 334 616 617 +f 334 617 332 +f 332 617 331 +f 331 617 618 +f 331 618 329 +f 328 619 327 +f 327 619 620 +f 327 620 291 +f 291 620 292 +f 292 620 621 +f 292 621 521 +f 521 621 523 +f 523 622 524 +f 488 624 625 +f 487 625 486 +f 486 625 616 +f 521 519 292 +f 617 616 625 +f 618 617 624 +f 624 617 625 +f 619 618 623 +f 623 618 624 +f 620 619 622 +f 622 619 623 +f 621 620 622 +f 628 629 630 +f 630 629 631 +f 630 631 632 +f 632 631 633 +f 632 633 634 +f 634 633 635 +f 634 635 636 +f 636 635 637 +f 636 637 638 +f 638 637 639 +f 638 639 640 +f 640 639 641 +f 640 641 642 +f 642 641 643 +f 642 643 644 +f 644 643 645 +f 644 645 646 +f 646 645 647 +f 646 647 648 +f 650 651 652 +f 652 651 653 +f 652 653 654 +f 654 653 655 +f 654 655 656 +f 656 655 657 +f 656 657 658 +f 658 657 659 +f 658 659 660 +f 660 659 661 +f 660 661 662 +f 662 661 663 +f 662 663 664 +f 664 663 665 +f 664 665 666 +f 666 665 667 +f 666 667 668 +f 668 667 669 +f 628 670 671 +f 671 670 672 +f 671 672 673 +f 673 672 674 +f 673 674 675 +f 675 674 676 +f 675 676 677 +f 677 676 678 +f 677 678 679 +f 679 678 680 +f 679 680 681 +f 681 680 682 +f 681 682 683 +f 683 682 684 +f 683 684 685 +f 685 684 686 +f 685 686 687 +f 687 686 688 +f 687 688 689 +f 689 688 649 +f 689 649 690 +f 690 649 691 +f 690 691 692 +f 692 691 693 +f 692 693 694 +f 694 693 695 +f 694 695 696 +f 696 695 697 +f 696 697 698 +f 698 697 699 +f 698 699 700 +f 700 699 701 +f 700 701 702 +f 702 701 703 +f 702 703 704 +f 704 703 705 +f 704 705 706 +f 706 705 707 +f 706 707 708 +f 708 707 709 +f 708 709 628 +f 628 709 710 +f 628 710 711 +f 713 712 714 +f 713 714 715 +f 715 714 716 +f 715 716 717 +f 717 716 718 +f 717 718 719 +f 719 718 720 +f 719 720 721 +f 721 720 722 +f 721 722 723 +f 723 722 724 +f 723 724 725 +f 725 724 726 +f 725 726 727 +f 727 726 728 +f 727 728 729 +f 729 728 730 +f 729 730 731 +f 731 730 732 +f 731 732 733 +f 733 732 734 +f 733 734 735 +f 735 734 736 +f 735 736 737 +f 737 736 738 +f 737 738 739 +f 739 738 740 +f 739 740 741 +f 741 740 742 +f 741 742 743 +f 743 742 744 +f 743 744 745 +f 745 744 746 +f 745 746 747 +f 747 746 748 +f 747 748 749 +f 749 748 750 +f 749 750 751 +f 751 750 752 +f 711 752 753 +f 711 753 754 +f 754 753 755 +f 754 755 756 +f 756 755 757 +f 756 757 758 +f 758 757 759 +f 758 759 760 +f 760 759 761 +f 760 761 762 +f 762 761 763 +f 762 763 764 +f 764 763 765 +f 764 765 766 +f 766 765 767 +f 766 767 768 +f 768 767 769 +f 768 769 770 +f 770 769 771 +f 770 771 772 +f 773 774 775 +f 775 774 776 +f 775 776 777 +f 777 776 778 +f 777 778 779 +f 779 778 780 +f 779 780 781 +f 781 780 782 +f 781 782 783 +f 783 782 784 +f 783 784 785 +f 785 784 786 +f 785 786 787 +f 787 786 788 +f 787 788 789 +f 789 788 790 +f 789 790 791 +f 791 790 792 +f 711 793 794 +f 795 793 796 +f 795 796 797 +f 797 796 798 +f 797 798 799 +f 809 808 810 +f 811 810 812 +f 814 813 815 +f 814 815 816 +f 816 815 817 +f 816 817 818 +f 818 817 819 +f 818 819 820 +f 820 819 821 +f 820 821 822 +f 822 821 823 +f 822 823 824 +f 824 823 825 +f 824 825 826 +f 826 825 827 +f 826 827 788 +f 788 827 790 +f 626 828 627 +f 627 828 829 +f 627 829 629 +f 629 829 631 +f 828 830 829 +f 829 831 631 +f 631 831 633 +f 831 833 633 +f 633 833 635 +f 833 834 835 +f 833 835 635 +f 635 835 637 +f 834 836 835 +f 835 836 837 +f 835 837 637 +f 637 837 639 +f 836 838 837 +f 837 839 639 +f 639 839 641 +f 839 841 641 +f 641 841 643 +f 840 842 841 +f 841 842 843 +f 841 843 643 +f 643 843 645 +f 843 842 844 +f 844 842 649 +f 649 845 846 +f 847 846 848 +f 847 848 849 +f 849 848 850 +f 849 850 851 +f 851 850 852 +f 851 852 853 +f 853 852 854 +f 853 854 855 +f 855 854 856 +f 855 856 857 +f 857 856 858 +f 857 858 859 +f 859 858 860 +f 859 860 861 +f 861 860 862 +f 861 862 707 +f 707 862 709 +f 732 809 811 +f 863 814 816 +f 863 816 864 +f 864 816 818 +f 864 818 865 +f 865 818 820 +f 865 820 866 +f 866 820 822 +f 866 822 867 +f 867 822 824 +f 867 824 868 +f 868 824 826 +f 868 826 786 +f 786 826 788 +f 869 863 864 +f 869 864 870 +f 870 864 865 +f 870 865 871 +f 871 865 866 +f 871 866 872 +f 872 866 867 +f 872 867 873 +f 873 867 868 +f 873 868 784 +f 784 868 786 +f 875 874 876 +f 875 876 877 +f 877 876 878 +f 877 878 778 +f 778 878 780 +f 732 875 879 +f 879 875 877 +f 879 877 776 +f 776 877 778 +f 881 880 882 +f 881 882 883 +f 883 882 884 +f 883 884 885 +f 885 884 886 +f 885 886 887 +f 887 886 888 +f 887 888 889 +f 889 888 890 +f 889 890 891 +f 891 890 892 +f 891 892 893 +f 893 892 894 +f 893 894 748 +f 748 894 750 +f 895 881 883 +f 895 883 896 +f 896 883 885 +f 896 885 897 +f 897 885 887 +f 897 887 898 +f 898 887 889 +f 898 889 899 +f 899 889 891 +f 899 891 900 +f 900 891 893 +f 900 893 746 +f 746 893 748 +f 902 901 903 +f 902 903 904 +f 904 903 905 +f 904 905 906 +f 906 905 907 +f 906 907 740 +f 740 907 742 +f 908 902 904 +f 908 904 909 +f 909 904 906 +f 909 906 738 +f 738 906 740 +f 911 910 912 +f 911 912 913 +f 913 912 914 +f 913 914 915 +f 915 914 916 +f 915 916 917 +f 917 916 918 +f 917 918 919 +f 919 918 920 +f 919 920 921 +f 921 920 922 +f 921 922 703 +f 703 922 705 +f 649 911 923 +f 923 911 913 +f 923 913 924 +f 924 913 915 +f 924 915 925 +f 925 915 917 +f 925 917 926 +f 926 917 919 +f 926 919 927 +f 927 919 921 +f 927 921 701 +f 701 921 703 +f 929 928 930 +f 929 930 931 +f 931 930 932 +f 931 932 695 +f 695 932 697 +f 933 929 931 +f 933 931 693 +f 693 931 695 +f 935 934 936 +f 935 936 937 +f 937 936 938 +f 937 938 939 +f 939 938 940 +f 939 940 941 +f 941 940 942 +f 941 942 943 +f 943 942 944 +f 943 944 945 +f 945 944 946 +f 945 946 947 +f 947 946 948 +f 947 948 665 +f 665 948 667 +f 949 935 937 +f 949 937 950 +f 950 937 939 +f 950 939 951 +f 951 939 941 +f 951 941 952 +f 952 941 943 +f 952 943 953 +f 953 943 945 +f 953 945 954 +f 954 945 947 +f 954 947 663 +f 663 947 665 +f 956 955 957 +f 956 957 958 +f 958 957 959 +f 958 959 960 +f 960 959 961 +f 960 961 657 +f 657 961 659 +f 962 956 958 +f 962 958 963 +f 963 958 960 +f 963 960 655 +f 655 960 657 +f 964 711 965 +f 964 965 966 +f 966 965 967 +f 966 967 968 +f 968 967 969 +f 968 969 970 +f 970 969 971 +f 970 971 972 +f 972 971 973 +f 972 973 974 +f 974 973 975 +f 974 975 976 +f 976 975 977 +f 976 977 978 +f 978 977 979 +f 978 979 980 +f 980 979 770 +f 980 770 772 +f 982 983 984 +f 984 983 985 +f 984 985 986 +f 986 985 987 +f 986 987 988 +f 988 987 989 +f 988 989 990 +f 990 989 762 +f 990 762 764 +f 992 754 756 +f 749 751 993 +f 994 995 996 +f 996 995 997 +f 996 997 998 +f 998 997 999 +f 998 999 1000 +f 1000 999 1001 +f 1000 1001 1002 +f 1002 1001 1003 +f 1002 1003 1004 +f 1004 1003 1005 +f 1004 1005 1006 +f 1006 1005 1007 +f 1006 1007 1008 +f 1008 1007 727 +f 1008 727 729 +f 1009 711 1010 +f 1009 1010 1011 +f 1011 1010 1012 +f 1011 1012 1013 +f 1013 1012 1014 +f 1013 1014 1015 +f 1015 1014 1016 +f 1015 1016 1017 +f 1017 1016 1018 +f 1017 1018 1019 +f 1019 1018 723 +f 1019 723 725 +f 1021 1022 1023 +f 1023 1022 715 +f 1023 715 717 +f 1024 1025 1026 +f 1026 1025 1027 +f 1026 1027 1028 +f 1028 1027 1029 +f 1028 1029 1030 +f 1030 1029 1031 +f 1030 1031 1032 +f 1032 1031 1033 +f 1032 1033 1034 +f 1034 1033 1035 +f 1034 1035 1036 +f 1036 1035 1037 +f 1036 1037 1038 +f 1038 1037 1039 +f 1038 1039 1040 +f 1040 1039 687 +f 1040 687 689 +f 1042 1043 1044 +f 1044 1043 1045 +f 1044 1045 1046 +f 1046 1045 1047 +f 1046 1047 1048 +f 1048 1047 1049 +f 1048 1049 1050 +f 1050 1049 679 +f 1050 679 681 +f 1051 628 1052 +f 1052 628 671 +f 1052 671 673 +f 666 668 1053 +f 1053 668 628 +f 1053 628 1054 +f 1054 1055 1056 +f 1056 1055 1057 +f 1056 1057 1058 +f 1058 1057 1059 +f 1058 1059 1060 +f 1060 1059 1061 +f 1060 1061 1062 +f 1062 1061 1063 +f 1062 1063 1064 +f 1064 1063 1065 +f 1064 1065 1066 +f 1066 1065 1067 +f 1066 1067 1068 +f 1068 1067 644 +f 1068 644 646 +f 1069 1070 1071 +f 1071 1070 1072 +f 1071 1072 1073 +f 1073 1072 1074 +f 1073 1074 1075 +f 1075 1074 1076 +f 1075 1076 1077 +f 1077 1076 1078 +f 1077 1078 1079 +f 1079 1078 640 +f 1079 640 642 +f 1081 1082 1083 +f 1083 1082 632 +f 1083 632 634 +f 645 843 844 +f 647 645 844 +f 796 793 1084 +f 1084 793 792 +f 1084 792 790 +f 798 796 1085 +f 1085 796 1084 +f 1085 1084 827 +f 827 1084 790 +f 800 798 1086 +f 1086 798 1085 +f 1086 1085 825 +f 825 1085 827 +f 802 800 1087 +f 1087 800 1086 +f 1087 1086 823 +f 823 1086 825 +f 804 802 1088 +f 1088 802 1087 +f 1088 1087 821 +f 821 1087 823 +f 806 804 1089 +f 1089 804 1088 +f 1089 1088 819 +f 819 1088 821 +f 808 806 1090 +f 1090 806 1089 +f 1090 1089 817 +f 817 1089 819 +f 810 808 1091 +f 1091 808 1090 +f 1091 1090 815 +f 815 1090 817 +f 813 812 1091 +f 1091 812 810 +f 813 1091 815 +f 1092 869 870 +f 1092 870 1093 +f 1093 870 871 +f 1093 871 1094 +f 1094 871 872 +f 1094 872 1095 +f 1095 872 873 +f 1095 873 782 +f 782 873 784 +f 791 964 789 +f 789 964 966 +f 789 966 787 +f 787 966 968 +f 787 968 785 +f 785 968 970 +f 785 970 783 +f 783 970 972 +f 783 972 781 +f 781 972 974 +f 781 974 779 +f 779 974 976 +f 779 976 777 +f 777 976 978 +f 777 978 775 +f 775 978 980 +f 775 980 773 +f 773 980 772 +f 874 1092 1093 +f 874 1093 876 +f 876 1093 1094 +f 876 1094 878 +f 878 1094 1095 +f 878 1095 780 +f 780 1095 782 +f 776 774 879 +f 879 774 732 +f 967 965 1096 +f 1096 965 711 +f 1096 711 981 +f 967 1096 1097 +f 1097 1096 981 +f 1097 981 1098 +f 1098 981 982 +f 1098 982 984 +f 967 1097 969 +f 969 1097 1099 +f 969 1099 971 +f 971 1099 1100 +f 971 1100 973 +f 973 1100 1101 +f 973 1101 975 +f 975 1101 1102 +f 975 1102 977 +f 977 1102 1103 +f 977 1103 979 +f 979 1103 768 +f 979 768 770 +f 1099 1097 1098 +f 732 771 1104 +f 1104 771 769 +f 1104 769 1105 +f 1105 769 767 +f 1105 767 1106 +f 1106 767 765 +f 1106 765 1107 +f 1107 765 763 +f 1107 763 1108 +f 1108 763 761 +f 1108 761 1109 +f 1109 761 759 +f 1109 759 1110 +f 1110 759 757 +f 1110 757 1111 +f 1111 757 755 +f 1111 755 1112 +f 1112 755 753 +f 1112 753 752 +f 1099 1098 1113 +f 1113 1098 984 +f 1113 984 986 +f 732 1104 880 +f 880 1104 1105 +f 880 1105 882 +f 882 1105 1106 +f 882 1106 884 +f 884 1106 1107 +f 884 1107 886 +f 886 1107 1108 +f 886 1108 888 +f 888 1108 1109 +f 888 1109 890 +f 890 1109 1110 +f 890 1110 892 +f 892 1110 1111 +f 892 1111 894 +f 894 1111 1112 +f 894 1112 750 +f 750 1112 752 +f 1099 1113 1100 +f 1100 1113 1114 +f 1100 1114 1101 +f 1101 1114 1115 +f 1101 1115 1102 +f 1102 1115 1116 +f 1102 1116 1103 +f 1103 1116 766 +f 1103 766 768 +f 1114 1113 986 +f 732 895 1117 +f 1117 895 896 +f 1117 896 1118 +f 1118 896 897 +f 1118 897 1119 +f 1119 897 898 +f 1119 898 1120 +f 1120 898 899 +f 1120 899 1121 +f 1121 899 900 +f 1121 900 744 +f 744 900 746 +f 985 983 1122 +f 1122 983 711 +f 1122 711 991 +f 985 1122 1123 +f 1123 1122 991 +f 1123 991 1124 +f 1124 991 992 +f 1124 992 756 +f 1115 1114 988 +f 988 1114 986 +f 901 1117 1118 +f 901 1118 903 +f 903 1118 1119 +f 903 1119 905 +f 905 1119 1120 +f 905 1120 907 +f 907 1120 1121 +f 907 1121 742 +f 742 1121 744 +f 985 1123 987 +f 987 1123 1125 +f 987 1125 989 +f 989 1125 760 +f 989 760 762 +f 1125 1123 1124 +f 1116 1115 990 +f 990 1115 988 +f 732 908 1126 +f 1126 908 909 +f 1126 909 736 +f 736 909 738 +f 756 758 1124 +f 1124 758 1125 +f 758 760 1125 +f 766 1116 764 +f 764 1116 990 +f 736 734 1126 +f 1126 734 732 +f 749 993 1127 +f 1127 993 994 +f 1127 994 996 +f 1128 923 924 +f 1128 924 1129 +f 1129 924 925 +f 1129 925 1130 +f 1130 925 926 +f 1130 926 1131 +f 1131 926 927 +f 1131 927 699 +f 699 927 701 +f 749 1127 747 +f 747 1127 1132 +f 747 1132 745 +f 745 1132 1133 +f 745 1133 743 +f 743 1133 1134 +f 743 1134 741 +f 741 1134 1135 +f 741 1135 739 +f 739 1135 1136 +f 739 1136 737 +f 737 1136 1137 +f 737 1137 735 +f 735 1137 1138 +f 735 1138 733 +f 733 1138 731 +f 1132 1127 996 +f 928 1128 1129 +f 928 1129 930 +f 930 1129 1130 +f 930 1130 932 +f 932 1130 1131 +f 932 1131 697 +f 697 1131 699 +f 1133 1132 998 +f 998 1132 996 +f 693 691 933 +f 933 691 649 +f 995 1009 997 +f 997 1009 1011 +f 997 1011 999 +f 999 1011 1013 +f 999 1013 1001 +f 1001 1013 1015 +f 1001 1015 1003 +f 1003 1015 1017 +f 1003 1017 1005 +f 1005 1017 1019 +f 1005 1019 1007 +f 1007 1019 725 +f 1007 725 727 +f 1134 1133 1000 +f 1000 1133 998 +f 1135 1134 1002 +f 1002 1134 1000 +f 649 688 1139 +f 1139 688 686 +f 1139 686 1140 +f 1140 686 684 +f 1140 684 1141 +f 1141 684 682 +f 1141 682 1142 +f 1142 682 680 +f 1142 680 1143 +f 1143 680 678 +f 1143 678 1144 +f 1144 678 676 +f 1144 676 1145 +f 1145 676 674 +f 1145 674 1146 +f 1146 674 672 +f 1146 672 1147 +f 1147 672 670 +f 1147 670 669 +f 1012 1010 1148 +f 1148 1010 711 +f 1148 711 1020 +f 1012 1148 1149 +f 1149 1148 1020 +f 1149 1020 1150 +f 1150 1020 1021 +f 1150 1021 1023 +f 1136 1135 1004 +f 1004 1135 1002 +f 934 1139 1140 +f 934 1140 936 +f 936 1140 1141 +f 936 1141 938 +f 938 1141 1142 +f 938 1142 940 +f 940 1142 1143 +f 940 1143 942 +f 942 1143 1144 +f 942 1144 944 +f 944 1144 1145 +f 944 1145 946 +f 946 1145 1146 +f 946 1146 948 +f 948 1146 1147 +f 948 1147 667 +f 667 1147 669 +f 1012 1149 1014 +f 1014 1149 1151 +f 1014 1151 1016 +f 1016 1151 1152 +f 1016 1152 1018 +f 1018 1152 721 +f 1018 721 723 +f 1151 1149 1150 +f 1137 1136 1006 +f 1006 1136 1004 +f 649 949 1153 +f 1153 949 950 +f 1153 950 1154 +f 1154 950 951 +f 1154 951 1155 +f 1155 951 952 +f 1155 952 1156 +f 1156 952 953 +f 1156 953 1157 +f 1157 953 954 +f 1157 954 661 +f 661 954 663 +f 1151 1150 1158 +f 1158 1150 1023 +f 1158 1023 717 +f 1138 1137 1008 +f 1008 1137 1006 +f 649 1153 955 +f 955 1153 1154 +f 955 1154 957 +f 957 1154 1155 +f 957 1155 959 +f 959 1155 1156 +f 959 1156 961 +f 961 1156 1157 +f 961 1157 659 +f 659 1157 661 +f 713 715 1022 +f 1151 1158 1152 +f 1152 1158 719 +f 1152 719 721 +f 719 1158 717 +f 731 1138 729 +f 729 1138 1008 +f 1159 962 963 +f 1159 963 653 +f 653 963 655 +f 653 651 1159 +f 714 712 1160 +f 1160 712 710 +f 1160 710 862 +f 862 710 709 +f 716 714 1161 +f 1161 714 1160 +f 1161 1160 860 +f 860 1160 862 +f 718 716 1162 +f 1162 716 1161 +f 1162 1161 858 +f 858 1161 860 +f 720 718 1163 +f 1163 718 1162 +f 1163 1162 856 +f 856 1162 858 +f 722 720 1164 +f 1164 720 1163 +f 1164 1163 854 +f 854 1163 856 +f 724 722 1165 +f 1165 722 1164 +f 1165 1164 852 +f 852 1164 854 +f 726 724 1166 +f 1166 724 1165 +f 1166 1165 850 +f 850 1165 852 +f 845 730 728 +f 728 726 1167 +f 1167 726 1166 +f 1167 1166 848 +f 848 1166 850 +f 846 845 1167 +f 1167 845 728 +f 846 1167 848 +f 707 705 861 +f 861 705 922 +f 861 922 859 +f 859 922 920 +f 859 920 857 +f 857 920 918 +f 857 918 855 +f 855 918 916 +f 855 916 853 +f 853 916 914 +f 853 914 851 +f 851 914 912 +f 851 912 849 +f 849 912 910 +f 849 910 847 +f 708 1024 706 +f 706 1024 1026 +f 706 1026 704 +f 704 1026 1028 +f 704 1028 702 +f 702 1028 1030 +f 702 1030 700 +f 700 1030 1032 +f 700 1032 698 +f 698 1032 1034 +f 698 1034 696 +f 696 1034 1036 +f 696 1036 694 +f 694 1036 1038 +f 694 1038 692 +f 692 1038 1040 +f 692 1040 690 +f 690 1040 689 +f 1027 1025 1168 +f 1168 1025 628 +f 1027 1168 1169 +f 1169 1168 1041 +f 1169 1041 1170 +f 1170 1041 1042 +f 1170 1042 1044 +f 1027 1169 1029 +f 1029 1169 1171 +f 1029 1171 1031 +f 1031 1171 1172 +f 1031 1172 1033 +f 1033 1172 1173 +f 1033 1173 1035 +f 1035 1173 1174 +f 1035 1174 1037 +f 1037 1174 1175 +f 1037 1175 1039 +f 1039 1175 685 +f 1039 685 687 +f 1171 1169 1170 +f 1171 1170 1176 +f 1176 1170 1044 +f 1176 1044 1046 +f 1171 1176 1172 +f 1172 1176 1177 +f 1172 1177 1173 +f 1173 1177 1178 +f 1173 1178 1174 +f 1174 1178 1179 +f 1174 1179 1175 +f 1175 1179 683 +f 1175 683 685 +f 1177 1176 1046 +f 1045 1043 1180 +f 1180 628 1051 +f 1045 1180 1181 +f 1181 1180 1051 +f 1181 1051 1182 +f 1182 1051 1052 +f 1182 1052 673 +f 1178 1177 1048 +f 1048 1177 1046 +f 1045 1181 1047 +f 1047 1181 1183 +f 1047 1183 1049 +f 1049 1183 677 +f 1049 677 679 +f 1183 1181 1182 +f 1179 1178 1050 +f 1050 1178 1048 +f 673 675 1182 +f 1182 675 1183 +f 675 677 1183 +f 683 1179 681 +f 681 1179 1050 +f 666 1053 1184 +f 1184 1053 1054 +f 1184 1054 1056 +f 666 1184 664 +f 664 1184 1185 +f 664 1185 662 +f 662 1185 1186 +f 662 1186 660 +f 660 1186 1187 +f 660 1187 658 +f 658 1187 1188 +f 658 1188 656 +f 656 1188 1189 +f 656 1189 654 +f 654 1189 1190 +f 654 1190 652 +f 652 1190 1191 +f 652 1191 650 +f 650 1191 648 +f 1185 1184 1056 +f 1186 1185 1058 +f 1058 1185 1056 +f 1055 1069 1057 +f 1057 1069 1071 +f 1057 1071 1059 +f 1059 1071 1073 +f 1059 1073 1061 +f 1061 1073 1075 +f 1061 1075 1063 +f 1063 1075 1077 +f 1063 1077 1065 +f 1065 1077 1079 +f 1065 1079 1067 +f 1067 1079 642 +f 1067 642 644 +f 1187 1186 1060 +f 1060 1186 1058 +f 1188 1187 1062 +f 1062 1187 1060 +f 1072 1070 1192 +f 1192 1070 628 +f 1192 628 1080 +f 1072 1192 1193 +f 1193 1192 1080 +f 1193 1080 1194 +f 1194 1080 1081 +f 1194 1081 1083 +f 1189 1188 1064 +f 1064 1188 1062 +f 1072 1193 1074 +f 1074 1193 1195 +f 1074 1195 1076 +f 1076 1195 1196 +f 1076 1196 1078 +f 1078 1196 638 +f 1078 638 640 +f 1195 1193 1194 +f 1190 1189 1066 +f 1066 1189 1064 +f 1195 1194 1197 +f 1197 1194 1083 +f 1197 1083 634 +f 1191 1190 1068 +f 1068 1190 1066 +f 630 632 1082 +f 1195 1197 1196 +f 1196 1197 636 +f 1196 636 638 +f 636 1197 634 +f 648 1191 646 +f 646 1191 1068 +f 1199 628 711 +f 1200 1201 1202 +f 1202 1201 1203 +f 1202 1203 1204 +f 1204 1203 1205 +f 1204 1205 1206 +f 1206 1205 1207 +f 1206 1207 1208 +f 1208 1207 1209 +f 1208 1209 1210 +f 1210 1209 1211 +f 1210 1211 1212 +f 1212 1211 1213 +f 1212 1213 1214 +f 1214 1213 1215 +f 1214 1215 1216 +f 1216 1215 1217 +f 1216 1217 1218 +f 1218 1217 1219 +f 1218 1219 1220 +f 1220 1219 1198 +f 1220 1198 1221 +f 1221 1222 1223 +f 1223 1222 1224 +f 1223 1224 1225 +f 1225 1224 1226 +f 1225 1226 1227 +f 1227 1226 1228 +f 1227 1228 1229 +f 1229 1228 1230 +f 1229 1230 1231 +f 1231 1230 1232 +f 1231 1232 1233 +f 1233 1232 1234 +f 1233 1234 1235 +f 1235 1234 1236 +f 1239 1240 1241 +f 1241 1240 1242 +f 1241 1242 1243 +f 1243 1242 1244 +f 1243 1244 1245 +f 1245 1244 1246 +f 1245 1246 1247 +f 1247 1246 1248 +f 1247 1248 1249 +f 1249 1248 1250 +f 1249 1250 1251 +f 1251 1250 1216 +f 1251 1216 1218 +f 1254 1255 1256 +f 1256 1257 1258 +f 1260 1259 1261 +f 1262 1261 1263 +f 1262 1263 1264 +f 1264 1263 1265 +f 1264 1265 1266 +f 1266 1265 1198 +f 1266 1198 1219 +f 1268 1269 1270 +f 1270 1269 1271 +f 1270 1271 1272 +f 1272 1271 1273 +f 1272 1273 1274 +f 1274 1273 1275 +f 1274 1275 1276 +f 1276 1275 1277 +f 1276 1277 1278 +f 1199 1281 1282 +f 1282 1281 1283 +f 1282 1283 1271 +f 1271 1283 1273 +f 1286 1287 1288 +f 1286 1288 1275 +f 1275 1288 1277 +f 1276 1278 1289 +f 1289 1278 1290 +f 1289 1290 1234 +f 1234 1290 1236 +f 1202 1291 1238 +f 1238 1291 1292 +f 1238 1292 1293 +f 1293 1292 1294 +f 1293 1294 1242 +f 1242 1294 1244 +f 1242 1240 1293 +f 1293 1240 1238 +f 1291 1202 1295 +f 1295 1202 1296 +f 1295 1296 1297 +f 1297 1296 1206 +f 1297 1206 1208 +f 1219 1217 1266 +f 1266 1217 1264 +f 1217 1215 1264 +f 1264 1215 1262 +f 1215 1213 1262 +f 1262 1213 1260 +f 1213 1211 1260 +f 1260 1211 1258 +f 1211 1209 1258 +f 1258 1209 1256 +f 1209 1207 1256 +f 1256 1207 1254 +f 1203 1201 1252 +f 1207 1205 1254 +f 1254 1205 1252 +f 1205 1203 1252 +f 1235 1237 1298 +f 1298 1237 1239 +f 1298 1239 1241 +f 1234 1232 1289 +f 1289 1232 1299 +f 1289 1299 1276 +f 1276 1299 1274 +f 1275 1273 1286 +f 1286 1273 1283 +f 1286 1283 1284 +f 1284 1283 1281 +f 1284 1281 1280 +f 1269 1199 1282 +f 1235 1298 1233 +f 1233 1298 1300 +f 1233 1300 1231 +f 1231 1300 1301 +f 1231 1301 1229 +f 1229 1301 1302 +f 1229 1302 1227 +f 1227 1302 1303 +f 1227 1303 1225 +f 1225 1303 1304 +f 1225 1304 1223 +f 1223 1304 1305 +f 1223 1305 1221 +f 1221 1305 1220 +f 1300 1298 1241 +f 1232 1230 1299 +f 1299 1230 1306 +f 1299 1306 1274 +f 1274 1306 1272 +f 1271 1269 1282 +f 1301 1300 1243 +f 1243 1300 1241 +f 1230 1228 1306 +f 1306 1228 1307 +f 1306 1307 1272 +f 1272 1307 1270 +f 1302 1301 1245 +f 1245 1301 1243 +f 1228 1226 1307 +f 1307 1226 1308 +f 1307 1308 1270 +f 1270 1308 1268 +f 1224 1222 1267 +f 1294 1292 1309 +f 1309 1292 1291 +f 1309 1291 1310 +f 1310 1291 1295 +f 1310 1295 1297 +f 1244 1294 1311 +f 1311 1294 1309 +f 1311 1309 1312 +f 1312 1309 1310 +f 1312 1310 1313 +f 1313 1310 1297 +f 1313 1297 1208 +f 1303 1302 1247 +f 1247 1302 1245 +f 1267 1268 1308 +f 1267 1308 1224 +f 1224 1308 1226 +f 1244 1311 1246 +f 1246 1311 1314 +f 1246 1314 1248 +f 1248 1314 1315 +f 1248 1315 1250 +f 1250 1315 1214 +f 1250 1214 1216 +f 1314 1311 1312 +f 1304 1303 1249 +f 1249 1303 1247 +f 1314 1312 1316 +f 1316 1312 1313 +f 1316 1313 1210 +f 1210 1313 1208 +f 1305 1304 1251 +f 1251 1304 1249 +f 1204 1206 1296 +f 1314 1316 1315 +f 1315 1316 1212 +f 1315 1212 1214 +f 1212 1316 1210 +f 1220 1305 1218 +f 1218 1305 1251 +f 1317 1202 1318 +f 1318 1202 1238 +f 1319 1320 1321 +f 1323 1322 1324 +f 1323 1324 1325 +f 1325 1324 1326 +f 1325 1326 1327 +f 1327 1326 1328 +f 1327 1328 1329 +f 1329 1328 1330 +f 1329 1330 1331 +f 1331 1330 1332 +f 1331 1332 1333 +f 1333 1332 1334 +f 1333 1334 1335 +f 1335 1334 1336 +f 1335 1336 1337 +f 1337 1336 1338 +f 1337 1338 1339 +f 1339 1338 1317 +f 1339 1317 1340 +f 1340 1317 1341 +f 1340 1341 1342 +f 1342 1341 1343 +f 1342 1343 1344 +f 1344 1343 1345 +f 1344 1345 1346 +f 1346 1345 1347 +f 1346 1347 1348 +f 1348 1347 1349 +f 1348 1349 1350 +f 1350 1349 1351 +f 1350 1351 1352 +f 1352 1351 1353 +f 1352 1353 1354 +f 1354 1353 1355 +f 1354 1355 1356 +f 1356 1355 1357 +f 1365 1366 1367 +f 1367 1366 1368 +f 1367 1368 1369 +f 1369 1368 1370 +f 1369 1370 1371 +f 1369 1371 1372 +f 1372 1373 1374 +f 1374 1373 1317 +f 1374 1317 1338 +f 1341 1317 1375 +f 1375 1317 1318 +f 1375 1318 1376 +f 1376 1377 1378 +f 1378 1377 1379 +f 1378 1379 1380 +f 1380 1379 1381 +f 1380 1381 1382 +f 1382 1381 1383 +f 1382 1383 1384 +f 1384 1383 1385 +f 1384 1385 1386 +f 1386 1385 1387 +f 1386 1387 1388 +f 1389 1390 1318 +f 1318 1391 1392 +f 1392 1391 1393 +f 1392 1393 1394 +f 1394 1393 1395 +f 1394 1395 1381 +f 1381 1395 1383 +f 1398 1397 1399 +f 1398 1399 1400 +f 1398 1400 1401 +f 1401 1400 1402 +f 1401 1402 1385 +f 1385 1402 1387 +f 1386 1388 1403 +f 1403 1388 1404 +f 1403 1404 1355 +f 1355 1404 1357 +f 1321 1405 1358 +f 1358 1405 1406 +f 1358 1406 1407 +f 1407 1406 1408 +f 1407 1408 1409 +f 1409 1408 1410 +f 1409 1410 1411 +f 1411 1410 1412 +f 1411 1412 1350 +f 1350 1412 1348 +f 1379 1377 1413 +f 1413 1377 1318 +f 1343 1341 1375 +f 1354 1356 1414 +f 1415 1407 1409 +f 1416 1321 1417 +f 1417 1418 1419 +f 1419 1418 1325 +f 1419 1325 1327 +f 1338 1336 1374 +f 1374 1336 1372 +f 1336 1334 1372 +f 1372 1334 1369 +f 1334 1332 1369 +f 1369 1332 1367 +f 1332 1330 1367 +f 1367 1330 1365 +f 1330 1328 1365 +f 1365 1328 1363 +f 1328 1326 1363 +f 1363 1326 1361 +f 1322 1320 1359 +f 1326 1324 1361 +f 1361 1324 1359 +f 1324 1322 1359 +f 1355 1353 1403 +f 1403 1353 1420 +f 1403 1420 1386 +f 1386 1420 1384 +f 1385 1383 1401 +f 1401 1383 1395 +f 1401 1395 1398 +f 1398 1395 1393 +f 1398 1393 1396 +f 1396 1393 1391 +f 1396 1391 1390 +f 1325 1418 1323 +f 1337 1339 1421 +f 1421 1339 1340 +f 1421 1340 1342 +f 1335 1337 1422 +f 1422 1337 1421 +f 1422 1421 1423 +f 1423 1421 1342 +f 1423 1342 1344 +f 1333 1335 1424 +f 1424 1335 1422 +f 1424 1422 1425 +f 1425 1422 1423 +f 1425 1423 1426 +f 1426 1423 1344 +f 1426 1344 1346 +f 1331 1333 1427 +f 1427 1333 1424 +f 1427 1424 1428 +f 1428 1424 1425 +f 1428 1425 1429 +f 1429 1425 1426 +f 1429 1426 1430 +f 1430 1426 1346 +f 1430 1346 1348 +f 1329 1331 1431 +f 1431 1331 1427 +f 1431 1427 1432 +f 1432 1427 1428 +f 1432 1428 1433 +f 1433 1428 1429 +f 1433 1429 1434 +f 1434 1429 1430 +f 1434 1430 1412 +f 1412 1430 1348 +f 1327 1329 1435 +f 1435 1329 1431 +f 1435 1431 1436 +f 1436 1431 1432 +f 1436 1432 1437 +f 1437 1432 1433 +f 1437 1433 1438 +f 1438 1433 1434 +f 1438 1434 1410 +f 1410 1434 1412 +f 1321 1416 1405 +f 1405 1416 1439 +f 1405 1439 1440 +f 1440 1439 1437 +f 1440 1437 1438 +f 1327 1435 1419 +f 1419 1435 1441 +f 1419 1441 1417 +f 1417 1441 1416 +f 1441 1435 1436 +f 1437 1439 1436 +f 1436 1439 1441 +f 1439 1416 1441 +f 1343 1375 1442 +f 1442 1375 1376 +f 1442 1376 1378 +f 1343 1442 1345 +f 1345 1442 1443 +f 1345 1443 1347 +f 1347 1443 1444 +f 1347 1444 1349 +f 1349 1444 1445 +f 1349 1445 1351 +f 1351 1445 1420 +f 1351 1420 1353 +f 1443 1442 1378 +f 1406 1405 1440 +f 1410 1408 1438 +f 1438 1408 1440 +f 1408 1406 1440 +f 1444 1443 1380 +f 1380 1443 1378 +f 1392 1394 1413 +f 1413 1394 1379 +f 1394 1381 1379 +f 1445 1444 1382 +f 1382 1444 1380 +f 1350 1352 1411 +f 1411 1352 1446 +f 1411 1446 1409 +f 1409 1446 1415 +f 1420 1445 1384 +f 1384 1445 1382 +f 1414 1415 1446 +f 1414 1446 1354 +f 1354 1446 1352 +f 1451 1450 1452 +f 1451 1452 1453 +f 1453 1452 1454 +f 1453 1454 1455 +f 1455 1454 1456 +f 1455 1456 1457 +f 1457 1456 1458 +f 1457 1458 1459 +f 1459 1458 1460 +f 1459 1460 1461 +f 1461 1460 1462 +f 1461 1462 1463 +f 1463 1462 1464 +f 1463 1464 1465 +f 1465 1464 1466 +f 1465 1466 1467 +f 1467 1466 1468 +f 1467 1468 1469 +f 1469 1447 1470 +f 1470 1471 1472 +f 1472 1471 1473 +f 1472 1473 1474 +f 1474 1473 1475 +f 1474 1475 1476 +f 1476 1475 1477 +f 1476 1477 1478 +f 1478 1477 1479 +f 1478 1479 1480 +f 1480 1479 1481 +f 1480 1481 1482 +f 1482 1481 1483 +f 1482 1483 1484 +f 1484 1483 1485 +f 1484 1485 1486 +f 1486 1485 1487 +f 1486 1487 1451 +f 1451 1488 1489 +f 1489 1488 1490 +f 1489 1490 1491 +f 1491 1490 1492 +f 1491 1492 1493 +f 1493 1492 1494 +f 1493 1494 1495 +f 1495 1494 1496 +f 1495 1496 1497 +f 1497 1496 1498 +f 1497 1498 1499 +f 1499 1498 1500 +f 1499 1500 1501 +f 1501 1500 1502 +f 1501 1502 1503 +f 1503 1502 1504 +f 1503 1504 1505 +f 1505 1504 1447 +f 1505 1447 1506 +f 1506 1447 1507 +f 1506 1507 1508 +f 1508 1507 1509 +f 1508 1509 1510 +f 1510 1509 1511 +f 1510 1511 1512 +f 1512 1511 1513 +f 1512 1513 1514 +f 1514 1513 1515 +f 1514 1515 1516 +f 1516 1515 1517 +f 1516 1517 1518 +f 1518 1517 1519 +f 1518 1519 1520 +f 1520 1519 1521 +f 1520 1521 1522 +f 1522 1521 1523 +f 1524 1523 1525 +f 1526 1525 1527 +f 1526 1527 1528 +f 1528 1527 1529 +f 1528 1529 1530 +f 1530 1529 1531 +f 1530 1531 1532 +f 1532 1531 1533 +f 1532 1533 1534 +f 1534 1533 1535 +f 1534 1535 1536 +f 1536 1535 1537 +f 1536 1537 1538 +f 1538 1537 1539 +f 1538 1539 1540 +f 1540 1539 1541 +f 1540 1541 1542 +f 1542 1541 1448 +f 1542 1448 1543 +f 1543 1544 1545 +f 1545 1544 1546 +f 1545 1546 1547 +f 1547 1546 1548 +f 1547 1548 1549 +f 1549 1548 1550 +f 1549 1550 1551 +f 1551 1550 1552 +f 1551 1552 1553 +f 1553 1552 1554 +f 1553 1554 1555 +f 1555 1554 1556 +f 1555 1556 1557 +f 1557 1556 1558 +f 1559 1524 1560 +f 1560 1561 1562 +f 1562 1561 1563 +f 1562 1563 1564 +f 1564 1563 1565 +f 1564 1565 1566 +f 1566 1565 1567 +f 1566 1567 1568 +f 1568 1567 1569 +f 1568 1569 1570 +f 1570 1569 1571 +f 1570 1571 1572 +f 1572 1571 1538 +f 1572 1538 1540 +f 1450 1575 1452 +f 1580 1581 1582 +f 1582 1581 1583 +f 1588 1447 1448 +f 1588 1448 1589 +f 1589 1448 1590 +f 1589 1590 1591 +f 1591 1590 1592 +f 1591 1592 1593 +f 1593 1592 1594 +f 1593 1594 1595 +f 1595 1594 1596 +f 1595 1596 1597 +f 1597 1596 1598 +f 1597 1598 1599 +f 1599 1598 1600 +f 1599 1600 1601 +f 1601 1600 1529 +f 1601 1529 1527 +f 1448 1603 1604 +f 1448 1604 1605 +f 1605 1604 1606 +f 1605 1606 1607 +f 1607 1606 1608 +f 1607 1608 1609 +f 1609 1608 1610 +f 1609 1610 1611 +f 1611 1610 1612 +f 1611 1612 1552 +f 1552 1612 1554 +f 1602 1613 1603 +f 1603 1613 1614 +f 1603 1614 1604 +f 1604 1614 1606 +f 1614 1616 1606 +f 1606 1616 1608 +f 1616 1617 1618 +f 1616 1618 1608 +f 1608 1618 1610 +f 1617 1619 1618 +f 1618 1620 1610 +f 1610 1620 1612 +f 1619 1621 1620 +f 1620 1622 1612 +f 1612 1622 1554 +f 1621 1623 1622 +f 1622 1623 1556 +f 1622 1556 1554 +f 1623 1558 1556 +f 1524 1625 1626 +f 1626 1625 1627 +f 1626 1627 1628 +f 1628 1627 1629 +f 1628 1629 1630 +f 1630 1629 1631 +f 1630 1631 1632 +f 1632 1631 1633 +f 1632 1633 1514 +f 1514 1633 1512 +f 1635 1634 1636 +f 1635 1636 1637 +f 1637 1636 1638 +f 1637 1638 1548 +f 1548 1638 1550 +f 1639 1635 1637 +f 1639 1637 1546 +f 1546 1637 1548 +f 1448 1640 1641 +f 1641 1640 1642 +f 1641 1642 1643 +f 1643 1642 1644 +f 1643 1644 1645 +f 1645 1644 1646 +f 1645 1646 1596 +f 1596 1646 1598 +f 1647 1641 1643 +f 1647 1643 1648 +f 1648 1643 1645 +f 1648 1645 1594 +f 1594 1645 1596 +f 1650 1649 1651 +f 1650 1651 1652 +f 1652 1651 1653 +f 1652 1653 1654 +f 1654 1653 1655 +f 1654 1655 1656 +f 1656 1655 1657 +f 1656 1657 1658 +f 1658 1657 1659 +f 1658 1659 1660 +f 1660 1659 1661 +f 1660 1661 1662 +f 1662 1661 1663 +f 1662 1663 1485 +f 1485 1663 1487 +f 1447 1650 1664 +f 1664 1650 1652 +f 1664 1652 1665 +f 1665 1652 1654 +f 1665 1654 1666 +f 1666 1654 1656 +f 1666 1656 1667 +f 1667 1656 1658 +f 1667 1658 1668 +f 1668 1658 1660 +f 1668 1660 1669 +f 1669 1660 1662 +f 1669 1662 1483 +f 1483 1662 1485 +f 1671 1670 1672 +f 1671 1672 1673 +f 1673 1672 1674 +f 1673 1674 1675 +f 1675 1674 1676 +f 1675 1676 1477 +f 1477 1676 1479 +f 1447 1671 1677 +f 1677 1671 1673 +f 1677 1673 1678 +f 1678 1673 1675 +f 1678 1675 1475 +f 1475 1675 1477 +f 1561 1524 1679 +f 1679 1524 1680 +f 1679 1680 1681 +f 1681 1680 1682 +f 1681 1682 1683 +f 1683 1682 1684 +f 1683 1684 1685 +f 1685 1684 1686 +f 1685 1686 1687 +f 1687 1686 1534 +f 1687 1534 1536 +f 1689 1524 1526 +f 1689 1526 1528 +f 1520 1522 1690 +f 1690 1522 1524 +f 1691 1524 1692 +f 1691 1692 1693 +f 1693 1692 1628 +f 1693 1628 1630 +f 1628 1692 1626 +f 1626 1692 1524 +f 1624 1451 1694 +f 1694 1451 1695 +f 1694 1695 1696 +f 1696 1695 1491 +f 1696 1491 1493 +f 1698 1451 1699 +f 1698 1699 1700 +f 1700 1699 1701 +f 1700 1701 1702 +f 1702 1701 1703 +f 1702 1703 1704 +f 1704 1703 1705 +f 1704 1705 1706 +f 1706 1705 1707 +f 1706 1707 1708 +f 1708 1707 1463 +f 1708 1463 1465 +f 1709 1451 1710 +f 1710 1451 1711 +f 1710 1711 1712 +f 1712 1711 1455 +f 1712 1455 1457 +f 1468 1466 1586 +f 1586 1466 1584 +f 1466 1464 1584 +f 1584 1464 1582 +f 1464 1462 1582 +f 1582 1462 1580 +f 1462 1460 1580 +f 1580 1460 1578 +f 1460 1458 1578 +f 1578 1458 1576 +f 1458 1456 1576 +f 1576 1456 1574 +f 1456 1454 1574 +f 1574 1454 1575 +f 1454 1452 1575 +f 1557 1559 1713 +f 1713 1559 1560 +f 1713 1560 1562 +f 1455 1711 1453 +f 1467 1469 1714 +f 1714 1469 1470 +f 1714 1470 1472 +f 1465 1467 1715 +f 1715 1467 1714 +f 1715 1714 1716 +f 1716 1714 1472 +f 1716 1472 1474 +f 1463 1707 1461 +f 1461 1707 1717 +f 1461 1717 1459 +f 1459 1717 1718 +f 1459 1718 1457 +f 1457 1718 1712 +f 1451 1709 1719 +f 1719 1709 1720 +f 1719 1720 1701 +f 1701 1720 1703 +f 1465 1715 1708 +f 1708 1715 1721 +f 1708 1721 1706 +f 1706 1721 1722 +f 1706 1722 1704 +f 1704 1722 1723 +f 1704 1723 1702 +f 1702 1723 1724 +f 1702 1724 1700 +f 1700 1724 1725 +f 1700 1725 1698 +f 1698 1725 1697 +f 1721 1715 1716 +f 1707 1705 1717 +f 1717 1705 1726 +f 1717 1726 1718 +f 1718 1726 1727 +f 1718 1727 1712 +f 1712 1727 1710 +f 1701 1699 1719 +f 1719 1699 1451 +f 1721 1716 1728 +f 1728 1716 1474 +f 1728 1474 1476 +f 1705 1703 1726 +f 1726 1703 1720 +f 1726 1720 1727 +f 1727 1720 1709 +f 1727 1709 1710 +f 1729 1697 1730 +f 1729 1730 1484 +f 1484 1730 1482 +f 1473 1471 1731 +f 1677 1678 1731 +f 1731 1678 1473 +f 1678 1475 1473 +f 1721 1728 1722 +f 1722 1728 1732 +f 1722 1732 1723 +f 1723 1732 1733 +f 1723 1733 1724 +f 1724 1733 1734 +f 1724 1734 1725 +f 1725 1734 1730 +f 1725 1730 1697 +f 1732 1728 1476 +f 1484 1486 1729 +f 1729 1486 1451 +f 1733 1732 1478 +f 1478 1732 1476 +f 1695 1451 1489 +f 1734 1733 1480 +f 1480 1733 1478 +f 1491 1695 1489 +f 1672 1670 1735 +f 1735 1670 1736 +f 1735 1736 1665 +f 1665 1736 1664 +f 1674 1672 1737 +f 1737 1672 1735 +f 1737 1735 1666 +f 1666 1735 1665 +f 1676 1674 1738 +f 1738 1674 1737 +f 1738 1737 1667 +f 1667 1737 1666 +f 1479 1676 1739 +f 1739 1676 1738 +f 1739 1738 1668 +f 1668 1738 1667 +f 1730 1734 1482 +f 1482 1734 1480 +f 1479 1739 1481 +f 1481 1739 1669 +f 1481 1669 1483 +f 1669 1739 1668 +f 1664 1736 1447 +f 1504 1502 1649 +f 1649 1502 1651 +f 1502 1500 1651 +f 1651 1500 1653 +f 1500 1498 1653 +f 1653 1498 1655 +f 1498 1496 1655 +f 1655 1496 1657 +f 1496 1494 1657 +f 1657 1494 1659 +f 1494 1492 1659 +f 1659 1492 1661 +f 1488 1487 1663 +f 1492 1490 1661 +f 1661 1490 1663 +f 1490 1488 1663 +f 1503 1505 1740 +f 1740 1505 1506 +f 1740 1506 1508 +f 1501 1503 1741 +f 1741 1503 1740 +f 1741 1740 1742 +f 1742 1740 1508 +f 1742 1508 1510 +f 1499 1501 1743 +f 1743 1501 1741 +f 1743 1741 1744 +f 1744 1741 1742 +f 1744 1742 1745 +f 1745 1742 1510 +f 1745 1510 1512 +f 1497 1499 1746 +f 1746 1499 1743 +f 1746 1743 1747 +f 1747 1743 1744 +f 1747 1744 1748 +f 1748 1744 1745 +f 1748 1745 1633 +f 1633 1745 1512 +f 1495 1497 1749 +f 1749 1497 1746 +f 1749 1746 1750 +f 1750 1746 1747 +f 1750 1747 1751 +f 1751 1747 1748 +f 1751 1748 1631 +f 1631 1748 1633 +f 1493 1495 1752 +f 1752 1495 1749 +f 1752 1749 1753 +f 1753 1749 1750 +f 1753 1750 1754 +f 1754 1750 1751 +f 1754 1751 1629 +f 1629 1751 1631 +f 1755 1688 1756 +f 1755 1756 1682 +f 1682 1756 1684 +f 1493 1752 1696 +f 1696 1752 1757 +f 1696 1757 1694 +f 1694 1757 1624 +f 1757 1752 1753 +f 1682 1680 1755 +f 1755 1680 1524 +f 1757 1753 1758 +f 1758 1753 1754 +f 1758 1754 1627 +f 1627 1754 1629 +f 1507 1588 1509 +f 1509 1588 1759 +f 1509 1759 1511 +f 1511 1759 1760 +f 1511 1760 1513 +f 1513 1760 1761 +f 1513 1761 1515 +f 1515 1761 1762 +f 1515 1762 1517 +f 1517 1762 1763 +f 1517 1763 1519 +f 1519 1763 1764 +f 1519 1764 1521 +f 1521 1764 1765 +f 1521 1765 1523 +f 1523 1765 1525 +f 1625 1624 1758 +f 1758 1624 1757 +f 1625 1758 1627 +f 1588 1589 1759 +f 1759 1589 1591 +f 1759 1591 1760 +f 1760 1591 1593 +f 1760 1593 1761 +f 1761 1593 1595 +f 1761 1595 1762 +f 1762 1595 1597 +f 1762 1597 1763 +f 1763 1597 1599 +f 1763 1599 1764 +f 1764 1599 1601 +f 1764 1601 1765 +f 1765 1601 1527 +f 1765 1527 1525 +f 1514 1516 1632 +f 1632 1516 1766 +f 1632 1766 1630 +f 1630 1766 1693 +f 1592 1590 1767 +f 1647 1648 1767 +f 1767 1648 1592 +f 1648 1594 1592 +f 1516 1518 1766 +f 1766 1518 1768 +f 1766 1768 1693 +f 1693 1768 1691 +f 1690 1691 1768 +f 1690 1768 1520 +f 1520 1768 1518 +f 1642 1640 1769 +f 1769 1640 1770 +f 1769 1770 1539 +f 1539 1770 1541 +f 1644 1642 1771 +f 1771 1642 1769 +f 1771 1769 1537 +f 1537 1769 1539 +f 1646 1644 1772 +f 1772 1644 1771 +f 1772 1771 1535 +f 1535 1771 1537 +f 1598 1646 1773 +f 1773 1646 1772 +f 1773 1772 1533 +f 1533 1772 1535 +f 1598 1773 1600 +f 1600 1773 1531 +f 1600 1531 1529 +f 1531 1773 1533 +f 1540 1542 1774 +f 1774 1542 1543 +f 1774 1543 1545 +f 1687 1536 1571 +f 1571 1536 1538 +f 1534 1686 1532 +f 1532 1686 1775 +f 1532 1775 1530 +f 1530 1775 1776 +f 1530 1776 1528 +f 1528 1776 1689 +f 1540 1774 1572 +f 1572 1774 1777 +f 1572 1777 1570 +f 1570 1777 1778 +f 1570 1778 1568 +f 1568 1778 1779 +f 1568 1779 1566 +f 1566 1779 1780 +f 1566 1780 1564 +f 1564 1780 1781 +f 1564 1781 1562 +f 1562 1781 1713 +f 1777 1774 1545 +f 1685 1687 1569 +f 1569 1687 1571 +f 1686 1684 1775 +f 1775 1684 1756 +f 1775 1756 1776 +f 1776 1756 1688 +f 1776 1688 1689 +f 1639 1546 1544 +f 1778 1777 1547 +f 1547 1777 1545 +f 1683 1685 1567 +f 1567 1685 1569 +f 1779 1778 1549 +f 1549 1778 1547 +f 1681 1683 1565 +f 1565 1683 1567 +f 1780 1779 1551 +f 1551 1779 1549 +f 1679 1681 1563 +f 1563 1681 1565 +f 1605 1607 1634 +f 1634 1607 1636 +f 1607 1609 1636 +f 1636 1609 1638 +f 1609 1611 1638 +f 1638 1611 1550 +f 1611 1552 1550 +f 1781 1780 1553 +f 1553 1780 1551 +f 1561 1679 1563 +f 1713 1781 1555 +f 1555 1781 1553 +f 1557 1713 1555 +f 649 1451 732 +f 732 1451 1524 +f 1782 1783 1784 +f 1784 1783 1785 +f 1784 1785 1786 +f 1786 1785 1787 +f 1786 1787 1788 +f 1788 1787 1789 +f 1788 1789 1585 +f 1585 1789 1587 +f 1587 1789 1447 +f 1447 1789 1790 +f 1447 1790 1321 +f 1321 1790 1791 +f 1321 1791 1319 +f 1319 1791 1792 +f 1319 1792 1360 +f 1360 1792 1793 +f 1360 1793 1362 +f 1362 1793 1364 +f 1364 1793 1366 +f 1366 1793 1368 +f 1368 1793 1794 +f 1368 1794 1370 +f 1370 1794 1371 +f 1371 1794 1373 +f 1373 1794 1795 +f 1373 1795 1317 +f 1317 1795 1202 +f 1202 1795 1200 +f 1200 1795 1796 +f 1200 1796 1253 +f 1253 1796 1255 +f 1255 1796 1257 +f 1257 1796 1797 +f 1257 1797 1259 +f 1259 1797 1798 +f 1259 1798 1261 +f 1261 1798 1799 +f 1261 1799 1263 +f 1263 1799 1265 +f 1265 1799 1198 +f 1198 1799 1800 +f 1198 1800 628 +f 628 1800 1801 +f 628 1801 626 +f 626 1801 828 +f 828 1801 1802 +f 828 1802 830 +f 830 1802 832 +f 832 1802 834 +f 834 1802 1803 +f 834 1803 836 +f 836 1803 838 +f 838 1803 840 +f 840 1803 842 +f 842 1803 1804 +f 842 1804 649 +f 649 1804 1451 +f 1451 1804 1449 +f 1449 1804 1573 +f 1573 1804 1805 +f 1573 1805 1577 +f 1577 1805 1579 +f 1579 1805 1806 +f 1579 1806 1581 +f 1581 1806 1583 +f 1583 1806 1788 +f 1583 1788 1585 +f 1789 1807 1790 +f 1790 1807 1791 +f 1807 1792 1791 +f 1792 1808 1793 +f 1793 1808 1794 +f 1808 1809 1794 +f 1794 1809 1810 +f 1794 1810 1811 +f 1811 1810 1812 +f 1798 1796 1811 +f 1811 1796 1795 +f 1811 1795 1794 +f 1802 1813 1803 +f 1803 1813 1814 +f 1803 1814 1804 +f 1804 1814 1815 +f 1804 1815 1805 +f 1805 1815 1816 +f 1805 1816 1786 +f 1786 1816 1784 +f 1813 1817 1814 +f 1814 1817 1818 +f 1814 1818 1819 +f 1819 1820 1814 +f 1814 1820 1821 +f 1814 1821 1822 +f 1822 1823 1814 +f 1814 1823 1824 +f 1814 1824 1825 +f 1814 1825 1815 +f 1815 1825 1826 +f 1815 1826 1816 +f 1816 1826 1784 +f 1827 1828 1826 +f 1826 1828 1829 +f 1826 1829 1830 +f 1830 1831 1826 +f 1826 1831 1832 +f 1826 1832 1784 +f 1784 1832 1782 +f 1805 1786 1788 +f 1806 1805 1788 +f 1797 1796 1798 +f 1833 1834 1810 +f 1810 1834 1835 +f 1810 1835 1836 +f 1837 1838 1836 +f 1836 1838 1839 +f 1836 1839 1840 +f 1838 1837 1841 +f 1841 1837 1842 +f 1841 1842 1843 +f 1843 1844 1841 +f 1838 1841 1845 +f 1845 1841 1846 +f 1845 1846 1847 +f 1847 1846 1848 +f 1848 1846 1849 +f 1849 1846 1850 +f 1812 1810 1840 +f 1840 1810 1836 +f 1851 1852 1853 +f 1853 1852 1854 +f 1853 1854 1855 +f 1853 1855 1856 +f 1856 1855 1857 +f 1856 1857 1858 +f 1858 1859 1856 +f 1856 1859 1860 +f 1856 1860 1861 +f 1856 1862 1853 +f 1853 1862 1863 +f 1853 1863 1864 +f 1864 1863 1865 +f 1864 1865 1866 +f 1867 1868 1862 +f 1862 1868 1869 +f 1862 1869 1870 +f 1870 1871 1862 +f 1862 1871 1872 +f 1862 1872 1873 +f 1862 1873 1863 +f 1863 1873 1874 +f 1863 1874 1865 +f 1875 1876 1866 +f 1866 1876 1400 +f 1866 1400 1399 +f 1877 1357 1875 +f 1875 1357 1404 +f 1875 1404 1388 +f 1878 1448 1877 +f 1877 1448 1358 +f 1877 1358 1357 +f 1879 1613 1878 +f 1878 1613 1602 +f 1878 1602 1448 +f 1880 1621 1879 +f 1879 1621 1619 +f 1879 1619 1617 +f 1881 1882 1880 +f 1880 1882 1883 +f 1880 1883 1623 +f 1623 1883 1558 +f 1558 1883 1524 +f 1524 1883 732 +f 732 1883 809 +f 809 1883 807 +f 807 1883 1884 +f 807 1884 805 +f 805 1884 803 +f 803 1884 801 +f 801 1884 799 +f 799 1884 797 +f 797 1884 795 +f 795 1884 1885 +f 795 1885 794 +f 794 1885 711 +f 711 1885 1886 +f 711 1886 1199 +f 1199 1886 1279 +f 1279 1886 1887 +f 1279 1887 1285 +f 1285 1887 1287 +f 1287 1887 1288 +f 1288 1887 1277 +f 1277 1887 1888 +f 1277 1888 1278 +f 1278 1888 1290 +f 1290 1888 1236 +f 1236 1888 1889 +f 1236 1889 1238 +f 1238 1889 1318 +f 1318 1889 1389 +f 1389 1889 1864 +f 1389 1864 1397 +f 1397 1864 1399 +f 1399 1864 1866 +f 1881 1890 1882 +f 1882 1890 1891 +f 1882 1891 1892 +f 1892 1891 1893 +f 1893 1891 1894 +f 1893 1894 1895 +f 1890 1896 1891 +f 1895 1897 1893 +f 1893 1897 1898 +f 1899 1900 1892 +f 1892 1900 1901 +f 1892 1901 1902 +f 1902 1903 1892 +f 1892 1903 1882 +f 1903 1904 1882 +f 1882 1904 1905 +f 1882 1905 1906 +f 1906 1907 1882 +f 1882 1907 1883 +f 1907 1884 1883 +f 1888 1851 1889 +f 1889 1851 1853 +f 1889 1853 1864 +f 1875 1388 1876 +f 1876 1388 1387 +f 1876 1387 1402 +f 1402 1400 1876 +f 1623 1621 1880 +f 1617 1615 1879 +f 1879 1615 1613 +f 1875 1808 1792 +f 1875 1792 1877 +f 1879 1789 1787 +f 1880 1787 1785 +f 1880 1785 1881 +f 1881 1785 1783 +f 1844 1908 1841 +f 1841 1908 1909 +f 1841 1909 1910 +f 1910 1909 1911 +f 1910 1911 1912 +f 1912 1911 1913 +f 1912 1913 1914 +f 1914 1913 1915 +f 1914 1915 1916 +f 1916 1915 1917 +f 1916 1917 1918 +f 1918 1917 1874 +f 1918 1874 1919 +f 1919 1874 1873 +f 1908 1920 1921 +f 1921 1922 1923 +f 1925 1924 1926 +f 1925 1926 1927 +f 1927 1926 1874 +f 1927 1874 1917 +f 1920 1842 1922 +f 1842 1837 1922 +f 1922 1837 1836 +f 1922 1836 1924 +f 1928 1834 1926 +f 1926 1834 1874 +f 1834 1833 1874 +f 1919 1872 1929 +f 1929 1871 1930 +f 1931 1869 1868 +f 1931 1868 1932 +f 1932 1868 1867 +f 1932 1867 1933 +f 1933 1867 1841 +f 1933 1841 1934 +f 1934 1841 1910 +f 1934 1910 1912 +f 1867 1862 1841 +f 1911 1909 1921 +f 1921 1909 1908 +f 1931 1932 1933 +f 1933 1934 1935 +f 1935 1934 1912 +f 1923 1911 1921 +f 1933 1935 1931 +f 1931 1935 1936 +f 1929 1937 1919 +f 1915 1913 1925 +f 1925 1913 1923 +f 1928 1926 1924 +f 1917 1915 1927 +f 1927 1915 1925 +f 1919 1937 1918 +f 1918 1937 1916 +f 1846 1841 1856 +f 1856 1841 1862 +f 1839 1938 1840 +f 1840 1938 1939 +f 1840 1939 1940 +f 1940 1939 1941 +f 1940 1941 1942 +f 1942 1941 1943 +f 1944 1943 1945 +f 1946 1945 1947 +f 1946 1947 1860 +f 1860 1947 1861 +f 1861 1947 1856 +f 1856 1947 1948 +f 1856 1948 1949 +f 1949 1948 1950 +f 1949 1950 1951 +f 1953 1952 1954 +f 1955 1954 1938 +f 1953 1956 1957 +f 1951 1957 1958 +f 1951 1958 1949 +f 1949 1958 1856 +f 1959 1848 1849 +f 1960 1850 1961 +f 1961 1850 1856 +f 1961 1856 1958 +f 1850 1846 1856 +f 1860 1859 1946 +f 1946 1962 1944 +f 1942 1963 1964 +f 1942 1964 1940 +f 1940 1964 1840 +f 1965 1857 1855 +f 1966 1855 1854 +f 1966 1854 1967 +f 1967 1854 1840 +f 1967 1840 1964 +f 1854 1852 1840 +f 1941 1939 1954 +f 1954 1939 1938 +f 1965 1966 1967 +f 1965 1967 1963 +f 1963 1967 1964 +f 1943 1941 1952 +f 1952 1941 1954 +f 1945 1943 1950 +f 1950 1943 1952 +f 1956 1959 1957 +f 1957 1959 1961 +f 1957 1961 1958 +f 1960 1961 1959 +f 1947 1945 1948 +f 1948 1945 1950 +f 1907 1802 1884 +f 1884 1802 1801 +f 1884 1801 1885 +f 1885 1801 1800 +f 1886 1800 1799 +f 1886 1799 1887 +f 1887 1798 1888 +f 1888 1798 1811 +f 1851 1811 1812 +f 1852 1812 1840 +f 1824 1968 1825 +f 1825 1968 1969 +f 1825 1969 1970 +f 1970 1969 1971 +f 1970 1971 1972 +f 1972 1971 1973 +f 1972 1973 1974 +f 1974 1973 1975 +f 1974 1975 1902 +f 1903 1975 1904 +f 1904 1976 1905 +f 1905 1976 1906 +f 1906 1976 1977 +f 1906 1977 1978 +f 1978 1977 1979 +f 1978 1979 1980 +f 1980 1979 1981 +f 1980 1981 1982 +f 1982 1981 1983 +f 1982 1983 1822 +f 1822 1983 1823 +f 1823 1983 1968 +f 1823 1968 1824 +f 1822 1821 1982 +f 1982 1821 1984 +f 1982 1984 1980 +f 1980 1984 1985 +f 1980 1985 1978 +f 1978 1985 1906 +f 1986 1818 1985 +f 1985 1818 1906 +f 1818 1817 1906 +f 1902 1901 1974 +f 1974 1901 1987 +f 1974 1987 1972 +f 1972 1987 1988 +f 1972 1988 1970 +f 1970 1988 1825 +f 1901 1900 1987 +f 1987 1900 1989 +f 1987 1989 1988 +f 1988 1989 1899 +f 1988 1899 1825 +f 1825 1899 1892 +f 1900 1899 1989 +f 1969 1968 1990 +f 1990 1968 1983 +f 1990 1983 1981 +f 1969 1990 1971 +f 1971 1990 1991 +f 1971 1991 1973 +f 1973 1991 1992 +f 1973 1992 1975 +f 1975 1992 1976 +f 1991 1990 1981 +f 1992 1991 1979 +f 1979 1991 1981 +f 1986 1985 1984 +f 1976 1992 1977 +f 1977 1992 1979 +f 1826 1825 1893 +f 1893 1825 1892 +f 1782 1993 1783 +f 1783 1993 1994 +f 1783 1994 1995 +f 1995 1994 1996 +f 1995 1996 1997 +f 1997 1996 1998 +f 1997 1998 1999 +f 1999 1998 2000 +f 1895 2000 1897 +f 1898 2001 1893 +f 1893 2001 2002 +f 1893 2002 2003 +f 2003 2002 2004 +f 2003 2004 2005 +f 2005 2004 2006 +f 2005 2006 2007 +f 2007 2006 2008 +f 1832 1993 1782 +f 1831 1830 2007 +f 2009 1828 2010 +f 2010 1828 1827 +f 2010 1827 2011 +f 2011 1827 1893 +f 2011 1893 2003 +f 1827 1826 1893 +f 1895 1894 1999 +f 1999 1894 1891 +f 1999 1891 2012 +f 2013 1896 1890 +f 2013 1890 2014 +f 2014 1890 1783 +f 2014 1783 1995 +f 1890 1881 1783 +f 1994 1993 2015 +f 2015 1993 2008 +f 2015 2008 2006 +f 2012 2013 2014 +f 2012 2014 1997 +f 1997 2014 1995 +f 1994 2015 1996 +f 1996 2015 2016 +f 1996 2016 1998 +f 1998 2016 2017 +f 1998 2017 2000 +f 2000 2017 2001 +f 2016 2015 2006 +f 1999 2012 1997 +f 2017 2016 2004 +f 2004 2016 2006 +f 2007 2009 2005 +f 2005 2009 2011 +f 2005 2011 2003 +f 2010 2011 2009 +f 2001 2017 2002 +f 2002 2017 2004 +f 2018 2019 2020 +f 2020 2019 2021 +f 2022 2021 2023 +f 2022 2023 2024 +f 2024 2023 2025 +f 2024 2025 2026 +f 2026 2025 2027 +f 2026 2027 2028 +f 2028 2027 2029 +f 2028 2029 2030 +f 2030 2029 2031 +f 2030 2031 2032 +f 2032 2031 2033 +f 2032 2033 2034 +f 2034 2033 2035 +f 2034 2035 2036 +f 2038 2037 2039 +f 2038 2039 2040 +f 2040 2041 2042 +f 2042 2041 2043 +f 2042 2043 2044 +f 2044 2043 2045 +f 2044 2045 2046 +f 2046 2045 2047 +f 2019 2049 2050 +f 2019 2050 2021 +f 2021 2050 2023 +f 2050 2052 2023 +f 2023 2052 2025 +f 2051 2053 2052 +f 2052 2053 2054 +f 2052 2054 2025 +f 2025 2054 2027 +f 2053 2055 2054 +f 2054 2055 2056 +f 2054 2056 2027 +f 2027 2056 2029 +f 2056 2058 2029 +f 2029 2058 2031 +f 2058 2060 2031 +f 2031 2060 2033 +f 2060 2059 2061 +f 2041 2064 2043 +f 2047 2045 2062 +f 2063 2065 2064 +f 2046 2048 2066 +f 2066 2067 2068 +f 2068 2067 2069 +f 2068 2069 2070 +f 2070 2071 2072 +f 2070 2072 2073 +f 2073 2072 2074 +f 2075 2074 2076 +f 2075 2076 2077 +f 2077 2076 2078 +f 2077 2078 2079 +f 2079 2078 2080 +f 2079 2080 2081 +f 2081 2080 2028 +f 2081 2028 2030 +f 2076 2074 2082 +f 2082 2074 2020 +f 2082 2020 2083 +f 2083 2020 2022 +f 2083 2022 2024 +f 2033 2060 2061 +f 2035 2033 2061 +f 2070 2073 2084 +f 2084 2073 2075 +f 2084 2075 2077 +f 2068 2070 2085 +f 2085 2070 2084 +f 2085 2084 2086 +f 2086 2084 2077 +f 2086 2077 2079 +f 2066 2068 2087 +f 2087 2068 2085 +f 2087 2085 2088 +f 2088 2085 2086 +f 2088 2086 2089 +f 2089 2086 2079 +f 2089 2079 2081 +f 2046 2066 2090 +f 2090 2066 2087 +f 2090 2087 2091 +f 2091 2087 2088 +f 2091 2088 2092 +f 2092 2088 2089 +f 2092 2089 2093 +f 2093 2089 2081 +f 2093 2081 2030 +f 2064 2065 2043 +f 2043 2065 2045 +f 2046 2090 2044 +f 2044 2090 2094 +f 2044 2094 2042 +f 2042 2094 2095 +f 2042 2095 2040 +f 2040 2095 2038 +f 2094 2090 2091 +f 2094 2091 2096 +f 2096 2091 2092 +f 2096 2092 2097 +f 2097 2092 2093 +f 2097 2093 2032 +f 2032 2093 2030 +f 2076 2082 2078 +f 2078 2082 2098 +f 2078 2098 2080 +f 2080 2098 2026 +f 2080 2026 2028 +f 2094 2096 2095 +f 2095 2096 2099 +f 2095 2099 2038 +f 2038 2099 2036 +f 2099 2096 2097 +f 2082 2083 2098 +f 2098 2083 2024 +f 2098 2024 2026 +f 2032 2034 2097 +f 2097 2034 2099 +f 2034 2036 2099 +f 2100 2020 2101 +f 2101 2020 2074 +f 2104 2105 2106 +f 2106 2105 2107 +f 2106 2107 2108 +f 2108 2107 2109 +f 2108 2109 2110 +f 2110 2109 2111 +f 2110 2111 2112 +f 2112 2111 2113 +f 2112 2113 2114 +f 2114 2113 2115 +f 2114 2115 2116 +f 2116 2115 2117 +f 2116 2117 2118 +f 2118 2117 2101 +f 2119 2120 2121 +f 2121 2122 2123 +f 2103 2125 2105 +f 2105 2125 2107 +f 2125 2127 2107 +f 2107 2127 2109 +f 2127 2128 2129 +f 2127 2129 2109 +f 2109 2129 2111 +f 2128 2130 2129 +f 2129 2131 2111 +f 2111 2131 2113 +f 2131 2133 2113 +f 2113 2133 2115 +f 2132 2134 2133 +f 2133 2135 2115 +f 2115 2135 2117 +f 2134 2100 2135 +f 2100 2101 2117 +f 2121 2123 2136 +f 2136 2123 2137 +f 2136 2137 2138 +f 2138 2137 2139 +f 2138 2139 2140 +f 2140 2141 2110 +f 2110 2141 2108 +f 2141 2142 2143 +f 2141 2143 2108 +f 2108 2143 2106 +f 2106 2145 2104 +f 2110 2112 2140 +f 2140 2112 2138 +f 2112 2114 2138 +f 2138 2114 2136 +f 2118 2119 2121 +f 2114 2116 2136 +f 2136 2116 2121 +f 2116 2118 2121 +f 2146 2104 2147 +f 2147 2104 2145 +f 2148 2149 2150 +f 2150 2149 2151 +f 2150 2151 2152 +f 2152 2151 2153 +f 2152 2153 2154 +f 2154 2153 2155 +f 2154 2155 2156 +f 2156 2155 2157 +f 2156 2157 2158 +f 2158 2157 2159 +f 2158 2159 2160 +f 2160 2159 2161 +f 2160 2161 2162 +f 2162 2161 2163 +f 2162 2163 2164 +f 2164 2163 2165 +f 2164 2165 2166 +f 2166 2165 2146 +f 2166 2146 2147 +f 2167 2168 2169 +f 2169 2168 2170 +f 2179 2180 2146 +f 2181 2182 2147 +f 2147 2182 2183 +f 2147 2183 2184 +f 2184 2183 2185 +f 2184 2185 2186 +f 2186 2185 2187 +f 2186 2187 2188 +f 2188 2187 2189 +f 2188 2189 2190 +f 2190 2189 2191 +f 2190 2191 2192 +f 2192 2191 2193 +f 2192 2193 2194 +f 2194 2193 2195 +f 2194 2195 2196 +f 2196 2195 2197 +f 2196 2197 2198 +f 2198 2199 2150 +f 2182 2200 2201 +f 2182 2201 2183 +f 2183 2201 2185 +f 2200 2202 2201 +f 2201 2202 2203 +f 2201 2203 2185 +f 2185 2203 2187 +f 2202 2204 2203 +f 2203 2204 2205 +f 2203 2205 2187 +f 2187 2205 2189 +f 2204 2206 2205 +f 2205 2207 2189 +f 2189 2207 2191 +f 2206 2208 2207 +f 2207 2209 2191 +f 2191 2209 2193 +f 2209 2211 2193 +f 2193 2211 2195 +f 2211 2213 2195 +f 2195 2213 2197 +f 2212 2199 2213 +f 2165 2163 2179 +f 2179 2163 2177 +f 2163 2161 2177 +f 2177 2161 2175 +f 2161 2159 2175 +f 2175 2159 2173 +f 2159 2157 2173 +f 2173 2157 2171 +f 2157 2155 2171 +f 2171 2155 2169 +f 2151 2149 2167 +f 2155 2153 2169 +f 2169 2153 2167 +f 2198 2150 2152 +f 2153 2151 2167 +f 2166 2147 2184 +f 2184 2186 2166 +f 2166 2186 2164 +f 2186 2188 2164 +f 2164 2188 2162 +f 2188 2190 2162 +f 2162 2190 2160 +f 2190 2192 2160 +f 2160 2192 2158 +f 2192 2194 2158 +f 2158 2194 2156 +f 2198 2152 2154 +f 2194 2196 2156 +f 2156 2196 2154 +f 2196 2198 2154 +f 2220 2219 2221 +f 2220 2221 2222 +f 2222 2221 2223 +f 2222 2223 2224 +f 2224 2223 2225 +f 2224 2225 2226 +f 2226 2225 2227 +f 2226 2227 2228 +f 2228 2227 2229 +f 2228 2229 2230 +f 2230 2229 2231 +f 2230 2231 2232 +f 2232 2231 2233 +f 2232 2233 2234 +f 2234 2214 2215 +f 2217 2216 2235 +f 2241 2242 2243 +f 2243 2242 2244 +f 2245 2244 2246 +f 2245 2246 2247 +f 2215 2251 2234 +f 2234 2251 2252 +f 2234 2252 2232 +f 2232 2252 2253 +f 2232 2253 2230 +f 2230 2253 2254 +f 2230 2254 2228 +f 2228 2254 2255 +f 2228 2255 2226 +f 2226 2255 2256 +f 2226 2256 2224 +f 2224 2256 2257 +f 2224 2257 2222 +f 2222 2257 2258 +f 2222 2258 2220 +f 2250 2261 2251 +f 2251 2261 2252 +f 2261 2263 2252 +f 2252 2263 2253 +f 2263 2265 2253 +f 2253 2265 2254 +f 2265 2266 2267 +f 2265 2267 2254 +f 2254 2267 2255 +f 2267 2269 2255 +f 2255 2269 2256 +f 2269 2271 2256 +f 2256 2271 2257 +f 2271 2272 2273 +f 2271 2273 2257 +f 2257 2273 2258 +f 2273 2259 2258 +f 2233 2231 2247 +f 2247 2231 2245 +f 2231 2229 2245 +f 2245 2229 2243 +f 2229 2227 2243 +f 2243 2227 2241 +f 2227 2225 2241 +f 2241 2225 2239 +f 2225 2223 2239 +f 2239 2223 2237 +f 2219 2217 2235 +f 2223 2221 2237 +f 2237 2221 2235 +f 2221 2219 2235 +f 2037 2218 2039 +f 2039 2218 2259 +f 2274 2275 2276 +f 2276 2275 2277 +f 2276 2277 2278 +f 2278 2277 2279 +f 2278 2279 2280 +f 2280 2279 2281 +f 2280 2281 2246 +f 2246 2281 2248 +f 2248 2281 2214 +f 2214 2281 2282 +f 2214 2282 2150 +f 2150 2282 2283 +f 2150 2283 2148 +f 2148 2283 2168 +f 2168 2283 2284 +f 2168 2284 2170 +f 2170 2284 2172 +f 2172 2284 2285 +f 2172 2285 2174 +f 2174 2285 2176 +f 2176 2285 2178 +f 2178 2285 2180 +f 2180 2285 2146 +f 2146 2285 2286 +f 2146 2286 2104 +f 2104 2286 2102 +f 2102 2286 2124 +f 2124 2286 2126 +f 2126 2286 2287 +f 2126 2287 2128 +f 2128 2287 2288 +f 2128 2288 2130 +f 2130 2288 2132 +f 2132 2288 2134 +f 2134 2288 2289 +f 2134 2289 2290 +f 2290 2289 2291 +f 2290 2291 2292 +f 2292 2291 2293 +f 2292 2293 2018 +f 2018 2293 2294 +f 2018 2294 2049 +f 2049 2294 2051 +f 2051 2294 2053 +f 2053 2294 2295 +f 2053 2295 2055 +f 2055 2295 2057 +f 2057 2295 2296 +f 2057 2296 2059 +f 2059 2296 2037 +f 2037 2296 2218 +f 2218 2296 2297 +f 2218 2297 2216 +f 2216 2297 2236 +f 2236 2297 2238 +f 2238 2297 2240 +f 2240 2297 2278 +f 2240 2278 2242 +f 2242 2278 2280 +f 2242 2280 2244 +f 2244 2280 2246 +f 2284 2298 2285 +f 2285 2298 2299 +f 2285 2299 2300 +f 2300 2299 2301 +f 2302 2287 2300 +f 2300 2287 2286 +f 2300 2286 2285 +f 2287 2302 2288 +f 2288 2302 2289 +f 2293 2303 2294 +f 2294 2303 2295 +f 2303 2304 2295 +f 2295 2304 2305 +f 2295 2305 2296 +f 2296 2305 2306 +f 2296 2306 2297 +f 2297 2306 2307 +f 2297 2307 2278 +f 2278 2307 2276 +f 2304 2308 2305 +f 2305 2308 2309 +f 2305 2309 2310 +f 2310 2311 2305 +f 2305 2311 2312 +f 2305 2312 2313 +f 2313 2314 2305 +f 2305 2314 2315 +f 2305 2315 2316 +f 2305 2316 2306 +f 2306 2316 2317 +f 2306 2317 2307 +f 2307 2317 2276 +f 2317 2318 2276 +f 2276 2318 2319 +f 2276 2319 2274 +f 2320 2321 2318 +f 2318 2321 2322 +f 2318 2322 2323 +f 2323 2319 2318 +f 2018 2020 2292 +f 2292 2020 2100 +f 2292 2100 2290 +f 2290 2100 2134 +f 2324 2325 2299 +f 2299 2325 2326 +f 2299 2326 2327 +f 2328 2329 2327 +f 2327 2329 2330 +f 2327 2330 2331 +f 2329 2328 2332 +f 2332 2328 2333 +f 2332 2333 2334 +f 2334 2335 2332 +f 2329 2332 2336 +f 2336 2332 2337 +f 2336 2337 2338 +f 2338 2337 2339 +f 2339 2337 2340 +f 2340 2337 2341 +f 2301 2299 2331 +f 2331 2299 2327 +f 2342 2343 2344 +f 2344 2343 2345 +f 2344 2345 2346 +f 2344 2346 2347 +f 2347 2346 2348 +f 2347 2348 2349 +f 2349 2350 2347 +f 2347 2350 2351 +f 2347 2351 2352 +f 2347 2353 2344 +f 2344 2353 2354 +f 2344 2354 2355 +f 2355 2354 2356 +f 2355 2356 2357 +f 2358 2359 2353 +f 2353 2359 2360 +f 2353 2360 2361 +f 2361 2362 2353 +f 2353 2362 2363 +f 2353 2363 2364 +f 2353 2364 2354 +f 2354 2364 2365 +f 2354 2365 2356 +f 2366 2367 2357 +f 2357 2367 2204 +f 2357 2204 2202 +f 2368 2199 2366 +f 2366 2199 2212 +f 2366 2212 2210 +f 2199 2368 2215 +f 2215 2368 2369 +f 2215 2369 2249 +f 2249 2369 2370 +f 2249 2370 2260 +f 2260 2370 2262 +f 2262 2370 2264 +f 2264 2370 2266 +f 2266 2370 2268 +f 2268 2370 2371 +f 2268 2371 2270 +f 2270 2371 2272 +f 2272 2371 2372 +f 2272 2372 2259 +f 2259 2372 2039 +f 2039 2372 2062 +f 2062 2372 2047 +f 2047 2372 2048 +f 2048 2372 2373 +f 2048 2373 2067 +f 2067 2373 2069 +f 2069 2373 2071 +f 2071 2373 2374 +f 2071 2374 2072 +f 2072 2374 2074 +f 2074 2374 2375 +f 2074 2375 2101 +f 2101 2375 2376 +f 2101 2376 2120 +f 2120 2376 2122 +f 2122 2376 2123 +f 2123 2376 2377 +f 2123 2377 2137 +f 2137 2377 2139 +f 2139 2377 2142 +f 2142 2377 2378 +f 2142 2378 2144 +f 2144 2378 2145 +f 2145 2378 2147 +f 2147 2378 2355 +f 2147 2355 2181 +f 2181 2355 2200 +f 2200 2355 2202 +f 2202 2355 2357 +f 2372 2371 2379 +f 2379 2371 2380 +f 2379 2380 2381 +f 2382 2383 2381 +f 2381 2383 2379 +f 2379 2383 2384 +f 2384 2383 2385 +f 2384 2385 2386 +f 2386 2387 2384 +f 2384 2387 2388 +f 2384 2389 2379 +f 2379 2389 2390 +f 2379 2390 2391 +f 2392 2393 2389 +f 2389 2393 2394 +f 2389 2394 2395 +f 2395 2390 2389 +f 2391 2396 2379 +f 2379 2396 2397 +f 2379 2397 2398 +f 2379 2398 2372 +f 2372 2398 2373 +f 2377 2342 2378 +f 2378 2342 2344 +f 2378 2344 2355 +f 2366 2210 2367 +f 2367 2210 2208 +f 2367 2208 2206 +f 2206 2204 2367 +f 2299 2365 2324 +f 2357 2284 2366 +f 2366 2284 2283 +f 2366 2283 2368 +f 2368 2283 2282 +f 2369 2282 2281 +f 2369 2281 2370 +f 2370 2279 2371 +f 2371 2279 2277 +f 2371 2277 2380 +f 2335 2399 2332 +f 2332 2399 2400 +f 2332 2400 2401 +f 2401 2400 2402 +f 2401 2402 2403 +f 2403 2402 2404 +f 2405 2404 2406 +f 2405 2406 2407 +f 2407 2406 2408 +f 2407 2408 2363 +f 2363 2408 2364 +f 2364 2408 2365 +f 2365 2408 2409 +f 2365 2409 2410 +f 2410 2409 2411 +f 2410 2411 2412 +f 2412 2411 2413 +f 2416 2415 2399 +f 2416 2399 2334 +f 2412 2418 2419 +f 2412 2419 2410 +f 2410 2419 2365 +f 2420 2327 2326 +f 2420 2326 2421 +f 2421 2326 2325 +f 2421 2325 2422 +f 2422 2325 2365 +f 2422 2365 2419 +f 2325 2324 2365 +f 2403 2424 2425 +f 2403 2425 2401 +f 2401 2425 2332 +f 2426 2359 2427 +f 2427 2359 2358 +f 2427 2358 2428 +f 2428 2358 2332 +f 2428 2332 2425 +f 2358 2353 2332 +f 2402 2400 2415 +f 2415 2400 2399 +f 2426 2427 2428 +f 2426 2428 2424 +f 2424 2428 2425 +f 2413 2402 2415 +f 2423 2426 2424 +f 2411 2404 2413 +f 2418 2420 2422 +f 2418 2422 2419 +f 2421 2422 2420 +f 2408 2406 2409 +f 2409 2406 2411 +f 2337 2332 2347 +f 2347 2332 2353 +f 2330 2429 2331 +f 2331 2429 2430 +f 2331 2430 2431 +f 2431 2430 2432 +f 2431 2432 2433 +f 2433 2432 2434 +f 2433 2434 2435 +f 2435 2436 2437 +f 2437 2436 2438 +f 2352 2438 2347 +f 2347 2438 2439 +f 2347 2439 2440 +f 2440 2439 2441 +f 2440 2441 2442 +f 2446 2445 2429 +f 2446 2429 2329 +f 2329 2336 2446 +f 2446 2447 2444 +f 2444 2448 2442 +f 2442 2448 2449 +f 2442 2449 2440 +f 2440 2449 2347 +f 2336 2338 2447 +f 2447 2338 2339 +f 2447 2339 2450 +f 2450 2339 2340 +f 2451 2340 2341 +f 2451 2341 2452 +f 2452 2341 2347 +f 2452 2347 2449 +f 2341 2337 2347 +f 2351 2350 2437 +f 2435 2454 2433 +f 2433 2454 2455 +f 2433 2455 2431 +f 2431 2455 2331 +f 2456 2348 2346 +f 2456 2346 2457 +f 2457 2345 2458 +f 2458 2345 2331 +f 2458 2331 2455 +f 2345 2343 2331 +f 2432 2430 2445 +f 2445 2430 2429 +f 2456 2457 2458 +f 2456 2458 2454 +f 2454 2458 2455 +f 2448 2450 2452 +f 2448 2452 2449 +f 2451 2452 2450 +f 2438 2436 2439 +f 2439 2436 2441 +f 2308 2304 2397 +f 2397 2304 2398 +f 2373 2293 2374 +f 2374 2293 2291 +f 2374 2291 2375 +f 2375 2291 2289 +f 2375 2289 2376 +f 2376 2289 2302 +f 2376 2302 2377 +f 2315 2459 2316 +f 2316 2459 2460 +f 2316 2460 2461 +f 2461 2460 2462 +f 2461 2462 2463 +f 2463 2462 2464 +f 2463 2464 2465 +f 2465 2464 2466 +f 2465 2466 2395 +f 2395 2466 2390 +f 2391 2466 2467 +f 2396 2467 2397 +f 2397 2467 2468 +f 2397 2468 2469 +f 2469 2468 2470 +f 2469 2470 2471 +f 2471 2470 2472 +f 2471 2472 2473 +f 2473 2472 2474 +f 2473 2474 2313 +f 2313 2474 2314 +f 2314 2474 2459 +f 2313 2312 2473 +f 2473 2475 2471 +f 2471 2475 2476 +f 2471 2476 2469 +f 2469 2476 2397 +f 2475 2310 2477 +f 2477 2309 2476 +f 2476 2309 2397 +f 2309 2308 2397 +f 2465 2394 2478 +f 2465 2478 2463 +f 2463 2478 2479 +f 2463 2479 2461 +f 2461 2479 2316 +f 2394 2393 2478 +f 2478 2393 2480 +f 2478 2480 2479 +f 2479 2480 2392 +f 2479 2392 2316 +f 2316 2392 2389 +f 2393 2392 2480 +f 2460 2459 2481 +f 2481 2459 2474 +f 2481 2474 2472 +f 2460 2481 2462 +f 2462 2481 2482 +f 2462 2482 2464 +f 2464 2482 2483 +f 2464 2483 2466 +f 2466 2483 2467 +f 2482 2481 2472 +f 2483 2482 2470 +f 2470 2482 2472 +f 2477 2476 2475 +f 2467 2483 2468 +f 2468 2483 2470 +f 2317 2316 2384 +f 2384 2316 2389 +f 2274 2484 2275 +f 2275 2484 2485 +f 2275 2485 2486 +f 2486 2485 2487 +f 2486 2487 2488 +f 2488 2487 2489 +f 2488 2489 2490 +f 2490 2489 2491 +f 2490 2491 2386 +f 2388 2492 2384 +f 2384 2492 2493 +f 2384 2493 2494 +f 2494 2493 2495 +f 2494 2495 2496 +f 2496 2495 2497 +f 2496 2497 2498 +f 2498 2497 2499 +f 2498 2322 2321 +f 2501 2320 2318 +f 2501 2318 2502 +f 2502 2318 2384 +f 2502 2384 2494 +f 2318 2317 2384 +f 2386 2385 2490 +f 2504 2382 2381 +f 2504 2381 2505 +f 2505 2381 2275 +f 2505 2275 2486 +f 2381 2380 2275 +f 2485 2484 2506 +f 2506 2484 2499 +f 2506 2499 2497 +f 2503 2504 2505 +f 2503 2505 2488 +f 2488 2505 2486 +f 2485 2506 2487 +f 2487 2506 2507 +f 2487 2507 2489 +f 2489 2507 2508 +f 2489 2508 2491 +f 2491 2508 2492 +f 2507 2506 2497 +f 2490 2503 2488 +f 2508 2507 2495 +f 2495 2507 2497 +f 2498 2500 2496 +f 2496 2500 2502 +f 2496 2502 2494 +f 2501 2502 2500 +f 2492 2508 2493 +f 2493 2508 2495 +f 2509 2510 2511 +f 2511 2510 2512 +f 2511 2512 2513 +f 2513 2512 2514 +f 2514 2512 2515 +f 2514 2515 2516 +f 2516 2515 2517 +f 2516 2517 2518 +f 2518 2517 2519 +f 2518 2519 2520 +f 2520 2519 2521 +f 2520 2521 2522 +f 2522 2521 2523 +f 2522 2523 2524 +f 2524 2523 2525 +f 2524 2525 2526 +f 2526 2525 2527 +f 2526 2527 2528 +f 2528 2527 2529 +f 2528 2529 2530 +f 2530 2529 2531 +f 2530 2531 2532 +f 2532 2531 2533 +f 2532 2533 2534 +f 2534 2533 2535 +f 2534 2535 2536 +f 2536 2535 2537 +f 2536 2537 2538 +f 2539 2540 2509 +f 2509 2540 2541 +f 2509 2541 2510 +f 2510 2541 2542 +f 2510 2542 2515 +f 2515 2542 2517 +f 2543 2544 2539 +f 2539 2544 2545 +f 2539 2545 2540 +f 2540 2545 2546 +f 2540 2546 2547 +f 2547 2546 2548 +f 2547 2548 2549 +f 2549 2548 2525 +f 2549 2525 2523 +f 2544 2543 2550 +f 2550 2543 2551 +f 2550 2551 2552 +f 2552 2553 2550 +f 2550 2553 2554 +f 2550 2554 2555 +f 2555 2554 2556 +f 2555 2556 2557 +f 2557 2556 2531 +f 2557 2531 2529 +f 2553 2558 2554 +f 2554 2558 2559 +f 2554 2559 2556 +f 2556 2559 2533 +f 2556 2533 2531 +f 2558 2560 2559 +f 2559 2560 2537 +f 2559 2537 2535 +f 2536 2538 2561 +f 2561 2538 2562 +f 2561 2562 2563 +f 2563 2562 2564 +f 2563 2564 2565 +f 2565 2564 2566 +f 2565 2566 2567 +f 2567 2566 2568 +f 2567 2568 2569 +f 2569 2568 2570 +f 2569 2570 2571 +f 2571 2570 2572 +f 2571 2572 2573 +f 2573 2572 2574 +f 2573 2574 2575 +f 2575 2574 2576 +f 2575 2576 2577 +f 2577 2576 2578 +f 2577 2578 2579 +f 2562 2580 2564 +f 2564 2580 2581 +f 2564 2581 2566 +f 2566 2581 2582 +f 2566 2582 2568 +f 2568 2582 2583 +f 2568 2583 2570 +f 2570 2583 2584 +f 2570 2584 2572 +f 2572 2584 2585 +f 2572 2585 2574 +f 2580 2586 2581 +f 2581 2586 2587 +f 2581 2587 2582 +f 2582 2587 2588 +f 2582 2588 2583 +f 2583 2588 2589 +f 2583 2589 2584 +f 2584 2589 2590 +f 2584 2590 2585 +f 2587 2586 2591 +f 2591 2586 2592 +f 2591 2592 2593 +f 2593 2592 2594 +f 2593 2594 2595 +f 2595 2594 2596 +f 2595 2596 2589 +f 2589 2596 2590 +f 2577 2579 2597 +f 2597 2579 2598 +f 2597 2598 2599 +f 2599 2598 2600 +f 2599 2600 2601 +f 2601 2600 2602 +f 2601 2602 2603 +f 2603 2602 2604 +f 2603 2604 2605 +f 2605 2604 2606 +f 2605 2606 2607 +f 2607 2606 2528 +f 2607 2528 2530 +f 2600 2608 2602 +f 2602 2608 2609 +f 2602 2609 2604 +f 2604 2609 2610 +f 2604 2610 2606 +f 2606 2610 2526 +f 2606 2526 2528 +f 2608 2611 2609 +f 2609 2611 2612 +f 2609 2612 2610 +f 2610 2612 2524 +f 2610 2524 2526 +f 2612 2611 2522 +f 2522 2611 2520 +f 2533 2559 2535 +f 2550 2555 2544 +f 2544 2555 2613 +f 2544 2613 2545 +f 2545 2613 2546 +f 2542 2541 2547 +f 2547 2541 2540 +f 2515 2512 2510 +f 2555 2557 2613 +f 2613 2557 2614 +f 2613 2614 2546 +f 2546 2614 2548 +f 2517 2542 2549 +f 2549 2542 2547 +f 2557 2529 2614 +f 2614 2529 2527 +f 2614 2527 2548 +f 2548 2527 2525 +f 2521 2519 2517 +f 2521 2517 2523 +f 2523 2517 2549 +f 2534 2536 2615 +f 2615 2536 2561 +f 2615 2561 2616 +f 2616 2561 2563 +f 2616 2563 2565 +f 2532 2534 2617 +f 2617 2534 2615 +f 2617 2615 2618 +f 2618 2615 2616 +f 2618 2616 2619 +f 2619 2616 2565 +f 2619 2565 2567 +f 2530 2532 2620 +f 2620 2532 2617 +f 2620 2617 2621 +f 2621 2617 2618 +f 2621 2618 2622 +f 2622 2618 2619 +f 2622 2619 2623 +f 2623 2619 2567 +f 2623 2567 2569 +f 2612 2522 2524 +f 2530 2620 2607 +f 2607 2620 2624 +f 2607 2624 2605 +f 2605 2624 2625 +f 2605 2625 2603 +f 2603 2625 2626 +f 2603 2626 2601 +f 2601 2626 2599 +f 2624 2620 2621 +f 2624 2621 2627 +f 2627 2621 2622 +f 2627 2622 2628 +f 2628 2622 2623 +f 2628 2623 2629 +f 2629 2623 2569 +f 2629 2569 2571 +f 2624 2627 2625 +f 2625 2627 2630 +f 2625 2630 2626 +f 2626 2630 2631 +f 2626 2631 2599 +f 2599 2631 2597 +f 2630 2627 2628 +f 2630 2628 2632 +f 2632 2628 2629 +f 2632 2629 2633 +f 2633 2629 2571 +f 2633 2571 2573 +f 2587 2591 2588 +f 2588 2591 2595 +f 2588 2595 2589 +f 2593 2595 2591 +f 2633 2634 2632 +f 2632 2634 2631 +f 2632 2631 2630 +f 2577 2597 2634 +f 2634 2597 2631 +f 2573 2575 2633 +f 2633 2575 2634 +f 2575 2577 2634 +f 2552 2551 2635 +f 2635 2551 2636 +f 2635 2636 2637 +f 2637 2636 2638 +f 2637 2638 2639 +f 2639 2638 2640 +f 2639 2640 2641 +f 2641 2640 2642 +f 2641 2642 2643 +f 2643 2642 2644 +f 2643 2644 2645 +f 2645 2644 2646 +f 2645 2646 2647 +f 2647 2646 2648 +f 2647 2648 2649 +f 2649 2648 2650 +f 2649 2650 2651 +f 2651 2650 2652 +f 2651 2652 2653 +f 2653 2652 2654 +f 2653 2654 2655 +f 2655 2654 2656 +f 2655 2656 2657 +f 2657 2656 2658 +f 2658 2656 2659 +f 2658 2659 2660 +f 2660 2659 2661 +f 2660 2661 2662 +f 2662 2661 2663 +f 2662 2663 2664 +f 2664 2663 2665 +f 2664 2665 2666 +f 2666 2665 2667 +f 2666 2667 2668 +f 2668 2667 2669 +f 2668 2669 2670 +f 2670 2669 2671 +f 2671 2669 2672 +f 2671 2672 2673 +f 2673 2672 2674 +f 2674 2672 2675 +f 2674 2675 2676 +f 2676 2675 2677 +f 2677 2675 2678 +f 2677 2678 2679 +f 2679 2678 2680 +f 2679 2680 2681 +f 2681 2680 2682 +f 2682 2680 2683 +f 2683 2680 2684 +f 2684 2680 2685 +f 2684 2685 2686 +f 2686 2685 2687 +f 2686 2687 2688 +f 2688 2687 2689 +f 2688 2689 2690 +f 2690 2689 2691 +f 2690 2691 2644 +f 2644 2691 2646 +f 2640 2638 2692 +f 2692 2638 2686 +f 2692 2686 2688 +f 2668 2670 2693 +f 2693 2670 2694 +f 2693 2694 2695 +f 2695 2694 2696 +f 2695 2696 2697 +f 2697 2696 2698 +f 2697 2698 2699 +f 2699 2698 2700 +f 2699 2700 2701 +f 2696 2694 2702 +f 2702 2694 2703 +f 2702 2703 2700 +f 2658 2660 2701 +f 2701 2660 2704 +f 2701 2704 2699 +f 2699 2704 2705 +f 2699 2705 2697 +f 2697 2705 2706 +f 2697 2706 2695 +f 2695 2706 2693 +f 2657 2707 2655 +f 2655 2707 2708 +f 2655 2708 2653 +f 2653 2708 2709 +f 2653 2709 2651 +f 2651 2709 2710 +f 2651 2710 2649 +f 2649 2710 2711 +f 2649 2711 2647 +f 2647 2711 2712 +f 2647 2712 2645 +f 2645 2712 2713 +f 2645 2713 2643 +f 2643 2713 2714 +f 2643 2714 2641 +f 2641 2714 2715 +f 2641 2715 2639 +f 2639 2715 2637 +f 2707 2716 2708 +f 2708 2716 2717 +f 2708 2717 2709 +f 2709 2717 2718 +f 2709 2718 2710 +f 2710 2718 2719 +f 2710 2719 2711 +f 2711 2719 2720 +f 2711 2720 2712 +f 2712 2720 2721 +f 2712 2721 2713 +f 2713 2721 2722 +f 2713 2722 2714 +f 2714 2722 2723 +f 2714 2723 2715 +f 2715 2723 2724 +f 2715 2724 2637 +f 2637 2724 2635 +f 2716 2592 2717 +f 2717 2592 2586 +f 2717 2586 2718 +f 2718 2586 2719 +f 2719 2586 2720 +f 2720 2586 2580 +f 2720 2580 2721 +f 2721 2580 2722 +f 2580 2562 2722 +f 2722 2562 2723 +f 2562 2538 2723 +f 2723 2538 2724 +f 2538 2537 2724 +f 2724 2537 2635 +f 2537 2560 2635 +f 2635 2560 2558 +f 2635 2558 2553 +f 2553 2552 2635 +f 2680 2678 2725 +f 2725 2678 2675 +f 2725 2675 2726 +f 2726 2675 2672 +f 2726 2672 2727 +f 2727 2672 2669 +f 2727 2669 2667 +f 2685 2680 2728 +f 2728 2680 2725 +f 2728 2725 2729 +f 2729 2725 2726 +f 2729 2726 2730 +f 2730 2726 2727 +f 2730 2727 2731 +f 2731 2727 2667 +f 2731 2667 2665 +f 2687 2685 2732 +f 2732 2685 2728 +f 2732 2728 2733 +f 2733 2728 2729 +f 2733 2729 2734 +f 2734 2729 2730 +f 2734 2730 2735 +f 2735 2730 2731 +f 2735 2731 2736 +f 2736 2731 2665 +f 2736 2665 2663 +f 2642 2640 2692 +f 2642 2692 2690 +f 2690 2692 2688 +f 2687 2732 2689 +f 2689 2732 2737 +f 2689 2737 2691 +f 2691 2737 2738 +f 2691 2738 2646 +f 2646 2738 2648 +f 2737 2732 2733 +f 2644 2642 2690 +f 2737 2733 2739 +f 2739 2733 2734 +f 2739 2734 2740 +f 2740 2734 2735 +f 2740 2735 2741 +f 2741 2735 2736 +f 2741 2736 2742 +f 2742 2736 2663 +f 2742 2663 2661 +f 2737 2739 2738 +f 2738 2739 2743 +f 2738 2743 2648 +f 2648 2743 2650 +f 2743 2739 2740 +f 2668 2693 2666 +f 2666 2693 2706 +f 2666 2706 2664 +f 2664 2706 2705 +f 2664 2705 2662 +f 2662 2705 2704 +f 2662 2704 2660 +f 2743 2740 2744 +f 2744 2740 2741 +f 2744 2741 2745 +f 2745 2741 2742 +f 2745 2742 2746 +f 2746 2742 2661 +f 2746 2661 2659 +f 2652 2650 2744 +f 2744 2650 2743 +f 2652 2744 2745 +f 2652 2745 2654 +f 2654 2745 2746 +f 2654 2746 2656 +f 2656 2746 2659 +f 2702 2700 2698 +f 2696 2702 2698 +f 2551 2543 2636 +f 2700 2578 2576 +f 2657 2596 2707 +f 2707 2596 2594 +f 2716 2594 2592 +f 2684 2511 2683 +f 2683 2511 2513 +f 2683 2513 2682 +f 2682 2513 2514 +f 2676 2520 2674 +f 2673 2608 2671 +f 2671 2608 2600 +f 2670 2600 2598 +f 2670 2598 2694 +f 2684 2511 2686 +f 2686 2511 2509 +f 2686 2509 2539 +f 2686 2539 2638 +f 2638 2539 2543 +f 2638 2543 2636 +f 2716 2594 2707 +f 2657 2596 2590 +f 2657 2590 2658 +f 2658 2590 2585 +f 2658 2585 2574 +f 2658 2574 2701 +f 2701 2574 2576 +f 2701 2576 2700 +f 2700 2578 2703 +f 2578 2579 2703 +f 2703 2579 2694 +f 2694 2579 2598 +f 2670 2600 2671 +f 2673 2608 2611 +f 2673 2611 2674 +f 2674 2611 2520 +f 2676 2520 2677 +f 2677 2520 2518 +f 2677 2518 2679 +f 2679 2518 2516 +f 2679 2516 2681 +f 2681 2516 2514 +f 2681 2514 2682 +f 2551 2543 2747 +f 2747 2543 2748 +f 2748 2543 2539 +f 2748 2539 2749 +f 2749 2539 2509 +f 2749 2509 2750 +f 2750 2509 2511 +f 2750 2511 2513 +f 2513 2514 2750 +f 2750 2514 2751 +f 2750 2751 2752 +f 2752 2751 2753 +f 2752 2753 2754 +f 2754 2753 2755 +f 2754 2755 2756 +f 2756 2755 2757 +f 2756 2757 2758 +f 2758 2757 2759 +f 2758 2759 2760 +f 2760 2759 2761 +f 2760 2761 2762 +f 2762 2761 2763 +f 2762 2763 2764 +f 2764 2763 2765 +f 2764 2765 2766 +f 2766 2765 2767 +f 2766 2767 2768 +f 2768 2767 2769 +f 2768 2769 2770 +f 2770 2769 2771 +f 2770 2771 2772 +f 2772 2771 2773 +f 2772 2773 2774 +f 2774 2773 2775 +f 2774 2775 2776 +f 2776 2775 2777 +f 2776 2777 2778 +f 2778 2777 2779 +f 2778 2779 2780 +f 2780 2779 2781 +f 2780 2781 2782 +f 2782 2781 2783 +f 2782 2783 2784 +f 2784 2783 2785 +f 2784 2785 2786 +f 2786 2785 2787 +f 2786 2787 2788 +f 2788 2787 2789 +f 2788 2789 2790 +f 2790 2789 2791 +f 2790 2791 2792 +f 2792 2791 2793 +f 2792 2793 2794 +f 2794 2793 2795 +f 2794 2795 2796 +f 2796 2795 2797 +f 2796 2797 2798 +f 2798 2797 2799 +f 2798 2799 2800 +f 2800 2799 2801 +f 2800 2801 2802 +f 2802 2801 2803 +f 2802 2803 2804 +f 2804 2803 2805 +f 2804 2805 2806 +f 2806 2805 2598 +f 2806 2598 2807 +f 2807 2598 2808 +f 2807 2808 2809 +f 2809 2808 2810 +f 2809 2810 2811 +f 2811 2810 2812 +f 2811 2812 2813 +f 2751 2514 2814 +f 2814 2514 2516 +f 2814 2516 2815 +f 2815 2516 2518 +f 2815 2518 2816 +f 2816 2518 2520 +f 2816 2520 2817 +f 2817 2520 2818 +f 2817 2818 2819 +f 2819 2818 2820 +f 2819 2820 2821 +f 2821 2820 2822 +f 2821 2822 2823 +f 2823 2822 2824 +f 2823 2824 2825 +f 2825 2824 2826 +f 2825 2826 2827 +f 2827 2826 2828 +f 2827 2828 2829 +f 2829 2828 2830 +f 2829 2830 2831 +f 2831 2830 2832 +f 2831 2832 2833 +f 2833 2832 2834 +f 2833 2834 2835 +f 2835 2834 2789 +f 2835 2789 2787 +f 2611 2836 2520 +f 2520 2836 2837 +f 2520 2837 2838 +f 2838 2837 2839 +f 2838 2839 2820 +f 2820 2839 2822 +f 2608 2840 2611 +f 2611 2840 2841 +f 2611 2841 2836 +f 2836 2841 2837 +f 2600 2842 2608 +f 2608 2842 2843 +f 2608 2843 2844 +f 2844 2843 2845 +f 2844 2845 2846 +f 2846 2845 2847 +f 2846 2847 2848 +f 2848 2847 2849 +f 2848 2849 2850 +f 2850 2849 2851 +f 2850 2851 2828 +f 2828 2851 2830 +f 2598 2805 2600 +f 2600 2805 2852 +f 2600 2852 2842 +f 2842 2852 2853 +f 2842 2853 2854 +f 2854 2853 2855 +f 2854 2855 2856 +f 2856 2855 2857 +f 2856 2857 2858 +f 2858 2857 2859 +f 2858 2859 2860 +f 2860 2859 2861 +f 2860 2861 2862 +f 2862 2861 2863 +f 2862 2863 2832 +f 2832 2863 2834 +f 2598 2579 2808 +f 2808 2579 2864 +f 2808 2864 2810 +f 2810 2864 2865 +f 2810 2865 2812 +f 2579 2578 2864 +f 2864 2578 2865 +f 2865 2578 2866 +f 2866 2578 2576 +f 2866 2576 2867 +f 2867 2576 2574 +f 2867 2574 2868 +f 2868 2574 2585 +f 2868 2585 2590 +f 2868 2590 2869 +f 2869 2590 2596 +f 2869 2596 2870 +f 2870 2596 2594 +f 2870 2594 2871 +f 2871 2594 2592 +f 2811 2813 2872 +f 2872 2813 2873 +f 2872 2873 2874 +f 2874 2873 2875 +f 2874 2875 2876 +f 2876 2875 2877 +f 2876 2877 2878 +f 2878 2877 2879 +f 2878 2879 2880 +f 2880 2879 2881 +f 2880 2881 2796 +f 2796 2881 2794 +f 2879 2877 2882 +f 2882 2877 2883 +f 2882 2883 2879 +f 2879 2883 2884 +f 2879 2884 2881 +f 2881 2884 2885 +f 2881 2885 2794 +f 2794 2885 2792 +f 2884 2883 2886 +f 2886 2883 2887 +f 2886 2887 2888 +f 2888 2887 2889 +f 2888 2889 2890 +f 2890 2889 2891 +f 2890 2891 2892 +f 2892 2891 2893 +f 2892 2893 2894 +f 2894 2893 2895 +f 2894 2895 2788 +f 2788 2895 2786 +f 2889 2896 2891 +f 2891 2896 2897 +f 2891 2897 2893 +f 2893 2897 2898 +f 2893 2898 2895 +f 2895 2898 2899 +f 2895 2899 2786 +f 2786 2899 2784 +f 2897 2896 2900 +f 2900 2896 2901 +f 2900 2901 2902 +f 2902 2901 2903 +f 2902 2903 2904 +f 2904 2903 2782 +f 2904 2782 2784 +f 2903 2780 2782 +f 2778 2905 2776 +f 2776 2905 2906 +f 2776 2906 2774 +f 2774 2906 2907 +f 2774 2907 2772 +f 2772 2907 2908 +f 2772 2908 2770 +f 2770 2908 2909 +f 2770 2909 2768 +f 2768 2909 2910 +f 2768 2910 2766 +f 2766 2910 2911 +f 2766 2911 2764 +f 2764 2911 2912 +f 2764 2912 2762 +f 2762 2912 2913 +f 2762 2913 2760 +f 2760 2913 2914 +f 2760 2914 2758 +f 2758 2914 2915 +f 2758 2915 2756 +f 2756 2915 2916 +f 2756 2916 2754 +f 2754 2916 2917 +f 2754 2917 2752 +f 2906 2905 2918 +f 2918 2905 2919 +f 2918 2919 2920 +f 2920 2919 2921 +f 2920 2921 2922 +f 2922 2921 2923 +f 2922 2923 2924 +f 2924 2923 2925 +f 2924 2925 2926 +f 2926 2925 2927 +f 2926 2927 2928 +f 2928 2927 2929 +f 2928 2929 2930 +f 2930 2929 2931 +f 2930 2931 2932 +f 2932 2931 2933 +f 2932 2933 2934 +f 2934 2933 2935 +f 2934 2935 2936 +f 2936 2935 2937 +f 2936 2937 2938 +f 2938 2937 2917 +f 2938 2917 2916 +f 2919 2939 2921 +f 2921 2939 2940 +f 2921 2940 2923 +f 2923 2940 2941 +f 2923 2941 2925 +f 2925 2941 2942 +f 2925 2942 2927 +f 2927 2942 2943 +f 2927 2943 2929 +f 2929 2943 2944 +f 2929 2944 2931 +f 2931 2944 2945 +f 2931 2945 2933 +f 2933 2945 2946 +f 2933 2946 2935 +f 2935 2946 2947 +f 2935 2947 2937 +f 2939 2948 2940 +f 2940 2948 2949 +f 2940 2949 2941 +f 2941 2949 2950 +f 2941 2950 2942 +f 2942 2950 2951 +f 2942 2951 2943 +f 2943 2951 2952 +f 2943 2952 2944 +f 2944 2952 2953 +f 2944 2953 2945 +f 2945 2953 2954 +f 2945 2954 2946 +f 2946 2954 2955 +f 2946 2955 2947 +f 2949 2948 2956 +f 2956 2948 2957 +f 2956 2957 2958 +f 2958 2957 2959 +f 2958 2959 2960 +f 2960 2959 2961 +f 2960 2961 2962 +f 2962 2961 2963 +f 2962 2963 2964 +f 2964 2963 2965 +f 2964 2965 2966 +f 2966 2965 2967 +f 2968 2969 2966 +f 2966 2969 2970 +f 2966 2970 2964 +f 2964 2970 2962 +f 2969 2968 2971 +f 2971 2968 2972 +f 2971 2972 2973 +f 2973 2972 2954 +f 2973 2954 2953 +f 2972 2955 2954 +f 2840 2608 2844 +f 2753 2751 2974 +f 2974 2751 2814 +f 2974 2814 2975 +f 2975 2814 2815 +f 2975 2815 2976 +f 2976 2815 2816 +f 2976 2816 2977 +f 2977 2816 2817 +f 2977 2817 2819 +f 2916 2915 2938 +f 2938 2915 2978 +f 2938 2978 2936 +f 2936 2978 2934 +f 2971 2973 2979 +f 2979 2973 2953 +f 2979 2953 2952 +f 2969 2971 2980 +f 2980 2971 2979 +f 2980 2979 2981 +f 2981 2979 2952 +f 2981 2952 2951 +f 2970 2969 2982 +f 2982 2969 2980 +f 2982 2980 2983 +f 2983 2980 2981 +f 2983 2981 2984 +f 2984 2981 2951 +f 2984 2951 2950 +f 2753 2974 2755 +f 2755 2974 2985 +f 2755 2985 2757 +f 2757 2985 2986 +f 2757 2986 2759 +f 2759 2986 2987 +f 2759 2987 2761 +f 2761 2987 2988 +f 2761 2988 2763 +f 2763 2988 2989 +f 2763 2989 2765 +f 2765 2989 2990 +f 2765 2990 2767 +f 2767 2990 2991 +f 2767 2991 2769 +f 2769 2991 2992 +f 2769 2992 2771 +f 2771 2992 2993 +f 2771 2993 2773 +f 2773 2993 2994 +f 2773 2994 2775 +f 2775 2994 2995 +f 2775 2995 2777 +f 2777 2995 2779 +f 2985 2974 2975 +f 2915 2914 2978 +f 2978 2914 2996 +f 2978 2996 2934 +f 2934 2996 2932 +f 2960 2962 2982 +f 2982 2962 2970 +f 2960 2982 2983 +f 2985 2975 2997 +f 2997 2975 2976 +f 2997 2976 2998 +f 2998 2976 2977 +f 2998 2977 2999 +f 2999 2977 2819 +f 2999 2819 2821 +f 2914 2913 2996 +f 2996 2913 3000 +f 2996 3000 2932 +f 2932 3000 2930 +f 2958 2960 2983 +f 2958 2983 2984 +f 2985 2997 2986 +f 2986 2997 3001 +f 2986 3001 2987 +f 2987 3001 3002 +f 2987 3002 2988 +f 2988 3002 3003 +f 2988 3003 2989 +f 2989 3003 3004 +f 2989 3004 2990 +f 2990 3004 3005 +f 2990 3005 2991 +f 2991 3005 3006 +f 2991 3006 2992 +f 2992 3006 3007 +f 2992 3007 2993 +f 2993 3007 3008 +f 2993 3008 2994 +f 2994 3008 3009 +f 2994 3009 2995 +f 2995 3009 3010 +f 2995 3010 2779 +f 2779 3010 2781 +f 3001 2997 2998 +f 2913 2912 3000 +f 3000 2912 3011 +f 3000 3011 2930 +f 2930 3011 2928 +f 2956 2958 2984 +f 2956 2984 2950 +f 2956 2950 2949 +f 2926 3012 3013 +f 3013 3012 2910 +f 3013 2910 2909 +f 2910 3012 2911 +f 2911 3012 3011 +f 2911 3011 2912 +f 3011 3012 2928 +f 2928 3012 2926 +f 3002 3014 3015 +f 3015 3014 3016 +f 3015 3016 3017 +f 3017 3016 2823 +f 3017 2823 2825 +f 3014 2999 3016 +f 3016 2999 2821 +f 3016 2821 2823 +f 3002 3001 3014 +f 3014 3001 2998 +f 3014 2998 2999 +f 2838 2820 2818 +f 2520 2838 2818 +f 3002 3015 3003 +f 3003 3015 3018 +f 3003 3018 3004 +f 3004 3018 3019 +f 3004 3019 3005 +f 3005 3019 3020 +f 3005 3020 3006 +f 3006 3020 3021 +f 3006 3021 3007 +f 3007 3021 3022 +f 3007 3022 3008 +f 3008 3022 3023 +f 3008 3023 3009 +f 3009 3023 3024 +f 3009 3024 3010 +f 3010 3024 2783 +f 3010 2783 2781 +f 3018 3015 3017 +f 2926 3013 2924 +f 2924 3013 3025 +f 2924 3025 2922 +f 2922 3025 3026 +f 2922 3026 2920 +f 2920 3026 2918 +f 3025 3013 2909 +f 2918 3026 2907 +f 2907 3026 2908 +f 2909 2908 3025 +f 3025 2908 3026 +f 3019 3027 3028 +f 3028 3027 2827 +f 3028 2827 2829 +f 3017 2825 3027 +f 3027 2825 2827 +f 3017 3027 3018 +f 3018 3027 3019 +f 2824 3029 3030 +f 3030 3029 3031 +f 3030 3031 2848 +f 2848 3031 2846 +f 3029 2841 3031 +f 3031 2841 2840 +f 3031 2840 2846 +f 2846 2840 2844 +f 2824 2822 3029 +f 3029 2822 2839 +f 3029 2839 2841 +f 2841 2839 2837 +f 2824 3030 2826 +f 2826 3030 2850 +f 2826 2850 2828 +f 2850 3030 2848 +f 3019 3028 3020 +f 3020 3028 3032 +f 3020 3032 3021 +f 3021 3032 3033 +f 3021 3033 3022 +f 3022 3033 3034 +f 3022 3034 3023 +f 3023 3034 3035 +f 3023 3035 3024 +f 3024 3035 2785 +f 3024 2785 2783 +f 3032 3028 2829 +f 2906 2918 2907 +f 3034 3033 2833 +f 2833 3033 2831 +f 2862 2832 2830 +f 2829 2831 3032 +f 3032 2831 3033 +f 2860 2862 2851 +f 2851 2862 2830 +f 2858 2860 2849 +f 2849 2860 2851 +f 2856 2858 2847 +f 2847 2858 2849 +f 2854 2856 2845 +f 2845 2856 2847 +f 2842 2854 2843 +f 2843 2854 2845 +f 3035 3034 2835 +f 2835 3034 2833 +f 2787 2785 3035 +f 3035 2835 2787 +f 2791 2789 2834 +f 2793 2791 2863 +f 2863 2791 2834 +f 2795 2793 2861 +f 2861 2793 2863 +f 2797 2795 2859 +f 2859 2795 2861 +f 2799 2797 2857 +f 2857 2797 2859 +f 2801 2799 2855 +f 2855 2799 2857 +f 2803 2801 2853 +f 2853 2801 2855 +f 2805 2803 2852 +f 2852 2803 2853 +f 2904 2899 2902 +f 2902 2899 2898 +f 2902 2898 2900 +f 2900 2898 2897 +f 2899 2904 2784 +f 2894 3036 2892 +f 2892 3036 3037 +f 2892 3037 2890 +f 2890 3037 2888 +f 3036 2885 3037 +f 3037 2885 2884 +f 3037 2884 2888 +f 2888 2884 2886 +f 2788 2790 2894 +f 2894 2790 3036 +f 2790 2792 3036 +f 3036 2792 2885 +f 2880 3038 2878 +f 2878 3038 3039 +f 2878 3039 2876 +f 2876 3039 2874 +f 3038 3040 3039 +f 3039 3040 3041 +f 3039 3041 2874 +f 2874 3041 2872 +f 2796 2798 2880 +f 2880 2798 3038 +f 3040 3042 3041 +f 3041 3042 3043 +f 3041 3043 2872 +f 2872 3043 2811 +f 2798 2800 3038 +f 3038 2800 3040 +f 3042 3044 3043 +f 3043 3044 2809 +f 3043 2809 2811 +f 2800 2802 3040 +f 3040 2802 3042 +f 2806 2807 3044 +f 3044 2807 2809 +f 2802 2804 3042 +f 3042 2804 3044 +f 2804 2806 3044 +f 2275 2277 2380 +f 2370 2279 2281 +f 2369 2282 2368 +f 2357 2284 2298 +f 2357 2298 2356 +f 2356 2298 2299 +f 2356 2299 2365 +f 2325 2421 2324 +f 2324 2421 2422 +f 2324 2422 2419 +f 2419 2422 2412 +f 2419 2412 2411 +f 2404 2413 2402 +f 2403 2402 2425 +f 2403 2425 2428 +f 2428 2425 2353 +f 2428 2353 2427 +f 2427 2353 2358 +f 2421 2420 2418 +f 2418 2420 2417 +f 2418 2417 2414 +f 2414 2417 2416 +f 2414 2416 2415 +f 2415 2416 2400 +f 2415 2400 2401 +f 2401 2400 2353 +f 2401 2353 2425 +f 2420 2327 2417 +f 2327 2328 2417 +f 2417 2328 2333 +f 2417 2333 2416 +f 2416 2333 2334 +f 2399 2334 2335 +f 2399 2335 2400 +f 2400 2335 2353 +f 2335 2332 2353 +f 2426 2359 2360 +f 2426 2360 2423 +f 2423 2360 2361 +f 2423 2361 2362 +f 2423 2362 2407 +f 2407 2362 2363 +f 2408 2364 2409 +f 2409 2364 2324 +f 2409 2324 2410 +f 2410 2324 2419 +f 2410 2419 2411 +f 2364 2365 2324 +f 2412 2422 2418 +f 2418 2422 2421 +f 2407 2408 2409 +f 2409 2410 2406 +f 2406 2410 2411 +f 2406 2411 2404 +f 2413 2412 2414 +f 2414 2412 2418 +f 2409 2406 2407 +f 2407 2405 2423 +f 2423 2405 2424 +f 2426 2424 2427 +f 2415 2413 2414 +f 2424 2405 2403 +f 2403 2405 2404 +f 2399 2400 2416 +f 2425 2402 2401 +f 2401 2402 2415 +f 2427 2424 2428 +f 2428 2424 2403 +f 2332 2337 2353 +f 2353 2337 2347 +f 2341 2451 2337 +f 2337 2451 2452 +f 2337 2452 2449 +f 2449 2452 2442 +f 2449 2442 2441 +f 2441 2442 2443 +f 2441 2443 2434 +f 2434 2443 2432 +f 2433 2432 2455 +f 2433 2455 2458 +f 2458 2455 2343 +f 2458 2343 2457 +f 2457 2343 2345 +f 2457 2345 2346 +f 2451 2340 2450 +f 2451 2450 2448 +f 2448 2450 2447 +f 2448 2447 2444 +f 2444 2446 2445 +f 2445 2446 2430 +f 2445 2430 2431 +f 2431 2430 2343 +f 2431 2343 2455 +f 2447 2336 2446 +f 2429 2329 2330 +f 2429 2330 2430 +f 2430 2330 2343 +f 2330 2331 2343 +f 2456 2348 2453 +f 2453 2348 2349 +f 2453 2349 2350 +f 2453 2350 2437 +f 2437 2351 2438 +f 2438 2351 2352 +f 2438 2352 2439 +f 2439 2352 2337 +f 2439 2337 2440 +f 2440 2337 2449 +f 2440 2449 2441 +f 2352 2347 2337 +f 2442 2452 2448 +f 2448 2452 2451 +f 2437 2438 2439 +f 2439 2440 2436 +f 2436 2440 2441 +f 2436 2441 2434 +f 2443 2442 2444 +f 2439 2436 2437 +f 2437 2435 2453 +f 2453 2435 2454 +f 2453 2454 2456 +f 2456 2454 2457 +f 2435 2436 2434 +f 2432 2443 2445 +f 2445 2443 2444 +f 2429 2430 2446 +f 2455 2432 2431 +f 2431 2432 2445 +f 2457 2454 2458 +f 2458 2454 2433 +f 2300 2342 2301 +f 2301 2342 2343 +f 2301 2343 2331 +f 2342 2300 2377 +f 2377 2300 2302 +f 2373 2293 2303 +f 2373 2303 2398 +f 2398 2303 2304 +f 2309 2477 2308 +f 2308 2477 2476 +f 2308 2476 2469 +f 2469 2476 2470 +f 2469 2470 2483 +f 2483 2470 2464 +f 2483 2464 2465 +f 2465 2464 2478 +f 2392 2480 2389 +f 2389 2480 2479 +f 2389 2479 2461 +f 2461 2479 2462 +f 2461 2462 2481 +f 2481 2462 2472 +f 2481 2472 2473 +f 2473 2472 2475 +f 2473 2475 2312 +f 2312 2475 2311 +f 2311 2475 2310 +f 2310 2477 2309 +f 2473 2474 2481 +f 2481 2474 2460 +f 2481 2460 2461 +f 2461 2460 2389 +f 2474 2459 2460 +f 2460 2459 2315 +f 2460 2315 2389 +f 2389 2315 2316 +f 2314 2315 2459 +f 2394 2395 2465 +f 2465 2466 2483 +f 2483 2466 2468 +f 2483 2468 2469 +f 2469 2468 2308 +f 2466 2390 2391 +f 2467 2391 2396 +f 2467 2396 2468 +f 2468 2396 2308 +f 2396 2397 2308 +f 2476 2477 2471 +f 2471 2477 2475 +f 2471 2475 2472 +f 2466 2467 2468 +f 2476 2471 2470 +f 2470 2471 2482 +f 2470 2482 2464 +f 2464 2482 2463 +f 2464 2463 2478 +f 2478 2463 2480 +f 2482 2471 2472 +f 2463 2482 2462 +f 2462 2482 2472 +f 2480 2463 2479 +f 2479 2463 2462 +f 2316 2317 2389 +f 2389 2317 2384 +f 2318 2501 2317 +f 2317 2501 2502 +f 2317 2502 2494 +f 2494 2502 2495 +f 2494 2495 2508 +f 2508 2495 2489 +f 2508 2489 2490 +f 2490 2489 2503 +f 2490 2503 2383 +f 2383 2503 2382 +f 2382 2503 2504 +f 2381 2504 2380 +f 2380 2504 2505 +f 2380 2505 2486 +f 2486 2505 2487 +f 2486 2487 2506 +f 2506 2487 2497 +f 2506 2497 2498 +f 2498 2497 2500 +f 2498 2500 2321 +f 2321 2500 2320 +f 2320 2500 2501 +f 2498 2322 2323 +f 2498 2323 2499 +f 2499 2323 2319 +f 2499 2319 2484 +f 2484 2319 2274 +f 2484 2274 2485 +f 2485 2274 2380 +f 2485 2380 2486 +f 2274 2275 2380 +f 2383 2385 2490 +f 2491 2386 2387 +f 2491 2387 2492 +f 2492 2387 2388 +f 2492 2388 2493 +f 2493 2388 2317 +f 2493 2317 2494 +f 2388 2384 2317 +f 2502 2501 2496 +f 2496 2501 2500 +f 2496 2500 2497 +f 2491 2492 2493 +f 2491 2493 2508 +f 2508 2493 2494 +f 2502 2496 2495 +f 2495 2496 2507 +f 2495 2507 2489 +f 2489 2507 2488 +f 2489 2488 2503 +f 2503 2488 2504 +f 2507 2496 2497 +f 2490 2491 2508 +f 2488 2507 2487 +f 2487 2507 2497 +f 2498 2499 2506 +f 2506 2499 2485 +f 2506 2485 2486 +f 2484 2485 2499 +f 2504 2488 2505 +f 2505 2488 2487 +f 1862 1856 3045 +f 3045 1856 1861 +f 3045 1861 3046 +f 3046 1861 1860 +f 3046 1860 1859 +f 1859 1858 3046 +f 3046 1858 1857 +f 3046 1857 1855 +f 1854 2364 1855 +f 1855 2364 2363 +f 1855 2363 2362 +f 2364 1854 2365 +f 2365 1854 1852 +f 2365 1852 1851 +f 2365 1851 2356 +f 2356 1851 1888 +f 2356 1888 2357 +f 2357 1888 1887 +f 2357 1887 2366 +f 2366 1887 1886 +f 2366 1886 2368 +f 2368 1886 1885 +f 2368 1885 2369 +f 2369 1885 2370 +f 2370 1885 1884 +f 2370 1884 2371 +f 2371 1884 1907 +f 2371 1907 2380 +f 2380 1907 1906 +f 2380 1906 1905 +f 2380 1905 2381 +f 2381 1905 1904 +f 2381 1904 2382 +f 2382 1904 2383 +f 2383 1904 3047 +f 2383 3047 2385 +f 2385 3047 2386 +f 2386 3047 1901 +f 2386 1901 1900 +f 3047 1904 3048 +f 3048 1904 1903 +f 3048 1903 1902 +f 1902 1901 3048 +f 3048 1901 3047 +f 1899 3049 1900 +f 1900 3049 2387 +f 1900 2387 2386 +f 3049 1899 3050 +f 3050 1899 1892 +f 3050 1892 1893 +f 3050 1893 3051 +f 3051 1893 1898 +f 3051 1898 1897 +f 1897 1895 3051 +f 3051 1895 3052 +f 3051 3052 3053 +f 3053 3052 3054 +f 3053 3054 3055 +f 3055 3054 3056 +f 3055 3056 3057 +f 3057 3056 3058 +f 3057 3058 3059 +f 3059 3058 3060 +f 3059 3060 3061 +f 3061 3060 3062 +f 3061 3062 3063 +f 3063 3062 3064 +f 3063 3064 3065 +f 3065 3064 3066 +f 3065 3066 3067 +f 3067 3066 3068 +f 3067 3068 3069 +f 3069 3068 3070 +f 3069 3070 3071 +f 3071 3070 3072 +f 3071 3072 3073 +f 3073 3072 3074 +f 3073 3074 3075 +f 3075 3074 3076 +f 3075 3076 3077 +f 3077 3076 3078 +f 3077 3078 3079 +f 3079 3078 3080 +f 3079 3080 3081 +f 3081 3080 3082 +f 3081 3082 3083 +f 3083 3082 3084 +f 3083 3084 3085 +f 3085 3084 3086 +f 3085 3086 3087 +f 3087 3086 3088 +f 3087 3088 3089 +f 3089 3088 3090 +f 3089 3090 3091 +f 3091 3090 3092 +f 3091 3092 3093 +f 3093 3092 3094 +f 3093 3094 3095 +f 3095 3094 3096 +f 3095 3096 3097 +f 3097 3096 3098 +f 3097 3098 3099 +f 3099 3098 3100 +f 3099 3100 3101 +f 3101 3100 3102 +f 3102 3100 3103 +f 3102 3103 3104 +f 3104 3103 3105 +f 3105 3103 3106 +f 3106 3103 3107 +f 3107 3103 3108 +f 3107 3108 3109 +f 3109 3108 3110 +f 3109 3110 3111 +f 3111 3110 3112 +f 3111 3112 3113 +f 3113 3112 3114 +f 3114 3112 3115 +f 3115 3112 3116 +f 3116 3112 3117 +f 3116 3117 3118 +f 3118 3117 3119 +f 3118 3119 3120 +f 3120 3119 3121 +f 3120 3121 3122 +f 3122 3121 3123 +f 3123 3121 3124 +f 3124 3121 3125 +f 3124 3125 3126 +f 3126 3125 3127 +f 3127 3125 3128 +f 3127 3128 3129 +f 3129 3128 3130 +f 3129 3130 3131 +f 3131 3130 3132 +f 3131 3132 3133 +f 3133 3132 3134 +f 3134 3132 3135 +f 3135 3132 3136 +f 3135 3136 3137 +f 3137 3136 3138 +f 3137 3138 3139 +f 3139 3138 3140 +f 3139 3140 3141 +f 3141 3140 3142 +f 3141 3142 3143 +f 3143 3142 3144 +f 3143 3144 3145 +f 3145 3144 3146 +f 3145 3146 3147 +f 3147 3146 3148 +f 3147 3148 3149 +f 3149 3148 3150 +f 3149 3150 3151 +f 3151 3150 3152 +f 3151 3152 3153 +f 3153 3152 3154 +f 3153 3154 3155 +f 3155 3154 3156 +f 3155 3156 3157 +f 3157 3156 3158 +f 3157 3158 3159 +f 3159 3158 3160 +f 3159 3160 3161 +f 3161 3160 3162 +f 3161 3162 3163 +f 3163 3162 3164 +f 3163 3164 3165 +f 3165 3164 3166 +f 3165 3166 3167 +f 3167 3166 3168 +f 3167 3168 3169 +f 3169 3168 3170 +f 3169 3170 3171 +f 3171 3170 3172 +f 3171 3172 3173 +f 3173 3172 3174 +f 3173 3174 3175 +f 3175 3174 3176 +f 3175 3176 3177 +f 3177 3176 3178 +f 3177 3178 3179 +f 3179 3178 3180 +f 3179 3180 3181 +f 3179 3181 3182 +f 3182 3181 3183 +f 3182 3183 3184 +f 3184 3183 3185 +f 3184 3185 3186 +f 3186 3185 3187 +f 3186 3187 3188 +f 3188 3187 3189 +f 3188 3189 3190 +f 3190 3189 3191 +f 3190 3191 3192 +f 3192 3191 3193 +f 3192 3193 3194 +f 3194 3193 3195 +f 3194 3195 3196 +f 3196 3195 3197 +f 3196 3197 3198 +f 3198 3197 3199 +f 3198 3199 3200 +f 3200 3199 3201 +f 3200 3201 3202 +f 3202 3201 3203 +f 3202 3203 3204 +f 3204 3203 3205 +f 3204 3205 3206 +f 3206 3205 3207 +f 3206 3207 3208 +f 3208 3207 3209 +f 3208 3209 3210 +f 3210 3209 3211 +f 3210 3211 3212 +f 3212 3211 3213 +f 3212 3213 3214 +f 3214 3213 3215 +f 3214 3215 3216 +f 3216 3215 3217 +f 3216 3217 3218 +f 3218 3217 3219 +f 3219 3217 3215 +f 3219 3215 3220 +f 3220 3215 3221 +f 3220 3221 3222 +f 3222 3221 3223 +f 3222 3223 3224 +f 3224 3223 3225 +f 3225 3223 3226 +f 3225 3226 3227 +f 1894 3228 1895 +f 1895 3228 3229 +f 1895 3229 3052 +f 3052 3229 3230 +f 3052 3230 3054 +f 3054 3230 3231 +f 3054 3231 3056 +f 3056 3231 3232 +f 3056 3232 3058 +f 3058 3232 3233 +f 3058 3233 3060 +f 3060 3233 3234 +f 3060 3234 3062 +f 3062 3234 3235 +f 3062 3235 3064 +f 3064 3235 3236 +f 3064 3236 3066 +f 3066 3236 3237 +f 3066 3237 3068 +f 3068 3237 3238 +f 3068 3238 3070 +f 3070 3238 3239 +f 3070 3239 3072 +f 3072 3239 3240 +f 3072 3240 3074 +f 3074 3240 3241 +f 3074 3241 3242 +f 3242 3241 3243 +f 3242 3243 3244 +f 3244 3243 3245 +f 3244 3245 3246 +f 3246 3245 3247 +f 3246 3247 3248 +f 3248 3247 3249 +f 3248 3249 3250 +f 3250 3249 3251 +f 3250 3251 3252 +f 3252 3251 3253 +f 3252 3253 3254 +f 3254 3253 3255 +f 3254 3255 3256 +f 3256 3255 3257 +f 3256 3257 3258 +f 3258 3257 3259 +f 3258 3259 3260 +f 3260 3259 3261 +f 3260 3261 3262 +f 3262 3261 3263 +f 3262 3263 3264 +f 3264 3263 3265 +f 3264 3265 3266 +f 3266 3265 3267 +f 3266 3267 3268 +f 3268 3267 3269 +f 3268 3269 3270 +f 3270 3269 3271 +f 3270 3271 3272 +f 3272 3271 3273 +f 3272 3273 3274 +f 3274 3273 3275 +f 3274 3275 3154 +f 3154 3275 3156 +f 1894 1891 3228 +f 3228 1891 1896 +f 3228 1896 3229 +f 3229 1896 1890 +f 3229 1890 1881 +f 3229 1881 3276 +f 3276 1881 1880 +f 3276 1880 3277 +f 3277 1880 1879 +f 3277 1879 3278 +f 3278 1879 3279 +f 3279 1879 3280 +f 3280 1879 3281 +f 3281 1879 3282 +f 3282 1879 3283 +f 3283 1879 1878 +f 3283 1878 3284 +f 3284 1878 3285 +f 3285 1878 1877 +f 3285 1877 3286 +f 3286 1877 1875 +f 3286 1875 3287 +f 3287 1875 3288 +f 3288 1875 3289 +f 3289 1875 3290 +f 3290 1875 1866 +f 3290 1866 3291 +f 3291 1866 3292 +f 3292 1866 3293 +f 3293 1866 1865 +f 3293 1865 3294 +f 3294 1865 3295 +f 3294 3295 3296 +f 3296 3295 3297 +f 3296 3297 3298 +f 3298 3297 3299 +f 3298 3299 3300 +f 3300 3299 3301 +f 3300 3301 3302 +f 3302 3301 3303 +f 3302 3303 3304 +f 3304 3303 3305 +f 3304 3305 3306 +f 3306 3305 3307 +f 3306 3307 3308 +f 3308 3307 3309 +f 3308 3309 3310 +f 3310 3309 3311 +f 3310 3311 3312 +f 3312 3311 3313 +f 3312 3313 3314 +f 3314 3313 3315 +f 3314 3315 3316 +f 3316 3315 3317 +f 3316 3317 3318 +f 3318 3317 3319 +f 3318 3319 157 +f 157 3319 155 +f 155 3319 3320 +f 155 3320 170 +f 170 3320 183 +f 183 3320 184 +f 184 3320 3321 +f 184 3321 185 +f 185 3321 186 +f 186 3321 187 +f 187 3321 3322 +f 187 3322 3323 +f 3323 3322 3324 +f 3323 3324 3325 +f 3325 3324 3326 +f 3325 3326 3327 +f 3327 3326 3328 +f 3327 3328 3329 +f 3329 3328 3330 +f 3329 3330 3331 +f 3331 3330 3332 +f 3331 3332 3333 +f 3333 3332 3334 +f 3333 3334 3335 +f 3335 3334 3336 +f 3335 3336 3337 +f 3337 3336 3338 +f 3337 3338 3339 +f 3339 3338 3340 +f 3339 3340 3341 +f 3341 3340 3342 +f 3341 3342 3343 +f 3343 3342 3344 +f 3343 3344 3345 +f 3345 3344 3346 +f 3345 3346 3347 +f 3347 3346 3348 +f 3347 3348 3349 +f 3349 3348 3350 +f 3349 3350 3351 +f 3351 3350 3352 +f 3351 3352 3353 +f 3353 3352 3354 +f 3353 3354 3355 +f 3355 3354 3356 +f 3355 3356 3357 +f 3357 3356 3358 +f 3357 3358 3359 +f 3359 3358 3360 +f 3359 3360 3361 +f 3361 3360 3362 +f 3361 3362 3363 +f 3363 3362 3364 +f 3363 3364 3365 +f 3365 3364 3366 +f 3365 3366 3367 +f 3367 3366 3368 +f 3367 3368 3369 +f 3369 3368 3370 +f 3369 3370 3371 +f 3371 3370 3372 +f 3371 3372 3373 +f 3373 3372 3374 +f 3373 3374 3375 +f 3375 3374 3376 +f 3375 3376 3377 +f 3377 3376 3378 +f 3377 3378 3379 +f 3379 3378 3380 +f 3379 3380 3381 +f 3381 3380 3382 +f 3381 3382 3383 +f 3383 3382 147 +f 3383 147 146 +f 1865 1874 3295 +f 3295 1874 3384 +f 3295 3384 3297 +f 3297 3384 3385 +f 3297 3385 3299 +f 3299 3385 3386 +f 3299 3386 3387 +f 3387 3386 3388 +f 3387 3388 3389 +f 3389 3388 3390 +f 3389 3390 3391 +f 3391 3390 3392 +f 3391 3392 3393 +f 3393 3392 3394 +f 3393 3394 3395 +f 3395 3394 3396 +f 3395 3396 3397 +f 3397 3396 3398 +f 3397 3398 3399 +f 3399 3398 3400 +f 3399 3400 3401 +f 3401 3400 3402 +f 3401 3402 3403 +f 3403 3402 3404 +f 3403 3404 3320 +f 3320 3404 3321 +f 3384 1874 3405 +f 3405 1874 1873 +f 3405 1873 1872 +f 1872 1871 3405 +f 3405 1871 1870 +f 3405 1870 1869 +f 1869 1868 3405 +f 3405 1868 1867 +f 3405 1867 3406 +f 3406 1867 1862 +f 3406 1862 3045 +f 187 3323 188 +f 188 3323 3407 +f 188 3407 3408 +f 3408 3407 3409 +f 3408 3409 189 +f 189 3409 180 +f 180 3409 3410 +f 180 3410 182 +f 182 3410 181 +f 181 3410 3411 +f 181 3411 179 +f 179 3411 3412 +f 179 3412 178 +f 178 3412 3413 +f 178 3413 3414 +f 3414 3413 176 +f 3414 176 177 +f 157 159 3318 +f 3318 159 3415 +f 3318 3415 3316 +f 3316 3415 3416 +f 3316 3416 3314 +f 3314 3416 3417 +f 3314 3417 3312 +f 3312 3417 3418 +f 3312 3418 3310 +f 3310 3418 3419 +f 3310 3419 3308 +f 3308 3419 3420 +f 3308 3420 3306 +f 3306 3420 3421 +f 3306 3421 3304 +f 3304 3421 3422 +f 3304 3422 3302 +f 3302 3422 3423 +f 3302 3423 3300 +f 3300 3423 3424 +f 3300 3424 3425 +f 159 161 3415 +f 3415 161 3426 +f 3415 3426 3416 +f 3416 3426 3427 +f 3416 3427 3428 +f 3428 3427 3429 +f 3428 3429 3430 +f 3430 3429 3431 +f 3430 3431 3432 +f 3432 3431 3433 +f 3432 3433 3434 +f 3434 3433 3435 +f 3434 3435 3436 +f 3436 3435 3437 +f 3436 3437 3438 +f 3438 3437 3439 +f 3438 3439 3440 +f 3440 3439 3441 +f 3440 3441 3442 +f 3442 3441 3443 +f 3442 3443 3444 +f 3444 3443 3445 +f 3444 3445 3446 +f 3446 3445 3447 +f 3446 3447 3448 +f 3448 3447 3449 +f 3449 3447 3450 +f 3449 3450 3451 +f 3451 3450 3452 +f 3451 3452 3453 +f 3453 3452 3454 +f 3454 3452 3455 +f 3454 3455 3456 +f 3456 3455 3457 +f 3456 3457 3458 +f 3458 3457 3459 +f 3458 3459 3460 +f 3460 3459 3461 +f 3460 3461 3462 +f 161 259 3426 +f 3426 259 3463 +f 3426 3463 3464 +f 255 3465 259 +f 259 3465 3466 +f 259 3466 3467 +f 3467 3466 3468 +f 3468 3466 3469 +f 3469 3466 3465 +f 252 3470 255 +f 255 3470 3471 +f 255 3471 3465 +f 3465 3471 3472 +f 3465 3472 3470 +f 3470 3472 3471 +f 208 3473 252 +f 252 3473 3474 +f 252 3474 3475 +f 3473 208 3476 +f 3476 208 210 +f 3476 210 3477 +f 3477 210 3478 +f 3477 3478 3479 +f 3479 3478 212 +f 3479 212 3480 +f 3480 212 3481 +f 3480 3481 3482 +f 3482 3481 3483 +f 3482 3483 3484 +f 3484 3483 3485 +f 3484 3485 3486 +f 3486 3485 3487 +f 3486 3487 3488 +f 3488 3487 3489 +f 3488 3489 3490 +f 3490 3489 3491 +f 3490 3491 3492 +f 3492 3491 3493 +f 3492 3493 3494 +f 3494 3493 3495 +f 3494 3495 3496 +f 3496 3495 3497 +f 3496 3497 3498 +f 3498 3497 3499 +f 3498 3499 3500 +f 3500 3499 3170 +f 3500 3170 3168 +f 210 212 3478 +f 212 214 3481 +f 3481 214 216 +f 3481 216 217 +f 3481 217 3483 +f 3483 217 219 +f 3483 219 220 +f 220 222 3483 +f 3483 222 3485 +f 222 223 3485 +f 3485 223 3501 +f 3485 3501 3502 +f 3502 3501 226 +f 3502 226 3503 +f 3503 226 248 +f 3503 248 3504 +f 3504 248 251 +f 3504 251 3505 +f 3505 251 250 +f 3505 250 249 +f 223 224 3501 +f 3501 224 225 +f 3501 225 226 +f 247 3506 249 +f 249 3506 3507 +f 249 3507 3508 +f 3508 3507 3509 +f 3508 3509 3510 +f 3510 3509 3511 +f 3510 3511 3512 +f 3512 3511 3513 +f 3512 3513 3514 +f 3514 3513 3515 +f 3514 3515 3516 +f 3516 3515 3517 +f 3516 3517 3518 +f 3518 3517 3519 +f 3518 3519 3195 +f 3195 3519 3197 +f 246 3520 247 +f 247 3520 3506 +f 3506 245 3507 +f 3507 245 3509 +f 3520 246 3506 +f 3506 246 245 +f 245 244 3509 +f 3509 244 3521 +f 3509 3521 3522 +f 3522 3521 3523 +f 3522 3523 3524 +f 3524 3523 3525 +f 3524 3525 3526 +f 3526 3525 3527 +f 3526 3527 3528 +f 3528 3527 3529 +f 3528 3529 3530 +f 3530 3529 3531 +f 3530 3531 3532 +f 3532 3531 3533 +f 3532 3533 3534 +f 3534 3533 3535 +f 3534 3535 3536 +f 3536 3535 3537 +f 3536 3537 3538 +f 3521 244 3539 +f 3539 244 243 +f 3539 243 3540 +f 242 3540 243 +f 241 3541 242 +f 242 3541 3521 +f 242 3521 3539 +f 240 3542 241 +f 241 3542 3543 +f 241 3543 3544 +f 3544 3543 3542 +f 3544 3542 3545 +f 3545 3542 240 +f 3545 240 3546 +f 3546 240 3547 +f 3546 3547 3548 +f 3548 3547 3549 +f 3548 3549 3550 +f 3550 3549 3551 +f 3550 3551 3552 +f 3552 3551 3553 +f 3552 3553 3554 +f 3554 3553 3555 +f 3555 3553 3556 +f 3556 3553 3557 +f 3557 3553 3558 +f 3558 3553 3559 +f 3558 3559 3560 +f 3560 3559 3561 +f 3561 3559 3562 +f 3561 3562 3563 +f 3563 3562 3564 +f 3563 3564 3565 +f 3565 3564 3566 +f 3565 3566 3567 +f 3567 3566 3568 +f 3567 3568 3569 +f 3569 3568 3570 +f 3569 3570 3571 +f 3571 3570 3572 +f 3571 3572 198 +f 198 3572 168 +f 168 3572 3570 +f 168 3570 3568 +f 239 3573 240 +f 240 3573 3574 +f 3574 3573 239 +f 3574 239 3547 +f 3547 239 3575 +f 3547 3575 3549 +f 3549 3575 3576 +f 3549 3576 3551 +f 3551 3576 3577 +f 3551 3577 3553 +f 3553 3577 3559 +f 201 3578 239 +f 239 3578 3579 +f 3579 3578 3580 +f 3579 3580 3581 +f 3581 3580 201 +f 3581 201 3582 +f 3582 201 3583 +f 3582 3583 169 +f 169 3583 201 +f 168 3584 169 +f 169 3584 3585 +f 3585 3584 168 +f 3585 168 3586 +f 3586 168 3568 +f 3586 3568 3566 +f 193 3587 198 +f 198 3587 3569 +f 198 3569 3571 +f 3587 193 3588 +f 3588 193 191 +f 3588 191 3589 +f 3589 191 3590 +f 3589 3590 190 +f 190 3590 191 +f 190 176 3589 +f 3589 176 3413 +f 3589 3413 3591 +f 3591 3413 3592 +f 3591 3592 3593 +f 3593 3592 3594 +f 3593 3594 3595 +f 3595 3594 3596 +f 3595 3596 3597 +f 3597 3596 3598 +f 3597 3598 3599 +f 3599 3598 3600 +f 3599 3600 3601 +f 3601 3600 3602 +f 3601 3602 3603 +f 3603 3602 3604 +f 3603 3604 3605 +f 3605 3604 3606 +f 3605 3606 3607 +f 3607 3606 3608 +f 3607 3608 3609 +f 3609 3608 3610 +f 3609 3610 3611 +f 3611 3610 3612 +f 3611 3612 3613 +f 3613 3612 3614 +f 3613 3614 3615 +f 3615 3614 3616 +f 3615 3616 3617 +f 3617 3616 3618 +f 3617 3618 3619 +f 3619 3618 3620 +f 3619 3620 3621 +f 3621 3620 3622 +f 3621 3622 3623 +f 3623 3622 3624 +f 3623 3624 3625 +f 3625 3624 3626 +f 3626 3624 3627 +f 3626 3627 3628 +f 3628 3627 3629 +f 3628 3629 3630 +f 3630 3629 3631 +f 3630 3631 3632 +f 3632 3631 3633 +f 3632 3633 3634 +f 3634 3633 3635 +f 3634 3635 3636 +f 3636 3635 3637 +f 3636 3637 3638 +f 3638 3637 3639 +f 3638 3639 3640 +f 3640 3639 3641 +f 3640 3641 3642 +f 3642 3641 3643 +f 3642 3643 3644 +f 3644 3643 3645 +f 3644 3645 3646 +f 3646 3645 3647 +f 3646 3647 3648 +f 3648 3647 3649 +f 3648 3649 3650 +f 3650 3649 3651 +f 3650 3651 3652 +f 3652 3651 3653 +f 3652 3653 3654 +f 3654 3653 3655 +f 3654 3655 3656 +f 3656 3655 3657 +f 3656 3657 3658 +f 3658 3657 3659 +f 3658 3659 3660 +f 3660 3659 3661 +f 3660 3661 3662 +f 3662 3661 3663 +f 3662 3663 3664 +f 3664 3663 3665 +f 3664 3665 3666 +f 3666 3665 3667 +f 3666 3667 3668 +f 3668 3667 3669 +f 3668 3669 3670 +f 3670 3669 3671 +f 3670 3671 3672 +f 3672 3671 3673 +f 3672 3673 3674 +f 3674 3673 3371 +f 3674 3371 3373 +f 177 178 3414 +f 189 188 3408 +f 3675 3676 3677 +f 3677 3676 3678 +f 3677 3678 3679 +f 3679 3678 3680 +f 3679 3680 3681 +f 3681 3680 3682 +f 3681 3682 3683 +f 3683 3682 3684 +f 3684 3682 3685 +f 3684 3685 3686 +f 3686 3685 3687 +f 3687 3685 3688 +f 3687 3688 3689 +f 3689 3688 3690 +f 3689 3690 3691 +f 3691 3690 3692 +f 3691 3692 3693 +f 3693 3692 3694 +f 3693 3694 3695 +f 3695 3694 3696 +f 3695 3696 3697 +f 3697 3696 3698 +f 3697 3698 3699 +f 3699 3698 3700 +f 3699 3700 3701 +f 3701 3700 3702 +f 3701 3702 3703 +f 3703 3702 3704 +f 3703 3704 3705 +f 3705 3704 3706 +f 3705 3706 3707 +f 3707 3706 3708 +f 3707 3708 3709 +f 3709 3708 3710 +f 3709 3710 3711 +f 3711 3710 3611 +f 3711 3611 3613 +f 3225 3227 3675 +f 3675 3227 3712 +f 3675 3712 3676 +f 3676 3712 3678 +f 3222 3713 3220 +f 3220 3713 3219 +f 3216 3218 3714 +f 3714 3218 3715 +f 3714 3715 3716 +f 3714 3716 3717 +f 3717 3716 3718 +f 3717 3718 3719 +f 3719 3718 3720 +f 3719 3720 3721 +f 3721 3720 3722 +f 3721 3722 3723 +f 3723 3722 3724 +f 3723 3724 3725 +f 3723 3725 3726 +f 3726 3725 3727 +f 3726 3727 3728 +f 3728 3727 3729 +f 3728 3729 3730 +f 3730 3729 3731 +f 3730 3731 3732 +f 3732 3731 3733 +f 3732 3733 3734 +f 3735 3736 3734 +f 3734 3736 3737 +f 3734 3737 3732 +f 3732 3737 3738 +f 3732 3738 3730 +f 3730 3738 3739 +f 3730 3739 3728 +f 3728 3739 3740 +f 3728 3740 3726 +f 3726 3740 3741 +f 3726 3741 3723 +f 3723 3741 3742 +f 3723 3742 3721 +f 3721 3742 3743 +f 3721 3743 3719 +f 3719 3743 3744 +f 3719 3744 3717 +f 3717 3744 3216 +f 3717 3216 3714 +f 3745 3746 3735 +f 3735 3746 3747 +f 3735 3747 3736 +f 3736 3747 3748 +f 3736 3748 3737 +f 3737 3748 3749 +f 3737 3749 3738 +f 3738 3749 3750 +f 3738 3750 3739 +f 3739 3750 3751 +f 3739 3751 3740 +f 3740 3751 3752 +f 3740 3752 3741 +f 3741 3752 3753 +f 3741 3753 3742 +f 3742 3753 3754 +f 3742 3754 3743 +f 3743 3754 3755 +f 3743 3755 3744 +f 3744 3755 3214 +f 3744 3214 3216 +f 3745 3756 3746 +f 3746 3756 3757 +f 3746 3757 3758 +f 3758 3757 3759 +f 3758 3759 3760 +f 3760 3759 3761 +f 3760 3761 3762 +f 3762 3761 3763 +f 3762 3763 3764 +f 3764 3763 3765 +f 3764 3765 3766 +f 3766 3765 3767 +f 3766 3767 3768 +f 3768 3767 3769 +f 3768 3769 3770 +f 3770 3769 3771 +f 3770 3771 3772 +f 3772 3771 3196 +f 3772 3196 3198 +f 3757 3756 3773 +f 3773 3756 3774 +f 3773 3774 3775 +f 3776 3777 3775 +f 3775 3777 3778 +f 3775 3778 3773 +f 3773 3778 3779 +f 3773 3779 3780 +f 3781 3782 3776 +f 3776 3782 3783 +f 3776 3783 3777 +f 3782 3781 3784 +f 3784 3781 3785 +f 3784 3785 3786 +f 3786 3785 3787 +f 3786 3787 3788 +f 3788 3787 3789 +f 3788 3789 3790 +f 3785 3789 3787 +f 3790 3791 3788 +f 3788 3791 3792 +f 3788 3792 3793 +f 3793 3792 3794 +f 3793 3794 3795 +f 3796 3797 3795 +f 3795 3797 3798 +f 3795 3798 3793 +f 3796 3799 3797 +f 3797 3799 3800 +f 3797 3800 3801 +f 3801 3800 3802 +f 3801 3802 3803 +f 3803 3802 3804 +f 3803 3804 3805 +f 3806 3807 3805 +f 3805 3807 3808 +f 3805 3808 3809 +f 3809 3808 3810 +f 3809 3810 3811 +f 3811 3810 3812 +f 3811 3812 3813 +f 3813 3812 3814 +f 3813 3814 3815 +f 3815 3814 3816 +f 3815 3816 3817 +f 3817 3816 3818 +f 3817 3818 3819 +f 3819 3818 3820 +f 3819 3820 3821 +f 3807 3806 3822 +f 3822 3806 3823 +f 3822 3823 3824 +f 3824 3823 3825 +f 3824 3825 3826 +f 3826 3825 3827 +f 3826 3827 3828 +f 3828 3827 3829 +f 3828 3829 3830 +f 3830 3829 3831 +f 3831 3829 3832 +f 3831 3832 3833 +f 3833 3832 3834 +f 3833 3834 3835 +f 3835 3834 3836 +f 3835 3836 3837 +f 3837 3836 3838 +f 3837 3838 3839 +f 3839 3838 3840 +f 3839 3840 3841 +f 3841 3840 3842 +f 3841 3842 3843 +f 3843 3842 3844 +f 3843 3844 3845 +f 3845 3844 3846 +f 3845 3846 3847 +f 3847 3846 3848 +f 3847 3848 3849 +f 3849 3848 3850 +f 3849 3850 3851 +f 3851 3850 3852 +f 3851 3852 3853 +f 3853 3852 3854 +f 3853 3854 3855 +f 3855 3854 3856 +f 3855 3856 3857 +f 3857 3856 3858 +f 3857 3858 3859 +f 3859 3858 3860 +f 3859 3860 3861 +f 3861 3860 3862 +f 3861 3862 3863 +f 3863 3862 3864 +f 3863 3864 3865 +f 3865 3864 3866 +f 3865 3866 3867 +f 3867 3866 3868 +f 3867 3868 3869 +f 3869 3868 3870 +f 3869 3870 3871 +f 3871 3870 3872 +f 3871 3872 3873 +f 3873 3872 3874 +f 3873 3874 3875 +f 3875 3874 3701 +f 3875 3701 3703 +f 3823 3876 3825 +f 3825 3876 3877 +f 3825 3877 3827 +f 3827 3877 3878 +f 3827 3878 3829 +f 3829 3878 3832 +f 3876 3879 3877 +f 3877 3879 3878 +f 3880 3881 3879 +f 3879 3881 3882 +f 3879 3882 3878 +f 3878 3882 3832 +f 3881 3880 3883 +f 3883 3880 3884 +f 3883 3884 3840 +f 3840 3884 3842 +f 3884 3844 3842 +f 3846 3885 3848 +f 3848 3885 3850 +f 3885 3886 3850 +f 3850 3886 3852 +f 3852 3886 3887 +f 3887 3886 3888 +f 3887 3888 3889 +f 3889 3888 3890 +f 3889 3890 3891 +f 3891 3890 3892 +f 3891 3892 3893 +f 3893 3892 3894 +f 3893 3894 3895 +f 3890 3894 3892 +f 3896 3897 3895 +f 3895 3897 3898 +f 3895 3898 3893 +f 3893 3898 3899 +f 3893 3899 3891 +f 3891 3899 3858 +f 3891 3858 3856 +f 3900 3901 3896 +f 3896 3901 3902 +f 3896 3902 3897 +f 3897 3902 3898 +f 3900 3903 3901 +f 3901 3903 3689 +f 3901 3689 3691 +f 3903 3904 3689 +f 3689 3904 3905 +f 3689 3905 3906 +f 3906 3907 3689 +f 3689 3907 3687 +f 3681 3677 3679 +f 3908 3909 3910 +f 3910 3909 3911 +f 3910 3911 3912 +f 3912 3911 3913 +f 3913 3911 3914 +f 3913 3914 3915 +f 3915 3914 3916 +f 3916 3914 3917 +f 3916 3917 3918 +f 3918 3917 3919 +f 3918 3919 3920 +f 3920 3919 3921 +f 3920 3921 3922 +f 3922 3921 3923 +f 3923 3921 3924 +f 3923 3924 3925 +f 3925 3924 3926 +f 3925 3926 3927 +f 3927 3926 3928 +f 3927 3928 3929 +f 3929 3928 3930 +f 3930 3928 3931 +f 3930 3931 3932 +f 3932 3931 3933 +f 3932 3933 3934 +f 3934 3933 3935 +f 3934 3935 3936 +f 3936 3935 3937 +f 3936 3937 3938 +f 3939 3940 3908 +f 3908 3940 3941 +f 3908 3941 3909 +f 3909 3941 3942 +f 3909 3942 3943 +f 3943 3942 3944 +f 3943 3944 3945 +f 3945 3944 3946 +f 3945 3946 3947 +f 3947 3946 3948 +f 3947 3948 3949 +f 3939 3950 3940 +f 3940 3950 3951 +f 3940 3951 3952 +f 3952 3953 3940 +f 3940 3953 3798 +f 3940 3798 3797 +f 3784 3783 3782 +f 3773 3780 3954 +f 3954 3780 3955 +f 3954 3955 3956 +f 3956 3957 3954 +f 3954 3957 3958 +f 3954 3958 3959 +f 3959 3958 3960 +f 3959 3960 3961 +f 3961 3962 3959 +f 3959 3962 3963 +f 3959 3963 3964 +f 3964 3963 3965 +f 3964 3965 3966 +f 3966 3965 3967 +f 3966 3967 3968 +f 3968 3967 3969 +f 3968 3969 3970 +f 3970 3969 3971 +f 3970 3971 3972 +f 3972 3971 3973 +f 3972 3973 3974 +f 3974 3973 3975 +f 3974 3975 3976 +f 3976 3975 3977 +f 3976 3977 3978 +f 3978 3977 3979 +f 3978 3979 3190 +f 3190 3979 3188 +f 3963 3962 3980 +f 3980 3962 3981 +f 3980 3981 3982 +f 3982 3983 3980 +f 3980 3983 3984 +f 3980 3984 3985 +f 3985 3984 3986 +f 3985 3986 3987 +f 3987 3986 3988 +f 3987 3988 3989 +f 3989 3988 3990 +f 3989 3990 3991 +f 3991 3990 3992 +f 3991 3992 3993 +f 3993 3992 3994 +f 3993 3994 3995 +f 3995 3994 3996 +f 3995 3996 3997 +f 3997 3996 3998 +f 3997 3998 3999 +f 3999 3998 4000 +f 3999 4000 4001 +f 4001 4000 4002 +f 4001 4002 3186 +f 3186 4002 3184 +f 3983 4003 3984 +f 3984 4003 3986 +f 3986 4003 4004 +f 4004 4003 4005 +f 4004 4005 4006 +f 4006 4005 4007 +f 4007 4005 3934 +f 4007 3934 3938 +f 3938 3934 3936 +f 4005 4008 3934 +f 3934 4008 4009 +f 3934 4009 3932 +f 3932 4009 4010 +f 4010 4009 4008 +f 3927 3929 4011 +f 4011 3929 3925 +f 4011 3925 3927 +f 4012 4013 4014 +f 4014 4013 3694 +f 4014 3694 3692 +f 4013 4012 4015 +f 4015 4012 4016 +f 4015 4016 4017 +f 4015 4017 4018 +f 4018 4017 4019 +f 4018 4019 4020 +f 4020 4021 4018 +f 4018 4021 4022 +f 4018 4022 4023 +f 4023 4022 4024 +f 4023 4024 4025 +f 4025 4024 4026 +f 4025 4026 4027 +f 4027 4026 4028 +f 4027 4028 4029 +f 4029 4028 4030 +f 4029 4030 4031 +f 4031 4030 4032 +f 4031 4032 4033 +f 4033 4032 4034 +f 4033 4034 4035 +f 4035 4034 4036 +f 4036 4034 4037 +f 4036 4037 4038 +f 4038 4037 4039 +f 4038 4039 4040 +f 4040 4039 4041 +f 4040 4041 4042 +f 4042 4041 4043 +f 4042 4043 3536 +f 3536 4043 4044 +f 3536 4044 3534 +f 3534 4044 4045 +f 3534 4045 3532 +f 3532 4045 4046 +f 3532 4046 3530 +f 3530 4046 4047 +f 3530 4047 3528 +f 3528 4047 4048 +f 3528 4048 3526 +f 3526 4048 4049 +f 3526 4049 3524 +f 3524 4049 4050 +f 3524 4050 3522 +f 3522 4050 3511 +f 3522 3511 3509 +f 4030 4028 4051 +f 4051 4028 4032 +f 4051 4032 4030 +f 4039 4052 4041 +f 4041 4052 4053 +f 4041 4053 4043 +f 4054 4055 4043 +f 4043 4055 4056 +f 4043 4056 4044 +f 4044 4056 4057 +f 4044 4057 4045 +f 4045 4057 4058 +f 4045 4058 4046 +f 4046 4058 4059 +f 4046 4059 4047 +f 4047 4059 4060 +f 4047 4060 4048 +f 4048 4060 4061 +f 4048 4061 4049 +f 4049 4061 4062 +f 4049 4062 4050 +f 4050 4062 3513 +f 4050 3513 3511 +f 4055 4054 4063 +f 4063 4054 4064 +f 4063 4064 4065 +f 4065 4066 4063 +f 4063 4066 4067 +f 4063 4067 4055 +f 4055 4067 4068 +f 4055 4068 4069 +f 4069 4068 4070 +f 4069 4070 4071 +f 4071 4070 4072 +f 4071 4072 4073 +f 4073 4072 4074 +f 4073 4074 4075 +f 4075 4074 4076 +f 4075 4076 4077 +f 4077 4076 4078 +f 4077 4078 4079 +f 4079 4078 3517 +f 4079 3517 3515 +f 4067 4066 4080 +f 4080 4066 4081 +f 4080 4081 4082 +f 4082 4083 4080 +f 4080 4083 4084 +f 4080 4084 4085 +f 4085 4084 3221 +f 4085 3221 3213 +f 3213 3221 3215 +f 4083 4086 4084 +f 4084 4086 4087 +f 4084 4087 4088 +f 4088 4089 4084 +f 4084 4089 3223 +f 4084 3223 3221 +f 4089 4090 3223 +f 3223 4090 3226 +f 3682 3680 4091 +f 4091 3680 3685 +f 4091 3685 3682 +f 3690 4092 3692 +f 3692 4092 4093 +f 3692 4093 4094 +f 4094 4095 3692 +f 3692 4095 4096 +f 3692 4096 4014 +f 4097 4098 4099 +f 4099 4098 4100 +f 4099 4100 4101 +f 4101 4100 4102 +f 4101 4102 4103 +f 4103 4102 4104 +f 4104 4102 4105 +f 4105 4102 4106 +f 4105 4106 4107 +f 4107 4106 4108 +f 4107 4108 4109 +f 4109 4108 4110 +f 4109 4110 4111 +f 4111 4110 4112 +f 4111 4112 4113 +f 4113 4112 4114 +f 4113 4114 4115 +f 4115 4114 4116 +f 4115 4116 4117 +f 4117 4116 4118 +f 4117 4118 3996 +f 3996 4118 3998 +f 4097 4119 4098 +f 4098 4119 4120 +f 4098 4120 4121 +f 4121 4120 4122 +f 4121 4122 4123 +f 4123 4122 4124 +f 4123 4124 4125 +f 4125 4124 4126 +f 4125 4126 58 +f 58 4126 4127 +f 58 4127 70 +f 70 4127 4126 +f 70 4126 4128 +f 4128 4126 4129 +f 4128 4129 4130 +f 4130 4129 4131 +f 4131 4129 4132 +f 4131 4132 4133 +f 4133 4132 4134 +f 4133 4134 4135 +f 4135 4134 4136 +f 4135 4136 4137 +f 4137 4136 4138 +f 4137 4138 4139 +f 4139 4138 4140 +f 4139 4140 4141 +f 4141 4140 4142 +f 4141 4142 4143 +f 4143 4142 4144 +f 4143 4144 4145 +f 4145 4144 4146 +f 4145 4146 4147 +f 4147 4146 4148 +f 4147 4148 3947 +f 3947 4148 3945 +f 4120 4119 4149 +f 4149 4119 4150 +f 4149 4150 4151 +f 4151 4152 4149 +f 4149 4152 4153 +f 4149 4153 4154 +f 4154 4155 4149 +f 4149 4155 4156 +f 4149 4156 4138 +f 4138 4156 4140 +f 4155 4157 4156 +f 4156 4157 4158 +f 4156 4158 4140 +f 4140 4158 4142 +f 4159 4160 4157 +f 4157 4160 4161 +f 4157 4161 4158 +f 4158 4161 4142 +f 4160 4159 4162 +f 4162 4159 4163 +f 4162 4163 4164 +f 4164 4165 4162 +f 4162 4165 4166 +f 4162 4166 4167 +f 4167 4166 4146 +f 4167 4146 4144 +f 4165 4168 4166 +f 4166 4168 4169 +f 4166 4169 4170 +f 4171 3914 4170 +f 4170 3914 3911 +f 4170 3911 4172 +f 4172 3911 3943 +f 4172 3943 3945 +f 4171 3919 3914 +f 3914 3919 3917 +f 3919 3926 3921 +f 3921 3926 3924 +f 4004 4006 4173 +f 4173 4006 4174 +f 4173 4174 4175 +f 4175 4174 4176 +f 4175 4176 4177 +f 4177 4176 4178 +f 4177 4178 4111 +f 4111 4178 4109 +f 4174 4179 4176 +f 4176 4179 4180 +f 4176 4180 4178 +f 4178 4180 4181 +f 4178 4181 4109 +f 4109 4181 4107 +f 4181 4182 4107 +f 4107 4182 4183 +f 4107 4183 4184 +f 4184 4185 4107 +f 4107 4185 4186 +f 4107 4186 4105 +f 4187 4188 4189 +f 4189 4188 4190 +f 4189 4190 4191 +f 4191 4190 4192 +f 4191 4192 4193 +f 4193 4192 4194 +f 4193 4194 4195 +f 4195 4194 4196 +f 4195 4196 4197 +f 4197 4196 4198 +f 4198 4196 4199 +f 4199 4196 4200 +f 4199 4200 4201 +f 4201 4200 4202 +f 4202 4200 4203 +f 4203 4200 4204 +f 4204 4200 4205 +f 4205 4200 4018 +f 4205 4018 4023 +f 4187 4206 4188 +f 4188 4206 4207 +f 4188 4207 4208 +f 4208 4209 4188 +f 4188 4209 4210 +f 4188 4210 4211 +f 4211 4210 4212 +f 4211 4212 4213 +f 4213 4212 3565 +f 4213 3565 3567 +f 4210 4214 4212 +f 4212 4214 4215 +f 4212 4215 3563 +f 3563 4215 3561 +f 3552 3554 4216 +f 4216 3554 4217 +f 4216 4217 4218 +f 4218 4219 4216 +f 4216 4219 4220 +f 4216 4220 4221 +f 4221 4220 4222 +f 4221 4222 4223 +f 4223 4222 4224 +f 4223 4224 3535 +f 3535 4224 4225 +f 3535 4225 3537 +f 4219 4222 4220 +f 3538 4226 3536 +f 3536 4226 4042 +f 4226 4040 4042 +f 4031 4227 4035 +f 4035 4227 4228 +f 4035 4228 4033 +f 4033 4228 4031 +f 4205 4023 4029 +f 4029 4023 4025 +f 4029 4025 4027 +f 4195 4191 4193 +f 4229 4230 4231 +f 4231 4230 4232 +f 4231 4232 4233 +f 4233 4232 4234 +f 4233 4234 4235 +f 4235 4234 4236 +f 4236 4234 4237 +f 4236 4237 4238 +f 4236 4238 4239 +f 4239 4238 4240 +f 4239 4240 4241 +f 4241 4240 4242 +f 4241 4242 4243 +f 4243 4242 4244 +f 4244 4242 4245 +f 4244 4245 4246 +f 4240 4247 4242 +f 4242 4247 4245 +f 4244 4246 4248 +f 4248 4246 4249 +f 4248 4249 4250 +f 4250 4249 4251 +f 4250 4251 4252 +f 4252 4251 4253 +f 4252 4253 4254 +f 4249 4253 4251 +f 4255 4256 4254 +f 4254 4256 4257 +f 4254 4257 4258 +f 4258 4257 4259 +f 4259 4257 4255 +f 4259 4255 4260 +f 4261 4262 4260 +f 4260 4262 4263 +f 4260 4263 4259 +f 4262 4261 4264 +f 4264 4261 4265 +f 4264 4265 4266 +f 4264 4266 4267 +f 4267 4266 4268 +f 4267 4268 4269 +f 4269 4268 4270 +f 4269 4270 4271 +f 4271 4272 4269 +f 4269 4272 4273 +f 4269 4273 4274 +f 4269 4274 4275 +f 4275 4274 4276 +f 4275 4276 4277 +f 4277 4278 4275 +f 4275 4278 4279 +f 4275 4279 4280 +f 4280 4279 4281 +f 4280 4281 4282 +f 4282 4283 4280 +f 4280 4283 4284 +f 4280 4284 301 +f 301 4284 303 +f 303 4284 4285 +f 303 4285 4286 +f 4286 4285 4287 +f 4286 4287 4288 +f 4283 4289 4284 +f 4284 4289 4285 +f 4288 4290 4286 +f 4286 4290 4291 +f 4286 4291 4292 +f 4286 4292 4231 +f 4231 4292 4293 +f 4231 4293 4294 +f 4294 4229 4231 +f 4295 4296 4297 +f 4297 4296 4298 +f 4297 4298 4299 +f 4299 4298 4300 +f 4299 4300 4301 +f 4301 4300 4302 +f 4301 4302 4303 +f 4303 4302 4304 +f 4303 4304 4305 +f 4305 4304 4306 +f 4305 4306 4307 +f 4296 4295 4308 +f 4308 4295 4309 +f 4308 4309 4310 +f 4310 4309 4311 +f 4311 4309 4312 +f 4311 4312 4313 +f 4313 4312 4314 +f 4313 4314 4315 +f 4315 4314 4316 +f 4315 4316 4317 +f 4317 4316 4318 +f 4317 4318 4319 +f 4319 4320 4317 +f 4317 4320 4321 +f 4317 4321 4322 +f 4322 4323 4317 +f 4317 4323 4324 +f 4317 4324 4325 +f 4325 4324 435 +f 4325 435 434 +f 4323 4326 4324 +f 4324 4326 4327 +f 4324 4327 4328 +f 4328 4329 4324 +f 4324 4329 4330 +f 4324 4330 4331 +f 4331 4330 4332 +f 4331 4332 4333 +f 4331 4333 4334 +f 4334 4333 4335 +f 4334 4335 4336 +f 4336 4335 4337 +f 4336 4337 4338 +f 4338 4339 4336 +f 4336 4339 4340 +f 4336 4340 503 +f 503 4340 510 +f 510 4340 4341 +f 510 4341 4342 +f 4342 4341 4343 +f 4342 4343 4344 +f 4344 4343 4345 +f 4344 4345 4346 +f 4346 4345 4347 +f 4346 4347 4348 +f 4348 4347 4349 +f 4348 4349 4350 +f 4350 4349 4351 +f 4350 4351 4352 +f 4352 4351 4353 +f 4352 4353 4354 +f 4354 4353 4355 +f 4354 4355 4356 +f 4356 4355 4357 +f 4356 4357 4358 +f 4358 4357 4359 +f 4358 4359 4360 +f 4360 4359 4361 +f 4360 4361 4362 +f 4362 4361 4363 +f 4362 4363 4364 +f 4364 4363 4365 +f 4364 4365 4366 +f 4366 4365 4367 +f 4366 4367 4368 +f 4368 4367 4369 +f 4368 4369 4370 +f 4370 4369 4371 +f 4370 4371 4372 +f 4372 4371 4373 +f 4372 4373 4374 +f 4374 4373 4375 +f 4374 4375 4376 +f 4376 4375 4377 +f 4376 4377 4378 +f 4378 4377 4379 +f 4378 4379 4380 +f 4380 4379 4381 +f 4380 4381 4382 +f 4382 4381 4383 +f 4382 4383 4384 +f 4384 4383 4385 +f 4384 4385 4386 +f 4386 4385 4387 +f 4386 4387 4388 +f 4388 4387 4389 +f 4388 4389 4390 +f 4390 4389 4391 +f 4390 4391 4392 +f 4392 4391 4393 +f 4392 4393 4394 +f 4394 4393 4395 +f 4394 4395 4396 +f 4396 4395 4397 +f 4396 4397 4398 +f 4398 4397 4399 +f 4399 4397 4400 +f 4400 4397 4401 +f 4400 4401 4402 +f 4402 4401 4403 +f 4403 4401 4404 +f 4404 4401 4405 +f 4405 4401 4406 +f 4406 4401 4407 +f 4406 4407 4408 +f 4408 4407 4409 +f 4408 4409 4410 +f 4410 4409 4411 +f 4410 4411 4412 +f 4412 4411 4413 +f 4412 4413 4414 +f 4339 4415 4340 +f 4340 4415 4416 +f 4340 4416 4417 +f 4417 4418 4340 +f 4340 4418 4419 +f 4340 4419 4341 +f 4341 4419 4420 +f 4341 4420 4343 +f 4343 4420 4421 +f 4343 4421 4345 +f 4345 4421 4422 +f 4345 4422 4347 +f 4347 4422 4423 +f 4347 4423 4349 +f 4349 4423 4424 +f 4349 4424 4351 +f 4351 4424 4425 +f 4351 4425 4353 +f 4353 4425 4426 +f 4353 4426 4355 +f 4355 4426 4427 +f 4355 4427 4357 +f 4357 4427 4428 +f 4357 4428 4359 +f 4359 4428 4429 +f 4359 4429 4361 +f 4361 4429 4430 +f 4361 4430 4363 +f 4363 4430 4431 +f 4363 4431 4365 +f 4365 4431 4432 +f 4365 4432 4367 +f 4367 4432 4433 +f 4367 4433 4369 +f 4369 4433 4434 +f 4369 4434 4371 +f 4371 4434 4435 +f 4371 4435 4373 +f 4373 4435 4436 +f 4373 4436 4375 +f 4375 4436 4437 +f 4375 4437 4377 +f 4377 4437 4438 +f 4377 4438 4379 +f 4379 4438 4439 +f 4379 4439 4381 +f 4381 4439 4440 +f 4381 4440 4383 +f 4383 4440 4441 +f 4383 4441 4385 +f 4385 4441 4442 +f 4385 4442 4387 +f 4387 4442 4443 +f 4387 4443 4389 +f 4389 4443 4444 +f 4389 4444 4391 +f 4391 4444 4445 +f 4391 4445 4393 +f 4393 4445 4446 +f 4393 4446 4395 +f 4395 4446 4447 +f 4395 4447 4397 +f 4397 4447 4448 +f 4397 4448 4449 +f 4449 4448 4450 +f 4450 4448 4451 +f 4451 4448 4452 +f 4451 4452 4453 +f 4453 4452 4454 +f 4454 4452 4455 +f 4455 4452 4456 +f 4456 4452 4457 +f 4457 4452 4458 +f 4457 4458 4459 +f 4459 4458 4460 +f 4459 4460 4461 +f 4461 4460 4462 +f 4461 4462 4463 +f 4463 4462 4464 +f 4463 4464 4465 +f 4419 4466 4420 +f 4420 4466 4467 +f 4420 4467 4468 +f 4468 4469 4420 +f 4420 4469 4470 +f 4420 4470 4421 +f 4421 4470 4471 +f 4421 4471 4422 +f 4422 4471 4472 +f 4422 4472 4423 +f 4423 4472 4473 +f 4423 4473 4424 +f 4424 4473 4474 +f 4424 4474 4425 +f 4425 4474 4475 +f 4425 4475 4426 +f 4426 4475 4476 +f 4426 4476 4427 +f 4427 4476 4477 +f 4427 4477 4428 +f 4428 4477 4478 +f 4428 4478 4429 +f 4429 4478 4479 +f 4429 4479 4430 +f 4430 4479 4480 +f 4430 4480 4431 +f 4431 4480 4481 +f 4431 4481 4432 +f 4432 4481 4482 +f 4432 4482 4433 +f 4433 4482 4483 +f 4433 4483 4434 +f 4434 4483 4484 +f 4434 4484 4435 +f 4435 4484 4485 +f 4435 4485 4436 +f 4436 4485 4486 +f 4436 4486 4437 +f 4437 4486 4487 +f 4437 4487 4438 +f 4438 4487 4488 +f 4438 4488 4439 +f 4439 4488 4489 +f 4439 4489 4440 +f 4440 4489 4490 +f 4440 4490 4441 +f 4441 4490 4491 +f 4441 4491 4442 +f 4442 4491 4492 +f 4442 4492 4443 +f 4443 4492 4493 +f 4443 4493 4444 +f 4444 4493 4494 +f 4444 4494 4445 +f 4445 4494 4495 +f 4445 4495 4446 +f 4446 4495 4496 +f 4446 4496 4447 +f 4447 4496 4497 +f 4447 4497 4448 +f 4448 4497 4498 +f 4448 4498 4499 +f 4499 4498 4500 +f 4500 4498 4501 +f 4501 4498 4502 +f 4501 4502 4503 +f 4503 4502 4504 +f 4504 4502 4505 +f 4505 4502 4506 +f 4506 4502 4507 +f 4507 4502 4508 +f 4507 4508 4509 +f 4509 4508 4510 +f 4509 4510 4511 +f 4511 4510 4512 +f 4511 4512 4513 +f 4513 4512 4514 +f 4513 4514 4515 +f 4469 4516 4470 +f 4470 4516 4517 +f 4470 4517 4518 +f 4517 4516 4519 +f 4519 4516 4520 +f 4519 4520 4521 +f 4521 4520 4522 +f 4521 4522 4523 +f 4523 4522 4524 +f 4523 4524 4521 +f 4521 4524 4307 +f 4521 4307 4525 +f 4524 4526 4307 +f 4307 4526 4305 +f 4301 4297 4299 +f 4527 4528 4233 +f 4233 4528 4529 +f 4233 4529 4530 +f 4233 4530 4531 +f 4531 4530 4532 +f 4531 4532 4533 +f 4533 4532 4534 +f 4533 4534 4535 +f 4535 4536 4533 +f 4533 4536 4537 +f 4533 4537 4538 +f 4538 4537 4539 +f 4539 4537 4540 +f 4539 4540 4541 +f 4541 4540 4542 +f 4541 4542 4543 +f 4543 4542 4544 +f 4543 4544 4545 +f 4545 4544 4546 +f 4545 4546 4547 +f 4547 4546 4548 +f 4547 4548 4549 +f 4549 4548 4550 +f 4550 4548 4551 +f 4550 4551 4552 +f 4552 4551 4553 +f 4552 4553 4554 +f 4554 4553 4555 +f 4554 4555 4556 +f 4556 4555 4557 +f 4556 4557 4558 +f 4558 4557 4559 +f 4558 4559 4560 +f 4560 4559 4561 +f 4560 4561 4562 +f 4562 4561 4563 +f 4562 4563 4564 +f 4564 4563 4565 +f 4564 4565 4566 +f 4566 4565 4567 +f 4566 4567 4568 +f 4568 4567 4569 +f 4568 4569 4570 +f 4570 4569 4571 +f 4570 4571 4572 +f 4572 4571 4573 +f 4572 4573 4574 +f 4574 4573 4575 +f 4574 4575 4576 +f 4576 4575 4577 +f 4576 4577 4578 +f 4578 4577 4579 +f 4578 4579 4580 +f 4580 4579 4581 +f 4580 4581 4582 +f 4582 4581 4583 +f 4582 4583 4584 +f 4584 4583 4585 +f 4584 4585 4586 +f 4586 4585 4587 +f 4586 4587 4588 +f 4588 4587 4589 +f 4588 4589 4590 +f 4590 4589 4591 +f 4590 4591 4592 +f 4592 4591 4593 +f 4592 4593 4350 +f 4350 4593 4348 +f 4544 4548 4546 +f 4548 4594 4551 +f 4551 4594 4595 +f 4551 4595 4596 +f 4596 4597 4551 +f 4551 4597 4598 +f 4551 4598 4599 +f 4599 4600 4551 +f 4551 4600 4601 +f 4551 4601 4602 +f 4551 4602 4267 +f 4267 4602 4603 +f 4267 4603 4604 +f 4604 4605 4267 +f 4267 4605 4264 +f 4258 4252 4254 +f 4235 4527 4233 +f 4606 4607 4608 +f 4608 4607 4609 +f 4608 4609 4610 +f 4610 4609 4611 +f 4610 4611 4612 +f 4612 4611 4613 +f 4612 4613 4614 +f 4614 4613 4615 +f 4614 4615 4616 +f 4607 4606 4617 +f 4617 4606 4618 +f 4617 4618 4619 +f 4619 4618 4620 +f 4619 4620 4621 +f 4621 4620 4622 +f 4621 4622 4623 +f 4623 4622 4624 +f 4623 4624 4625 +f 4625 4624 4626 +f 4625 4626 4627 +f 4627 4626 4628 +f 4627 4628 4629 +f 4629 4628 4630 +f 4630 4628 4631 +f 4631 4628 4632 +f 4632 4628 4633 +f 4633 4628 4634 +f 4633 4634 4635 +f 4635 4634 4636 +f 4635 4636 4637 +f 4637 4636 4638 +f 4637 4638 4639 +f 4624 4640 4626 +f 4626 4640 4641 +f 4626 4641 4642 +f 4642 4643 4626 +f 4626 4643 4644 +f 4626 4644 4645 +f 4626 4645 4317 +f 4317 4645 4646 +f 4317 4646 4315 +f 4310 4296 4308 +f 4300 4304 4302 +f 4525 4647 4521 +f 4521 4647 4519 +f 4470 4518 4471 +f 4471 4518 4648 +f 4471 4648 4649 +f 4649 4650 4471 +f 4471 4650 4651 +f 4471 4651 4652 +f 4652 4651 4653 +f 4652 4653 4654 +f 4654 4653 4655 +f 4654 4655 4656 +f 4657 4658 4656 +f 4656 4658 4659 +f 4656 4659 4660 +f 4658 4657 4661 +f 4661 4657 4662 +f 4661 4662 4614 +f 4612 4608 4610 +f 4663 4664 4665 +f 4665 4664 4666 +f 4665 4666 4667 +f 4667 4666 4668 +f 4667 4668 4669 +f 4669 4670 4667 +f 4667 4670 4671 +f 4667 4671 4672 +f 4672 4673 4667 +f 4667 4673 4674 +f 4667 4674 4665 +f 4665 4674 4675 +f 4665 4675 4676 +f 4676 4675 4677 +f 4676 4677 4678 +f 4678 4677 4679 +f 4678 4679 4680 +f 4681 4682 4673 +f 4673 4682 4683 +f 4673 4683 4684 +f 4681 4685 4682 +f 4682 4685 4686 +f 4686 4685 4687 +f 4686 4687 4688 +f 4688 4687 4689 +f 4688 4689 4690 +f 4690 4689 4687 +f 4690 4687 4685 +f 4688 4690 4691 +f 4691 4690 4692 +f 4691 4692 4693 +f 4693 4692 4694 +f 4693 4694 4695 +f 4695 4694 4696 +f 4695 4696 4697 +f 4697 4696 4698 +f 4697 4698 4699 +f 4699 4698 4700 +f 4700 4698 4701 +f 4701 4698 4702 +f 4702 4698 4703 +f 4702 4703 4704 +f 4704 4703 4705 +f 4705 4703 4706 +f 4705 4706 4707 +f 4707 4706 4708 +f 4707 4708 4709 +f 4696 4694 4710 +f 4710 4694 4711 +f 4710 4711 4712 +f 4712 4713 4710 +f 4710 4713 4714 +f 4710 4714 4715 +f 4715 4716 4710 +f 4710 4716 4717 +f 4710 4717 4718 +f 4718 4717 4719 +f 4718 4719 4720 +f 4720 4719 4721 +f 4720 4721 4722 +f 4722 4721 4723 +f 4722 4723 4724 +f 4724 4723 4725 +f 4724 4725 4726 +f 4726 4725 4727 +f 4726 4727 4728 +f 4728 4727 4729 +f 4728 4729 4730 +f 4730 4729 4731 +f 4730 4731 4732 +f 4732 4731 4733 +f 4732 4733 4734 +f 4734 4733 4735 +f 4734 4735 4736 +f 4736 4735 4737 +f 4736 4737 4738 +f 4738 4737 4739 +f 4738 4739 4740 +f 4740 4739 4741 +f 4740 4741 4742 +f 4742 4741 4743 +f 4742 4743 4744 +f 4744 4743 4745 +f 4744 4745 4746 +f 4746 4745 4747 +f 4746 4747 4748 +f 4748 4747 4749 +f 4748 4749 4750 +f 4750 4749 4386 +f 4750 4386 4388 +f 4716 4751 4717 +f 4717 4751 4752 +f 4717 4752 4554 +f 4554 4752 4552 +f 4752 4753 4552 +f 4552 4753 4754 +f 4552 4754 4755 +f 4755 4756 4552 +f 4552 4756 4550 +f 4538 4757 4533 +f 4533 4757 4758 +f 4533 4758 4759 +f 4759 4531 4533 +f 4531 4663 4233 +f 4233 4663 4665 +f 4760 4761 4762 +f 4762 4761 4763 +f 4762 4763 4764 +f 4764 4763 4765 +f 4764 4765 4766 +f 4766 4765 4767 +f 4766 4767 4768 +f 4760 4769 4761 +f 4761 4769 4770 +f 4770 4769 4639 +f 4639 4769 4637 +f 4769 4771 4637 +f 4637 4771 4772 +f 4637 4772 4635 +f 4621 4773 4619 +f 4619 4773 4617 +f 4609 4613 4611 +f 4614 4616 4658 +f 4658 4616 4774 +f 4658 4774 4659 +f 4660 4654 4656 +f 4654 4775 4652 +f 4652 4775 4776 +f 4652 4776 4777 +f 4777 4776 4778 +f 4777 4778 4779 +f 4779 4780 4777 +f 4777 4780 4781 +f 4777 4781 4782 +f 4782 4781 4783 +f 4782 4783 4473 +f 4473 4783 4474 +f 4781 4780 4784 +f 4784 4780 4785 +f 4784 4785 4786 +f 4784 4786 4787 +f 4787 4786 4788 +f 4787 4788 4789 +f 4789 4788 4790 +f 4790 4788 4791 +f 4790 4791 4792 +f 4792 4791 4793 +f 4792 4793 4794 +f 4794 4793 4791 +f 4794 4795 4792 +f 4792 4795 4768 +f 4792 4768 4796 +f 4795 4766 4768 +f 4766 4762 4764 +f 4797 4798 4675 +f 4675 4798 4799 +f 4675 4799 4800 +f 4800 4801 4675 +f 4675 4801 4802 +f 4675 4802 4803 +f 4803 4804 4675 +f 4675 4804 4805 +f 4675 4805 4806 +f 4807 4808 4804 +f 4804 4808 4809 +f 4804 4809 4810 +f 4808 4807 4811 +f 4811 4807 4812 +f 4811 4812 4813 +f 4811 4813 4814 +f 4814 4813 4815 +f 4814 4815 4816 +f 4816 4815 4817 +f 4817 4815 4818 +f 4817 4818 4819 +f 4819 4818 4820 +f 4819 4820 4821 +f 4821 4820 4822 +f 4821 4822 4823 +f 4823 4822 4824 +f 4823 4824 4707 +f 4707 4824 4825 +f 4707 4825 4826 +f 4826 4825 4827 +f 4826 4827 4828 +f 4828 4705 4826 +f 4826 4705 4707 +f 4673 4684 4674 +f 4674 4684 4829 +f 4674 4829 4830 +f 4830 4831 4674 +f 4674 4831 4832 +f 4674 4832 4797 +f 4674 4797 4675 +f 4833 4834 4835 +f 4835 4834 4836 +f 4835 4836 4837 +f 4837 4836 4838 +f 4837 4838 4839 +f 4839 4838 4840 +f 4839 4840 4841 +f 4833 4842 4834 +f 4834 4842 4843 +f 4843 4842 4844 +f 4843 4844 4845 +f 4845 4844 4846 +f 4846 4844 4847 +f 4846 4847 4848 +f 4848 4847 4849 +f 4849 4847 4850 +f 4849 4850 4851 +f 4851 4850 4852 +f 4851 4852 4853 +f 4844 4854 4847 +f 4847 4854 4855 +f 4847 4855 4850 +f 4853 4856 4851 +f 4851 4856 4857 +f 4851 4857 4858 +f 4851 4858 4628 +f 4628 4858 4634 +f 4763 4767 4765 +f 4796 4790 4792 +f 4787 4859 4784 +f 4784 4859 4860 +f 4784 4860 4861 +f 4784 4861 4862 +f 4862 4861 4863 +f 4862 4863 4864 +f 4864 4865 4862 +f 4862 4865 4866 +f 4862 4866 4867 +f 4867 4866 4868 +f 4867 4868 4869 +f 4869 4868 4870 +f 4869 4870 4871 +f 4871 4870 4872 +f 4871 4872 4873 +f 4873 4872 4874 +f 4873 4874 4875 +f 4875 4874 4876 +f 4875 4876 4877 +f 4877 4876 4878 +f 4877 4878 4879 +f 4879 4878 4880 +f 4879 4880 4881 +f 4881 4880 4882 +f 4881 4882 4883 +f 4883 4882 4884 +f 4883 4884 4885 +f 4885 4884 4886 +f 4885 4886 4887 +f 4887 4886 4888 +f 4887 4888 4889 +f 4889 4888 4890 +f 4889 4890 4891 +f 4891 4890 4892 +f 4891 4892 4893 +f 4893 4892 4894 +f 4893 4894 4895 +f 4895 4894 4896 +f 4895 4896 4897 +f 4897 4896 4898 +f 4897 4898 4899 +f 4899 4898 4900 +f 4899 4900 4901 +f 4901 4900 4902 +f 4901 4902 4903 +f 4903 4902 4904 +f 4903 4904 4905 +f 4905 4904 4906 +f 4905 4906 4907 +f 4907 4906 4908 +f 4907 4908 4909 +f 4909 4908 4910 +f 4909 4910 4911 +f 4911 4910 4912 +f 4911 4912 4913 +f 4913 4912 4914 +f 4913 4914 4915 +f 4915 4914 2309 +f 4915 2309 2308 +f 4865 4916 4866 +f 4866 4916 4917 +f 4866 4917 4918 +f 4918 4917 4919 +f 4918 4919 4920 +f 4920 4919 4921 +f 4920 4921 4922 +f 4922 4921 4923 +f 4922 4923 4924 +f 4924 4923 4841 +f 4841 4923 4925 +f 4841 4925 4839 +f 4921 4926 4923 +f 4923 4926 4925 +f 4839 4835 4837 +f 4927 4928 4677 +f 4677 4928 4929 +f 4677 4929 4930 +f 4930 4931 4677 +f 4677 4931 4932 +f 4677 4932 4933 +f 4933 4934 4677 +f 4677 4934 4935 +f 4677 4935 4936 +f 4937 4938 4934 +f 4934 4938 4939 +f 4934 4939 4940 +f 4938 4937 4941 +f 4941 4937 4942 +f 4941 4942 4943 +f 4941 4943 4944 +f 4944 4943 4945 +f 4944 4945 4946 +f 4946 4945 4947 +f 4947 4945 4948 +f 4947 4948 4949 +f 4949 4948 4950 +f 4949 4950 4951 +f 4951 4950 4952 +f 4951 4952 4953 +f 4953 4952 4954 +f 4953 4954 4955 +f 4955 4954 4956 +f 4956 4954 4957 +f 4957 4954 4958 +f 4958 4954 4959 +f 4959 4954 4952 +f 4960 4961 4955 +f 4955 4961 4962 +f 4955 4962 4953 +f 4953 4962 4963 +f 4953 4963 4964 +f 4960 4965 4961 +f 4961 4965 4708 +f 4961 4708 4706 +f 4709 4966 4707 +f 4707 4966 4823 +f 4810 4805 4804 +f 4806 4967 4675 +f 4675 4967 4927 +f 4675 4927 4677 +f 4968 4969 4970 +f 4970 4969 4971 +f 4970 4971 4972 +f 4972 4971 4973 +f 4972 4973 4974 +f 4969 4968 4975 +f 4975 4968 4976 +f 4975 4976 4977 +f 4977 4976 4978 +f 4977 4978 4979 +f 4979 4978 4980 +f 4980 4978 4981 +f 4980 4981 4982 +f 4982 4981 4983 +f 4983 4981 4984 +f 4983 4984 4985 +f 4985 4984 4986 +f 4985 4986 4987 +f 4987 4986 4988 +f 4988 4986 4989 +f 4989 4986 4990 +f 4990 4986 4991 +f 4990 4991 4992 +f 4992 4991 4993 +f 4993 4991 4994 +f 4994 4991 4995 +f 4994 4995 4996 +f 4978 4997 4981 +f 4981 4997 4998 +f 4981 4998 4999 +f 4999 5000 4981 +f 4981 5000 4984 +f 5000 5001 4984 +f 4984 5001 5002 +f 4984 5002 5003 +f 5003 5004 4984 +f 4984 5004 4851 +f 4984 4851 5005 +f 5005 4851 5006 +f 5005 5006 5007 +f 5007 5006 5008 +f 5007 5008 5009 +f 5009 5008 5010 +f 5009 5010 5011 +f 5011 5010 5012 +f 5011 5012 5013 +f 5013 5012 5014 +f 5013 5014 5015 +f 5015 5014 5016 +f 5015 5016 5017 +f 5017 5016 5018 +f 5017 5018 5019 +f 5019 5018 5020 +f 5019 5020 5021 +f 5021 5020 5022 +f 5021 5022 5023 +f 5023 5022 5024 +f 5023 5024 5025 +f 5025 5024 5026 +f 5025 5026 5027 +f 5027 5026 5028 +f 5027 5028 5029 +f 5029 5028 5030 +f 5029 5030 5031 +f 5031 5030 5032 +f 5031 5032 5033 +f 5033 5032 5034 +f 5033 5034 5035 +f 5035 5034 5036 +f 5035 5036 5037 +f 5037 5036 5038 +f 5037 5038 5039 +f 5039 5038 5040 +f 5039 5040 5041 +f 5041 5040 5042 +f 5041 5042 5043 +f 5043 5042 5044 +f 5043 5044 5045 +f 5045 5044 5046 +f 5045 5046 5047 +f 5047 5046 5048 +f 5047 5048 5049 +f 5049 5048 5050 +f 5049 5050 5051 +f 5051 5050 5052 +f 5051 5052 5053 +f 5053 5052 5054 +f 5053 5054 5055 +f 5055 5054 5056 +f 5055 5056 5057 +f 5057 5056 5058 +f 5057 5058 5059 +f 5059 5058 5060 +f 5059 5060 5061 +f 5061 5060 5062 +f 5061 5062 5063 +f 5063 5062 5064 +f 5063 5064 5065 +f 5065 5064 5066 +f 5065 5066 5067 +f 5067 5066 5068 +f 5067 5068 5069 +f 5069 5068 5070 +f 5069 5070 5071 +f 5071 5070 5072 +f 5071 5072 5073 +f 5073 5072 5074 +f 5073 5074 5075 +f 5075 5074 5076 +f 5075 5076 5077 +f 5077 5076 5078 +f 5077 5078 5079 +f 5079 5078 5080 +f 5079 5080 5081 +f 5081 5080 5082 +f 5081 5082 5083 +f 5083 5082 5084 +f 5084 5082 5085 +f 5085 5082 5086 +f 5085 5086 5087 +f 5087 5086 5088 +f 5087 5088 5089 +f 5089 5088 5090 +f 5089 5090 5091 +f 5091 5090 5092 +f 5091 5092 5093 +f 5093 5092 5094 +f 5093 5094 5095 +f 5095 5094 5096 +f 5095 5096 5097 +f 5097 5096 5098 +f 5097 5098 5099 +f 5099 5098 5100 +f 5099 5100 5101 +f 5101 5100 5102 +f 5101 5102 5103 +f 5103 5102 5104 +f 5103 5104 5105 +f 5105 5104 5106 +f 5105 5106 5107 +f 5107 5106 5108 +f 5107 5108 5109 +f 5109 5108 5110 +f 5109 5110 5111 +f 5111 5110 5112 +f 5111 5112 5113 +f 5113 5112 5114 +f 5113 5114 5115 +f 5115 5114 5116 +f 5115 5116 5117 +f 5117 5116 5118 +f 5117 5118 5119 +f 5119 5118 5044 +f 5119 5044 5042 +f 5004 4849 4851 +f 4836 4840 4838 +f 4918 5120 4866 +f 4866 5120 5121 +f 4866 5121 5122 +f 4866 5122 5123 +f 5123 5122 5124 +f 5123 5124 5125 +f 5125 5126 5123 +f 5123 5126 5127 +f 5123 5127 5128 +f 5128 5129 5123 +f 5123 5129 5130 +f 5123 5130 5131 +f 5131 5130 5132 +f 5131 5132 5133 +f 5132 5130 5134 +f 5134 5130 5135 +f 5134 5135 5136 +f 5136 5135 5137 +f 5136 5137 4974 +f 4974 5137 5138 +f 4974 5138 4972 +f 5135 5138 5137 +f 4680 5139 4678 +f 4678 5139 5140 +f 4678 5140 5141 +f 5141 5142 4678 +f 4678 5142 5143 +f 4678 5143 5144 +f 5145 5146 5144 +f 5144 5146 5147 +f 5144 5147 5148 +f 5146 5145 5149 +f 5149 5145 5150 +f 5149 5150 5151 +f 5151 5150 5152 +f 5151 5152 5153 +f 5153 5152 5154 +f 5153 5154 5155 +f 5156 5157 5155 +f 5155 5157 5158 +f 5155 5158 5153 +f 5157 5156 5159 +f 5159 5156 5160 +f 5159 5160 5161 +f 5161 5160 5162 +f 5161 5162 5163 +f 5164 5165 5163 +f 5163 5165 5166 +f 5163 5166 5161 +f 5161 5166 5167 +f 5167 5166 5168 +f 5168 5166 5169 +f 5169 5166 5170 +f 5170 5166 5171 +f 5170 5171 5172 +f 5172 5171 5173 +f 5172 5173 5174 +f 5174 5173 5175 +f 5174 5175 5176 +f 5176 5175 5177 +f 5176 5177 5178 +f 5178 5177 5179 +f 5178 5179 5180 +f 5180 5179 5181 +f 5180 5181 5182 +f 5182 5181 5183 +f 5182 5183 5184 +f 5184 5183 5185 +f 5184 5185 5186 +f 5186 5185 5187 +f 5186 5187 5188 +f 5188 5187 5189 +f 5188 5189 5190 +f 5190 5189 5191 +f 5190 5191 5192 +f 5192 5191 5193 +f 5192 5193 5194 +f 5194 5193 4392 +f 5194 4392 4394 +f 5164 5195 5165 +f 5165 5195 5196 +f 5165 5196 5166 +f 5166 5196 5197 +f 5166 5197 5171 +f 5171 5197 5198 +f 5171 5198 5199 +f 5199 5198 5200 +f 5199 5200 4728 +f 4728 5200 4726 +f 5197 5201 5198 +f 5198 5201 5202 +f 5198 5202 4963 +f 4964 5203 4953 +f 4953 5203 5204 +f 4953 5204 4951 +f 4940 4935 4934 +f 4936 4679 4677 +f 5205 5206 5207 +f 5207 5206 5208 +f 5207 5208 5209 +f 5209 5208 5210 +f 5209 5210 5211 +f 5206 5205 5212 +f 5212 5205 5213 +f 5212 5213 5214 +f 5214 5213 5215 +f 5214 5215 5216 +f 5216 5215 4994 +f 5216 4994 4996 +f 4969 4973 4971 +f 5133 5217 5131 +f 5131 5217 5218 +f 5131 5218 5219 +f 5131 5219 5220 +f 5220 5219 5221 +f 5220 5221 5222 +f 5222 5223 5220 +f 5220 5223 5224 +f 5220 5224 5225 +f 5225 5226 5220 +f 5220 5226 5227 +f 5220 5227 5228 +f 5228 5227 5229 +f 5228 5229 5230 +f 5230 5229 5231 +f 5230 5231 5232 +f 5232 5231 5233 +f 5232 5233 5234 +f 5234 5233 5235 +f 5234 5235 5236 +f 5236 5235 5237 +f 5236 5237 5238 +f 5238 5237 5239 +f 5238 5239 5240 +f 5240 5239 5241 +f 5240 5241 5242 +f 5242 5241 5243 +f 5242 5243 5244 +f 5244 5243 5245 +f 5244 5245 5246 +f 5246 5245 5247 +f 5246 5247 5248 +f 5248 5247 5249 +f 5248 5249 5250 +f 5250 5249 5251 +f 5250 5251 5252 +f 5252 5251 5253 +f 5252 5253 5254 +f 5254 5253 5255 +f 5254 5255 5256 +f 5256 5255 5257 +f 5256 5257 5258 +f 5258 5257 5259 +f 5258 5259 5260 +f 5260 5259 5261 +f 5260 5261 5262 +f 5262 5261 5263 +f 5262 5263 5264 +f 5264 5263 5265 +f 5264 5265 5266 +f 5266 5265 5267 +f 5266 5267 5268 +f 5268 5267 5269 +f 5268 5269 5270 +f 5270 5269 5271 +f 5270 5271 5272 +f 5272 5271 5273 +f 5272 5273 5274 +f 5274 5273 1825 +f 5274 1825 1824 +f 5227 5226 5275 +f 5275 5226 5276 +f 5275 5276 5277 +f 5277 5276 5278 +f 5277 5278 5279 +f 5279 5278 5280 +f 5279 5280 5211 +f 5211 5280 5281 +f 5211 5281 5209 +f 5278 5281 5280 +f 5282 5283 5284 +f 5284 5283 5285 +f 5284 5285 5286 +f 5286 5287 5284 +f 5284 5287 5288 +f 5284 5288 5289 +f 5290 5291 5289 +f 5289 5291 5292 +f 5289 5292 5293 +f 5291 5290 5294 +f 5294 5290 5295 +f 5294 5295 5296 +f 5296 5295 5297 +f 5296 5297 5298 +f 5298 5297 5299 +f 5298 5299 5300 +f 5301 5302 5300 +f 5300 5302 5303 +f 5300 5303 5298 +f 5302 5301 5304 +f 5304 5301 5305 +f 5304 5305 5306 +f 5306 5305 5307 +f 5306 5307 5308 +f 5308 5307 5309 +f 5308 5309 5310 +f 5310 5309 5311 +f 5310 5311 5312 +f 5312 5313 5310 +f 5310 5313 5308 +f 5313 5314 5308 +f 5308 5314 5315 +f 5308 5315 5316 +f 5316 5315 5317 +f 5316 5317 5318 +f 5318 5317 5319 +f 5319 5317 5320 +f 5320 5317 5321 +f 5320 5321 5322 +f 5322 5321 5323 +f 5323 5321 5324 +f 5324 5321 5325 +f 5325 5321 5326 +f 5326 5321 5327 +f 5326 5327 5328 +f 5328 5327 5329 +f 5328 5329 5330 +f 5330 5329 5331 +f 5330 5331 5332 +f 5332 5331 5333 +f 5332 5333 5334 +f 5315 5314 5172 +f 5172 5314 5335 +f 5172 5335 5336 +f 5336 5170 5172 +f 5148 5337 5144 +f 5144 5337 5338 +f 5144 5338 4678 +f 4678 5338 5284 +f 4678 5284 5339 +f 5339 5284 5340 +f 5339 5340 5341 +f 5341 5340 5342 +f 5341 5342 5343 +f 5343 5342 5344 +f 5343 5344 5345 +f 5338 5282 5284 +f 5346 5347 5348 +f 5348 5347 5349 +f 5348 5349 5350 +f 5350 5349 5351 +f 5350 5351 5352 +f 5347 5346 5353 +f 5353 5346 5354 +f 5353 5354 5355 +f 5355 5354 5356 +f 5355 5356 5357 +f 5357 5356 5358 +f 5357 5358 5359 +f 5359 5358 5360 +f 5360 5358 5361 +f 5360 5361 5362 +f 5362 5361 5363 +f 5363 5361 5364 +f 5363 5364 5365 +f 5365 5364 5366 +f 5366 5364 5367 +f 5366 5367 5368 +f 5368 5367 5369 +f 5369 5367 5370 +f 5369 5370 5371 +f 5371 5370 5372 +f 5371 5372 5373 +f 5358 5374 5361 +f 5361 5374 5375 +f 5361 5375 5376 +f 5376 5377 5361 +f 5361 5377 5364 +f 5377 5378 5364 +f 5364 5378 5379 +f 5364 5379 5380 +f 5364 5380 4986 +f 4986 5380 5381 +f 4986 5381 4991 +f 4991 5381 4995 +f 5206 5210 5208 +f 5275 5382 5227 +f 5227 5382 5383 +f 5227 5383 5384 +f 5384 5385 5227 +f 5227 5385 5386 +f 5227 5386 5229 +f 5229 5386 5387 +f 5229 5387 5231 +f 5231 5387 5388 +f 5231 5388 5233 +f 5233 5388 5389 +f 5233 5389 5235 +f 5235 5389 5390 +f 5235 5390 5237 +f 5237 5390 5391 +f 5237 5391 5239 +f 5239 5391 5392 +f 5239 5392 5241 +f 5241 5392 5393 +f 5241 5393 5243 +f 5243 5393 5394 +f 5243 5394 5245 +f 5245 5394 5395 +f 5245 5395 5247 +f 5247 5395 5396 +f 5247 5396 5249 +f 5249 5396 5397 +f 5249 5397 5251 +f 5251 5397 5398 +f 5251 5398 5253 +f 5253 5398 5399 +f 5253 5399 5255 +f 5255 5399 5400 +f 5255 5400 5257 +f 5257 5400 5401 +f 5257 5401 5259 +f 5259 5401 5402 +f 5259 5402 5261 +f 5261 5402 5403 +f 5261 5403 5263 +f 5263 5403 5404 +f 5263 5404 5265 +f 5265 5404 5405 +f 5265 5405 5267 +f 5267 5405 5406 +f 5267 5406 5269 +f 5269 5406 5407 +f 5269 5407 5271 +f 5271 5407 5408 +f 5271 5408 5273 +f 5273 5408 5409 +f 5273 5409 1826 +f 1826 5409 5410 +f 1826 5410 1827 +f 1827 5410 1828 +f 1828 5410 1829 +f 1829 5410 1830 +f 1830 5410 1831 +f 1831 5410 5411 +f 1831 5411 1832 +f 1832 5411 1782 +f 1782 5411 5412 +f 1782 5412 1783 +f 1783 5412 1785 +f 1785 5412 5413 +f 1785 5413 5414 +f 5385 5415 5386 +f 5386 5415 5416 +f 5386 5416 5417 +f 5417 5418 5386 +f 5386 5418 5419 +f 5386 5419 5420 +f 5421 5422 5420 +f 5420 5422 5387 +f 5420 5387 5386 +f 5422 5421 5423 +f 5423 5421 5424 +f 5423 5424 5425 +f 5425 5424 5426 +f 5425 5426 5352 +f 5352 5426 5427 +f 5352 5427 5350 +f 5424 5427 5426 +f 5428 5340 5429 +f 5429 5340 5284 +f 5429 5284 5430 +f 5430 5284 5431 +f 5431 5284 5289 +f 5431 5289 5432 +f 5432 5289 5293 +f 5340 5428 5433 +f 5433 5428 5434 +f 5433 5434 5435 +f 5435 5434 5436 +f 5435 5436 5437 +f 5437 5436 5438 +f 5437 5438 5439 +f 5439 5438 5440 +f 5439 5440 5441 +f 5441 5440 5442 +f 5441 5442 5443 +f 5443 5442 5444 +f 5443 5444 5445 +f 5445 5444 5446 +f 5445 5446 5334 +f 5334 5446 5447 +f 5334 5447 5332 +f 5316 5448 5308 +f 5308 5448 5449 +f 5308 5449 5450 +f 5450 5306 5308 +f 5451 5452 5453 +f 5453 5452 5454 +f 5453 5454 5455 +f 5455 5454 5456 +f 5455 5456 5457 +f 5452 5451 5458 +f 5458 5451 5459 +f 5458 5459 5460 +f 5460 5459 5461 +f 5460 5461 5462 +f 5462 5461 5463 +f 5462 5463 5464 +f 5464 5463 5465 +f 5464 5465 5373 +f 5373 5465 5371 +f 5347 5351 5349 +f 5422 5466 5387 +f 5387 5466 5467 +f 5387 5467 5468 +f 5468 5469 5387 +f 5387 5469 5470 +f 5387 5470 5388 +f 5388 5470 5471 +f 5388 5471 5389 +f 5389 5471 5472 +f 5389 5472 5390 +f 5390 5472 5473 +f 5390 5473 5391 +f 5391 5473 5474 +f 5391 5474 5392 +f 5392 5474 5475 +f 5392 5475 5393 +f 5393 5475 5476 +f 5393 5476 5394 +f 5394 5476 5477 +f 5394 5477 5395 +f 5395 5477 5478 +f 5395 5478 5396 +f 5396 5478 5479 +f 5396 5479 5397 +f 5397 5479 5480 +f 5397 5480 5398 +f 5398 5480 5481 +f 5398 5481 5399 +f 5399 5481 5482 +f 5399 5482 5400 +f 5400 5482 5483 +f 5400 5483 5401 +f 5401 5483 5484 +f 5401 5484 5402 +f 5402 5484 5485 +f 5402 5485 5403 +f 5403 5485 5486 +f 5403 5486 5404 +f 5404 5486 5487 +f 5404 5487 5405 +f 5405 5487 5488 +f 5405 5488 5406 +f 5406 5488 5489 +f 5406 5489 5407 +f 5407 5489 5490 +f 5407 5490 5408 +f 5408 5490 5491 +f 5408 5491 5409 +f 5409 5491 5492 +f 5409 5492 5411 +f 5411 5492 5493 +f 5411 5493 5494 +f 5494 5493 5495 +f 5494 5495 5496 +f 5496 5495 5497 +f 5496 5497 5498 +f 5469 5499 5470 +f 5470 5499 5500 +f 5470 5500 5501 +f 5501 5502 5470 +f 5470 5502 5503 +f 5470 5503 5504 +f 5504 5503 5505 +f 5505 5503 5506 +f 5505 5506 5507 +f 5505 5507 5508 +f 5508 5507 5509 +f 5508 5509 5510 +f 5510 5509 5511 +f 5510 5511 5457 +f 5457 5511 5512 +f 5457 5512 5455 +f 5509 5512 5511 +f 5513 5514 5340 +f 5340 5514 5515 +f 5340 5515 5516 +f 5516 5517 5340 +f 5340 5517 5518 +f 5340 5518 5519 +f 5519 5518 5520 +f 5520 5518 5521 +f 5521 5518 5522 +f 5522 5518 5523 +f 5523 5518 5524 +f 5523 5524 5525 +f 5525 5524 5526 +f 5525 5526 5527 +f 5527 5526 5528 +f 5527 5528 5529 +f 5529 5528 5530 +f 5529 5530 5531 +f 5531 5530 5532 +f 5531 5532 5533 +f 5534 5535 5533 +f 5533 5535 5536 +f 5533 5536 5531 +f 5535 5534 5537 +f 5537 5534 5538 +f 5537 5538 5539 +f 5539 5538 5540 +f 5539 5540 5541 +f 5541 5540 5542 +f 5541 5542 5543 +f 5541 5543 5544 +f 5544 5543 5545 +f 5544 5545 5546 +f 5544 5546 5541 +f 5541 5546 5547 +f 5541 5547 5548 +f 5548 5547 5549 +f 5548 5549 5178 +f 5178 5549 5176 +f 5547 5550 5549 +f 5549 5550 5551 +f 5549 5551 5552 +f 5553 5321 5552 +f 5552 5321 5317 +f 5552 5317 5549 +f 5549 5317 5176 +f 5553 5554 5321 +f 5321 5554 5555 +f 5321 5555 5327 +f 5433 5513 5340 +f 5556 5557 5558 +f 5558 5557 5559 +f 5558 5559 5560 +f 5560 5559 5561 +f 5560 5561 5562 +f 5557 5556 5563 +f 5563 5556 5564 +f 5563 5564 5565 +f 5565 5564 5566 +f 5565 5566 5567 +f 5567 5566 5568 +f 5567 5568 5569 +f 5569 5568 5570 +f 5569 5570 5571 +f 5571 5570 5572 +f 5572 5570 5573 +f 5572 5573 5574 +f 5574 5573 5575 +f 5575 5573 5367 +f 5575 5367 5576 +f 5576 5367 5577 +f 5576 5577 5578 +f 5578 5577 5579 +f 5578 5579 5580 +f 5580 5579 5581 +f 5580 5581 5582 +f 5570 5583 5573 +f 5573 5583 5584 +f 5573 5584 5585 +f 5573 5585 5367 +f 5367 5585 5586 +f 5367 5586 5587 +f 5587 5370 5367 +f 5452 5456 5454 +f 5504 5588 5470 +f 5470 5588 5589 +f 5470 5589 5590 +f 5590 5589 5591 +f 5590 5591 5592 +f 5592 5593 5590 +f 5590 5593 5594 +f 5590 5594 5595 +f 5595 5596 5590 +f 5590 5596 5597 +f 5590 5597 5598 +f 5598 5597 5599 +f 5598 5599 5600 +f 5600 5599 5601 +f 5600 5601 5602 +f 5602 5601 5603 +f 5602 5603 5604 +f 5604 5603 5605 +f 5604 5605 5606 +f 5606 5605 5607 +f 5606 5607 5608 +f 5608 5607 5609 +f 5608 5609 5610 +f 5610 5609 5611 +f 5610 5611 5612 +f 5612 5611 5613 +f 5612 5613 5614 +f 5614 5613 5615 +f 5614 5615 5616 +f 5616 5615 5617 +f 5616 5617 5618 +f 5618 5617 5619 +f 5618 5619 5620 +f 5620 5619 5621 +f 5620 5621 5622 +f 5622 5621 5623 +f 5622 5623 5624 +f 5624 5623 5625 +f 5624 5625 5626 +f 5626 5625 5627 +f 5626 5627 5628 +f 5628 5627 5629 +f 5628 5629 5630 +f 5630 5629 5631 +f 5630 5631 5632 +f 5632 5631 5633 +f 5632 5633 5634 +f 5634 5633 5635 +f 5634 5635 5636 +f 5636 5635 5637 +f 5636 5637 5638 +f 5638 5637 5639 +f 5638 5639 5640 +f 5640 5639 5641 +f 5640 5641 5642 +f 5642 5641 5643 +f 5642 5643 5644 +f 5644 5643 5645 +f 5644 5645 5646 +f 5646 5645 5647 +f 5646 5647 5648 +f 5648 5647 5649 +f 5649 5647 5650 +f 5650 5647 5651 +f 5651 5647 5652 +f 5651 5652 5653 +f 5653 5652 5654 +f 5654 5652 5655 +f 5654 5655 5656 +f 5656 5655 5657 +f 5657 5655 5658 +f 5658 5655 5659 +f 5658 5659 5660 +f 5660 5659 5661 +f 5660 5661 5662 +f 5662 5661 5663 +f 5662 5663 5664 +f 5664 5663 5665 +f 5664 5665 5666 +f 5666 5665 5667 +f 5666 5667 5668 +f 5668 5667 5669 +f 5668 5669 5670 +f 5670 5669 5671 +f 5670 5671 5672 +f 5672 5671 5673 +f 5672 5673 5674 +f 5674 5673 5675 +f 5674 5675 5676 +f 5676 5675 5677 +f 5676 5677 5678 +f 5678 5677 5679 +f 5678 5679 5680 +f 5680 5679 5681 +f 5680 5681 5682 +f 5682 5681 5683 +f 5682 5683 5684 +f 5684 5683 5685 +f 5684 5685 5686 +f 5686 5685 5687 +f 5686 5687 3067 +f 3067 5687 3065 +f 5688 5689 5596 +f 5596 5689 5690 +f 5596 5690 5597 +f 5597 5690 5691 +f 5597 5691 5692 +f 5688 5693 5689 +f 5689 5693 5694 +f 5694 5693 5695 +f 5694 5695 5696 +f 5696 5695 5697 +f 5696 5697 5562 +f 5562 5697 5698 +f 5562 5698 5560 +f 5695 5698 5697 +f 5699 5700 5701 +f 5701 5700 5342 +f 5701 5342 5519 +f 5519 5342 5340 +f 5699 5702 5700 +f 5700 5702 5703 +f 5703 5702 5704 +f 5704 5702 5705 +f 5704 5705 5706 +f 5706 5705 5707 +f 5706 5707 5708 +f 5708 5707 5709 +f 5708 5709 5710 +f 5710 5709 5711 +f 5710 5711 5712 +f 5712 5711 5713 +f 5712 5713 5714 +f 5714 5713 5715 +f 5714 5715 5716 +f 5716 5715 5717 +f 5716 5717 5718 +f 5719 5720 5718 +f 5718 5720 5721 +f 5718 5721 5716 +f 5720 5719 5722 +f 5722 5719 5723 +f 5722 5723 5724 +f 5724 5723 5725 +f 5724 5725 5726 +f 5726 5725 5727 +f 5726 5727 5728 +f 5728 5729 5726 +f 5726 5729 5730 +f 5726 5730 5731 +f 5726 5731 5732 +f 5732 5731 5733 +f 5732 5733 5734 +f 5734 5735 5732 +f 5732 5735 5548 +f 5732 5548 5180 +f 5180 5548 5178 +f 5548 5735 5541 +f 5541 5735 5736 +f 5541 5736 5737 +f 5737 5738 5541 +f 5541 5738 5539 +f 5739 5740 5741 +f 5741 5740 5742 +f 5741 5742 5743 +f 5743 5742 5744 +f 5743 5744 5745 +f 5740 5739 5746 +f 5746 5739 5747 +f 5746 5747 5748 +f 5748 5747 5749 +f 5748 5749 5750 +f 5750 5749 5751 +f 5750 5751 5752 +f 5752 5751 5753 +f 5752 5753 5754 +f 5754 5753 5755 +f 5754 5755 5582 +f 5582 5755 5580 +f 5557 5561 5559 +f 5597 5692 5756 +f 5756 5692 5757 +f 5756 5757 5758 +f 5758 5759 5756 +f 5756 5759 5760 +f 5756 5760 5761 +f 5761 5762 5756 +f 5756 5762 5763 +f 5756 5763 5764 +f 5763 5762 5765 +f 5765 5762 5766 +f 5765 5766 5767 +f 5765 5767 5768 +f 5768 5767 5769 +f 5768 5769 5770 +f 5770 5769 5771 +f 5770 5771 5745 +f 5745 5771 5772 +f 5745 5772 5743 +f 5769 5772 5771 +f 5700 5773 5342 +f 5342 5773 5774 +f 5342 5774 5775 +f 5776 5777 5775 +f 5775 5777 5778 +f 5775 5778 5342 +f 5342 5778 5779 +f 5342 5779 5780 +f 5777 5776 5781 +f 5781 5776 5782 +f 5781 5782 5783 +f 5783 5782 5784 +f 5783 5784 5785 +f 5785 5784 5786 +f 5785 5786 5787 +f 5787 5786 5788 +f 5787 5788 5789 +f 5789 5788 5790 +f 5789 5790 5791 +f 5791 5790 5792 +f 5791 5792 5793 +f 5794 5795 5793 +f 5793 5795 5796 +f 5793 5796 5791 +f 5795 5794 5797 +f 5797 5794 5798 +f 5797 5798 5799 +f 5799 5798 5800 +f 5799 5800 5801 +f 5801 5800 5802 +f 5801 5802 5803 +f 5803 5804 5801 +f 5801 5804 5805 +f 5801 5805 5806 +f 5801 5806 5807 +f 5807 5806 5808 +f 5807 5808 5809 +f 5807 5809 5732 +f 5732 5809 5810 +f 5732 5810 5726 +f 5726 5810 5811 +f 5726 5811 5812 +f 5812 5813 5726 +f 5726 5813 5724 +f 5814 5815 5816 +f 5816 5815 5817 +f 5816 5817 5818 +f 5818 5817 5819 +f 5818 5819 5820 +f 5815 5814 5821 +f 5821 5814 5822 +f 5821 5822 5823 +f 5823 5822 5824 +f 5823 5824 5825 +f 5825 5824 5826 +f 5825 5826 5827 +f 5827 5826 5828 +f 5827 5828 5829 +f 5829 5828 5830 +f 5829 5830 5831 +f 5831 5830 5832 +f 5831 5832 5833 +f 5833 5832 5834 +f 5834 5832 5835 +f 5834 5835 5836 +f 5836 5579 5834 +f 5834 5579 5577 +f 5834 5577 5837 +f 5837 5577 5838 +f 5837 5838 5839 +f 5839 5838 5840 +f 5839 5840 5841 +f 5841 5840 5842 +f 5842 5840 5843 +f 5842 5843 5844 +f 5740 5744 5742 +f 5764 5845 5756 +f 5756 5845 5846 +f 5756 5846 5847 +f 5847 5846 5848 +f 5847 5848 5849 +f 5849 5850 5847 +f 5847 5850 5851 +f 5847 5851 5852 +f 5853 5854 5852 +f 5852 5854 5855 +f 5852 5855 5847 +f 5847 5855 5856 +f 5847 5856 5857 +f 5853 5858 5854 +f 5854 5858 5859 +f 5859 5858 5860 +f 5859 5860 5861 +f 5861 5860 5862 +f 5861 5862 5820 +f 5820 5862 5863 +f 5820 5863 5818 +f 5860 5863 5862 +f 5780 5864 5342 +f 5342 5864 5865 +f 5342 5865 5866 +f 5867 5868 5866 +f 5866 5868 5869 +f 5866 5869 5870 +f 5868 5867 5871 +f 5871 5867 5872 +f 5871 5872 5873 +f 5873 5872 5874 +f 5873 5874 5875 +f 5875 5874 5876 +f 5875 5876 5877 +f 5877 5876 5878 +f 5877 5878 5879 +f 5879 5878 5880 +f 5879 5880 5881 +f 5882 5883 5881 +f 5881 5883 5884 +f 5881 5884 5879 +f 5883 5882 5885 +f 5885 5882 5886 +f 5885 5886 5887 +f 5887 5886 5888 +f 5887 5888 5889 +f 5889 5888 5890 +f 5889 5890 5891 +f 5891 5892 5889 +f 5889 5892 5893 +f 5889 5893 5894 +f 5895 5896 5894 +f 5894 5896 5897 +f 5894 5897 5889 +f 5889 5897 5898 +f 5889 5898 5899 +f 5895 5900 5896 +f 5896 5900 5901 +f 5896 5901 5807 +f 5807 5901 5801 +f 5901 5902 5801 +f 5801 5902 5903 +f 5801 5903 5904 +f 5904 5799 5801 +f 5905 5906 5907 +f 5907 5906 5908 +f 5907 5908 5909 +f 5909 5908 5910 +f 5909 5910 5911 +f 5906 5905 5912 +f 5912 5905 5913 +f 5912 5913 5914 +f 5914 5913 5915 +f 5914 5915 5916 +f 5916 5915 5917 +f 5916 5917 5918 +f 5918 5917 5919 +f 5918 5919 5920 +f 5920 5919 5921 +f 5920 5921 5922 +f 5922 5921 5837 +f 5922 5837 5923 +f 5923 5837 5924 +f 5924 5837 5839 +f 5921 5925 5837 +f 5837 5925 5926 +f 5837 5926 5927 +f 5927 5834 5837 +f 5815 5819 5817 +f 5847 5857 5928 +f 5928 5857 5929 +f 5928 5929 5930 +f 5930 5931 5928 +f 5928 5931 5932 +f 5928 5932 5933 +f 5933 5932 5934 +f 5933 5934 5935 +f 5936 5937 5935 +f 5935 5937 5938 +f 5935 5938 5933 +f 5933 5938 5939 +f 5933 5939 5940 +f 5936 5941 5937 +f 5937 5941 5942 +f 5942 5941 5943 +f 5942 5943 5944 +f 5944 5943 5945 +f 5944 5945 5911 +f 5911 5945 5946 +f 5911 5946 5909 +f 5943 5946 5945 +f 5343 5345 5947 +f 5947 5345 5948 +f 5947 5948 5949 +f 5950 5951 5949 +f 5949 5951 5952 +f 5949 5952 5947 +f 5951 5950 5953 +f 5953 5950 5954 +f 5953 5954 5955 +f 5955 5954 5956 +f 5955 5956 5957 +f 5957 5956 5958 +f 5957 5958 5959 +f 5959 5958 5960 +f 5959 5960 5961 +f 5961 5960 5962 +f 5961 5962 5963 +f 5963 5962 5964 +f 5963 5964 5965 +f 5966 5967 5965 +f 5965 5967 5968 +f 5965 5968 5963 +f 5967 5966 5969 +f 5969 5966 5970 +f 5969 5970 5971 +f 5971 5970 5972 +f 5971 5972 5973 +f 5973 5972 5974 +f 5973 5974 5975 +f 5975 5976 5973 +f 5973 5976 5977 +f 5973 5977 5978 +f 5973 5978 5979 +f 5979 5978 5980 +f 5979 5980 5981 +f 5979 5981 5897 +f 5897 5981 5898 +f 5899 5982 5889 +f 5889 5982 5983 +f 5889 5983 5887 +f 5870 5344 5866 +f 5866 5344 5342 +f 5984 5985 5986 +f 5986 5985 5987 +f 5986 5987 5988 +f 5988 5987 5989 +f 5988 5989 5990 +f 5985 5984 5991 +f 5991 5984 5992 +f 5991 5992 5993 +f 5993 5992 5994 +f 5993 5994 5995 +f 5995 5994 5996 +f 5995 5996 5997 +f 5997 5996 5998 +f 5997 5998 5999 +f 5999 5998 6000 +f 5999 6000 5844 +f 5844 6000 5842 +f 5906 5910 5908 +f 5940 6001 5933 +f 5933 6001 6002 +f 5933 6002 6003 +f 6003 6002 6004 +f 6003 6004 6005 +f 6005 6004 6006 +f 6005 6006 6007 +f 6007 6006 6008 +f 6007 6008 6009 +f 6009 6008 6010 +f 6009 6010 6011 +f 6011 6010 6012 +f 6011 6012 6013 +f 6013 6012 6014 +f 6013 6014 6015 +f 6015 6014 6016 +f 6015 6016 6017 +f 6017 6016 6018 +f 6017 6018 6019 +f 6019 6018 6020 +f 6019 6020 6021 +f 6021 6020 6022 +f 6021 6022 6023 +f 6023 6022 6024 +f 6023 6024 6025 +f 6025 6024 6026 +f 6025 6026 6027 +f 6027 6026 6028 +f 6027 6028 6029 +f 6029 6028 6030 +f 6029 6030 6031 +f 6031 6030 6032 +f 6031 6032 6033 +f 6033 6032 6034 +f 6033 6034 6035 +f 6035 6034 6036 +f 6035 6036 6037 +f 6037 6036 6038 +f 6037 6038 6039 +f 6039 6038 6040 +f 6039 6040 6041 +f 6041 6040 6042 +f 6041 6042 6043 +f 6043 6042 5669 +f 6043 5669 5667 +f 6001 6044 6002 +f 6002 6044 6045 +f 6002 6045 6046 +f 6046 6047 6002 +f 6002 6047 6048 +f 6002 6048 6049 +f 6049 6048 6050 +f 6050 6048 6051 +f 6050 6051 6052 +f 6050 6052 6053 +f 6053 6052 6054 +f 6053 6054 6055 +f 6055 6054 6056 +f 6055 6056 5990 +f 5990 6056 6057 +f 5990 6057 5988 +f 6054 6057 6056 +f 5947 6058 5343 +f 5343 6058 6059 +f 5343 6059 6060 +f 5343 6060 6061 +f 6061 6060 6062 +f 6061 6062 6063 +f 6063 6062 6064 +f 6063 6064 6065 +f 6065 6064 6066 +f 6065 6066 6067 +f 6067 6066 6068 +f 6067 6068 6069 +f 6069 6068 6070 +f 6069 6070 6071 +f 6071 6070 6072 +f 6071 6072 6073 +f 6073 6072 6074 +f 6073 6074 6075 +f 6076 6077 6075 +f 6075 6077 6078 +f 6075 6078 6073 +f 6077 6076 6079 +f 6079 6076 6080 +f 6079 6080 6081 +f 6081 6080 6082 +f 6081 6082 6083 +f 6083 6082 6084 +f 6083 6084 6085 +f 6085 6086 6083 +f 6083 6086 6087 +f 6083 6087 6088 +f 6083 6088 6089 +f 6089 6088 6090 +f 6089 6090 6091 +f 6089 6091 5979 +f 5979 6091 6092 +f 5979 6092 5973 +f 5973 6092 6093 +f 5973 6093 6094 +f 6094 6095 5973 +f 5973 6095 5971 +f 6096 6097 6098 +f 6098 6097 6099 +f 6098 6099 6100 +f 6100 6099 6101 +f 6100 6101 6102 +f 6097 6096 6103 +f 6103 6096 6104 +f 6103 6104 6105 +f 6105 6104 6106 +f 6105 6106 6107 +f 6107 6106 6108 +f 6107 6108 6109 +f 6109 6108 6110 +f 6109 6110 6111 +f 6111 6110 6112 +f 6111 6112 6113 +f 6113 6112 6114 +f 6113 6114 6115 +f 6115 6114 6116 +f 6116 6114 6117 +f 6116 6117 5838 +f 5838 6117 6118 +f 5838 6118 5840 +f 5985 5989 5987 +f 6049 6119 6002 +f 6002 6119 6120 +f 6002 6120 6121 +f 6002 6121 6122 +f 6122 6121 6123 +f 6122 6123 6124 +f 6124 6125 6122 +f 6122 6125 6126 +f 6122 6126 6127 +f 6128 6129 6127 +f 6127 6129 6130 +f 6127 6130 6122 +f 6122 6130 6131 +f 6122 6131 6132 +f 6128 6133 6129 +f 6129 6133 6134 +f 6134 6133 6135 +f 6134 6135 6136 +f 6136 6135 6137 +f 6136 6137 6102 +f 6102 6137 6138 +f 6102 6138 6100 +f 6135 6138 6137 +f 6139 6140 5343 +f 5343 6140 6141 +f 5343 6141 6142 +f 6143 6144 6142 +f 6142 6144 6145 +f 6142 6145 6146 +f 6144 6143 6147 +f 6147 6143 6148 +f 6147 6148 6149 +f 6149 6148 6150 +f 6149 6150 6151 +f 6151 6150 6152 +f 6151 6152 6153 +f 6153 6152 6154 +f 6153 6154 6155 +f 6155 6154 6156 +f 6155 6156 6157 +f 6157 6156 6158 +f 6157 6158 6159 +f 6160 6161 6159 +f 6159 6161 6162 +f 6159 6162 6157 +f 6161 6160 6163 +f 6163 6160 6164 +f 6163 6164 6165 +f 6165 6164 6166 +f 6165 6166 6167 +f 6167 6166 6168 +f 6167 6168 6169 +f 6169 6170 6167 +f 6167 6170 6171 +f 6167 6171 6172 +f 6173 6174 6172 +f 6172 6174 6175 +f 6172 6175 6167 +f 6167 6175 6176 +f 6167 6176 6177 +f 6173 6178 6174 +f 6174 6178 6179 +f 6174 6179 6089 +f 6089 6179 6083 +f 6179 6180 6083 +f 6083 6180 6181 +f 6083 6181 6182 +f 6182 6081 6083 +f 6061 6183 5343 +f 5343 6183 6139 +f 6184 6185 6186 +f 6186 6185 6187 +f 6186 6187 6188 +f 6188 6187 6189 +f 6188 6189 6190 +f 6185 6184 6191 +f 6191 6184 6192 +f 6191 6192 6193 +f 6193 6192 6194 +f 6193 6194 6195 +f 6195 6194 6196 +f 6195 6196 6197 +f 6197 6196 6198 +f 6197 6198 6199 +f 6199 6198 6200 +f 6199 6200 6201 +f 6201 6200 6202 +f 6201 6202 6203 +f 6203 6202 5838 +f 6203 5838 6204 +f 6204 5838 6205 +f 6205 5838 6206 +f 6205 6206 6207 +f 6207 6206 6208 +f 6208 6206 6209 +f 6208 6209 6210 +f 6210 6209 6211 +f 6210 6211 6212 +f 6212 6211 6213 +f 6212 6213 6214 +f 6214 6213 6215 +f 6214 6215 6216 +f 6216 6215 6217 +f 6216 6217 6218 +f 6218 6217 6219 +f 6218 6219 6220 +f 6220 6219 6221 +f 6220 6221 6222 +f 6222 6221 6223 +f 6222 6223 6224 +f 6224 6223 6225 +f 6224 6225 6226 +f 6226 6225 6227 +f 6226 6227 6228 +f 6228 6227 6229 +f 6228 6229 6230 +f 6202 6231 5838 +f 5838 6231 6232 +f 5838 6232 6116 +f 6097 6101 6099 +f 6122 6132 6233 +f 6233 6132 6234 +f 6233 6234 6235 +f 6235 6236 6233 +f 6233 6236 6237 +f 6233 6237 6238 +f 6238 6237 6239 +f 6238 6239 6240 +f 6241 6242 6240 +f 6240 6242 6243 +f 6240 6243 6238 +f 6238 6243 6244 +f 6238 6244 6245 +f 6241 6246 6242 +f 6242 6246 6247 +f 6247 6246 6248 +f 6247 6248 6249 +f 6249 6248 6250 +f 6249 6250 6190 +f 6190 6250 6251 +f 6190 6251 6188 +f 6248 6251 6250 +f 6252 6253 6254 +f 6254 6253 5343 +f 6254 5343 6146 +f 6146 5343 6142 +f 6253 6252 6255 +f 6255 6252 6256 +f 6255 6256 6257 +f 6257 6256 6258 +f 6257 6258 6259 +f 6259 6258 6260 +f 6259 6260 6261 +f 6261 6260 6262 +f 6261 6262 6263 +f 6263 6262 6264 +f 6263 6264 6265 +f 6265 6264 6266 +f 6265 6266 6267 +f 6267 6266 6268 +f 6267 6268 6269 +f 6269 6268 6270 +f 6269 6270 6271 +f 6272 6273 6271 +f 6271 6273 6274 +f 6271 6274 6269 +f 6273 6272 6275 +f 6275 6272 6276 +f 6275 6276 6277 +f 6277 6276 6278 +f 6277 6278 6279 +f 6279 6278 6280 +f 6279 6280 6281 +f 6281 6282 6279 +f 6279 6282 6283 +f 6279 6283 6284 +f 6279 6284 4396 +f 4396 6284 6285 +f 4396 6285 6286 +f 4396 6286 6175 +f 6175 6286 6176 +f 6177 6287 6167 +f 6167 6287 6288 +f 6167 6288 6165 +f 6289 6290 6291 +f 6291 6290 6292 +f 6291 6292 6293 +f 6293 6292 6294 +f 6293 6294 6295 +f 6290 6289 6296 +f 6296 6289 6297 +f 6296 6297 6298 +f 6298 6297 6299 +f 6298 6299 6300 +f 6300 6299 6301 +f 6300 6301 6302 +f 6302 6301 6303 +f 6302 6303 6304 +f 6304 6303 6305 +f 6304 6305 6306 +f 6306 6305 6307 +f 6306 6307 6308 +f 6308 6307 6309 +f 6308 6309 6207 +f 6207 6309 6205 +f 6185 6189 6187 +f 6245 6310 6238 +f 6238 6310 6311 +f 6238 6311 6312 +f 6312 6311 6313 +f 6312 6313 6314 +f 6314 6313 6315 +f 6314 6315 6316 +f 6316 6315 6317 +f 6316 6317 6318 +f 6318 6317 6319 +f 6318 6319 6320 +f 6320 6319 6321 +f 6320 6321 6322 +f 6322 6321 6323 +f 6322 6323 6324 +f 6324 6323 6325 +f 6324 6325 6326 +f 6326 6325 6327 +f 6326 6327 6328 +f 6328 6327 6329 +f 6328 6329 6330 +f 6330 6329 6331 +f 6330 6331 6332 +f 6332 6331 6333 +f 6332 6333 6334 +f 6334 6333 6335 +f 6334 6335 6336 +f 6336 6335 6337 +f 6336 6337 6338 +f 6338 6337 6339 +f 6338 6339 6340 +f 6340 6339 6341 +f 6340 6341 6342 +f 6342 6341 6343 +f 6342 6343 6344 +f 6344 6343 5677 +f 6344 5677 5675 +f 6310 6345 6311 +f 6311 6345 6346 +f 6311 6346 6347 +f 6347 6348 6311 +f 6311 6348 6349 +f 6311 6349 6350 +f 6350 6349 6351 +f 6351 6349 6352 +f 6351 6352 6353 +f 6351 6353 6354 +f 6354 6353 6355 +f 6354 6355 6356 +f 6356 6355 6357 +f 6356 6357 6295 +f 6295 6357 6358 +f 6295 6358 6293 +f 6355 6358 6357 +f 6359 6360 6361 +f 6361 6360 5343 +f 6361 5343 6253 +f 6360 6359 6362 +f 6362 6359 6363 +f 6362 6363 6364 +f 6364 6363 6365 +f 6364 6365 6366 +f 6366 6365 6367 +f 6366 6367 6368 +f 6368 6367 6369 +f 6368 6369 6370 +f 6370 6369 6371 +f 6370 6371 6372 +f 6372 6371 6373 +f 6372 6373 6374 +f 6374 6373 6375 +f 6374 6375 4414 +f 4414 6375 6376 +f 4414 6376 4412 +f 4398 6377 4396 +f 4396 6377 6279 +f 6377 6378 6279 +f 6279 6378 6379 +f 6279 6379 6380 +f 6380 6277 6279 +f 6290 6294 6292 +f 6350 6381 6311 +f 6311 6381 6382 +f 6311 6382 6383 +f 6311 6383 6384 +f 6384 6383 6385 +f 6384 6385 6386 +f 6386 6387 6384 +f 6384 6387 6388 +f 6384 6388 6389 +f 6390 6391 6389 +f 6389 6391 6392 +f 6389 6392 6384 +f 6384 6392 6393 +f 6384 6393 6394 +f 6390 6395 6391 +f 6391 6395 6396 +f 6396 6395 6397 +f 6396 6397 6398 +f 6398 6397 6399 +f 6398 6399 6230 +f 6230 6399 6400 +f 6230 6400 6228 +f 6397 6400 6399 +f 6401 6402 6403 +f 6403 6402 6404 +f 6403 6404 5343 +f 5343 6404 2301 +f 5343 2301 5341 +f 6402 6401 6405 +f 6405 6401 6406 +f 6405 6406 6407 +f 6407 6406 6408 +f 6407 6408 6409 +f 6409 6408 6410 +f 6409 6410 6411 +f 6411 6410 6412 +f 6411 6412 6413 +f 6413 6412 6414 +f 6413 6414 6415 +f 6415 6414 6416 +f 6415 6416 6417 +f 6417 6416 6418 +f 6417 6418 4465 +f 4465 6418 6419 +f 4465 6419 4463 +f 4449 6420 4397 +f 4397 6420 4401 +f 6420 6421 4401 +f 4401 6421 6422 +f 4401 6422 6423 +f 6423 4407 4401 +f 6360 6403 5343 +f 6424 6425 6426 +f 6426 6425 6427 +f 6426 6427 6428 +f 6428 6427 6429 +f 6428 6429 6430 +f 6425 6424 6431 +f 6431 6424 6432 +f 6431 6432 6433 +f 6433 6432 6434 +f 6433 6434 6435 +f 6435 6434 6436 +f 6435 6436 6437 +f 6437 6436 6438 +f 6437 6438 6439 +f 6439 6438 6440 +f 6439 6440 6441 +f 6441 6440 6442 +f 6441 6442 6443 +f 6443 6442 6444 +f 6443 6444 6445 +f 6445 6444 6446 +f 6445 6446 6206 +f 6206 6446 6209 +f 6225 6229 6227 +f 6394 6447 6384 +f 6384 6447 6448 +f 6384 6448 6449 +f 6449 6448 6450 +f 6449 6450 6451 +f 6451 6450 6452 +f 6451 6452 6453 +f 6453 6452 6454 +f 6453 6454 6455 +f 6455 6454 6456 +f 6455 6456 6457 +f 6457 6456 6458 +f 6457 6458 6459 +f 6459 6458 6460 +f 6459 6460 6461 +f 6461 6460 6462 +f 6461 6462 6463 +f 6463 6462 6464 +f 6463 6464 6465 +f 6465 6464 6466 +f 6465 6466 6467 +f 6467 6466 6468 +f 6467 6468 6469 +f 6469 6468 6470 +f 6469 6470 6471 +f 6471 6470 6472 +f 6471 6472 6473 +f 6473 6472 6474 +f 6473 6474 6475 +f 6475 6474 6476 +f 6475 6476 6477 +f 6477 6476 5681 +f 6477 5681 5679 +f 6447 6478 6448 +f 6448 6478 6479 +f 6448 6479 6480 +f 6480 6481 6448 +f 6448 6481 6482 +f 6448 6482 6483 +f 6483 6482 6484 +f 6484 6482 6485 +f 6484 6485 6486 +f 6484 6486 6487 +f 6487 6486 6488 +f 6487 6488 6489 +f 6489 6488 6490 +f 6489 6490 6430 +f 6430 6490 6491 +f 6430 6491 6428 +f 6488 6491 6490 +f 6492 6493 6494 +f 6494 6493 6404 +f 6494 6404 6402 +f 6493 6492 6495 +f 6495 6492 6496 +f 6495 6496 6497 +f 6497 6496 6498 +f 6497 6498 6499 +f 6499 6498 6500 +f 6499 6500 6501 +f 6501 6500 6502 +f 6501 6502 6503 +f 6503 6502 6504 +f 6503 6504 6505 +f 6505 6504 6506 +f 6505 6506 6507 +f 6507 6506 6508 +f 6507 6508 4515 +f 4515 6508 6509 +f 4515 6509 4513 +f 4499 6510 4448 +f 4448 6510 4452 +f 6510 6511 4452 +f 4452 6511 6512 +f 4452 6512 6513 +f 6513 4458 4452 +f 6514 6515 6516 +f 6516 6515 6517 +f 6516 6517 6518 +f 6518 6517 6519 +f 6518 6519 6520 +f 6515 6514 6521 +f 6521 6514 6522 +f 6521 6522 6523 +f 6523 6522 6524 +f 6523 6524 6525 +f 6525 6524 6526 +f 6525 6526 6527 +f 6527 6526 6528 +f 6527 6528 6529 +f 6529 6528 6530 +f 6529 6530 6531 +f 6531 6530 6532 +f 6531 6532 6533 +f 6533 6532 6534 +f 6533 6534 6535 +f 6535 6534 6536 +f 6535 6536 6206 +f 6206 6536 6445 +f 6425 6429 6427 +f 6483 6537 6448 +f 6448 6537 6538 +f 6448 6538 6539 +f 6448 6539 6540 +f 6540 6539 6541 +f 6540 6541 6542 +f 6542 6543 6540 +f 6540 6543 6544 +f 6540 6544 6545 +f 6546 6547 6545 +f 6545 6547 6548 +f 6545 6548 6540 +f 6540 6548 6549 +f 6540 6549 6550 +f 6546 6551 6547 +f 6547 6551 6552 +f 6552 6551 6553 +f 6552 6553 6554 +f 6554 6553 6555 +f 6554 6555 6520 +f 6520 6555 6556 +f 6520 6556 6518 +f 6553 6556 6555 +f 6493 6557 6404 +f 6404 6557 6558 +f 6404 6558 6559 +f 6559 6560 6404 +f 6404 6560 6561 +f 6404 6561 6562 +f 6561 6560 6563 +f 6563 6560 6564 +f 6563 6564 6565 +f 6565 6564 6566 +f 6565 6566 6567 +f 6567 6566 6568 +f 6567 6568 6569 +f 6569 6568 6570 +f 6569 6570 6571 +f 6571 6570 6572 +f 6571 6572 6573 +f 6573 6572 6574 +f 6573 6574 6575 +f 6576 6577 6575 +f 6575 6577 6578 +f 6575 6578 6573 +f 6577 6576 6579 +f 6579 6576 6580 +f 6579 6580 6581 +f 6581 6580 6582 +f 6581 6582 6583 +f 6583 6582 6584 +f 6583 6584 6585 +f 6585 6586 6583 +f 6583 6586 6587 +f 6583 6587 6588 +f 6583 6588 6589 +f 6589 6588 6590 +f 6589 6590 6591 +f 6589 6591 4498 +f 4498 6591 6592 +f 4498 6592 4502 +f 4502 6592 6593 +f 4502 6593 6594 +f 6594 6595 4502 +f 4502 6595 4508 +f 6596 6597 6598 +f 6598 6597 6599 +f 6598 6599 6600 +f 6600 6599 6601 +f 6600 6601 6602 +f 6597 6596 6603 +f 6603 6596 6604 +f 6603 6604 6605 +f 6605 6604 6606 +f 6605 6606 6607 +f 6607 6606 6608 +f 6607 6608 6609 +f 6609 6608 6610 +f 6609 6610 6611 +f 6611 6610 6612 +f 6611 6612 6613 +f 6613 6612 6614 +f 6613 6614 6206 +f 6206 6614 6615 +f 6206 6615 6616 +f 6616 6535 6206 +f 6515 6519 6517 +f 6550 6617 6540 +f 6540 6617 6618 +f 6540 6618 6619 +f 6619 6618 6620 +f 6619 6620 6621 +f 6621 6620 6622 +f 6621 6622 6623 +f 6623 6622 6624 +f 6623 6624 6625 +f 6625 6624 6626 +f 6625 6626 6627 +f 6627 6626 6628 +f 6627 6628 6629 +f 6629 6628 6630 +f 6629 6630 6631 +f 6631 6630 6632 +f 6631 6632 6633 +f 6633 6632 6634 +f 6633 6634 6635 +f 6635 6634 6636 +f 6635 6636 6637 +f 6637 6636 6638 +f 6637 6638 6639 +f 6639 6638 6640 +f 6639 6640 6641 +f 6641 6640 6642 +f 6641 6642 6474 +f 6474 6642 6476 +f 6617 6643 6618 +f 6618 6643 6644 +f 6618 6644 6645 +f 6645 6646 6618 +f 6618 6646 6647 +f 6618 6647 6648 +f 6648 6647 6649 +f 6649 6647 6650 +f 6649 6650 6651 +f 6649 6651 6652 +f 6652 6651 6653 +f 6652 6653 6654 +f 6654 6653 6655 +f 6654 6655 6602 +f 6602 6655 6656 +f 6602 6656 6600 +f 6653 6656 6655 +f 6657 6658 6404 +f 6404 6658 6659 +f 6404 6659 6660 +f 6660 6659 6661 +f 6660 6661 6662 +f 6662 6661 6663 +f 6662 6663 6664 +f 6664 6663 6665 +f 6664 6665 6666 +f 6666 6665 6667 +f 6666 6667 6668 +f 6668 6667 6669 +f 6668 6669 6670 +f 6670 6669 6671 +f 6670 6671 6672 +f 6672 6671 6673 +f 6672 6673 6674 +f 6674 6673 6675 +f 6674 6675 6676 +f 6677 6678 6676 +f 6676 6678 6679 +f 6676 6679 6674 +f 6678 6677 6680 +f 6680 6677 6681 +f 6680 6681 6682 +f 6682 6681 6683 +f 6682 6683 6684 +f 6684 6683 6685 +f 6684 6685 6686 +f 6686 6687 6684 +f 6684 6687 6688 +f 6684 6688 6689 +f 6684 6689 4915 +f 4915 6689 6690 +f 4915 6690 6691 +f 6691 6690 6692 +f 6691 6692 6693 +f 6694 6583 6693 +f 6693 6583 6589 +f 6693 6589 6691 +f 6691 6589 6695 +f 6691 6695 4913 +f 4913 6695 4911 +f 6694 6696 6583 +f 6583 6696 6697 +f 6583 6697 6581 +f 6562 6657 6404 +f 6698 6699 6700 +f 6700 6699 6701 +f 6700 6701 6702 +f 6702 6701 6703 +f 6702 6703 6704 +f 6699 6698 6705 +f 6705 6698 6706 +f 6705 6706 6707 +f 6707 6706 6708 +f 6707 6708 6709 +f 6709 6708 6710 +f 6709 6710 6711 +f 6711 6710 6712 +f 6711 6712 6713 +f 6713 6712 6714 +f 6713 6714 6715 +f 6715 6714 6716 +f 6715 6716 6717 +f 6717 6716 6718 +f 6717 6718 6719 +f 6719 6718 6720 +f 6719 6720 2377 +f 2377 6720 6721 +f 2377 6721 2342 +f 2342 6721 6722 +f 2342 6722 2343 +f 2343 6722 2345 +f 2345 6722 6723 +f 2345 6723 2346 +f 2346 6723 2348 +f 2348 6723 2349 +f 2349 6723 2350 +f 2350 6723 2351 +f 2351 6723 6724 +f 2351 6724 2352 +f 2352 6724 2347 +f 2347 6724 6725 +f 2347 6725 2353 +f 2353 6725 2358 +f 2358 6725 6726 +f 2358 6726 2359 +f 2359 6726 2360 +f 2360 6726 2361 +f 2361 6726 2362 +f 2362 6726 3046 +f 2362 3046 1855 +f 6721 6720 6206 +f 6206 6720 6727 +f 6206 6727 6728 +f 6728 6613 6206 +f 6597 6601 6599 +f 6648 6729 6618 +f 6618 6729 6730 +f 6618 6730 6620 +f 6620 6730 6731 +f 6620 6731 6622 +f 6622 6731 2397 +f 6622 2397 2396 +f 6729 6732 6730 +f 6730 6732 6733 +f 6730 6733 6734 +f 6730 6734 6735 +f 6735 6734 6736 +f 6735 6736 6737 +f 6737 6738 6735 +f 6735 6738 6739 +f 6735 6739 6740 +f 6740 6739 6741 +f 6741 6739 6742 +f 6741 6742 6743 +f 6741 6743 6744 +f 6744 6743 6745 +f 6744 6745 6746 +f 6746 6745 6747 +f 6746 6747 6704 +f 6704 6747 6748 +f 6704 6748 6702 +f 6745 6748 6747 +f 6749 6750 2300 +f 2300 6750 6751 +f 2300 6751 2302 +f 2302 6751 6752 +f 2302 6752 6753 +f 6753 6754 2302 +f 2302 6754 6755 +f 2302 6755 6756 +f 6756 6757 2302 +f 2302 6757 2289 +f 2289 6757 6758 +f 2289 6758 6759 +f 2289 6759 2291 +f 2291 6759 6760 +f 2291 6760 2293 +f 2293 6760 6761 +f 2293 6761 6762 +f 2293 6762 2303 +f 2303 6762 6763 +f 2303 6763 6764 +f 2303 6764 6765 +f 6765 6764 6766 +f 6765 6766 6767 +f 6767 6768 6765 +f 6765 6768 2303 +f 6768 6769 2303 +f 2303 6769 2304 +f 2304 6769 6770 +f 2304 6770 6771 +f 6771 6772 2304 +f 2304 6772 4915 +f 2304 4915 6773 +f 6773 4915 2308 +f 6773 2308 2304 +f 4915 6772 6684 +f 6684 6772 6774 +f 6684 6774 6775 +f 6775 6776 6684 +f 6684 6776 6682 +f 6404 6660 2300 +f 2300 6660 6749 +f 6777 2376 6778 +f 6778 2376 2375 +f 6778 2375 6779 +f 6779 2375 2374 +f 6779 2374 6780 +f 6780 2374 6781 +f 6780 6781 6782 +f 6782 6781 6783 +f 6782 6783 6784 +f 6784 6783 6781 +f 6784 6781 2373 +f 2373 6781 2374 +f 6777 6785 2376 +f 2376 6785 6786 +f 2376 6786 6787 +f 6787 6788 2376 +f 2376 6788 2377 +f 2377 6788 6789 +f 2377 6789 6790 +f 6790 6791 2377 +f 2377 6791 6792 +f 2377 6792 6719 +f 6699 6703 6701 +f 6740 6793 6735 +f 6735 6793 6794 +f 6735 6794 6795 +f 6735 6795 6796 +f 6796 6795 6797 +f 6796 6797 6798 +f 6798 6799 6796 +f 6796 6799 6800 +f 6796 6800 6801 +f 6801 6800 2373 +f 6801 2373 2398 +f 6800 6802 2373 +f 2373 6802 6803 +f 2373 6803 6804 +f 6804 6784 2373 +f 6780 6778 6779 +f 6805 1792 6806 +f 6806 1792 1807 +f 6806 1807 6807 +f 6807 1807 1789 +f 6807 1789 6808 +f 6808 1789 6809 +f 6809 1789 6810 +f 6810 1789 1787 +f 6810 1787 6811 +f 6811 1787 6812 +f 6812 1787 6813 +f 6813 1787 5414 +f 5414 1787 1785 +f 6805 6814 1792 +f 1792 6814 1808 +f 1808 6814 6815 +f 1808 6815 6816 +f 6816 6817 1808 +f 1808 6817 6818 +f 1808 6818 6819 +f 6819 6820 1808 +f 1808 6820 1809 +f 1809 6820 6821 +f 1809 6821 1810 +f 6821 6820 6822 +f 6822 6820 6823 +f 6822 6823 6824 +f 6822 6824 6825 +f 6825 6824 6826 +f 6825 6826 6827 +f 6827 6826 6828 +f 6827 6828 6829 +f 6829 6828 6830 +f 6830 6828 6831 +f 6830 6831 6832 +f 6830 6832 6833 +f 6833 6832 6834 +f 6833 6834 6835 +f 6835 6834 6836 +f 6835 6836 6837 +f 6837 6836 6838 +f 6837 6838 6839 +f 6839 6838 6840 +f 6839 6840 6841 +f 6841 6840 6842 +f 6842 6840 6843 +f 6842 6843 6844 +f 6844 6843 6845 +f 6844 6845 6846 +f 6844 6846 6847 +f 6847 6846 6848 +f 6847 6848 6849 +f 6849 6848 6850 +f 6849 6850 6851 +f 6851 6850 6852 +f 6852 6850 6853 +f 6853 6850 5412 +f 6853 5412 6854 +f 6854 5412 5494 +f 6854 5494 6855 +f 6855 5494 6856 +f 6855 6856 6857 +f 6857 6856 6858 +f 6858 6856 6859 +f 6859 6856 5496 +f 6859 5496 6860 +f 6860 5496 6861 +f 6860 6861 6862 +f 6848 6863 6850 +f 6850 6863 6864 +f 6850 6864 6865 +f 6865 6866 6850 +f 6850 6866 5412 +f 6866 5413 5412 +f 6867 6868 3294 +f 3294 6868 3293 +f 3278 6869 3277 +f 3277 6869 6870 +f 3277 6870 6871 +f 6871 6872 3277 +f 3277 6872 6873 +f 3277 6873 6874 +f 6874 6873 6875 +f 6875 6873 6876 +f 6875 6876 6877 +f 6877 6876 6878 +f 6877 6878 6879 +f 6879 6878 6880 +f 6879 6880 6881 +f 6881 6880 6882 +f 6882 6880 6883 +f 6882 6883 6884 +f 6885 6886 6884 +f 6884 6886 6887 +f 6884 6887 6882 +f 6886 6885 6888 +f 6888 6885 6889 +f 6888 6889 6890 +f 6890 6889 6891 +f 6891 6889 6892 +f 6891 6892 6893 +f 6893 6892 6894 +f 6893 6894 6895 +f 6895 6894 6896 +f 6895 6896 6897 +f 6897 6896 6898 +f 6897 6898 6899 +f 6899 6898 6900 +f 6899 6900 6901 +f 6867 3294 6901 +f 6901 3294 6902 +f 6901 6902 6899 +f 6825 6903 6822 +f 6822 6903 6904 +f 6822 6904 6905 +f 6905 6906 6822 +f 6822 6906 6907 +f 6822 6907 6908 +f 6908 6907 6909 +f 6909 6907 6910 +f 6909 6910 6911 +f 6909 6911 6912 +f 6912 6911 6913 +f 6912 6913 6914 +f 6914 6913 6915 +f 6914 6915 6916 +f 6916 6915 6917 +f 6916 6917 6918 +f 6918 6917 6919 +f 6918 6919 6920 +f 6920 6919 6921 +f 6921 6919 6922 +f 6921 6922 6923 +f 6923 6922 6924 +f 6923 6924 6925 +f 6923 6925 6862 +f 6862 6925 6860 +f 6926 6927 3294 +f 3294 6927 6902 +f 6888 6887 6886 +f 6881 6877 6879 +f 6874 6928 3277 +f 3277 6928 6929 +f 3277 6929 6930 +f 6930 6929 6931 +f 6930 6931 6932 +f 6932 6933 6930 +f 6930 6933 6934 +f 6930 6934 6935 +f 6935 6934 6936 +f 6935 6936 6937 +f 6937 6936 6938 +f 6937 6938 6939 +f 6939 6938 6940 +f 6939 6940 6941 +f 6941 6940 6942 +f 6941 6942 6943 +f 6943 6942 6944 +f 6943 6944 6945 +f 6945 6944 6946 +f 6945 6946 6947 +f 6947 6946 6948 +f 6947 6948 6949 +f 6949 6948 6950 +f 6949 6950 6951 +f 6951 6950 6952 +f 6951 6952 6953 +f 6953 6952 6954 +f 6953 6954 6955 +f 6955 6954 6956 +f 6955 6956 6957 +f 6957 6956 6958 +f 6957 6958 6959 +f 6959 6958 6960 +f 6959 6960 6961 +f 6961 6960 6962 +f 6961 6962 6963 +f 6963 6962 6964 +f 6963 6964 6965 +f 6965 6964 6966 +f 6965 6966 6967 +f 6967 6966 6968 +f 6967 6968 6969 +f 6969 6968 6970 +f 6969 6970 6971 +f 6971 6970 6972 +f 6971 6972 6973 +f 6973 6972 6974 +f 6973 6974 6975 +f 6975 6974 6976 +f 6975 6976 6977 +f 6977 6976 6978 +f 6977 6978 6979 +f 6979 6978 6980 +f 6979 6980 6981 +f 6981 6980 6982 +f 6981 6982 6983 +f 6983 6982 6984 +f 6983 6984 6985 +f 6985 6984 6986 +f 6985 6986 6987 +f 6987 6986 6988 +f 6987 6988 6989 +f 6989 6988 6990 +f 6989 6990 6991 +f 6991 6990 6992 +f 6991 6992 3158 +f 3158 6992 3160 +f 6933 6993 6934 +f 6934 6993 6994 +f 6934 6994 6995 +f 6995 6994 6996 +f 6995 6996 6997 +f 6997 6996 6998 +f 6997 6998 6999 +f 6999 6998 7000 +f 6999 7000 7001 +f 7001 7000 7002 +f 7001 7002 7003 +f 7003 7002 7004 +f 7003 7004 7005 +f 6998 7002 7000 +f 7006 7007 7005 +f 7005 7007 7008 +f 7005 7008 7003 +f 7007 7006 7009 +f 7009 7006 7010 +f 7009 7010 7011 +f 7011 7010 7012 +f 7012 7010 7013 +f 7012 7013 7014 +f 7014 7013 7015 +f 7014 7015 7016 +f 7016 7015 7017 +f 7016 7017 7018 +f 7018 7017 7019 +f 7018 7019 7020 +f 7020 7019 7021 +f 7020 7021 7022 +f 7020 7022 3294 +f 3294 7022 6926 +f 6908 7023 6822 +f 6822 7023 7024 +f 6822 7024 7025 +f 7025 7024 7026 +f 7026 7024 7027 +f 7026 7027 7028 +f 7028 7027 7029 +f 7028 7029 7030 +f 7023 7031 7024 +f 7024 7031 7032 +f 7024 7032 7033 +f 7033 7034 7024 +f 7024 7034 7027 +f 7034 7035 7027 +f 7027 7035 7036 +f 7027 7036 7037 +f 7037 7036 7038 +f 7037 7038 7039 +f 7039 7038 7040 +f 7039 7040 7041 +f 7041 7040 7042 +f 7042 7040 7043 +f 7042 7043 7044 +f 7045 7046 7044 +f 7044 7046 7047 +f 7044 7047 7042 +f 7048 7049 7045 +f 7045 7049 7050 +f 7045 7050 7046 +f 7046 7050 7047 +f 7051 7052 7048 +f 7048 7052 7053 +f 7048 7053 7049 +f 7049 7053 7050 +f 7052 7051 7054 +f 7054 7051 7055 +f 7054 7055 7056 +f 7054 7056 7057 +f 7057 7056 5651 +f 7057 5651 5653 +f 5646 7058 5644 +f 5644 7058 5497 +f 5644 5497 5495 +f 5498 7059 5496 +f 5496 7059 6861 +f 7060 7061 3296 +f 3296 7061 7062 +f 3296 7062 3294 +f 3294 7062 7020 +f 7062 7063 7020 +f 7020 7063 7018 +f 7009 7008 7007 +f 6995 7064 6934 +f 6934 7064 7065 +f 6934 7065 7066 +f 7066 7065 7067 +f 7066 7067 7068 +f 7066 7068 7069 +f 7069 7068 7070 +f 7069 7070 7071 +f 7069 7071 7072 +f 7072 7071 7073 +f 7072 7073 7074 +f 7074 7073 7075 +f 7074 7075 7076 +f 7076 7075 7077 +f 7076 7077 7078 +f 7078 7077 7079 +f 7078 7079 7080 +f 7080 7079 7081 +f 7081 7079 7082 +f 7081 7082 7083 +f 7079 7077 7084 +f 7084 7077 7085 +f 7084 7085 7079 +f 7079 7085 7082 +f 7086 7087 7083 +f 7083 7087 7088 +f 7083 7088 7081 +f 7087 7086 7089 +f 7089 7086 7090 +f 7089 7090 7091 +f 7091 7090 7092 +f 7092 7090 7093 +f 7092 7093 7094 +f 7094 7093 7095 +f 7094 7095 7096 +f 7096 7095 7097 +f 7096 7097 7098 +f 7099 7100 7098 +f 7098 7100 7101 +f 7098 7101 7096 +f 7099 7102 7100 +f 7100 7102 3298 +f 7100 3298 7103 +f 7103 3298 7104 +f 7104 3298 7105 +f 7105 3298 7106 +f 7106 3298 3300 +f 7106 3300 7107 +f 7107 3300 7108 +f 7107 7108 7109 +f 3298 7102 3296 +f 3296 7102 7060 +f 7037 7029 7027 +f 7030 7110 7028 +f 7028 7110 7111 +f 7028 7111 7112 +f 7112 7111 7113 +f 7112 7113 7114 +f 7114 7115 7112 +f 7112 7115 7116 +f 7112 7116 7117 +f 7117 7116 7118 +f 7118 7116 7119 +f 7118 7119 7120 +f 7120 7119 7121 +f 7120 7121 7122 +f 7122 7121 7123 +f 7122 7123 7124 +f 7124 7123 7125 +f 7124 7125 7126 +f 7126 7125 7127 +f 7126 7127 7128 +f 7128 7127 7129 +f 7128 7129 7130 +f 7130 7129 7131 +f 7130 7131 7132 +f 7132 7131 7133 +f 7132 7133 7134 +f 7134 7133 7135 +f 7134 7135 7136 +f 7136 7135 7133 +f 7115 7137 7116 +f 7116 7137 7138 +f 7116 7138 7139 +f 7137 7140 7138 +f 7138 7140 7141 +f 7138 7141 7142 +f 7143 7144 7142 +f 7142 7144 7145 +f 7142 7145 7138 +f 7146 7147 7143 +f 7143 7147 7148 +f 7143 7148 7144 +f 7144 7148 7145 +f 7149 7150 7146 +f 7146 7150 7151 +f 7146 7151 7147 +f 7147 7151 7148 +f 7150 7149 7152 +f 7152 7149 7153 +f 7152 7153 7154 +f 7154 7155 7152 +f 7152 7155 7156 +f 7152 7156 7157 +f 7157 7156 7158 +f 7157 7158 7159 +f 7159 7158 3097 +f 7159 3097 7160 +f 7160 3097 3099 +f 7160 3099 7161 +f 7161 3099 7162 +f 7162 3099 3101 +f 7156 7155 7163 +f 7163 7155 7164 +f 7163 7164 7165 +f 7165 7166 7163 +f 7163 7166 7167 +f 7163 7167 5660 +f 5660 7167 5658 +f 7103 7168 7100 +f 7100 7168 7101 +f 7089 7088 7087 +f 7074 7169 7072 +f 7072 7169 7170 +f 7072 7170 7171 +f 7171 7170 7172 +f 7171 7172 7173 +f 7173 7172 7174 +f 7173 7174 6940 +f 6940 7174 6942 +f 7169 7175 7170 +f 7170 7175 7176 +f 7170 7176 7177 +f 7170 7177 7178 +f 7178 7177 7179 +f 7178 7179 7180 +f 7178 7180 7181 +f 7181 7180 7182 +f 7181 7182 7183 +f 7183 7182 7184 +f 7183 7184 7185 +f 7185 7184 7186 +f 7185 7186 7187 +f 7187 7186 7188 +f 7187 7188 7189 +f 7189 7188 7190 +f 7189 7190 7187 +f 7188 7186 7191 +f 7191 7186 7192 +f 7191 7192 7188 +f 7188 7192 7193 +f 7188 7193 7194 +f 7194 7193 7195 +f 7194 7195 7196 +f 7196 7195 7197 +f 7196 7197 7198 +f 7198 7197 7199 +f 7198 7199 7200 +f 7195 7199 7197 +f 7198 7200 7201 +f 7201 7200 7202 +f 7201 7202 7203 +f 7203 7202 7204 +f 7203 7204 7107 +f 7107 7204 7205 +f 7107 7205 7206 +f 7206 7207 7107 +f 7107 7207 7106 +f 7139 7208 7116 +f 7116 7208 7209 +f 7116 7209 7210 +f 7210 7211 7116 +f 7116 7211 7212 +f 7116 7212 7213 +f 7116 7213 7119 +f 7119 7213 7214 +f 7119 7214 7215 +f 7215 7121 7119 +f 7131 7129 7216 +f 7216 7129 7133 +f 7216 7133 7131 +f 7217 7218 7136 +f 7136 7218 7219 +f 7136 7219 7134 +f 7134 7219 7132 +f 7218 7217 7220 +f 7220 7217 7221 +f 7220 7221 7222 +f 7220 7222 7223 +f 7223 7222 3102 +f 7223 3102 3104 +f 7159 7224 7157 +f 7157 7224 7225 +f 7157 7225 7226 +f 7226 7227 7157 +f 7157 7227 7228 +f 7157 7228 7152 +f 3425 7108 3300 +f 7109 7229 7107 +f 7107 7229 7230 +f 7107 7230 7231 +f 7231 7203 7107 +f 7194 7190 7188 +f 7183 7232 7181 +f 7181 7232 7233 +f 7181 7233 7234 +f 7234 7233 7235 +f 7234 7235 7236 +f 7236 7235 7237 +f 7236 7237 7238 +f 7238 7237 7239 +f 7238 7239 7240 +f 7240 7239 7241 +f 7240 7241 6946 +f 6946 7241 6948 +f 7232 7242 7233 +f 7233 7242 7243 +f 7233 7243 7244 +f 7244 7243 7245 +f 7244 7245 7246 +f 7246 7247 7244 +f 7244 7247 7248 +f 7244 7248 7249 +f 7249 7248 7250 +f 7249 7250 7251 +f 7251 7250 7252 +f 7251 7252 7253 +f 7253 7252 7254 +f 7253 7254 7255 +f 7255 7254 7256 +f 7255 7256 7257 +f 7257 7256 7258 +f 7257 7258 7259 +f 7259 7258 7260 +f 7259 7260 7261 +f 7261 7260 7262 +f 7261 7262 7263 +f 7263 7262 7264 +f 7263 7264 7265 +f 7265 7264 7266 +f 7265 7266 7267 +f 7267 7266 7268 +f 7267 7268 7269 +f 7269 7268 7270 +f 7269 7270 7271 +f 7271 7270 7272 +f 7271 7272 7273 +f 7273 7272 7274 +f 7273 7274 7275 +f 7275 7274 7276 +f 7275 7276 7277 +f 7277 7276 7278 +f 7277 7278 7279 +f 7279 7278 7280 +f 7279 7280 7281 +f 7281 7280 7282 +f 7281 7282 7283 +f 7283 7282 7284 +f 7283 7284 7285 +f 7285 7284 7286 +f 7285 7286 7287 +f 7287 7286 7288 +f 7287 7288 6986 +f 6986 7288 6988 +f 7248 7247 7250 +f 7250 7247 7289 +f 7250 7289 7290 +f 7290 7289 7291 +f 7290 7291 7292 +f 7292 7291 7293 +f 7292 7293 7294 +f 7294 7293 7295 +f 7294 7295 7296 +f 7296 7295 7297 +f 7297 7295 7298 +f 7297 7298 7299 +f 7300 7301 7293 +f 7293 7301 7302 +f 7293 7302 7295 +f 7295 7302 7300 +f 7295 7300 7298 +f 7303 7304 7299 +f 7299 7304 7305 +f 7299 7305 7306 +f 7306 7305 7307 +f 7307 7305 7303 +f 7307 7303 7308 +f 7308 7303 7309 +f 7308 7309 7310 +f 7310 7309 7311 +f 7310 7311 7312 +f 7312 7311 7313 +f 7312 7313 7314 +f 7314 7313 7315 +f 7314 7315 7316 +f 7316 7315 7317 +f 7316 7317 7318 +f 7318 7317 7319 +f 7319 7317 7320 +f 7320 7317 3423 +f 7320 3423 7321 +f 7321 3423 3422 +f 7321 3422 7322 +f 7322 3422 7323 +f 7323 3422 7324 +f 7323 7324 7325 +f 7325 7324 7326 +f 7326 7324 7327 +f 7327 7324 7328 +f 7327 7328 7329 +f 7329 7328 7330 +f 7329 7330 7331 +f 7315 7332 7317 +f 7317 7332 7333 +f 7317 7333 7334 +f 7317 7334 3423 +f 3423 7334 3424 +f 7122 7335 7120 +f 7120 7335 7336 +f 7120 7336 7337 +f 7120 7337 7338 +f 7338 7337 7339 +f 7338 7339 7340 +f 7340 7341 7338 +f 7338 7341 7342 +f 7338 7342 7343 +f 7343 7342 7344 +f 7343 7344 7345 +f 7342 7346 7344 +f 7344 7346 7347 +f 7347 7346 7348 +f 7347 7348 7349 +f 7349 7348 7350 +f 7349 7350 7351 +f 7351 7350 7352 +f 7351 7352 7353 +f 7353 7352 7354 +f 7353 7354 7355 +f 7355 7354 7356 +f 7355 7356 7357 +f 7357 7356 7358 +f 7357 7358 7359 +f 7359 7358 7356 +f 7354 7352 7360 +f 7360 7352 7356 +f 7360 7356 7354 +f 7361 7362 7359 +f 7359 7362 7363 +f 7359 7363 7357 +f 7357 7363 7355 +f 7362 7361 7364 +f 7364 7361 7365 +f 7364 7365 7366 +f 7364 7366 7367 +f 7367 7366 3116 +f 7367 3116 7368 +f 7368 3116 3118 +f 7368 3118 7369 +f 7369 3118 7370 +f 7370 3118 3120 +f 7310 7307 7308 +f 7306 7297 7299 +f 7290 7371 7250 +f 7250 7371 7372 +f 7250 7372 7373 +f 7250 7373 7374 +f 7374 7373 7375 +f 7374 7375 7376 +f 7376 7377 7374 +f 7374 7377 7378 +f 7374 7378 7379 +f 7379 7378 7380 +f 7379 7380 7381 +f 7381 7380 7382 +f 7381 7382 7383 +f 7383 7382 7384 +f 7383 7384 7385 +f 7385 7384 7386 +f 7385 7386 7387 +f 7387 7386 7388 +f 7387 7388 7389 +f 7389 7388 7390 +f 7389 7390 7391 +f 7391 7390 7392 +f 7391 7392 7393 +f 7393 7392 7394 +f 7393 7394 7395 +f 7395 7394 7396 +f 7395 7396 7397 +f 7397 7396 7398 +f 7397 7398 7399 +f 7399 7398 7400 +f 7399 7400 7401 +f 7401 7400 7402 +f 7401 7402 7403 +f 7403 7402 7404 +f 7403 7404 7405 +f 7405 7404 7406 +f 7405 7406 7407 +f 7407 7406 7408 +f 7407 7408 7409 +f 7409 7408 7410 +f 7409 7410 7411 +f 7411 7410 7412 +f 7411 7412 7413 +f 7413 7412 7414 +f 7413 7414 7415 +f 7415 7414 7416 +f 7415 7416 7417 +f 7417 7416 7418 +f 7417 7418 7419 +f 7419 7418 7420 +f 7419 7420 7421 +f 7421 7420 3500 +f 7421 3500 3168 +f 7378 7377 7380 +f 7380 7377 7422 +f 7380 7422 7423 +f 7423 7422 7424 +f 7423 7424 7425 +f 7425 7424 7426 +f 7425 7426 7427 +f 7427 7426 7428 +f 7427 7428 7429 +f 7429 7428 7430 +f 7430 7428 7431 +f 7430 7431 7432 +f 7433 7434 7426 +f 7426 7434 7435 +f 7426 7435 7428 +f 7428 7435 7433 +f 7428 7433 7431 +f 7436 7437 7432 +f 7432 7437 7438 +f 7432 7438 7439 +f 7439 7438 7440 +f 7440 7438 7436 +f 7440 7436 7441 +f 7441 7436 7442 +f 7441 7442 7443 +f 7443 7442 7444 +f 7443 7444 7331 +f 7331 7444 7329 +f 7345 7445 7343 +f 7343 7445 7446 +f 7343 7446 7447 +f 7447 7446 7448 +f 7447 7448 7449 +f 7449 7450 7447 +f 7447 7450 7451 +f 7447 7451 7452 +f 7452 7451 7453 +f 7453 7451 7454 +f 7453 7454 7455 +f 7455 7454 7456 +f 7455 7456 7457 +f 7457 7456 7458 +f 7457 7458 7459 +f 7459 7458 7460 +f 7459 7460 7461 +f 7461 7460 7462 +f 7461 7462 7463 +f 7463 7462 7464 +f 7463 7464 7465 +f 7465 7464 7466 +f 7465 7466 7467 +f 7467 7466 7468 +f 7467 7468 7469 +f 7469 7468 7470 +f 7469 7470 7471 +f 7471 7470 7472 +f 7471 7472 7473 +f 7473 7472 7470 +f 7450 7474 7451 +f 7451 7474 7475 +f 7451 7475 7476 +f 7474 7477 7475 +f 7475 7477 7478 +f 7478 7477 7479 +f 7478 7479 7480 +f 7480 7479 7481 +f 7480 7481 7482 +f 7482 7481 7483 +f 7482 7483 7484 +f 7484 7483 7485 +f 7484 7485 7486 +f 7486 7485 7487 +f 7486 7487 7488 +f 7488 7487 7489 +f 7488 7489 7490 +f 7490 7489 7487 +f 7485 7483 7491 +f 7491 7483 7487 +f 7491 7487 7485 +f 7492 7493 7490 +f 7490 7493 7494 +f 7490 7494 7488 +f 7488 7494 7486 +f 7493 7492 7495 +f 7495 7492 7496 +f 7495 7496 7497 +f 7495 7497 7498 +f 7498 7497 7499 +f 7498 7499 7500 +f 7500 7499 3129 +f 7500 3129 7501 +f 7501 3129 7502 +f 7502 3129 3131 +f 7499 3127 3129 +f 7503 3422 7504 +f 7504 3422 3421 +f 7504 3421 7505 +f 7505 3421 7506 +f 7506 3421 7507 +f 7506 7507 7508 +f 7508 7507 7509 +f 7509 7507 7510 +f 7510 7507 7511 +f 7510 7511 7512 +f 7512 7511 7513 +f 7512 7513 7514 +f 3422 7503 7324 +f 7324 7503 7515 +f 7324 7515 7516 +f 7516 7328 7324 +f 7443 7440 7441 +f 7439 7430 7432 +f 7423 7517 7380 +f 7380 7517 7518 +f 7380 7518 7519 +f 7519 7518 7520 +f 7519 7520 7521 +f 7521 7522 7519 +f 7519 7522 7523 +f 7519 7523 7524 +f 7524 7523 7525 +f 7524 7525 7526 +f 7526 7525 7527 +f 7526 7527 7384 +f 7384 7527 7386 +f 7523 7528 7525 +f 7525 7528 7529 +f 7525 7529 7530 +f 7528 7531 7529 +f 7529 7531 7532 +f 7532 7531 7533 +f 7532 7533 7534 +f 7534 7533 7535 +f 7534 7535 7536 +f 7536 7535 7537 +f 7537 7535 7538 +f 7537 7538 7539 +f 7540 7541 7533 +f 7533 7541 7542 +f 7533 7542 7535 +f 7535 7542 7540 +f 7535 7540 7538 +f 7543 7544 7539 +f 7539 7544 7545 +f 7539 7545 7546 +f 7546 7545 7547 +f 7547 7545 7543 +f 7547 7543 7548 +f 7548 7543 7549 +f 7548 7549 7550 +f 7550 7549 7551 +f 7550 7551 7514 +f 7514 7551 7512 +f 7476 7552 7451 +f 7451 7552 7454 +f 7552 7553 7454 +f 7454 7553 7554 +f 7454 7554 7555 +f 7555 7456 7454 +f 7468 7466 7556 +f 7556 7466 7470 +f 7556 7470 7468 +f 7557 7558 7473 +f 7473 7558 7559 +f 7473 7559 7471 +f 7471 7559 7469 +f 7558 7557 7560 +f 7560 7557 7561 +f 7560 7561 7562 +f 7560 7562 7563 +f 7563 7562 7564 +f 7563 7564 7565 +f 7565 7564 7566 +f 7565 7566 7567 +f 7567 7566 7568 +f 7568 7566 7569 +f 7569 7566 3137 +f 7569 3137 3139 +f 7564 7570 7566 +f 7566 7570 7571 +f 7566 7571 3135 +f 3135 7571 7572 +f 3135 7572 7573 +f 7573 7572 7570 +f 7570 7572 7571 +f 7574 3421 7575 +f 7575 3421 3420 +f 7575 3420 7576 +f 7576 3420 7577 +f 7577 3420 7578 +f 7577 7578 7579 +f 7579 7578 7580 +f 7580 7578 7581 +f 7581 7578 7582 +f 7581 7582 7583 +f 7583 7582 7584 +f 7583 7584 7585 +f 3421 7574 7507 +f 7507 7574 7586 +f 7507 7586 7587 +f 7587 7511 7507 +f 7550 7547 7548 +f 7546 7537 7539 +f 7530 7588 7525 +f 7525 7588 7589 +f 7525 7589 7590 +f 7590 7589 7591 +f 7590 7591 7592 +f 7592 7591 7593 +f 7592 7593 7594 +f 7594 7593 7595 +f 7594 7595 7596 +f 7596 7595 7597 +f 7596 7597 7598 +f 7598 7597 7599 +f 7598 7599 7600 +f 7600 7599 7601 +f 7600 7601 7602 +f 7602 7601 7603 +f 7602 7603 7604 +f 7604 7603 7605 +f 7604 7605 7606 +f 7606 7605 7607 +f 7606 7607 7608 +f 7608 7607 7609 +f 7608 7609 7610 +f 7610 7609 7611 +f 7610 7611 7612 +f 7612 7611 7613 +f 7612 7613 7614 +f 7614 7613 7615 +f 7614 7615 7616 +f 7616 7615 7617 +f 7616 7617 7618 +f 7618 7617 7619 +f 7618 7619 7620 +f 7620 7619 7621 +f 7620 7621 7622 +f 7622 7621 3496 +f 7622 3496 7623 +f 7623 3496 3498 +f 7623 3498 3500 +f 7588 7624 7589 +f 7589 7624 7625 +f 7589 7625 7626 +f 7626 7627 7589 +f 7589 7627 7628 +f 7589 7628 7591 +f 7591 7628 7629 +f 7591 7629 7593 +f 7593 7629 7630 +f 7593 7630 7595 +f 7595 7630 7631 +f 7595 7631 7597 +f 7597 7631 7632 +f 7597 7632 7599 +f 7599 7632 7633 +f 7599 7633 7601 +f 7601 7633 7634 +f 7601 7634 7603 +f 7603 7634 7635 +f 7603 7635 7605 +f 7605 7635 7636 +f 7605 7636 7607 +f 7607 7636 7637 +f 7607 7637 7609 +f 7609 7637 7638 +f 7609 7638 7611 +f 7611 7638 7639 +f 7611 7639 7613 +f 7613 7639 7640 +f 7613 7640 7615 +f 7615 7640 7641 +f 7615 7641 7617 +f 7617 7641 7642 +f 7617 7642 7619 +f 7619 7642 7643 +f 7619 7643 7621 +f 7621 7643 3494 +f 7621 3494 3496 +f 7644 7645 7627 +f 7627 7645 7629 +f 7627 7629 7628 +f 7644 7646 7645 +f 7645 7646 7647 +f 7647 7646 7648 +f 7647 7648 7649 +f 7649 7648 7650 +f 7649 7650 7651 +f 7651 7650 7652 +f 7652 7650 7653 +f 7652 7653 7654 +f 7655 7656 7648 +f 7648 7656 7657 +f 7648 7657 7650 +f 7650 7657 7655 +f 7650 7655 7653 +f 7658 7659 7654 +f 7654 7659 7660 +f 7654 7660 7661 +f 7661 7660 7662 +f 7662 7660 7658 +f 7662 7658 7663 +f 7663 7658 7664 +f 7663 7664 7665 +f 7665 7664 7666 +f 7665 7666 7585 +f 7585 7666 7583 +f 7457 7667 7455 +f 7455 7667 7668 +f 7455 7668 7669 +f 7669 7668 7670 +f 7669 7670 7671 +f 7671 7670 7672 +f 7671 7672 7673 +f 7673 7672 7674 +f 7673 7674 7675 +f 7667 7676 7668 +f 7668 7676 7677 +f 7668 7677 7678 +f 7678 7679 7668 +f 7668 7679 7670 +f 7670 7679 7680 +f 7680 7679 7681 +f 7680 7681 7682 +f 7682 7681 7683 +f 7682 7683 7684 +f 7684 7683 7685 +f 7684 7685 7686 +f 7686 7685 7687 +f 7686 7687 7688 +f 7688 7687 7689 +f 7688 7689 7690 +f 7690 7689 7691 +f 7690 7691 7692 +f 7692 7691 7693 +f 7692 7693 7694 +f 7694 7693 7695 +f 7694 7695 7696 +f 7696 7695 7693 +f 7691 7689 7697 +f 7697 7689 7693 +f 7697 7693 7691 +f 7698 7699 7696 +f 7696 7699 7700 +f 7696 7700 7694 +f 7694 7700 7692 +f 7699 7698 7701 +f 7701 7698 7702 +f 7701 7702 7703 +f 7701 7703 7704 +f 7704 7703 7705 +f 7704 7705 7706 +f 7706 7705 7707 +f 7706 7707 7708 +f 7708 7707 7709 +f 7709 7707 7710 +f 7710 7707 7711 +f 7710 7711 7712 +f 7712 7711 7713 +f 7712 7713 7714 +f 7714 7713 3143 +f 7714 3143 3145 +f 7705 7715 7707 +f 7707 7715 7716 +f 7707 7716 7717 +f 7717 7716 7718 +f 7717 7718 7719 +f 7719 7718 7715 +f 7715 7718 7716 +f 7707 7717 7711 +f 7711 7717 7720 +f 7711 7720 7721 +f 7721 7720 3139 +f 7721 3139 3141 +f 7720 7722 3139 +f 3139 7722 7569 +f 7723 3420 7724 +f 7724 3420 3419 +f 7724 3419 7725 +f 7725 3419 7726 +f 7725 7726 7727 +f 7727 7726 7728 +f 7728 7726 7729 +f 7729 7726 7730 +f 7730 7726 7731 +f 7730 7731 7732 +f 3420 7723 7578 +f 7578 7723 7733 +f 7578 7733 7734 +f 7734 7582 7578 +f 7665 7662 7663 +f 7661 7652 7654 +f 7645 7735 7629 +f 7629 7735 7736 +f 7629 7736 7737 +f 7737 7736 7738 +f 7737 7738 7739 +f 7739 7740 7737 +f 7737 7740 7741 +f 7737 7741 7742 +f 7742 7741 7743 +f 7742 7743 7744 +f 7744 7743 7745 +f 7744 7745 7631 +f 7631 7745 7632 +f 7746 7747 7741 +f 7741 7747 7748 +f 7741 7748 7743 +f 7743 7748 7749 +f 7743 7749 7750 +f 7750 7749 7751 +f 7750 7751 7752 +f 7746 7753 7747 +f 7747 7753 7754 +f 7754 7753 7755 +f 7754 7755 7756 +f 7756 7755 7757 +f 7756 7757 7758 +f 7758 7757 7759 +f 7759 7757 7760 +f 7759 7760 7761 +f 7755 7762 7757 +f 7757 7762 7763 +f 7757 7763 7760 +f 7760 7763 7764 +f 7760 7764 7762 +f 7762 7764 7763 +f 7765 7766 7761 +f 7761 7766 7767 +f 7761 7767 7768 +f 7768 7767 7769 +f 7769 7767 7765 +f 7769 7765 7770 +f 7770 7765 7771 +f 7770 7771 7772 +f 7772 7771 7773 +f 7772 7773 7774 +f 7774 7773 7732 +f 7732 7773 7775 +f 7732 7775 7730 +f 7680 7776 7670 +f 7670 7776 7777 +f 7670 7777 7672 +f 7672 7777 7778 +f 7672 7778 7779 +f 7779 7780 7672 +f 7672 7780 7674 +f 7780 7781 7674 +f 7674 7781 7782 +f 7782 7781 7783 +f 7782 7783 7784 +f 7784 7783 7785 +f 7784 7785 7786 +f 7786 7785 7787 +f 7786 7787 7788 +f 7788 7787 7789 +f 7788 7789 7790 +f 7790 7789 7791 +f 7790 7791 7792 +f 7792 7791 7793 +f 7792 7793 7790 +f 7789 7794 7791 +f 7791 7794 7793 +f 7793 7794 7795 +f 7795 7794 7796 +f 7795 7796 7797 +f 7797 7796 7798 +f 7798 7796 7799 +f 7798 7799 7800 +f 7800 7799 7801 +f 7800 7801 7802 +f 7800 7802 7803 +f 7803 7802 7804 +f 7803 7804 7805 +f 7805 7804 7806 +f 7805 7806 7807 +f 7807 7806 7808 +f 7807 7808 7809 +f 7806 7804 7810 +f 7810 7804 7811 +f 7810 7811 7812 +f 7812 7813 7810 +f 7810 7813 7806 +f 7814 7712 7813 +f 7813 7712 7815 +f 7813 7815 7806 +f 7806 7815 7808 +f 7814 7816 7712 +f 7712 7816 7710 +f 7817 3419 7818 +f 7818 3419 3418 +f 7818 3418 7819 +f 7819 3418 7820 +f 7819 7820 7821 +f 7821 7820 7822 +f 7822 7820 7823 +f 7823 7820 7824 +f 7824 7820 7825 +f 7824 7825 7826 +f 7826 7825 7827 +f 7826 7827 7828 +f 7828 7827 7829 +f 7828 7829 7830 +f 7830 7829 7831 +f 7830 7831 7832 +f 7832 7831 7833 +f 7832 7833 7834 +f 7834 7833 7835 +f 7834 7835 7836 +f 7836 7835 7837 +f 7836 7837 7834 +f 3419 7817 7726 +f 7726 7817 7838 +f 7726 7838 7839 +f 7839 7731 7726 +f 7772 7769 7770 +f 7768 7759 7761 +f 7752 7840 7750 +f 7750 7840 7841 +f 7750 7841 7842 +f 7842 7841 7843 +f 7842 7843 7844 +f 7844 7843 7845 +f 7844 7845 7846 +f 7846 7845 7847 +f 7846 7847 7848 +f 7848 7847 7849 +f 7848 7849 7634 +f 7634 7849 7635 +f 7841 7850 7843 +f 7843 7850 7851 +f 7843 7851 7852 +f 7850 7853 7851 +f 7851 7853 7854 +f 7854 7853 7855 +f 7854 7855 7856 +f 7856 7855 7857 +f 7856 7857 7858 +f 7858 7857 7859 +f 7859 7857 7860 +f 7859 7860 7837 +f 7855 7861 7857 +f 7857 7861 7862 +f 7857 7862 7860 +f 7860 7862 7863 +f 7860 7863 7861 +f 7861 7863 7862 +f 7834 7830 7832 +f 7675 7864 7673 +f 7673 7864 7865 +f 7673 7865 7866 +f 7866 7865 7867 +f 7866 7867 7868 +f 7868 7867 7869 +f 7868 7869 7870 +f 7870 7869 7871 +f 7870 7871 89 +f 89 7871 7872 +f 89 7872 90 +f 90 7872 7873 +f 90 7873 7874 +f 7864 7875 7865 +f 7865 7875 7876 +f 7865 7876 7877 +f 7865 7877 7867 +f 7867 7877 7878 +f 7867 7878 7879 +f 7879 7878 7880 +f 7879 7880 7881 +f 7881 7882 7879 +f 7879 7882 7883 +f 7883 7882 7884 +f 7883 7884 7885 +f 7885 7884 7886 +f 7885 7886 7887 +f 7887 7886 7888 +f 7887 7888 7889 +f 7889 7888 7890 +f 7889 7890 7891 +f 7891 7890 7892 +f 7892 7890 7893 +f 7892 7893 7894 +f 7894 7893 7895 +f 7894 7895 7896 +f 7884 7888 7886 +f 7894 7896 7897 +f 7897 7896 7898 +f 7897 7898 7899 +f 7899 7898 7900 +f 7899 7900 7901 +f 7901 7900 7902 +f 7902 7900 7903 +f 7903 7900 7898 +f 7904 7905 7901 +f 7901 7905 7906 +f 7901 7906 7907 +f 7907 7906 7908 +f 7907 7908 7909 +f 7909 7908 7910 +f 7909 7910 7911 +f 7911 7910 7912 +f 7912 7910 7913 +f 7912 7913 7914 +f 7914 7913 7915 +f 7914 7915 7916 +f 7904 7917 7905 +f 7905 7917 7808 +f 7905 7808 7918 +f 7918 7808 7815 +f 7918 7815 7919 +f 7919 7815 7920 +f 7919 7920 7921 +f 7921 7920 7922 +f 7921 7922 7923 +f 7923 7922 3147 +f 7923 3147 3149 +f 7809 7924 7807 +f 7807 7924 7805 +f 7795 7797 7925 +f 7925 7797 7793 +f 7925 7793 7795 +f 7926 7820 7927 +f 7927 7820 3418 +f 7927 3418 3417 +f 7926 7928 7820 +f 7820 7928 7929 +f 7820 7929 7825 +f 7833 7930 7835 +f 7835 7930 7837 +f 7930 7859 7837 +f 7852 7931 7843 +f 7843 7931 7932 +f 7843 7932 7933 +f 7933 7932 7934 +f 7933 7934 7935 +f 7935 7934 7936 +f 7935 7936 7937 +f 7937 7936 7938 +f 7937 7938 7939 +f 7939 7938 7940 +f 7939 7940 7941 +f 7941 7940 7942 +f 7941 7942 7943 +f 7943 7942 7944 +f 7943 7944 7945 +f 7945 7944 7946 +f 7945 7946 7947 +f 7947 7946 3484 +f 7947 3484 3486 +f 7931 7948 7932 +f 7932 7948 7949 +f 7932 7949 7950 +f 7950 7951 7932 +f 7932 7951 7952 +f 7932 7952 7934 +f 7934 7952 7953 +f 7934 7953 7936 +f 7936 7953 3460 +f 7936 3460 7938 +f 7938 3460 7954 +f 7938 7954 7940 +f 7940 7954 7955 +f 7940 7955 7942 +f 7942 7955 7956 +f 7942 7956 7944 +f 7944 7956 7957 +f 7944 7957 7946 +f 7946 7957 3482 +f 7946 3482 3484 +f 7952 7951 7953 +f 7953 7951 7958 +f 7953 7958 7959 +f 7959 7958 7960 +f 7959 7960 7961 +f 7959 7961 7962 +f 7962 7961 7963 +f 7962 7963 7964 +f 7964 7963 7965 +f 7964 7965 7966 +f 7966 7965 7963 +f 7964 7966 7967 +f 7967 7966 7968 +f 7967 7968 7969 +f 7969 7968 7970 +f 7969 7970 7971 +f 7971 7970 7972 +f 7971 7972 7973 +f 7973 7972 7974 +f 7973 7974 7975 +f 7975 7974 7976 +f 7975 7976 7977 +f 7977 7976 7978 +f 7977 7978 7979 +f 7968 7972 7970 +f 7977 7979 7980 +f 7980 7979 7981 +f 7980 7981 7982 +f 7982 7983 7980 +f 7980 7983 7984 +f 7980 7984 7927 +f 7879 7985 7867 +f 7867 7985 7986 +f 7867 7986 7987 +f 7987 7988 7867 +f 7867 7988 7989 +f 7867 7989 7990 +f 7990 7991 7867 +f 7867 7991 7992 +f 7867 7992 7993 +f 7991 7994 7992 +f 7992 7994 7995 +f 7995 7994 7996 +f 7995 7996 7997 +f 7997 7996 7998 +f 7997 7998 7999 +f 7999 7998 8000 +f 7999 8000 8001 +f 8001 8000 8002 +f 8001 8002 8003 +f 8003 8002 8004 +f 8003 8004 8005 +f 8005 8004 8006 +f 8005 8006 8007 +f 8007 8006 8008 +f 8007 8008 8009 +f 8009 8008 8010 +f 8009 8010 8011 +f 8011 8010 8012 +f 8011 8012 8013 +f 8013 8012 8014 +f 8013 8014 8015 +f 8015 8014 8016 +f 8015 8016 8017 +f 8017 8016 7914 +f 8017 7914 7916 +f 8016 8018 7914 +f 7914 8018 8019 +f 7914 8019 7912 +f 8020 8021 7907 +f 7907 8021 7899 +f 7907 7899 7901 +f 8020 8022 8021 +f 8021 8022 8023 +f 8021 8023 7897 +f 7891 7887 7889 +f 3428 8024 7980 +f 7980 8024 8025 +f 7980 8025 8026 +f 8026 8027 7980 +f 7980 8027 8028 +f 7980 8028 7977 +f 7967 7962 7964 +f 7959 8029 7953 +f 7953 8029 8030 +f 7953 8030 8031 +f 8031 8032 7953 +f 7953 8032 8033 +f 7953 8033 8034 +f 7953 8034 3460 +f 3460 8034 8035 +f 3460 8035 8036 +f 8036 3458 3460 +f 3453 3449 3451 +f 3448 3444 3446 +f 7867 7993 7869 +f 7869 7993 8037 +f 7869 8037 8038 +f 7869 8038 8039 +f 8039 8038 8040 +f 8039 8040 8041 +f 8041 8040 8042 +f 8041 8042 8043 +f 8043 8042 8044 +f 8043 8044 8045 +f 8045 8044 8046 +f 8045 8046 8047 +f 8047 8046 8048 +f 8047 8048 8049 +f 8049 8048 8050 +f 8049 8050 8051 +f 8051 8050 8052 +f 8051 8052 8053 +f 8053 8052 8054 +f 8053 8054 8055 +f 8055 8054 8056 +f 8055 8056 8057 +f 8057 8056 8058 +f 8057 8058 8059 +f 8059 8058 8060 +f 8059 8060 8061 +f 8061 8060 8062 +f 8061 8062 8063 +f 8063 8062 8064 +f 8064 8062 8065 +f 8065 8062 8066 +f 8065 8066 8067 +f 8067 8066 8068 +f 8067 8068 8069 +f 8060 8070 8062 +f 8062 8070 8071 +f 8062 8071 8072 +f 8072 8066 8062 +f 8069 7913 8067 +f 8067 7913 7910 +f 8067 7910 8073 +f 8073 7910 7908 +f 8073 7908 8074 +f 8074 7908 7906 +f 8074 7906 8075 +f 8075 7906 7905 +f 8075 7905 8076 +f 8076 7905 7919 +f 8076 7919 7921 +f 3462 8077 3460 +f 3460 8077 8078 +f 3460 8078 7954 +f 7954 8078 8079 +f 7954 8079 7955 +f 7955 8079 8080 +f 7955 8080 7956 +f 7956 8080 8081 +f 7956 8081 7957 +f 7957 8081 3480 +f 7957 3480 3482 +f 8077 8082 8078 +f 8078 8082 8083 +f 8078 8083 8084 +f 8084 8085 8078 +f 8078 8085 8086 +f 8078 8086 8087 +f 8086 8085 8088 +f 8088 8085 8089 +f 8088 8089 8090 +f 8090 8089 8091 +f 8090 8091 8092 +f 8092 8091 8093 +f 8092 8093 8094 +f 8094 8093 8095 +f 8094 8095 8096 +f 8096 8095 8097 +f 8097 8095 8098 +f 8097 8098 8099 +f 8099 8098 8100 +f 8099 8100 8101 +f 8101 8100 8102 +f 8102 8100 8103 +f 8102 8103 8104 +f 8104 8103 8105 +f 8104 8105 8106 +f 8106 8105 8107 +f 8106 8107 8108 +f 8108 8107 8109 +f 8108 8109 8110 +f 8110 8109 8111 +f 8110 8111 8112 +f 8112 8111 8113 +f 8112 8113 8114 +f 8114 8113 8115 +f 8114 8115 3427 +f 3427 8115 8116 +f 3427 8116 3429 +f 8039 8117 7869 +f 7869 8117 8118 +f 7869 8118 8119 +f 7869 8119 8120 +f 8120 8119 8121 +f 8120 8121 8122 +f 8120 8122 8123 +f 8123 8122 8124 +f 8123 8124 8125 +f 8125 8124 8126 +f 8125 8126 8127 +f 8127 8126 8128 +f 8127 8128 8129 +f 8129 8128 8130 +f 8129 8130 8131 +f 8131 8130 8132 +f 8131 8132 8133 +f 8133 8132 8134 +f 8133 8134 8135 +f 8135 8134 8136 +f 8135 8136 8137 +f 8137 8136 8138 +f 8137 8138 8139 +f 8139 8138 8140 +f 8139 8140 8141 +f 8141 8140 8142 +f 8141 8142 8143 +f 8143 8142 8144 +f 8144 8142 8145 +f 8145 8142 8146 +f 8145 8146 8147 +f 8140 8148 8142 +f 8142 8148 8149 +f 8142 8149 8146 +f 8150 8151 8147 +f 8147 8151 8152 +f 8147 8152 8145 +f 8151 8150 8153 +f 8153 8150 8154 +f 8153 8154 8155 +f 8155 8065 8153 +f 8153 8065 8067 +f 8153 8067 8156 +f 8156 8067 8073 +f 8156 8073 8157 +f 8157 8073 8074 +f 8157 8074 8158 +f 8158 8074 8075 +f 8158 8075 8159 +f 8159 8075 8076 +f 8159 8076 8160 +f 8160 8076 7921 +f 8160 7921 7923 +f 8161 8162 3427 +f 3427 8162 8114 +f 8101 8097 8099 +f 8096 8092 8094 +f 8087 8163 8078 +f 8078 8163 8164 +f 8078 8164 8165 +f 8165 8164 8166 +f 8165 8166 8167 +f 8167 8168 8165 +f 8165 8168 8169 +f 8165 8169 8170 +f 8170 8169 8171 +f 8170 8171 8172 +f 8172 8171 8173 +f 8172 8173 8174 +f 8168 8175 8169 +f 8169 8175 8176 +f 8169 8176 8177 +f 8176 8175 8178 +f 8178 8175 8179 +f 8178 8179 8180 +f 8180 8179 8181 +f 8180 8181 8182 +f 8182 8181 8183 +f 8182 8183 8184 +f 8184 8183 8185 +f 8184 8185 8186 +f 8186 8185 8187 +f 8186 8187 8188 +f 8188 8187 8189 +f 8188 8189 8190 +f 8190 8189 8191 +f 8191 8189 8192 +f 8191 8192 8193 +f 8193 8192 8194 +f 8193 8194 8195 +f 8195 8194 8196 +f 8195 8196 8197 +f 8197 8196 8198 +f 8197 8198 8199 +f 8199 8198 8200 +f 8199 8200 8201 +f 8201 8200 8202 +f 8202 8200 3427 +f 8202 3427 3426 +f 8183 8203 8185 +f 8185 8203 8187 +f 8200 8204 3427 +f 3427 8204 8205 +f 3427 8205 8161 +f 7869 8120 7871 +f 7871 8120 8206 +f 7871 8206 8207 +f 8207 8208 7871 +f 7871 8208 8209 +f 7871 8209 7872 +f 7872 8209 7873 +f 7874 8210 90 +f 90 8210 8211 +f 90 8211 8212 +f 8212 8211 8213 +f 8212 8213 8214 +f 8214 8213 8215 +f 8214 8215 8212 +f 8212 8215 8216 +f 8212 8216 93 +f 93 8216 8217 +f 93 8217 95 +f 95 8217 8218 +f 95 8218 8219 +f 8217 8216 8220 +f 8220 8216 8218 +f 8220 8218 8217 +f 95 8219 8221 +f 8221 8219 8222 +f 8221 8222 8223 +f 8224 8225 8223 +f 8223 8225 8226 +f 8223 8226 8221 +f 8221 8226 8227 +f 8221 8227 8228 +f 8225 8224 8226 +f 8226 8224 8227 +f 8221 8228 68 +f 68 8228 8229 +f 68 8229 8230 +f 8230 8229 8231 +f 8230 8231 8232 +f 8232 8231 8233 +f 8232 8233 44 +f 44 8233 8234 +f 44 8234 8235 +f 8235 8234 8236 +f 8235 8236 8237 +f 8237 8236 8238 +f 8237 8238 8239 +f 8239 8238 8240 +f 8239 8240 8241 +f 8241 8240 8242 +f 8241 8242 8243 +f 8243 8242 8244 +f 8243 8244 3155 +f 3155 8244 3153 +f 8231 8229 8245 +f 8245 8229 8246 +f 8245 8246 8247 +f 8247 8152 8245 +f 8245 8152 8151 +f 8245 8151 8248 +f 8248 8151 8249 +f 8248 8249 8250 +f 8250 8249 8251 +f 8250 8251 8252 +f 8252 8251 8253 +f 8252 8253 8254 +f 8254 8253 8255 +f 8254 8255 8256 +f 8256 8255 8257 +f 8256 8257 8258 +f 8258 8257 8259 +f 8258 8259 3151 +f 3151 8259 3149 +f 8260 8261 3426 +f 3426 8261 8202 +f 8190 8186 8188 +f 8177 8171 8169 +f 8174 8262 8172 +f 8172 8262 8263 +f 8172 8263 8264 +f 8264 8263 8265 +f 8264 8265 3473 +f 3473 8265 8266 +f 3473 8266 8267 +f 8262 8268 8263 +f 8263 8268 8266 +f 8263 8266 8265 +f 8267 3474 3473 +f 252 3475 8269 +f 8269 3475 8270 +f 8269 8270 8271 +f 8271 8270 8272 +f 8271 8272 3470 +f 3470 8272 8270 +f 3467 3463 259 +f 3464 8273 3426 +f 3426 8273 8274 +f 3426 8274 8260 +f 2299 2298 1812 +f 1812 2298 1811 +f 1811 2298 2284 +f 1811 2284 1798 +f 1798 2284 2283 +f 1798 2283 1799 +f 1799 2283 2282 +f 1799 2282 1800 +f 1800 2282 2281 +f 1800 2281 1801 +f 1801 2281 1802 +f 1802 2281 2279 +f 1802 2279 1813 +f 1813 2279 2277 +f 1813 2277 1817 +f 1817 2277 2275 +f 1817 2275 1818 +f 1818 2275 2274 +f 1818 2274 1819 +f 1819 2274 2319 +f 1819 2319 2323 +f 2323 2322 1819 +f 1819 2322 5274 +f 1819 5274 1820 +f 1820 5274 1821 +f 1821 5274 1822 +f 1822 5274 1823 +f 1823 5274 1824 +f 5274 2322 8275 +f 8275 2322 2321 +f 8275 2321 2320 +f 2320 2318 8275 +f 8275 2318 2317 +f 8275 2317 5272 +f 5272 2317 2316 +f 5272 2316 8276 +f 8276 2316 8277 +f 8276 8277 8278 +f 8278 8277 4914 +f 8278 4914 4912 +f 2316 2315 8277 +f 8277 2315 2314 +f 8277 2314 2313 +f 2313 2312 8277 +f 8277 2312 2311 +f 8277 2311 4914 +f 4914 2311 2310 +f 4914 2310 2309 +f 2300 2301 6404 +f 5339 4676 4678 +f 307 305 4231 +f 4231 305 4286 +f 305 303 4286 +f 4280 301 8279 +f 8279 301 299 +f 8279 299 4280 +f 4280 299 4275 +f 299 298 4275 +f 4275 298 296 +f 4275 296 8280 +f 8280 296 8281 +f 8280 8281 294 +f 294 8281 296 +f 8280 294 8282 +f 8282 294 292 +f 8282 292 8283 +f 8283 292 291 +f 8283 291 327 +f 8283 327 8284 +f 8284 327 328 +f 8284 328 8283 +f 8283 328 8285 +f 8283 8285 8286 +f 8286 8285 8287 +f 8286 8287 8288 +f 8288 8287 8289 +f 8288 8289 4561 +f 4561 8289 4563 +f 328 329 8285 +f 8285 329 8290 +f 8285 8290 8291 +f 8291 8290 334 +f 8291 334 335 +f 329 331 8290 +f 8290 331 332 +f 8290 332 334 +f 335 336 8291 +f 8291 336 333 +f 8291 333 8292 +f 8292 333 345 +f 8292 345 8293 +f 8293 345 344 +f 8293 344 8294 +f 8294 344 343 +f 8294 343 342 +f 342 341 8294 +f 8294 341 8295 +f 8294 8295 8296 +f 8296 8295 8297 +f 8296 8297 8298 +f 8298 8297 8299 +f 8298 8299 8300 +f 8300 8299 8301 +f 8300 8301 8302 +f 8302 8301 8303 +f 8302 8303 8304 +f 8304 8303 8305 +f 8304 8305 8306 +f 8306 8305 8307 +f 8306 8307 8308 +f 8308 8307 8309 +f 8308 8309 8310 +f 8310 8309 8311 +f 8310 8311 8312 +f 8312 8311 8313 +f 8312 8313 8314 +f 8314 8313 8315 +f 8314 8315 8316 +f 8316 8315 8317 +f 8317 8315 8318 +f 8317 8318 8319 +f 8319 8318 8320 +f 8319 8320 8321 +f 8321 8320 8322 +f 8321 8322 8323 +f 8323 8322 8324 +f 8323 8324 8325 +f 8325 8324 8326 +f 8325 8326 8327 +f 8327 8326 8328 +f 8327 8328 8329 +f 8329 8328 8330 +f 8329 8330 8331 +f 8331 8330 8332 +f 8332 8330 8333 +f 8333 8330 8334 +f 8333 8334 8335 +f 8335 8334 8336 +f 8335 8336 8337 +f 8337 8336 8338 +f 8337 8338 8339 +f 8339 8338 310 +f 8339 310 309 +f 341 339 8295 +f 8295 339 338 +f 8295 338 8297 +f 8297 338 8340 +f 8297 8340 8299 +f 8299 8340 8341 +f 8299 8341 8301 +f 8301 8341 8342 +f 8301 8342 8303 +f 8303 8342 8343 +f 8303 8343 8305 +f 8305 8343 8344 +f 8305 8344 8307 +f 8307 8344 8345 +f 8307 8345 8309 +f 8309 8345 8346 +f 8309 8346 8311 +f 8311 8346 8347 +f 8311 8347 8313 +f 8313 8347 8348 +f 8313 8348 8315 +f 8315 8348 8318 +f 338 337 8340 +f 8340 337 324 +f 8340 324 323 +f 8340 323 8349 +f 8349 323 322 +f 8349 322 320 +f 8349 320 8350 +f 8350 320 318 +f 8350 318 8351 +f 8351 318 316 +f 8351 316 8352 +f 8352 316 315 +f 8352 315 313 +f 8352 313 8353 +f 8353 313 311 +f 8353 311 8338 +f 8338 311 310 +f 8331 8354 8329 +f 8329 8354 8355 +f 8329 8355 8327 +f 8327 8355 8356 +f 8327 8356 8325 +f 8325 8356 8357 +f 8325 8357 8323 +f 8323 8357 8358 +f 8323 8358 8321 +f 8321 8358 8359 +f 8321 8359 8319 +f 8319 8359 8360 +f 8319 8360 8317 +f 8354 8361 8355 +f 8355 8361 8362 +f 8355 8362 8363 +f 8363 8362 8364 +f 8363 8364 8365 +f 8365 8364 5081 +f 8365 5081 8366 +f 8366 5081 8367 +f 8366 8367 8368 +f 8368 8367 8369 +f 8368 8369 8370 +f 5081 5083 8367 +f 8367 5083 8369 +f 5083 5084 8369 +f 8360 8371 8370 +f 8370 8371 8372 +f 8370 8372 8368 +f 8368 8372 8373 +f 8368 8373 8366 +f 8366 8373 8365 +f 8314 8316 8374 +f 8374 8316 8375 +f 8374 8375 8376 +f 8376 8375 8377 +f 8376 8377 8378 +f 8378 8377 8379 +f 8378 8379 8380 +f 8380 8379 8381 +f 8380 8381 8382 +f 8382 8381 8383 +f 8382 8383 8384 +f 8384 8383 8385 +f 8384 8385 8386 +f 8386 8385 8387 +f 8386 8387 8388 +f 8388 8387 8389 +f 8388 8389 8390 +f 8390 8389 8391 +f 8390 8391 8392 +f 8392 8391 8393 +f 8392 8393 8394 +f 8394 8393 8395 +f 8394 8395 8396 +f 8396 8395 8397 +f 8396 8397 8398 +f 8398 8397 8399 +f 8398 8399 8400 +f 8400 8399 8401 +f 8400 8401 8402 +f 8402 8401 8403 +f 8402 8403 8404 +f 8404 8403 8405 +f 8404 8405 8406 +f 8406 8405 8407 +f 8406 8407 8408 +f 8408 8407 8409 +f 8408 8409 4571 +f 4571 8409 4573 +f 8375 8410 8377 +f 8377 8410 8411 +f 8377 8411 8379 +f 8379 8411 8412 +f 8379 8412 8381 +f 8381 8412 8413 +f 8381 8413 8383 +f 8383 8413 8414 +f 8383 8414 8385 +f 8385 8414 8415 +f 8385 8415 8387 +f 8387 8415 8416 +f 8387 8416 8389 +f 8389 8416 8417 +f 8389 8417 8391 +f 8391 8417 8418 +f 8391 8418 8393 +f 8393 8418 8419 +f 8393 8419 8395 +f 8395 8419 8420 +f 8395 8420 8397 +f 8397 8420 8421 +f 8397 8421 8399 +f 8399 8421 8422 +f 8399 8422 8401 +f 8401 8422 8423 +f 8401 8423 8403 +f 8403 8423 8424 +f 8403 8424 8405 +f 8405 8424 8425 +f 8405 8425 8407 +f 8407 8425 8426 +f 8407 8426 8409 +f 8409 8426 8427 +f 8409 8427 4573 +f 4573 8427 4575 +f 8428 8429 8410 +f 8410 8429 8430 +f 8410 8430 8411 +f 8411 8430 8412 +f 8431 8432 8428 +f 8428 8432 2871 +f 8428 2871 8429 +f 8429 2871 8433 +f 8429 8433 8430 +f 8430 8433 8434 +f 8430 8434 8412 +f 8412 8434 8435 +f 8412 8435 8413 +f 8413 8435 8436 +f 8413 8436 8414 +f 8414 8436 8437 +f 8414 8437 8415 +f 8415 8437 8438 +f 8415 8438 8439 +f 8440 8441 8431 +f 8431 8441 8442 +f 8431 8442 8432 +f 8432 8442 2870 +f 8432 2870 2871 +f 8443 8444 8440 +f 8440 8444 8445 +f 8440 8445 8441 +f 8441 8445 8446 +f 8441 8446 8447 +f 8447 8446 2868 +f 8447 2868 2869 +f 8448 8449 8443 +f 8443 8449 8450 +f 8443 8450 8444 +f 8444 8450 8451 +f 8444 8451 8452 +f 8452 8451 8453 +f 8452 8453 8454 +f 8454 8453 8455 +f 8454 8455 2867 +f 2867 8455 2866 +f 2866 8455 8456 +f 2866 8456 2865 +f 2865 8456 2812 +f 2812 8456 8457 +f 2812 8457 2813 +f 2813 8457 8458 +f 2813 8458 2873 +f 2873 8458 8459 +f 2873 8459 2875 +f 2875 8459 8460 +f 2875 8460 2877 +f 2877 8460 8461 +f 2877 8461 2883 +f 2883 8461 8462 +f 2883 8462 2887 +f 2887 8462 8463 +f 2887 8463 8464 +f 8464 8463 8465 +f 8464 8465 2896 +f 2896 8465 2901 +f 2901 8465 8466 +f 2901 8466 8467 +f 8467 8466 8423 +f 8467 8423 8422 +f 8468 8469 8448 +f 8448 8469 8470 +f 8448 8470 8449 +f 8449 8470 8471 +f 8449 8471 8472 +f 8472 8471 8473 +f 8472 8473 8474 +f 8474 8473 8475 +f 8474 8475 8476 +f 8476 8475 8477 +f 8476 8477 8456 +f 8456 8477 8457 +f 8478 8479 8468 +f 8468 8479 8480 +f 8468 8480 8481 +f 8481 8480 8482 +f 8481 8482 8483 +f 8483 8482 8484 +f 8483 8484 8485 +f 8485 8484 8486 +f 8485 8486 8487 +f 8487 8486 8488 +f 8487 8488 8489 +f 8489 8488 8490 +f 8489 8490 8491 +f 8491 8490 8492 +f 8491 8492 8493 +f 8493 8492 8494 +f 8493 8494 8459 +f 8459 8494 8495 +f 8459 8495 8461 +f 8461 8495 8462 +f 8496 8497 8478 +f 8478 8497 8498 +f 8478 8498 8499 +f 8499 8498 8500 +f 8499 8500 8501 +f 8501 8500 8502 +f 8501 8502 8503 +f 8503 8502 8504 +f 8503 8504 8505 +f 8505 8504 8506 +f 8505 8506 8507 +f 8507 8506 8508 +f 8507 8508 8509 +f 8509 8508 8510 +f 8509 8510 8511 +f 8511 8510 8512 +f 8511 8512 8513 +f 8513 8512 8514 +f 8513 8514 8515 +f 8515 8514 8516 +f 8515 8516 8517 +f 8517 8516 8518 +f 8517 8518 8519 +f 8519 8518 8520 +f 8519 8520 8521 +f 8521 8520 8522 +f 8521 8522 8523 +f 8523 8522 8524 +f 8523 8524 8525 +f 8525 8524 8526 +f 8525 8526 8426 +f 8426 8526 8427 +f 8527 8528 8496 +f 8496 8528 8529 +f 8496 8529 8497 +f 8497 8529 8530 +f 8497 8530 8531 +f 8531 8530 8532 +f 8531 8532 8533 +f 8533 8532 8534 +f 8533 8534 8535 +f 8535 8534 8536 +f 8535 8536 8537 +f 8537 8536 8538 +f 8537 8538 8539 +f 8539 8538 8540 +f 8539 8540 8541 +f 8541 8540 8542 +f 8541 8542 8543 +f 8543 8542 8544 +f 8543 8544 8545 +f 8545 8544 8546 +f 8545 8546 8547 +f 8547 8546 8548 +f 8547 8548 8549 +f 8549 8548 8550 +f 8549 8550 8551 +f 8551 8550 8552 +f 8551 8552 8553 +f 8553 8552 8554 +f 8553 8554 8555 +f 8555 8554 8556 +f 8555 8556 8557 +f 8557 8556 8558 +f 8557 8558 8559 +f 8559 8558 4577 +f 8559 4577 4575 +f 8560 8561 8527 +f 8527 8561 8562 +f 8527 8562 8563 +f 8563 8562 8564 +f 8563 8564 8565 +f 8565 8564 8566 +f 8565 8566 8567 +f 8567 8566 8568 +f 8567 8568 8569 +f 8569 8568 8570 +f 8569 8570 8571 +f 8571 8570 8572 +f 8571 8572 8573 +f 8573 8572 8574 +f 8573 8574 8575 +f 8575 8574 8576 +f 8575 8576 8577 +f 8577 8576 8578 +f 8577 8578 8579 +f 8579 8578 8580 +f 8579 8580 8581 +f 8581 8580 537 +f 8581 537 534 +f 8582 8583 8560 +f 8560 8583 8584 +f 8560 8584 8561 +f 8561 8584 8585 +f 8561 8585 8586 +f 8586 8585 8587 +f 8586 8587 8588 +f 8588 8587 8589 +f 8588 8589 8590 +f 8590 8589 8591 +f 8590 8591 8592 +f 8592 8591 8593 +f 8592 8593 8594 +f 8594 8593 8595 +f 8594 8595 8596 +f 8596 8595 8597 +f 8596 8597 8598 +f 8598 8597 8599 +f 8598 8599 8600 +f 8600 8599 8601 +f 8600 8601 8602 +f 8602 8601 541 +f 8602 541 540 +f 8603 8604 8582 +f 8582 8604 8605 +f 8582 8605 8583 +f 8583 8605 8606 +f 8583 8606 8607 +f 8607 8606 8608 +f 8607 8608 8609 +f 8609 8608 8610 +f 8609 8610 8611 +f 8611 8610 8612 +f 8611 8612 8613 +f 8613 8612 8614 +f 8613 8614 8615 +f 8615 8614 8616 +f 8615 8616 8617 +f 8617 8616 8618 +f 8617 8618 8619 +f 8619 8618 8620 +f 8619 8620 8621 +f 8621 8620 8622 +f 8621 8622 8623 +f 8623 8622 473 +f 8623 473 475 +f 8624 8625 8603 +f 8603 8625 8626 +f 8603 8626 8627 +f 8627 8626 8628 +f 8627 8628 8629 +f 8629 8628 8630 +f 8629 8630 8631 +f 8631 8630 8632 +f 8631 8632 8633 +f 8633 8632 8634 +f 8633 8634 8635 +f 8635 8634 8636 +f 8635 8636 8637 +f 8637 8636 8638 +f 8637 8638 8639 +f 8639 8638 8640 +f 8639 8640 8641 +f 8641 8640 8642 +f 8641 8642 8643 +f 8643 8642 8644 +f 8643 8644 8645 +f 8645 8644 542 +f 8645 542 470 +f 8646 8647 8624 +f 8624 8647 8648 +f 8624 8648 8625 +f 8625 8648 8649 +f 8625 8649 8650 +f 8650 8649 8651 +f 8650 8651 8652 +f 8652 8651 8653 +f 8652 8653 8654 +f 8654 8653 8655 +f 8654 8655 8656 +f 8656 8655 8657 +f 8656 8657 8658 +f 8658 8657 8659 +f 8658 8659 8660 +f 8660 8659 8661 +f 8660 8661 8662 +f 8662 8661 8663 +f 8662 8663 8664 +f 8664 8663 8665 +f 8664 8665 8666 +f 8666 8665 545 +f 8666 545 543 +f 8667 8668 8646 +f 8646 8668 8669 +f 8646 8669 8670 +f 8670 8669 8671 +f 8670 8671 8672 +f 8672 8671 8673 +f 8672 8673 8674 +f 8674 8673 8675 +f 8674 8675 8676 +f 8676 8675 8677 +f 8676 8677 8678 +f 8678 8677 8679 +f 8678 8679 8680 +f 8680 8679 8681 +f 8680 8681 8682 +f 8682 8681 8683 +f 8682 8683 8684 +f 8684 8683 8685 +f 8684 8685 8686 +f 8686 8685 8687 +f 8686 8687 8688 +f 8688 8687 551 +f 8688 551 549 +f 8689 8690 8667 +f 8667 8690 8691 +f 8667 8691 8692 +f 8692 8691 8693 +f 8692 8693 8694 +f 8694 8693 8695 +f 8694 8695 8696 +f 8696 8695 8697 +f 8696 8697 8698 +f 8698 8697 8699 +f 8698 8699 8700 +f 8700 8699 8701 +f 8700 8701 8702 +f 8702 8701 8703 +f 8702 8703 8704 +f 8704 8703 8705 +f 8704 8705 8706 +f 8706 8705 8707 +f 8706 8707 8708 +f 8708 8707 8709 +f 8708 8709 8710 +f 8710 8709 407 +f 8710 407 406 +f 8711 8712 8689 +f 8689 8712 8713 +f 8689 8713 8714 +f 8714 8713 8715 +f 8714 8715 8716 +f 8716 8715 8717 +f 8716 8717 8718 +f 8718 8717 8719 +f 8718 8719 8720 +f 8720 8719 8721 +f 8720 8721 8722 +f 8722 8721 8723 +f 8722 8723 8724 +f 8724 8723 8725 +f 8724 8725 8726 +f 8726 8725 8727 +f 8726 8727 8728 +f 8728 8727 8729 +f 8728 8729 8730 +f 8730 8729 8731 +f 8730 8731 8732 +f 8732 8731 8733 +f 8732 8733 413 +f 413 8733 414 +f 414 8733 415 +f 415 8733 416 +f 416 8733 417 +f 417 8733 8734 +f 417 8734 418 +f 418 8734 419 +f 419 8734 420 +f 420 8734 8735 +f 420 8735 8736 +f 8736 8735 8737 +f 8736 8737 8738 +f 8738 8737 8739 +f 8738 8739 8740 +f 8740 8739 8741 +f 8740 8741 8742 +f 8742 8741 8743 +f 8742 8743 8744 +f 8744 8743 5014 +f 8744 5014 5012 +f 8745 8746 8711 +f 8711 8746 8747 +f 8711 8747 8748 +f 8748 8747 8749 +f 8748 8749 8750 +f 8750 8749 8751 +f 8750 8751 8752 +f 8752 8751 8753 +f 8752 8753 8754 +f 8754 8753 8755 +f 8754 8755 8756 +f 8756 8755 8757 +f 8756 8757 8758 +f 8758 8757 8759 +f 8758 8759 8760 +f 8760 8759 8761 +f 8760 8761 8762 +f 8762 8761 8763 +f 8762 8763 8764 +f 8764 8763 8765 +f 8764 8765 8766 +f 8766 8765 8767 +f 8766 8767 8768 +f 8768 8767 8769 +f 8768 8769 8770 +f 8770 8769 8771 +f 8770 8771 8735 +f 8735 8771 8772 +f 8735 8772 8737 +f 8737 8772 8773 +f 8737 8773 8739 +f 8739 8773 8774 +f 8739 8774 8741 +f 8741 8774 8775 +f 8741 8775 8743 +f 8743 8775 5016 +f 8743 5016 5014 +f 8776 8777 8745 +f 8745 8777 8778 +f 8745 8778 8746 +f 8746 8778 8779 +f 8746 8779 8780 +f 8780 8779 8781 +f 8780 8781 8782 +f 8782 8781 8783 +f 8782 8783 8784 +f 8784 8783 8785 +f 8784 8785 8786 +f 8786 8785 8787 +f 8786 8787 8788 +f 8788 8787 8789 +f 8788 8789 8790 +f 8790 8789 8791 +f 8790 8791 8792 +f 8792 8791 8793 +f 8792 8793 8794 +f 8794 8793 8795 +f 8794 8795 8796 +f 8796 8795 8797 +f 8796 8797 8798 +f 8798 8797 8799 +f 8798 8799 8800 +f 8800 8799 8801 +f 8800 8801 8802 +f 8802 8801 8803 +f 8802 8803 8804 +f 8804 8803 8805 +f 8804 8805 8806 +f 8806 8805 8807 +f 8806 8807 8808 +f 8808 8807 8809 +f 8808 8809 8810 +f 8810 8809 5020 +f 8810 5020 5018 +f 8811 8812 8776 +f 8776 8812 8813 +f 8776 8813 8777 +f 8777 8813 8814 +f 8777 8814 8815 +f 8815 8814 8816 +f 8815 8816 8817 +f 8817 8816 8818 +f 8817 8818 8819 +f 8819 8818 8820 +f 8819 8820 8821 +f 8821 8820 8822 +f 8821 8822 8823 +f 8823 8822 8824 +f 8823 8824 8825 +f 8825 8824 8826 +f 8825 8826 8827 +f 8827 8826 8828 +f 8827 8828 8829 +f 8829 8828 8830 +f 8829 8830 8831 +f 8831 8830 8832 +f 8831 8832 8833 +f 8833 8832 8834 +f 8833 8834 8835 +f 8835 8834 8836 +f 8835 8836 8837 +f 8837 8836 8838 +f 8837 8838 8839 +f 8839 8838 8840 +f 8839 8840 8841 +f 8841 8840 8842 +f 8841 8842 8843 +f 8843 8842 8844 +f 8843 8844 8845 +f 8845 8844 5024 +f 8845 5024 5022 +f 8846 8847 8811 +f 8811 8847 8848 +f 8811 8848 8812 +f 8812 8848 8849 +f 8812 8849 8850 +f 8850 8849 8851 +f 8850 8851 8852 +f 8852 8851 8853 +f 8852 8853 8854 +f 8854 8853 8855 +f 8854 8855 8856 +f 8856 8855 8857 +f 8856 8857 8858 +f 8858 8857 8859 +f 8858 8859 8860 +f 8860 8859 8861 +f 8860 8861 8862 +f 8862 8861 8863 +f 8862 8863 8864 +f 8864 8863 8865 +f 8864 8865 8866 +f 8866 8865 8867 +f 8866 8867 8868 +f 8868 8867 8869 +f 8868 8869 8870 +f 8870 8869 8871 +f 8870 8871 8872 +f 8872 8871 8873 +f 8872 8873 8874 +f 8874 8873 8875 +f 8874 8875 8876 +f 8876 8875 8877 +f 8876 8877 8878 +f 8878 8877 8879 +f 8878 8879 8880 +f 8880 8879 5028 +f 8880 5028 5026 +f 8881 8882 8846 +f 8846 8882 8883 +f 8846 8883 8847 +f 8847 8883 8884 +f 8847 8884 8885 +f 8885 8884 8886 +f 8885 8886 8887 +f 8887 8886 8888 +f 8887 8888 8889 +f 8889 8888 8890 +f 8889 8890 8891 +f 8891 8890 8892 +f 8891 8892 8893 +f 8893 8892 8894 +f 8893 8894 8895 +f 8895 8894 8896 +f 8895 8896 8897 +f 8897 8896 8898 +f 8897 8898 8899 +f 8899 8898 8900 +f 8899 8900 8901 +f 8901 8900 8902 +f 8901 8902 8903 +f 8903 8902 8904 +f 8903 8904 8905 +f 8905 8904 8906 +f 8905 8906 8907 +f 8907 8906 8908 +f 8907 8908 8909 +f 8909 8908 8910 +f 8909 8910 8911 +f 8911 8910 8912 +f 8911 8912 8913 +f 8913 8912 8914 +f 8913 8914 8915 +f 8915 8914 5032 +f 8915 5032 5030 +f 8916 8917 8881 +f 8881 8917 8918 +f 8881 8918 8882 +f 8882 8918 8919 +f 8882 8919 8920 +f 8920 8919 8921 +f 8920 8921 8922 +f 8922 8921 8923 +f 8922 8923 8924 +f 8924 8923 8925 +f 8924 8925 8926 +f 8926 8925 8927 +f 8926 8927 8928 +f 8928 8927 8929 +f 8928 8929 8930 +f 8930 8929 8931 +f 8930 8931 8932 +f 8932 8931 8933 +f 8932 8933 8934 +f 8934 8933 8935 +f 8934 8935 8936 +f 8936 8935 8937 +f 8936 8937 8938 +f 8938 8937 8939 +f 8938 8939 8940 +f 8940 8939 8941 +f 8940 8941 8942 +f 8942 8941 8943 +f 8942 8943 8944 +f 8944 8943 8945 +f 8944 8945 8946 +f 8946 8945 8947 +f 8946 8947 8948 +f 8948 8947 8949 +f 8948 8949 8950 +f 8950 8949 5036 +f 8950 5036 5034 +f 5085 5087 8916 +f 8916 5087 8951 +f 8916 8951 8917 +f 8917 8951 8952 +f 8917 8952 8953 +f 8953 8952 8954 +f 8953 8954 8955 +f 8955 8954 8956 +f 8955 8956 8957 +f 8957 8956 8958 +f 8957 8958 8959 +f 8959 8958 8960 +f 8959 8960 8961 +f 8961 8960 8962 +f 8961 8962 8963 +f 8963 8962 8964 +f 8963 8964 8965 +f 8965 8964 8966 +f 8965 8966 8967 +f 8967 8966 8968 +f 8967 8968 8969 +f 8969 8968 8970 +f 8969 8970 8971 +f 8971 8970 8972 +f 8971 8972 8973 +f 8973 8972 8974 +f 8973 8974 8975 +f 8975 8974 8976 +f 8975 8976 8977 +f 8977 8976 8978 +f 8977 8978 8979 +f 8979 8978 8980 +f 8979 8980 8981 +f 8981 8980 8982 +f 8981 8982 8983 +f 8983 8982 5040 +f 8983 5040 5038 +f 5081 8364 5079 +f 5079 8364 8984 +f 5079 8984 5077 +f 5077 8984 8985 +f 5077 8985 5075 +f 5075 8985 8986 +f 5075 8986 5073 +f 5073 8986 8987 +f 5073 8987 5071 +f 5071 8987 8988 +f 5071 8988 5069 +f 5069 8988 8989 +f 5069 8989 5067 +f 5067 8989 8990 +f 5067 8990 5065 +f 5065 8990 8991 +f 5065 8991 5063 +f 5063 8991 8992 +f 5063 8992 5061 +f 5061 8992 8993 +f 5061 8993 5059 +f 5059 8993 8994 +f 5059 8994 5057 +f 5057 8994 8995 +f 5057 8995 5055 +f 5055 8995 8996 +f 5055 8996 5053 +f 5053 8996 8997 +f 5053 8997 5051 +f 5051 8997 8998 +f 5051 8998 5049 +f 5049 8998 8999 +f 5049 8999 5047 +f 5047 8999 9000 +f 5047 9000 9001 +f 9001 9000 9002 +f 9001 9002 9003 +f 9003 9002 9004 +f 9003 9004 9005 +f 9005 9004 9006 +f 9005 9006 9007 +f 9007 9006 9008 +f 9007 9008 9009 +f 9009 9008 9010 +f 9009 9010 9011 +f 9011 9010 9012 +f 9011 9012 9013 +f 9013 9012 9014 +f 9013 9014 9015 +f 9015 9014 9016 +f 9015 9016 9017 +f 9017 9016 9018 +f 9017 9018 9019 +f 9019 9018 9020 +f 9019 9020 9021 +f 9021 9020 9022 +f 9021 9022 9023 +f 9023 9022 9024 +f 9023 9024 9025 +f 9025 9024 9026 +f 9025 9026 9027 +f 9027 9026 9028 +f 9027 9028 9029 +f 9029 9028 9030 +f 9029 9030 9031 +f 9031 9030 9032 +f 9031 9032 9033 +f 9033 9032 9034 +f 9033 9034 9035 +f 9035 9034 9036 +f 9035 9036 9037 +f 9037 9036 9038 +f 9037 9038 9039 +f 9039 9038 9040 +f 9039 9040 9041 +f 9041 9040 9042 +f 9041 9042 9043 +f 9043 9042 9044 +f 9043 9044 4986 +f 4986 9044 5364 +f 8364 8362 8984 +f 8984 8362 9045 +f 8984 9045 8985 +f 8985 9045 9046 +f 8985 9046 8986 +f 8986 9046 9047 +f 8986 9047 8987 +f 8987 9047 9048 +f 8987 9048 8988 +f 8988 9048 9049 +f 8988 9049 8989 +f 8989 9049 9050 +f 8989 9050 8990 +f 8990 9050 9051 +f 8990 9051 8991 +f 8991 9051 9052 +f 8991 9052 8992 +f 8992 9052 9053 +f 8992 9053 8993 +f 8993 9053 9054 +f 8993 9054 8994 +f 8994 9054 9055 +f 8994 9055 8995 +f 8995 9055 9056 +f 8995 9056 8996 +f 8996 9056 9057 +f 8996 9057 8997 +f 8997 9057 9058 +f 8997 9058 8998 +f 8998 9058 9059 +f 8998 9059 8999 +f 8999 9059 9060 +f 8999 9060 9000 +f 9000 9060 9061 +f 9000 9061 9002 +f 9002 9061 9062 +f 9002 9062 9063 +f 9063 9062 9064 +f 9063 9064 9065 +f 9065 9064 9066 +f 9065 9066 9067 +f 9067 9066 9068 +f 9067 9068 9069 +f 9069 9068 9070 +f 9069 9070 9071 +f 9071 9070 9072 +f 9071 9072 9073 +f 9073 9072 9074 +f 9073 9074 9075 +f 9075 9074 9076 +f 9075 9076 9077 +f 9077 9076 9078 +f 9077 9078 9079 +f 9079 9078 9080 +f 9079 9080 9081 +f 9081 9080 9082 +f 9081 9082 9083 +f 9083 9082 9084 +f 9083 9084 9085 +f 9085 9084 9086 +f 9085 9086 9087 +f 9087 9086 9088 +f 9087 9088 9089 +f 9089 9088 9090 +f 9089 9090 9091 +f 9091 9090 9092 +f 9091 9092 9093 +f 9093 9092 9094 +f 9093 9094 9095 +f 9095 9094 9096 +f 9095 9096 9097 +f 9097 9096 9098 +f 9097 9098 9099 +f 9099 9098 3326 +f 9099 3326 3324 +f 8362 8361 9045 +f 9045 8361 8354 +f 9045 8354 9100 +f 9100 8354 8331 +f 9100 8331 9101 +f 9101 8331 8332 +f 9101 8332 8333 +f 9101 8333 9102 +f 9102 8333 8335 +f 9102 8335 9103 +f 9103 8335 8337 +f 9103 8337 9104 +f 9104 8337 8339 +f 9104 8339 309 +f 309 354 9104 +f 9104 354 9105 +f 9104 9105 9103 +f 9103 9105 9106 +f 9103 9106 9102 +f 9102 9106 9107 +f 9102 9107 9101 +f 9101 9107 9108 +f 9101 9108 9100 +f 9100 9108 9046 +f 9100 9046 9045 +f 354 355 9105 +f 9105 355 9109 +f 9105 9109 9106 +f 9106 9109 9110 +f 9106 9110 9107 +f 9107 9110 9111 +f 9107 9111 9108 +f 9108 9111 9047 +f 9108 9047 9046 +f 355 398 9109 +f 9109 398 9112 +f 9109 9112 9110 +f 9110 9112 9113 +f 9110 9113 9111 +f 9111 9113 9048 +f 9111 9048 9047 +f 398 395 9112 +f 9112 395 9114 +f 9112 9114 9113 +f 9113 9114 9049 +f 9113 9049 9048 +f 395 386 9114 +f 9114 386 385 +f 9114 385 394 +f 9114 394 9050 +f 9050 394 393 +f 9050 393 392 +f 392 391 9050 +f 9050 391 9051 +f 391 390 9051 +f 9051 390 389 +f 9051 389 388 +f 9051 388 9115 +f 9115 388 387 +f 9115 387 9116 +f 9116 387 381 +f 9116 381 379 +f 9116 379 9117 +f 9117 379 378 +f 9117 378 9118 +f 9118 378 365 +f 9118 365 366 +f 366 367 9118 +f 9118 367 369 +f 9118 369 9119 +f 9119 369 9120 +f 9119 9120 9121 +f 9121 9120 9122 +f 9121 9122 9123 +f 9123 9122 9124 +f 9123 9124 9125 +f 9125 9124 9126 +f 9125 9126 9127 +f 9127 9126 9128 +f 9127 9128 9129 +f 9129 9128 9130 +f 9129 9130 9131 +f 9131 9130 9132 +f 9131 9132 9133 +f 9133 9132 9134 +f 9133 9134 9135 +f 9135 9134 9136 +f 9135 9136 9137 +f 9137 9136 5341 +f 9137 5341 2330 +f 2330 5341 2331 +f 2331 5341 2301 +f 9120 369 9138 +f 9138 369 370 +f 9138 370 371 +f 373 9139 371 +f 371 9139 9120 +f 371 9120 9138 +f 9139 373 9140 +f 9140 373 375 +f 9140 375 9139 +f 9139 375 9141 +f 9139 9141 9142 +f 9142 9141 9143 +f 9142 9143 9144 +f 9144 9143 9145 +f 9144 9145 9146 +f 9146 9145 9147 +f 9146 9147 9148 +f 9148 9147 9149 +f 9148 9149 9150 +f 9150 9149 9151 +f 9150 9151 9152 +f 9152 9151 4676 +f 9152 4676 5339 +f 9141 375 9153 +f 9153 375 376 +f 9153 376 9141 +f 9141 376 9154 +f 9141 9154 9143 +f 9143 9154 9155 +f 9143 9155 9145 +f 9145 9155 9156 +f 9145 9156 9147 +f 9147 9156 9157 +f 9147 9157 9149 +f 9149 9157 4665 +f 9149 4665 4676 +f 376 346 9154 +f 9154 346 4231 +f 9154 4231 9155 +f 9155 4231 4233 +f 9155 4233 9156 +f 9156 4233 9157 +f 346 307 4231 +f 4233 4665 9157 +f 5341 9136 5339 +f 5339 9136 9158 +f 5339 9158 9152 +f 9152 9158 9134 +f 9152 9134 9132 +f 9137 2330 9159 +f 9159 2330 2329 +f 9159 2329 2336 +f 2336 2338 9159 +f 9159 2338 9160 +f 9159 9160 9161 +f 9161 9160 2340 +f 9161 2340 2341 +f 2338 2339 9160 +f 9160 2339 2340 +f 2341 2337 9161 +f 9161 2337 9162 +f 9161 9162 9163 +f 9163 9162 9164 +f 9163 9164 9165 +f 9165 9164 9166 +f 9165 9166 9167 +f 9167 9166 9168 +f 9167 9168 9169 +f 9169 9168 9170 +f 9169 9170 9171 +f 9171 9170 9172 +f 9171 9172 9173 +f 9173 9172 9174 +f 9173 9174 9175 +f 9175 9174 9176 +f 9175 9176 9177 +f 9177 9176 9178 +f 9177 9178 9179 +f 9179 9178 9180 +f 9179 9180 9181 +f 9181 9180 9182 +f 9181 9182 9183 +f 9183 9182 9184 +f 9183 9184 9185 +f 9185 9184 9186 +f 9185 9186 9187 +f 9187 9186 9188 +f 9187 9188 9189 +f 9189 9188 9190 +f 9189 9190 9191 +f 9191 9190 3356 +f 9191 3356 3354 +f 2337 2332 9162 +f 9162 2332 2335 +f 9162 2335 9192 +f 9192 2335 2334 +f 9192 2334 2333 +f 2333 2328 9192 +f 9192 2328 2327 +f 9192 2327 9193 +f 9193 2327 1838 +f 9193 1838 1845 +f 2327 2326 1838 +f 1838 2326 2325 +f 1838 2325 1839 +f 1839 2325 2324 +f 1839 2324 1840 +f 1840 2324 2299 +f 1840 2299 1812 +f 1845 1847 9193 +f 9193 1847 1848 +f 9193 1848 1849 +f 1849 1850 9193 +f 9193 1850 9194 +f 9193 9194 9192 +f 9192 9194 9162 +f 1850 1846 9194 +f 9194 1846 1841 +f 9194 1841 9195 +f 9195 1841 1844 +f 9195 1844 9196 +f 9196 1844 1843 +f 9196 1843 1842 +f 1842 1837 9196 +f 9196 1837 1836 +f 9196 1836 1835 +f 1835 1834 9196 +f 9196 1834 1833 +f 9196 1833 9197 +f 9197 1833 6821 +f 9197 6821 7025 +f 1833 1810 6821 +f 9197 7025 9198 +f 9198 7025 7026 +f 9198 7026 9199 +f 9199 7026 7117 +f 9199 7117 9200 +f 9200 7117 7118 +f 9200 7118 9201 +f 9201 7118 9202 +f 9201 9202 9203 +f 9203 9202 7452 +f 9203 7452 9204 +f 9204 7452 7453 +f 9204 7453 9205 +f 9205 7453 7669 +f 9205 7669 9206 +f 9206 7669 7671 +f 9206 7671 9207 +f 9207 7671 7866 +f 9207 7866 9208 +f 9208 7866 7868 +f 9208 7868 9209 +f 9209 7868 7870 +f 9209 7870 9210 +f 9210 7870 91 +f 9210 91 144 +f 144 152 9210 +f 9210 152 9211 +f 9210 9211 9209 +f 9209 9211 9212 +f 9209 9212 9208 +f 9208 9212 9213 +f 9208 9213 9207 +f 9207 9213 9214 +f 9207 9214 9206 +f 9206 9214 9215 +f 9206 9215 9205 +f 9205 9215 9216 +f 9205 9216 9204 +f 9204 9216 9217 +f 9204 9217 9203 +f 9203 9217 9218 +f 9203 9218 9201 +f 9201 9218 9219 +f 9201 9219 9220 +f 9220 9219 9221 +f 9220 9221 9222 +f 9222 9221 9223 +f 9222 9223 9224 +f 9224 9223 9225 +f 9224 9225 9226 +f 9226 9225 9227 +f 9226 9227 9195 +f 9195 9227 9228 +f 9195 9228 9194 +f 9194 9228 9164 +f 9194 9164 9162 +f 152 151 9211 +f 9211 151 150 +f 9211 150 149 +f 149 148 9211 +f 9211 148 3382 +f 9211 3382 9212 +f 9212 3382 9229 +f 9212 9229 9213 +f 9213 9229 9230 +f 9213 9230 9214 +f 9214 9230 9231 +f 9214 9231 9215 +f 9215 9231 9232 +f 9215 9232 9216 +f 9216 9232 9233 +f 9216 9233 9217 +f 9217 9233 9234 +f 9217 9234 9218 +f 9218 9234 9235 +f 9218 9235 9219 +f 9219 9235 9236 +f 9219 9236 9221 +f 9221 9236 9237 +f 9221 9237 9223 +f 9223 9237 9238 +f 9223 9238 9225 +f 9225 9238 9239 +f 9225 9239 9227 +f 9227 9239 9240 +f 9227 9240 9228 +f 9228 9240 9166 +f 9228 9166 9164 +f 148 147 3382 +f 146 145 3383 +f 3383 145 140 +f 3383 140 9241 +f 9241 140 9242 +f 9241 9242 9243 +f 9243 9242 9244 +f 9243 9244 9245 +f 9245 9244 9246 +f 9245 9246 9247 +f 9247 9246 9248 +f 9247 9248 9249 +f 9249 9248 9250 +f 9249 9250 9251 +f 9251 9250 9252 +f 9251 9252 9253 +f 9253 9252 9254 +f 9253 9254 9255 +f 9255 9254 9256 +f 9255 9256 9257 +f 9257 9256 9258 +f 9257 9258 9259 +f 9259 9258 9260 +f 9259 9260 9261 +f 9261 9260 9262 +f 9261 9262 9263 +f 9263 9262 9264 +f 9263 9264 9265 +f 9265 9264 9266 +f 9265 9266 9267 +f 9267 9266 9268 +f 9267 9268 9269 +f 9269 9268 9270 +f 9269 9270 9271 +f 9271 9270 9272 +f 9271 9272 9273 +f 9273 9272 9274 +f 9273 9274 9275 +f 9275 9274 9276 +f 9275 9276 9277 +f 9277 9276 9278 +f 9277 9278 9279 +f 9279 9278 9280 +f 9279 9280 9281 +f 9281 9280 9282 +f 9281 9282 9283 +f 9283 9282 9284 +f 9283 9284 9285 +f 140 130 9242 +f 9242 130 9286 +f 9242 9286 9244 +f 9244 9286 9287 +f 9244 9287 9246 +f 9246 9287 9288 +f 9246 9288 9248 +f 9248 9288 9289 +f 9248 9289 9250 +f 9250 9289 9290 +f 9250 9290 9252 +f 9252 9290 9291 +f 9252 9291 9254 +f 9254 9291 9292 +f 9254 9292 9256 +f 9256 9292 9293 +f 9256 9293 9258 +f 9258 9293 9294 +f 9258 9294 9260 +f 9260 9294 9295 +f 9260 9295 9262 +f 9262 9295 9296 +f 9262 9296 9264 +f 9264 9296 9297 +f 9264 9297 9266 +f 9266 9297 9298 +f 9266 9298 9268 +f 9268 9298 9299 +f 9268 9299 9270 +f 9270 9299 9300 +f 9270 9300 9272 +f 9272 9300 9301 +f 9272 9301 9274 +f 9274 9301 9302 +f 9274 9302 9276 +f 9276 9302 9303 +f 9276 9303 9278 +f 9278 9303 9304 +f 9278 9304 9280 +f 9280 9304 9305 +f 9280 9305 9282 +f 9282 9305 9306 +f 9282 9306 9284 +f 130 129 9286 +f 9286 129 9307 +f 9286 9307 9287 +f 9287 9307 9308 +f 9287 9308 9288 +f 9288 9308 9309 +f 9288 9309 9289 +f 9289 9309 9310 +f 9289 9310 9290 +f 9290 9310 9311 +f 9290 9311 9291 +f 9291 9311 9312 +f 9291 9312 9292 +f 9292 9312 9313 +f 9292 9313 9293 +f 9293 9313 9314 +f 9293 9314 9294 +f 9294 9314 9315 +f 9294 9315 9295 +f 9295 9315 9316 +f 9295 9316 9296 +f 9296 9316 9317 +f 9296 9317 9297 +f 9297 9317 9318 +f 9297 9318 9298 +f 9298 9318 9319 +f 9298 9319 9299 +f 9299 9319 9320 +f 9299 9320 9300 +f 9300 9320 9321 +f 9300 9321 9301 +f 9301 9321 9322 +f 9301 9322 9302 +f 9302 9322 9323 +f 9302 9323 9303 +f 9303 9323 9324 +f 9303 9324 9304 +f 9304 9324 9325 +f 9304 9325 9305 +f 9305 9325 9326 +f 9305 9326 9306 +f 129 138 9307 +f 9307 138 9327 +f 9307 9327 9308 +f 9308 9327 9328 +f 9308 9328 9309 +f 9309 9328 9329 +f 9309 9329 9310 +f 9310 9329 9330 +f 9310 9330 9311 +f 9311 9330 9331 +f 9311 9331 9312 +f 9312 9331 9332 +f 9312 9332 9313 +f 9313 9332 9333 +f 9313 9333 9314 +f 9314 9333 9334 +f 9314 9334 9315 +f 9315 9334 9335 +f 9315 9335 9316 +f 9316 9335 9336 +f 9316 9336 9317 +f 9317 9336 9337 +f 9317 9337 9318 +f 9318 9337 9338 +f 9318 9338 9319 +f 9319 9338 9339 +f 9319 9339 9320 +f 9320 9339 9340 +f 9320 9340 9321 +f 9321 9340 9341 +f 9321 9341 9322 +f 9322 9341 9342 +f 9322 9342 9323 +f 9323 9342 9343 +f 9323 9343 9324 +f 9324 9343 9344 +f 9324 9344 9325 +f 9325 9344 9345 +f 9325 9345 9326 +f 137 9346 138 +f 138 9346 9347 +f 138 9347 9327 +f 9327 9347 9348 +f 9327 9348 9328 +f 9328 9348 9349 +f 9328 9349 9329 +f 9329 9349 9350 +f 9329 9350 9330 +f 9330 9350 9351 +f 9330 9351 9331 +f 9331 9351 9352 +f 9331 9352 9332 +f 9332 9352 9353 +f 9332 9353 9333 +f 9333 9353 9354 +f 9333 9354 9334 +f 9334 9354 9355 +f 9334 9355 9335 +f 9335 9355 9356 +f 9335 9356 9336 +f 9336 9356 9357 +f 9336 9357 9337 +f 9337 9357 9358 +f 9337 9358 9338 +f 9338 9358 9359 +f 9338 9359 9339 +f 9339 9359 9360 +f 9339 9360 9340 +f 9340 9360 9361 +f 9340 9361 9341 +f 9341 9361 9362 +f 9341 9362 9342 +f 9342 9362 9363 +f 9342 9363 9343 +f 9343 9363 9364 +f 9343 9364 9344 +f 9344 9364 9365 +f 9344 9365 9345 +f 9346 137 9366 +f 9366 137 136 +f 9366 136 134 +f 133 9347 134 +f 134 9347 9346 +f 134 9346 9366 +f 9347 133 9367 +f 9367 133 132 +f 9367 132 9368 +f 9368 132 122 +f 9368 122 9367 +f 9367 122 4130 +f 9367 4130 9369 +f 9369 4130 4131 +f 9369 4131 9370 +f 9370 4131 4133 +f 9370 4133 9371 +f 9371 4133 4135 +f 9371 4135 9372 +f 9372 4135 4137 +f 9372 4137 9373 +f 9373 4137 4139 +f 9373 4139 9374 +f 9374 4139 4141 +f 9374 4141 9375 +f 9375 4141 4143 +f 9375 4143 9376 +f 9376 4143 9377 +f 9376 9377 9378 +f 9378 9377 9379 +f 9378 9379 9380 +f 9380 9379 9381 +f 9380 9381 9382 +f 9382 9381 9383 +f 9382 9383 9384 +f 9384 9383 9385 +f 9384 9385 9386 +f 9386 9385 9387 +f 9386 9387 9388 +f 9388 9387 9389 +f 9388 9389 9390 +f 9390 9389 9391 +f 9390 9391 9392 +f 9392 9391 9393 +f 9392 9393 9394 +f 9394 9393 9395 +f 9394 9395 9396 +f 122 73 4130 +f 4143 3949 9377 +f 9377 3949 9397 +f 9377 9397 9379 +f 9379 9397 9398 +f 9379 9398 9381 +f 9381 9398 9399 +f 9381 9399 9383 +f 9383 9399 9400 +f 9383 9400 9385 +f 9385 9400 9401 +f 9385 9401 9387 +f 9387 9401 9402 +f 9387 9402 9389 +f 9389 9402 9403 +f 9389 9403 9391 +f 9391 9403 9404 +f 9391 9404 9393 +f 9393 9404 9405 +f 9393 9405 9395 +f 3949 3948 9397 +f 9397 3948 9398 +f 9398 3948 9399 +f 9399 3948 9406 +f 9399 9406 9407 +f 9407 9406 3821 +f 9407 3821 9408 +f 9408 3821 3820 +f 9408 3820 9409 +f 9409 3820 9410 +f 9409 9410 9411 +f 9411 9410 9412 +f 9411 9412 9413 +f 9413 9412 9414 +f 9413 9414 9415 +f 9415 9414 9416 +f 9415 9417 9413 +f 9413 9417 9418 +f 9413 9418 9411 +f 9411 9418 9419 +f 9411 9419 9409 +f 9409 9419 9420 +f 9409 9420 9408 +f 9408 9420 9421 +f 9408 9421 9407 +f 9407 9421 9400 +f 9407 9400 9399 +f 9417 9422 9418 +f 9418 9422 9423 +f 9418 9423 9419 +f 9419 9423 9424 +f 9419 9424 9420 +f 9420 9424 9425 +f 9420 9425 9421 +f 9421 9425 9401 +f 9421 9401 9400 +f 9422 9426 9423 +f 9423 9426 9427 +f 9423 9427 9424 +f 9424 9427 9428 +f 9424 9428 9425 +f 9425 9428 9402 +f 9425 9402 9401 +f 9426 9429 9427 +f 9427 9429 9430 +f 9427 9430 9428 +f 9428 9430 9403 +f 9428 9403 9402 +f 9429 9431 9430 +f 9430 9431 9404 +f 9430 9404 9403 +f 9431 9405 9404 +f 9394 9396 9432 +f 9432 9396 9433 +f 9432 9433 9434 +f 9434 9433 9435 +f 9434 9435 9436 +f 9436 9435 9437 +f 9436 9437 9438 +f 9438 9437 9439 +f 9438 9439 9440 +f 9440 9439 9441 +f 9440 9441 9442 +f 9442 9441 9443 +f 9442 9443 9364 +f 9364 9443 9365 +f 9444 9445 9285 +f 9285 9445 9446 +f 9285 9446 9283 +f 9283 9446 9447 +f 9283 9447 9281 +f 9281 9447 9448 +f 9281 9448 9279 +f 9279 9448 9449 +f 9279 9449 9277 +f 9277 9449 9450 +f 9277 9450 9275 +f 9275 9450 9451 +f 9275 9451 9273 +f 9273 9451 9452 +f 9273 9452 9271 +f 9271 9452 9453 +f 9271 9453 9269 +f 9269 9453 9454 +f 9269 9454 9267 +f 9267 9454 9455 +f 9267 9455 9265 +f 9265 9455 9456 +f 9265 9456 9263 +f 9263 9456 9457 +f 9263 9457 9261 +f 9261 9457 9458 +f 9261 9458 9259 +f 9259 9458 9459 +f 9259 9459 9257 +f 9257 9459 9460 +f 9257 9460 9255 +f 9255 9460 9461 +f 9255 9461 9253 +f 9253 9461 9462 +f 9253 9462 9251 +f 9251 9462 9463 +f 9251 9463 9249 +f 9249 9463 9464 +f 9249 9464 9247 +f 9247 9464 9465 +f 9247 9465 9245 +f 9245 9465 9466 +f 9245 9466 9243 +f 9243 9466 9467 +f 9243 9467 9241 +f 9241 9467 3383 +f 9445 9444 9468 +f 9468 9444 9469 +f 9468 9469 9470 +f 9470 9469 9471 +f 9470 9471 9472 +f 9472 9471 9473 +f 9472 9473 9474 +f 9474 9473 9475 +f 9474 9475 9476 +f 9476 9475 3636 +f 9476 3636 3638 +f 9471 9477 9473 +f 9473 9477 9478 +f 9473 9478 9475 +f 9475 9478 3634 +f 9475 3634 3636 +f 9477 9479 9478 +f 9478 9479 3632 +f 9478 3632 3634 +f 9479 3630 3632 +f 3623 3625 9480 +f 9480 3625 9481 +f 9480 9481 9482 +f 9482 9481 9483 +f 9482 9483 9484 +f 9484 9483 9485 +f 9484 9485 9486 +f 9486 9485 9487 +f 9486 9487 9488 +f 9488 9487 9489 +f 9488 9489 9490 +f 9490 9489 9491 +f 9490 9491 9492 +f 9492 9491 9493 +f 9492 9493 3707 +f 3707 9493 3705 +f 9483 9494 9485 +f 9485 9494 9495 +f 9485 9495 9487 +f 9487 9495 9496 +f 9487 9496 9489 +f 9489 9496 9497 +f 9489 9497 9491 +f 9491 9497 9498 +f 9491 9498 9493 +f 9493 9498 9499 +f 9493 9499 3705 +f 3705 9499 3703 +f 9494 9500 9495 +f 9495 9500 9501 +f 9495 9501 9496 +f 9496 9501 9502 +f 9496 9502 9497 +f 9497 9502 9503 +f 9497 9503 9498 +f 9498 9503 9504 +f 9498 9504 9499 +f 9499 9504 3875 +f 9499 3875 3703 +f 9500 9505 9501 +f 9501 9505 9506 +f 9501 9506 9502 +f 9502 9506 9507 +f 9502 9507 9503 +f 9503 9507 9508 +f 9503 9508 9504 +f 9504 9508 3873 +f 9504 3873 3875 +f 9506 9505 9509 +f 9509 9505 9510 +f 9509 9510 9511 +f 9511 9510 9512 +f 9511 9512 3867 +f 3867 9512 3865 +f 3830 9513 3828 +f 3828 9513 9514 +f 3828 9514 3826 +f 3826 9514 9515 +f 3826 9515 3824 +f 3824 9515 9516 +f 3824 9516 3822 +f 3822 9516 3807 +f 9513 9517 9514 +f 9514 9517 9518 +f 9514 9518 9515 +f 9515 9518 9519 +f 9515 9519 9516 +f 9516 9519 9520 +f 9516 9520 3807 +f 3807 9520 3808 +f 9517 9521 9518 +f 9518 9521 9522 +f 9518 9522 9519 +f 9519 9522 9523 +f 9519 9523 9520 +f 9520 9523 9524 +f 9520 9524 3808 +f 3808 9524 3810 +f 9521 9525 9522 +f 9522 9525 9526 +f 9522 9526 9523 +f 9523 9526 9527 +f 9523 9527 9524 +f 9524 9527 9528 +f 9524 9528 3810 +f 3810 9528 3812 +f 9525 9529 9526 +f 9526 9529 9530 +f 9526 9530 9527 +f 9527 9530 9531 +f 9527 9531 9528 +f 9528 9531 9532 +f 9528 9532 3812 +f 3812 9532 3814 +f 9529 9533 9530 +f 9530 9533 9534 +f 9530 9534 9531 +f 9531 9534 9535 +f 9531 9535 9532 +f 9532 9535 9536 +f 9532 9536 3814 +f 3814 9536 3816 +f 9533 9537 9534 +f 9534 9537 9538 +f 9534 9538 9535 +f 9535 9538 9539 +f 9535 9539 9536 +f 9536 9539 9540 +f 9536 9540 3816 +f 3816 9540 3818 +f 9537 9541 9538 +f 9538 9541 9416 +f 9538 9416 9414 +f 9538 9414 9539 +f 9539 9414 9412 +f 9539 9412 9540 +f 9540 9412 9410 +f 9540 9410 3818 +f 3818 9410 3820 +f 3819 3821 9542 +f 9542 3821 9406 +f 9542 9406 9543 +f 9543 9406 3948 +f 9543 3948 3946 +f 3947 3949 4147 +f 4147 3949 4143 +f 4147 4143 4145 +f 73 72 4130 +f 4130 72 4128 +f 4128 72 9544 +f 9544 72 70 +f 9544 70 4128 +f 4125 58 9545 +f 9545 58 46 +f 9545 46 4125 +f 4125 46 9546 +f 4125 9546 4123 +f 4123 9546 9547 +f 4123 9547 4121 +f 4121 9547 9548 +f 4121 9548 4098 +f 4098 9548 4100 +f 34 9549 46 +f 46 9549 9550 +f 46 9550 9546 +f 9546 9550 34 +f 9546 34 9551 +f 9551 34 9552 +f 9551 9552 22 +f 22 9552 9553 +f 22 9553 34 +f 34 9553 9552 +f 1 9554 22 +f 22 9554 9555 +f 9555 9554 1 +f 9555 1 9556 +f 9556 1 9557 +f 9556 9557 9558 +f 9558 9557 9559 +f 9558 9559 9560 +f 9560 9559 9561 +f 9560 9561 4106 +f 4106 9561 4108 +f 3 9562 1 +f 1 9562 9563 +f 9563 9562 3 +f 9563 3 9557 +f 9557 3 9564 +f 9557 9564 9559 +f 9559 9564 9565 +f 9559 9565 9561 +f 9561 9565 9566 +f 9561 9566 4108 +f 4108 9566 4110 +f 3 113 9564 +f 9564 113 9567 +f 9564 9567 111 +f 111 9567 114 +f 114 9567 9568 +f 9568 113 114 +f 9564 111 9569 +f 9569 111 109 +f 9569 109 9570 +f 9570 109 9571 +f 9570 9571 104 +f 104 9571 105 +f 105 9571 9572 +f 9572 9571 107 +f 9572 107 105 +f 9571 109 107 +f 103 9573 104 +f 104 9573 9574 +f 103 102 9573 +f 9573 102 9575 +f 9573 9575 9576 +f 9576 9575 9577 +f 9576 9577 9578 +f 9578 9577 9579 +f 9578 9579 9580 +f 9580 9579 9581 +f 9580 9581 3169 +f 3169 9581 3167 +f 102 101 9575 +f 9575 101 9582 +f 9575 9582 9577 +f 9577 9582 9583 +f 9577 9583 9579 +f 9579 9583 9584 +f 9579 9584 9581 +f 9581 9584 9585 +f 9581 9585 3167 +f 3167 9585 3165 +f 101 100 9582 +f 9582 100 9586 +f 9582 9586 9583 +f 9583 9586 9587 +f 9583 9587 9584 +f 9584 9587 9588 +f 9584 9588 9585 +f 9585 9588 9589 +f 9585 9589 3165 +f 3165 9589 3163 +f 9586 100 9590 +f 9590 100 99 +f 9590 99 21 +f 21 20 9590 +f 9590 20 9591 +f 9590 9591 9592 +f 9592 9591 9593 +f 9592 9593 9594 +f 9594 9593 9595 +f 9594 9595 9596 +f 9596 9595 9597 +f 9596 9597 9598 +f 9598 9597 9599 +f 9598 9599 3161 +f 3161 9599 3159 +f 20 98 9591 +f 9591 98 33 +f 9591 33 9593 +f 9593 33 9600 +f 9593 9600 9601 +f 9601 9600 96 +f 9601 96 8235 +f 8235 96 9602 +f 8235 9602 44 +f 44 9602 9603 +f 44 9603 45 +f 45 9603 96 +f 96 9603 9602 +f 9600 33 9604 +f 9604 33 32 +f 9604 32 97 +f 97 96 9604 +f 9604 96 9600 +f 44 57 8232 +f 8232 57 8230 +f 57 56 8230 +f 8230 56 68 +f 68 95 8221 +f 93 90 8212 +f 89 91 7870 +f 7866 7671 7673 +f 7669 7453 7455 +f 7447 7452 7343 +f 7343 7452 9202 +f 7343 9202 7338 +f 7338 9202 7120 +f 9202 7118 7120 +f 7112 7117 7028 +f 7028 7117 7026 +f 7025 6821 6822 +f 1826 1825 5273 +f 2896 2889 8464 +f 8464 2889 2887 +f 2867 2868 8454 +f 8454 2868 8446 +f 8454 8446 8452 +f 8452 8446 8445 +f 8452 8445 8444 +f 2869 2870 8447 +f 8447 2870 8442 +f 8447 8442 8441 +f 8433 9605 8434 +f 8434 9605 8435 +f 8415 8439 8416 +f 8416 8439 9606 +f 8416 9606 8417 +f 8417 9606 9607 +f 8417 9607 8418 +f 8418 9607 9608 +f 8418 9608 9609 +f 9609 9608 9610 +f 9609 9610 9611 +f 9611 9610 9612 +f 9611 9612 9613 +f 9613 9612 9614 +f 9613 9614 9615 +f 9616 9617 9615 +f 9615 9617 9618 +f 9615 9618 9613 +f 9613 9618 8421 +f 9613 8421 8420 +f 9617 9616 8467 +f 8467 9616 2901 +f 8732 413 9619 +f 9619 413 412 +f 9619 412 411 +f 9619 411 8709 +f 8709 411 409 +f 8709 409 407 +f 553 8687 406 +f 406 8687 9620 +f 406 9620 8710 +f 8710 9620 9621 +f 8710 9621 8708 +f 8708 9621 9622 +f 8708 9622 8706 +f 8706 9622 9623 +f 8706 9623 8704 +f 8704 9623 9624 +f 8704 9624 8702 +f 8702 9624 9625 +f 8702 9625 8700 +f 8700 9625 9626 +f 8700 9626 8698 +f 8698 9626 9627 +f 8698 9627 8696 +f 8696 9627 9628 +f 8696 9628 8694 +f 8694 9628 8668 +f 8694 8668 8692 +f 8692 8668 8667 +f 553 551 8687 +f 8688 549 9629 +f 9629 549 547 +f 9629 547 8665 +f 8665 547 545 +f 8666 543 8644 +f 8644 543 542 +f 8645 470 9630 +f 9630 470 471 +f 9630 471 473 +f 8623 475 8601 +f 8601 475 541 +f 8602 540 8580 +f 8580 540 538 +f 8580 538 537 +f 8581 534 9631 +f 9631 534 533 +f 9631 533 532 +f 532 531 9631 +f 9631 531 9632 +f 9631 9632 8581 +f 8581 9632 9633 +f 8581 9633 8579 +f 8579 9633 9634 +f 8579 9634 8577 +f 8577 9634 9635 +f 8577 9635 8575 +f 8575 9635 9636 +f 8575 9636 8573 +f 8573 9636 9637 +f 8573 9637 8571 +f 8571 9637 9638 +f 8571 9638 8569 +f 8569 9638 9639 +f 8569 9639 8567 +f 8567 9639 9640 +f 8567 9640 8565 +f 8565 9640 8528 +f 8565 8528 8563 +f 8563 8528 8527 +f 9632 531 9641 +f 9641 531 530 +f 9641 530 529 +f 9641 529 9642 +f 9642 529 525 +f 9642 525 485 +f 9642 485 9643 +f 9643 485 486 +f 9643 486 487 +f 487 488 9643 +f 9643 488 9644 +f 9643 9644 9645 +f 9645 9644 9646 +f 9645 9646 9647 +f 9647 9646 9648 +f 9647 9648 9649 +f 9649 9648 9650 +f 9649 9650 4591 +f 4591 9650 4593 +f 488 489 9644 +f 9644 489 491 +f 9644 491 493 +f 524 9651 493 +f 493 9651 9646 +f 493 9646 9644 +f 524 523 9651 +f 9651 523 9652 +f 9651 9652 9646 +f 9646 9652 9648 +f 523 521 9652 +f 9652 521 9653 +f 9652 9653 9654 +f 9654 9653 9655 +f 9654 9655 9656 +f 9656 9655 4346 +f 9656 4346 4348 +f 9653 521 9657 +f 9657 521 519 +f 9657 519 9653 +f 9653 519 9658 +f 9653 9658 9655 +f 9655 9658 4344 +f 9655 4344 4346 +f 519 517 9658 +f 9658 517 4342 +f 9658 4342 4344 +f 517 510 4342 +f 4336 503 4334 +f 4334 503 455 +f 4334 455 4331 +f 4331 455 435 +f 4331 435 4324 +f 434 432 4325 +f 4325 432 9659 +f 4325 9659 9660 +f 9660 9659 9661 +f 9660 9661 9662 +f 9662 9661 9663 +f 9662 9663 9664 +f 9664 9663 9665 +f 9664 9665 5008 +f 5008 9665 5010 +f 432 441 9659 +f 9659 441 9666 +f 9659 9666 9661 +f 9661 9666 9667 +f 9661 9667 9663 +f 9663 9667 9668 +f 9663 9668 9665 +f 9665 9668 9669 +f 9665 9669 5010 +f 5010 9669 5012 +f 453 9670 441 +f 441 9670 9671 +f 441 9671 9666 +f 9666 9671 9667 +f 9670 453 9672 +f 9672 453 451 +f 9672 451 9673 +f 9673 451 9674 +f 9673 9674 9675 +f 9675 9674 8740 +f 9675 8740 8742 +f 9674 451 9676 +f 9676 451 450 +f 9676 450 449 +f 9676 449 9677 +f 9677 449 447 +f 9677 447 445 +f 445 444 9677 +f 9677 444 8736 +f 9677 8736 8738 +f 444 443 8736 +f 8736 443 436 +f 8736 436 420 +f 2397 9678 2398 +f 2398 9678 9679 +f 2398 9679 6731 +f 6731 9679 2397 +f 2396 2391 6622 +f 6622 2391 9680 +f 6622 9680 6624 +f 6624 9680 2393 +f 6624 2393 2392 +f 2391 2390 9680 +f 9680 2390 2395 +f 9680 2395 2394 +f 2394 2393 9680 +f 2392 2389 6624 +f 6624 2389 3049 +f 6624 3049 6626 +f 6626 3049 9681 +f 6626 9681 6628 +f 6628 9681 9682 +f 6628 9682 6630 +f 6630 9682 9683 +f 6630 9683 6632 +f 6632 9683 9684 +f 6632 9684 6634 +f 6634 9684 9685 +f 6634 9685 6636 +f 6636 9685 9686 +f 6636 9686 6638 +f 6638 9686 9687 +f 6638 9687 6640 +f 6640 9687 9688 +f 6640 9688 6642 +f 6642 9688 5685 +f 6642 5685 5683 +f 2389 2384 3049 +f 3049 2384 2388 +f 3049 2388 2387 +f 34 9550 9549 +f 3541 241 3544 +f 9567 113 9568 +f 3539 3540 242 +f 7656 7655 7657 +f 7541 7540 7542 +f 7434 7433 7435 +f 7301 7300 7302 +f 4255 4257 4256 +f 4269 4275 8280 +f 3045 9689 3406 +f 3406 9689 9690 +f 3406 9690 9691 +f 9691 9690 9692 +f 9691 9692 9693 +f 9693 9692 9694 +f 9693 9694 9695 +f 9695 9694 9696 +f 9695 9696 9697 +f 9697 9696 9698 +f 9697 9698 9699 +f 9699 9698 9700 +f 9699 9700 9701 +f 9701 9700 9702 +f 9701 9702 9703 +f 9703 9702 9704 +f 9703 9704 9705 +f 9705 9704 9706 +f 9705 9706 9707 +f 9707 9706 9708 +f 9707 9708 9709 +f 9709 9708 9710 +f 9709 9710 9711 +f 9711 9710 9712 +f 9711 9712 9713 +f 9713 9712 9714 +f 9713 9714 3322 +f 3322 9714 3324 +f 6726 6725 3046 +f 3046 6725 3045 +f 9689 9715 9690 +f 9690 9715 9716 +f 9690 9716 9692 +f 9692 9716 9717 +f 9692 9717 9694 +f 9694 9717 9718 +f 9694 9718 9696 +f 9696 9718 9719 +f 9696 9719 9698 +f 9698 9719 9720 +f 9698 9720 9700 +f 9700 9720 9721 +f 9700 9721 9702 +f 9702 9721 9722 +f 9702 9722 9704 +f 9704 9722 9723 +f 9704 9723 9706 +f 9706 9723 9724 +f 9706 9724 9708 +f 9708 9724 9725 +f 9708 9725 9710 +f 9710 9725 9726 +f 9710 9726 9712 +f 9712 9726 9727 +f 9712 9727 9714 +f 9714 9727 9099 +f 9714 9099 3324 +f 9689 3045 9728 +f 9728 3045 6725 +f 9728 6725 9729 +f 9729 6725 6724 +f 9729 6724 9730 +f 9730 6724 9731 +f 9730 9731 9732 +f 9732 9731 9733 +f 9732 9733 9734 +f 9734 9733 9735 +f 9734 9735 9042 +f 9042 9735 9044 +f 9715 9736 9716 +f 9716 9736 9737 +f 9716 9737 9717 +f 9717 9737 9738 +f 9717 9738 9718 +f 9718 9738 9739 +f 9718 9739 9719 +f 9719 9739 9740 +f 9719 9740 9720 +f 9720 9740 9741 +f 9720 9741 9721 +f 9721 9741 9742 +f 9721 9742 9722 +f 9722 9742 9743 +f 9722 9743 9723 +f 9723 9743 9744 +f 9723 9744 9724 +f 9724 9744 9745 +f 9724 9745 9725 +f 9725 9745 9746 +f 9725 9746 9726 +f 9726 9746 9747 +f 9726 9747 9727 +f 9727 9747 9097 +f 9727 9097 9099 +f 9715 9689 9748 +f 9748 9689 9728 +f 9748 9728 9749 +f 9749 9728 9729 +f 9749 9729 9750 +f 9750 9729 9730 +f 9750 9730 9751 +f 9751 9730 9732 +f 9751 9732 9752 +f 9752 9732 9734 +f 9752 9734 9040 +f 9040 9734 9042 +f 9736 9753 9737 +f 9737 9753 9754 +f 9737 9754 9738 +f 9738 9754 9755 +f 9738 9755 9739 +f 9739 9755 9756 +f 9739 9756 9740 +f 9740 9756 9757 +f 9740 9757 9741 +f 9741 9757 9758 +f 9741 9758 9742 +f 9742 9758 9759 +f 9742 9759 9743 +f 9743 9759 9760 +f 9743 9760 9744 +f 9744 9760 9761 +f 9744 9761 9745 +f 9745 9761 9762 +f 9745 9762 9746 +f 9746 9762 9763 +f 9746 9763 9747 +f 9747 9763 9095 +f 9747 9095 9097 +f 9736 9715 9764 +f 9764 9715 9748 +f 9764 9748 9765 +f 9765 9748 9749 +f 9765 9749 9766 +f 9766 9749 9750 +f 9766 9750 9767 +f 9767 9750 9751 +f 9767 9751 9768 +f 9768 9751 9752 +f 9768 9752 9038 +f 9038 9752 9040 +f 9753 9769 9754 +f 9754 9769 9770 +f 9754 9770 9755 +f 9755 9770 9771 +f 9755 9771 9756 +f 9756 9771 9772 +f 9756 9772 9757 +f 9757 9772 9773 +f 9757 9773 9758 +f 9758 9773 9774 +f 9758 9774 9759 +f 9759 9774 9775 +f 9759 9775 9760 +f 9760 9775 9776 +f 9760 9776 9761 +f 9761 9776 9777 +f 9761 9777 9762 +f 9762 9777 9778 +f 9762 9778 9763 +f 9763 9778 9093 +f 9763 9093 9095 +f 9753 9736 9779 +f 9779 9736 9764 +f 9779 9764 9780 +f 9780 9764 9765 +f 9780 9765 9781 +f 9781 9765 9766 +f 9781 9766 9782 +f 9782 9766 9767 +f 9782 9767 9783 +f 9783 9767 9768 +f 9783 9768 9036 +f 9036 9768 9038 +f 9769 9784 9770 +f 9770 9784 9785 +f 9770 9785 9771 +f 9771 9785 9786 +f 9771 9786 9772 +f 9772 9786 9787 +f 9772 9787 9773 +f 9773 9787 9788 +f 9773 9788 9774 +f 9774 9788 9789 +f 9774 9789 9775 +f 9775 9789 9790 +f 9775 9790 9776 +f 9776 9790 9791 +f 9776 9791 9777 +f 9777 9791 9792 +f 9777 9792 9778 +f 9778 9792 9091 +f 9778 9091 9093 +f 9769 9753 9793 +f 9793 9753 9779 +f 9793 9779 9794 +f 9794 9779 9780 +f 9794 9780 9795 +f 9795 9780 9781 +f 9795 9781 9796 +f 9796 9781 9782 +f 9796 9782 9797 +f 9797 9782 9783 +f 9797 9783 9034 +f 9034 9783 9036 +f 9784 9798 9785 +f 9785 9798 9799 +f 9785 9799 9786 +f 9786 9799 9800 +f 9786 9800 9787 +f 9787 9800 9801 +f 9787 9801 9788 +f 9788 9801 9802 +f 9788 9802 9789 +f 9789 9802 9803 +f 9789 9803 9790 +f 9790 9803 9804 +f 9790 9804 9791 +f 9791 9804 9805 +f 9791 9805 9792 +f 9792 9805 9089 +f 9792 9089 9091 +f 9784 9769 9806 +f 9806 9769 9793 +f 9806 9793 9807 +f 9807 9793 9794 +f 9807 9794 9808 +f 9808 9794 9795 +f 9808 9795 9809 +f 9809 9795 9796 +f 9809 9796 9810 +f 9810 9796 9797 +f 9810 9797 9032 +f 9032 9797 9034 +f 9798 9811 9799 +f 9799 9811 9812 +f 9799 9812 9800 +f 9800 9812 9813 +f 9800 9813 9801 +f 9801 9813 9814 +f 9801 9814 9802 +f 9802 9814 9815 +f 9802 9815 9803 +f 9803 9815 9816 +f 9803 9816 9804 +f 9804 9816 9817 +f 9804 9817 9805 +f 9805 9817 9087 +f 9805 9087 9089 +f 9798 9784 9818 +f 9818 9784 9806 +f 9818 9806 9819 +f 9819 9806 9807 +f 9819 9807 9820 +f 9820 9807 9808 +f 9820 9808 9821 +f 9821 9808 9809 +f 9821 9809 9822 +f 9822 9809 9810 +f 9822 9810 9030 +f 9030 9810 9032 +f 9811 9823 9812 +f 9812 9823 9824 +f 9812 9824 9813 +f 9813 9824 9825 +f 9813 9825 9814 +f 9814 9825 9826 +f 9814 9826 9815 +f 9815 9826 9827 +f 9815 9827 9816 +f 9816 9827 9828 +f 9816 9828 9817 +f 9817 9828 9085 +f 9817 9085 9087 +f 9811 9798 9829 +f 9829 9798 9818 +f 9829 9818 9830 +f 9830 9818 9819 +f 9830 9819 9831 +f 9831 9819 9820 +f 9831 9820 9832 +f 9832 9820 9821 +f 9832 9821 9833 +f 9833 9821 9822 +f 9833 9822 9028 +f 9028 9822 9030 +f 9823 9834 9824 +f 9824 9834 9835 +f 9824 9835 9825 +f 9825 9835 9836 +f 9825 9836 9826 +f 9826 9836 9837 +f 9826 9837 9827 +f 9827 9837 9838 +f 9827 9838 9828 +f 9828 9838 9083 +f 9828 9083 9085 +f 9823 9811 9839 +f 9839 9811 9829 +f 9839 9829 9840 +f 9840 9829 9830 +f 9840 9830 9841 +f 9841 9830 9831 +f 9841 9831 9842 +f 9842 9831 9832 +f 9842 9832 9843 +f 9843 9832 9833 +f 9843 9833 9026 +f 9026 9833 9028 +f 9834 9844 9835 +f 9835 9844 9845 +f 9835 9845 9836 +f 9836 9845 9846 +f 9836 9846 9837 +f 9837 9846 9847 +f 9837 9847 9838 +f 9838 9847 9081 +f 9838 9081 9083 +f 9834 9823 9848 +f 9848 9823 9839 +f 9848 9839 9849 +f 9849 9839 9840 +f 9849 9840 9850 +f 9850 9840 9841 +f 9850 9841 9851 +f 9851 9841 9842 +f 9851 9842 9852 +f 9852 9842 9843 +f 9852 9843 9024 +f 9024 9843 9026 +f 9844 9853 9845 +f 9845 9853 9854 +f 9845 9854 9846 +f 9846 9854 9855 +f 9846 9855 9847 +f 9847 9855 9079 +f 9847 9079 9081 +f 9844 9834 9856 +f 9856 9834 9848 +f 9856 9848 9857 +f 9857 9848 9849 +f 9857 9849 9858 +f 9858 9849 9850 +f 9858 9850 9859 +f 9859 9850 9851 +f 9859 9851 9860 +f 9860 9851 9852 +f 9860 9852 9022 +f 9022 9852 9024 +f 9853 9861 9854 +f 9854 9861 9862 +f 9854 9862 9855 +f 9855 9862 9077 +f 9855 9077 9079 +f 9853 9844 9863 +f 9863 9844 9856 +f 9863 9856 9864 +f 9864 9856 9857 +f 9864 9857 9865 +f 9865 9857 9858 +f 9865 9858 9866 +f 9866 9858 9859 +f 9866 9859 9867 +f 9867 9859 9860 +f 9867 9860 9020 +f 9020 9860 9022 +f 9861 9868 9862 +f 9862 9868 9075 +f 9862 9075 9077 +f 9861 9853 9869 +f 9869 9853 9863 +f 9869 9863 9870 +f 9870 9863 9864 +f 9870 9864 9871 +f 9871 9864 9865 +f 9871 9865 9872 +f 9872 9865 9866 +f 9872 9866 9873 +f 9873 9866 9867 +f 9873 9867 9018 +f 9018 9867 9020 +f 9075 9868 9073 +f 9073 9868 9874 +f 9073 9874 9071 +f 9071 9874 9875 +f 9071 9875 9069 +f 9069 9875 9876 +f 9069 9876 9067 +f 9067 9876 9877 +f 9067 9877 9065 +f 9065 9877 9878 +f 9065 9878 9063 +f 9063 9878 9004 +f 9063 9004 9002 +f 9868 9861 9879 +f 9879 9861 9869 +f 9879 9869 9880 +f 9880 9869 9870 +f 9880 9870 9881 +f 9881 9870 9871 +f 9881 9871 9882 +f 9882 9871 9872 +f 9882 9872 9883 +f 9883 9872 9873 +f 9883 9873 9016 +f 9016 9873 9018 +f 9072 9884 9885 +f 9885 9884 9886 +f 9885 9886 9887 +f 9887 9886 9888 +f 9887 9888 9889 +f 9889 9888 9890 +f 9889 9890 9891 +f 9891 9890 9892 +f 9891 9892 9893 +f 9893 9892 9894 +f 9893 9894 9895 +f 9895 9894 9896 +f 9895 9896 9897 +f 9897 9896 9898 +f 9897 9898 9899 +f 9899 9898 9900 +f 9899 9900 9901 +f 9901 9900 9902 +f 9901 9902 9903 +f 9903 9902 9904 +f 9903 9904 9905 +f 9905 9904 9906 +f 9905 9906 9907 +f 9907 9906 9908 +f 9907 9908 9909 +f 9909 9908 9191 +f 9909 9191 3354 +f 9884 9910 9886 +f 9886 9910 9911 +f 9886 9911 9888 +f 9888 9911 9912 +f 9888 9912 9890 +f 9890 9912 9913 +f 9890 9913 9892 +f 9892 9913 9914 +f 9892 9914 9894 +f 9894 9914 9915 +f 9894 9915 9896 +f 9896 9915 9916 +f 9896 9916 9898 +f 9898 9916 9917 +f 9898 9917 9900 +f 9900 9917 9918 +f 9900 9918 9902 +f 9902 9918 9919 +f 9902 9919 9904 +f 9904 9919 9920 +f 9904 9920 9906 +f 9906 9920 9921 +f 9906 9921 9908 +f 9908 9921 9189 +f 9908 9189 9191 +f 9072 9070 9884 +f 9884 9070 9922 +f 9884 9922 9910 +f 9910 9922 9923 +f 9910 9923 9924 +f 9924 9923 9925 +f 9924 9925 9926 +f 9926 9925 9927 +f 9926 9927 9928 +f 9928 9927 9929 +f 9928 9929 9930 +f 9930 9929 9931 +f 9930 9931 9932 +f 9932 9931 9933 +f 9932 9933 9934 +f 9934 9933 9935 +f 9934 9935 9936 +f 9936 9935 9937 +f 9936 9937 9938 +f 9938 9937 9939 +f 9938 9939 9940 +f 9940 9939 9941 +f 9940 9941 9942 +f 9942 9941 9943 +f 9942 9943 9944 +f 9944 9943 9945 +f 9944 9945 9946 +f 9946 9945 9947 +f 9946 9947 9165 +f 9165 9947 9163 +f 9910 9924 9911 +f 9911 9924 9948 +f 9911 9948 9912 +f 9912 9948 9949 +f 9912 9949 9913 +f 9913 9949 9950 +f 9913 9950 9914 +f 9914 9950 9951 +f 9914 9951 9915 +f 9915 9951 9952 +f 9915 9952 9953 +f 9953 9952 9954 +f 9953 9954 9955 +f 9955 9954 9956 +f 9955 9956 9957 +f 9957 9956 9958 +f 9957 9958 9959 +f 9959 9958 9960 +f 9959 9960 9961 +f 9961 9960 9962 +f 9961 9962 9963 +f 9963 9962 9964 +f 9963 9964 9175 +f 9175 9964 9173 +f 9924 9926 9948 +f 9948 9926 9965 +f 9948 9965 9949 +f 9949 9965 9966 +f 9949 9966 9950 +f 9950 9966 9967 +f 9950 9967 9951 +f 9951 9967 9952 +f 9926 9928 9965 +f 9965 9928 9968 +f 9965 9968 9966 +f 9966 9968 9969 +f 9966 9969 9967 +f 9967 9969 9970 +f 9967 9970 9952 +f 9952 9970 9954 +f 9928 9930 9968 +f 9968 9930 9971 +f 9968 9971 9969 +f 9969 9971 9972 +f 9969 9972 9970 +f 9970 9972 9973 +f 9970 9973 9954 +f 9954 9973 9956 +f 9930 9932 9971 +f 9971 9932 9974 +f 9971 9974 9972 +f 9972 9974 9975 +f 9972 9975 9973 +f 9973 9975 9976 +f 9973 9976 9956 +f 9956 9976 9958 +f 9932 9934 9974 +f 9974 9934 9977 +f 9974 9977 9975 +f 9975 9977 9978 +f 9975 9978 9976 +f 9976 9978 9979 +f 9976 9979 9958 +f 9958 9979 9960 +f 9934 9936 9977 +f 9977 9936 9980 +f 9977 9980 9978 +f 9978 9980 9981 +f 9978 9981 9979 +f 9979 9981 9982 +f 9979 9982 9960 +f 9960 9982 9962 +f 9936 9938 9980 +f 9980 9938 9983 +f 9980 9983 9981 +f 9981 9983 9984 +f 9981 9984 9982 +f 9982 9984 9985 +f 9982 9985 9962 +f 9962 9985 9964 +f 9938 9940 9983 +f 9983 9940 9986 +f 9983 9986 9984 +f 9984 9986 9987 +f 9984 9987 9985 +f 9985 9987 9988 +f 9985 9988 9964 +f 9964 9988 9173 +f 9940 9942 9986 +f 9986 9942 9989 +f 9986 9989 9987 +f 9987 9989 9990 +f 9987 9990 9988 +f 9988 9990 9171 +f 9988 9171 9173 +f 9942 9944 9989 +f 9989 9944 9991 +f 9989 9991 9990 +f 9990 9991 9169 +f 9990 9169 9171 +f 9944 9946 9991 +f 9991 9946 9167 +f 9991 9167 9169 +f 9946 9165 9167 +f 9226 9195 9196 +f 9226 9196 9197 +f 9168 9166 9240 +f 9072 9885 9074 +f 9074 9885 9992 +f 9074 9992 9076 +f 9076 9992 9993 +f 9076 9993 9078 +f 9078 9993 9994 +f 9078 9994 9080 +f 9080 9994 9995 +f 9080 9995 9082 +f 9082 9995 9996 +f 9082 9996 9084 +f 9084 9996 9997 +f 9084 9997 9086 +f 9086 9997 9998 +f 9086 9998 9088 +f 9088 9998 9999 +f 9088 9999 9090 +f 9090 9999 10000 +f 9090 10000 9092 +f 9092 10000 10001 +f 9092 10001 9094 +f 9094 10001 10002 +f 9094 10002 9096 +f 9096 10002 10003 +f 9096 10003 9098 +f 9098 10003 3328 +f 9098 3328 3326 +f 9992 9885 9887 +f 3384 3405 3406 +f 3384 3406 9691 +f 8275 5272 5274 +f 5490 5489 5634 +f 5634 5489 5632 +f 5630 5632 5488 +f 5488 5632 5489 +f 5631 10004 10005 +f 10005 10004 10006 +f 10005 10006 10007 +f 10007 10006 10008 +f 10007 10008 10009 +f 10009 10008 6033 +f 10009 6033 6035 +f 10004 10010 10006 +f 10006 10010 10011 +f 10006 10011 10008 +f 10008 10011 6031 +f 10008 6031 6033 +f 5631 5629 10004 +f 10004 5629 10012 +f 10004 10012 10010 +f 10010 10012 10013 +f 10010 10013 10014 +f 10014 10013 10015 +f 10014 10015 6027 +f 6027 10015 6025 +f 10010 10014 10011 +f 10011 10014 6029 +f 10011 6029 6031 +f 10014 6027 6029 +f 6026 10016 10017 +f 10017 10016 10018 +f 10017 10018 10019 +f 10019 10018 6332 +f 10019 6332 6334 +f 10016 10020 10018 +f 10018 10020 6330 +f 10018 6330 6332 +f 6026 6024 10016 +f 10016 6024 10021 +f 10016 10021 10020 +f 10020 10021 10022 +f 10020 10022 6328 +f 6328 10022 6326 +f 10020 6328 6330 +f 6329 6327 6463 +f 6463 6327 6461 +f 6459 6461 6325 +f 6325 6461 6327 +f 6462 6460 6629 +f 6629 6460 6627 +f 6625 6627 6458 +f 6458 6627 6460 +f 9868 9879 9874 +f 9874 9879 10023 +f 9874 10023 9875 +f 9875 10023 10024 +f 9875 10024 9876 +f 9876 10024 10025 +f 9876 10025 9877 +f 9877 10025 10026 +f 9877 10026 9878 +f 9878 10026 9006 +f 9878 9006 9004 +f 10023 9879 9880 +f 9070 9068 9922 +f 9922 9068 10027 +f 9922 10027 9923 +f 9923 10027 10028 +f 9923 10028 9925 +f 9925 10028 10029 +f 9925 10029 9927 +f 9927 10029 10030 +f 9927 10030 9929 +f 9929 10030 10031 +f 9929 10031 9931 +f 9931 10031 10032 +f 9931 10032 9933 +f 9933 10032 10033 +f 9933 10033 9935 +f 9935 10033 10034 +f 9935 10034 9937 +f 9937 10034 10035 +f 9937 10035 9939 +f 9939 10035 10036 +f 9939 10036 9941 +f 9941 10036 10037 +f 9941 10037 9943 +f 9943 10037 10038 +f 9943 10038 9945 +f 9945 10038 10039 +f 9945 10039 9947 +f 9947 10039 10040 +f 9947 10040 9163 +f 9163 10040 9161 +f 3049 3050 9681 +f 9681 3050 10041 +f 9681 10041 9682 +f 9682 10041 10042 +f 9682 10042 9683 +f 9683 10042 10043 +f 9683 10043 9684 +f 9684 10043 10044 +f 9684 10044 9685 +f 9685 10044 10045 +f 9685 10045 9686 +f 9686 10045 10046 +f 9686 10046 9687 +f 9687 10046 10047 +f 9687 10047 9688 +f 9688 10047 5687 +f 9688 5687 5685 +f 6464 6462 6631 +f 6631 6462 6629 +f 6331 6329 6465 +f 6465 6329 6463 +f 6026 10017 6028 +f 6028 10017 10048 +f 6028 10048 6030 +f 6030 10048 10049 +f 6030 10049 6032 +f 6032 10049 10050 +f 6032 10050 6034 +f 6034 10050 10051 +f 6034 10051 6036 +f 6036 10051 10052 +f 6036 10052 6038 +f 6038 10052 10053 +f 6038 10053 6040 +f 6040 10053 10054 +f 6040 10054 6042 +f 6042 10054 5671 +f 6042 5671 5669 +f 10048 10017 10019 +f 5631 10005 5633 +f 5633 10005 10055 +f 5633 10055 5635 +f 5635 10055 10056 +f 5635 10056 5637 +f 5637 10056 10057 +f 5637 10057 5639 +f 5639 10057 10058 +f 5639 10058 5641 +f 5641 10058 10059 +f 5641 10059 5643 +f 5643 10059 10060 +f 5643 10060 5645 +f 5645 10060 10061 +f 5645 10061 10062 +f 10062 10061 5661 +f 10062 5661 5659 +f 10055 10005 10007 +f 5491 5490 5636 +f 5636 5490 5634 +f 3050 3051 10041 +f 10041 3051 3053 +f 10041 3053 10042 +f 10042 3053 3055 +f 10042 3055 10043 +f 10043 3055 3057 +f 10043 3057 10044 +f 10044 3057 3059 +f 10044 3059 10045 +f 10045 3059 3061 +f 10045 3061 10046 +f 10046 3061 3063 +f 10046 3063 10047 +f 10047 3063 3065 +f 10047 3065 5687 +f 6466 6464 6633 +f 6633 6464 6631 +f 6333 6331 6467 +f 6467 6331 6465 +f 10048 10019 10063 +f 10063 10019 6334 +f 10063 6334 6336 +f 10055 10007 10064 +f 10064 10007 10009 +f 10064 10009 10065 +f 10065 10009 6035 +f 10065 6035 6037 +f 5492 5491 5638 +f 5638 5491 5636 +f 5411 5410 5409 +f 5494 5412 5411 +f 9224 9226 9197 +f 9168 9240 10066 +f 10066 9240 9239 +f 10066 9239 10067 +f 10067 9239 9238 +f 10067 9238 10068 +f 10068 9238 9237 +f 10068 9237 10069 +f 10069 9237 9236 +f 10069 9236 10070 +f 10070 9236 9235 +f 10070 9235 10071 +f 10071 9235 9234 +f 10071 9234 10072 +f 10072 9234 9233 +f 10072 9233 10073 +f 10073 9233 9232 +f 10073 9232 10074 +f 10074 9232 9231 +f 10074 9231 10075 +f 10075 9231 9230 +f 10075 9230 10076 +f 10076 9230 9229 +f 10076 9229 3380 +f 3380 9229 3382 +f 9992 9887 10077 +f 10077 9887 9889 +f 10077 9889 10078 +f 10078 9889 9891 +f 10078 9891 10079 +f 10079 9891 9893 +f 10079 9893 10080 +f 10080 9893 9895 +f 10080 9895 10081 +f 10081 9895 9897 +f 10081 9897 10082 +f 10082 9897 9899 +f 10082 9899 10083 +f 10083 9899 9901 +f 10083 9901 10084 +f 10084 9901 9903 +f 10084 9903 10085 +f 10085 9903 9905 +f 10085 9905 10086 +f 10086 9905 9907 +f 10086 9907 10087 +f 10087 9907 9909 +f 10087 9909 3352 +f 3352 9909 3354 +f 3385 3384 9691 +f 3385 9691 9693 +f 3276 3277 10088 +f 10088 3277 6930 +f 10088 6930 6935 +f 3229 3276 10089 +f 10089 3276 10088 +f 10089 10088 10090 +f 10090 10088 6935 +f 10090 6935 6937 +f 6468 6466 6635 +f 6635 6466 6633 +f 6335 6333 6469 +f 6469 6333 6467 +f 10048 10063 10049 +f 10049 10063 10091 +f 10049 10091 10050 +f 10050 10091 10092 +f 10050 10092 10051 +f 10051 10092 10093 +f 10051 10093 10052 +f 10052 10093 10094 +f 10052 10094 10053 +f 10053 10094 10095 +f 10053 10095 10054 +f 10054 10095 5673 +f 10054 5673 5671 +f 10091 10063 6336 +f 10055 10064 10056 +f 10056 10064 10096 +f 10056 10096 10057 +f 10057 10096 10097 +f 10057 10097 10058 +f 10058 10097 10098 +f 10058 10098 10059 +f 10059 10098 10099 +f 10059 10099 10060 +f 10060 10099 10100 +f 10060 10100 10061 +f 10061 10100 5663 +f 10061 5663 5661 +f 10096 10064 10065 +f 5493 5492 5640 +f 5640 5492 5638 +f 3229 10089 3230 +f 3230 10089 10101 +f 3230 10101 3231 +f 3231 10101 10102 +f 3231 10102 3232 +f 3232 10102 10103 +f 3232 10103 3233 +f 3233 10103 10104 +f 3233 10104 3234 +f 3234 10104 10105 +f 3234 10105 3235 +f 3235 10105 10106 +f 3235 10106 3236 +f 3236 10106 10107 +f 3236 10107 3237 +f 3237 10107 10108 +f 3237 10108 3238 +f 3238 10108 10109 +f 3238 10109 3239 +f 3239 10109 10110 +f 3239 10110 3240 +f 3240 10110 10111 +f 3240 10111 3241 +f 3241 10111 10112 +f 3241 10112 3243 +f 3243 10112 3245 +f 10101 10089 10090 +f 6470 6468 6637 +f 6637 6468 6635 +f 6337 6335 6471 +f 6471 6335 6469 +f 10092 10091 6338 +f 6338 10091 6336 +f 10096 10065 10113 +f 10113 10065 6037 +f 10113 6037 6039 +f 5495 5493 5642 +f 5642 5493 5640 +f 5496 6856 5494 +f 9586 9590 9592 +f 9586 9592 9587 +f 9587 9592 9594 +f 9587 9594 9588 +f 9588 9594 9596 +f 9588 9596 9589 +f 9589 9596 9598 +f 9589 9598 3163 +f 3163 9598 3161 +f 9580 3169 3171 +f 3170 3499 3172 +f 3172 3499 10114 +f 3172 10114 3174 +f 3174 10114 10115 +f 3174 10115 3176 +f 3176 10115 10116 +f 3176 10116 3178 +f 3178 10116 10117 +f 3178 10117 3180 +f 3180 10117 10118 +f 3180 10118 3181 +f 3181 10118 10119 +f 3181 10119 3183 +f 3183 10119 10120 +f 3183 10120 3185 +f 3185 10120 10121 +f 3185 10121 3187 +f 3187 10121 10122 +f 3187 10122 3189 +f 3189 10122 10123 +f 3189 10123 3191 +f 3191 10123 10124 +f 3191 10124 3193 +f 3193 10124 3518 +f 3193 3518 3195 +f 3499 3497 10114 +f 10114 3497 10125 +f 10114 10125 10115 +f 10115 10125 10126 +f 10115 10126 10116 +f 10116 10126 10127 +f 10116 10127 10117 +f 10117 10127 10128 +f 10117 10128 10118 +f 10118 10128 10129 +f 10118 10129 10119 +f 10119 10129 10130 +f 10119 10130 10120 +f 10120 10130 10131 +f 10120 10131 10121 +f 10121 10131 10132 +f 10121 10132 10122 +f 10122 10132 10133 +f 10122 10133 10123 +f 10123 10133 10134 +f 10123 10134 10124 +f 10124 10134 3516 +f 10124 3516 3518 +f 3497 3495 10125 +f 10125 3495 10135 +f 10125 10135 10126 +f 10126 10135 10136 +f 10126 10136 10127 +f 10127 10136 10137 +f 10127 10137 10128 +f 10128 10137 10138 +f 10128 10138 10129 +f 10129 10138 10139 +f 10129 10139 10130 +f 10130 10139 10131 +f 10131 10139 10140 +f 10131 10140 10141 +f 10141 10140 10142 +f 10141 10142 10143 +f 10143 10142 10144 +f 10143 10144 10145 +f 10145 10144 10146 +f 10145 10146 3508 +f 3508 10146 249 +f 3495 3493 10135 +f 10135 3493 10147 +f 10135 10147 10136 +f 10136 10147 10148 +f 10136 10148 10137 +f 10137 10148 10149 +f 10137 10149 10138 +f 10138 10149 10150 +f 10138 10150 10139 +f 10139 10150 10140 +f 3493 3491 10147 +f 10147 3491 10151 +f 10147 10151 10148 +f 10148 10151 10152 +f 10148 10152 10149 +f 10149 10152 10153 +f 10149 10153 10150 +f 10150 10153 10154 +f 10150 10154 10140 +f 10140 10154 10142 +f 3491 3489 10151 +f 10151 3489 10155 +f 10151 10155 10152 +f 10152 10155 10156 +f 10152 10156 10153 +f 10153 10156 10157 +f 10153 10157 10154 +f 10154 10157 10158 +f 10154 10158 10142 +f 10142 10158 10144 +f 3489 3487 10155 +f 10155 3487 3502 +f 10155 3502 10156 +f 10156 3502 3503 +f 10156 3503 10157 +f 10157 3503 3504 +f 10157 3504 10158 +f 10158 3504 3505 +f 10158 3505 10144 +f 10144 3505 10146 +f 3487 3485 3502 +f 8264 3473 3476 +f 3476 3477 10159 +f 10159 3477 3479 +f 10159 3479 10160 +f 10160 3479 8081 +f 10160 8081 8080 +f 3470 252 8269 +f 3403 3320 3319 +f 3403 3319 3317 +f 9713 3322 3321 +f 9713 3321 3404 +f 3328 10003 3330 +f 3330 10003 10161 +f 3330 10161 3332 +f 3332 10161 10162 +f 3332 10162 3334 +f 3334 10162 10163 +f 3334 10163 3336 +f 3336 10163 10164 +f 3336 10164 3338 +f 3338 10164 10165 +f 3338 10165 3340 +f 3340 10165 10166 +f 3340 10166 3342 +f 3342 10166 10167 +f 3342 10167 3344 +f 3344 10167 10168 +f 3344 10168 3346 +f 3346 10168 10169 +f 3346 10169 3348 +f 3348 10169 10170 +f 3348 10170 3350 +f 3350 10170 10087 +f 3350 10087 3352 +f 3356 9190 3358 +f 3358 9190 10171 +f 3358 10171 3360 +f 3360 10171 10172 +f 3360 10172 3362 +f 3362 10172 10173 +f 3362 10173 3364 +f 3364 10173 10174 +f 3364 10174 3366 +f 3366 10174 10175 +f 3366 10175 3368 +f 3368 10175 10176 +f 3368 10176 3370 +f 3370 10176 10177 +f 3370 10177 3372 +f 3372 10177 10178 +f 3372 10178 3374 +f 3374 10178 10179 +f 3374 10179 3376 +f 3376 10179 10180 +f 3376 10180 3378 +f 3378 10180 10076 +f 3378 10076 3380 +f 3383 9467 3381 +f 3381 9467 10181 +f 3381 10181 3379 +f 3379 10181 10182 +f 3379 10182 3377 +f 3377 10182 10183 +f 3377 10183 3375 +f 3375 10183 10184 +f 3375 10184 3373 +f 3373 10184 3674 +f 3371 3673 3369 +f 3369 3673 10185 +f 3369 10185 3367 +f 3367 10185 10186 +f 3367 10186 3365 +f 3365 10186 10187 +f 3365 10187 3363 +f 3363 10187 10188 +f 3363 10188 3361 +f 3361 10188 10189 +f 3361 10189 3359 +f 3359 10189 10190 +f 3359 10190 3357 +f 3357 10190 10191 +f 3357 10191 3355 +f 3355 10191 10192 +f 3355 10192 3353 +f 3353 10192 10193 +f 3353 10193 3351 +f 3351 10193 10194 +f 3351 10194 3349 +f 3349 10194 10195 +f 3349 10195 3347 +f 3347 10195 10196 +f 3347 10196 3345 +f 3345 10196 10197 +f 3345 10197 3343 +f 3343 10197 10198 +f 3343 10198 3341 +f 3341 10198 10199 +f 3341 10199 3339 +f 3339 10199 10200 +f 3339 10200 3337 +f 3337 10200 10201 +f 3337 10201 3335 +f 3335 10201 10202 +f 3335 10202 3333 +f 3333 10202 10203 +f 3333 10203 3331 +f 3331 10203 10204 +f 3331 10204 3329 +f 3329 10204 10205 +f 3329 10205 3327 +f 3327 10205 10206 +f 3327 10206 3325 +f 3325 10206 3407 +f 3325 3407 3323 +f 9580 3171 10207 +f 10207 3171 3173 +f 10207 3173 10208 +f 10208 3173 3175 +f 10208 3175 10209 +f 10209 3175 3177 +f 10209 3177 10210 +f 10210 3177 3179 +f 8271 3470 8269 +f 9578 10207 10211 +f 10211 10207 10208 +f 10211 10208 10212 +f 10212 10208 10209 +f 10212 10209 10213 +f 10213 10209 10210 +f 10207 9578 9580 +f 9578 10211 9576 +f 9576 10211 10214 +f 9576 10214 9573 +f 9573 10214 9574 +f 10214 10211 10212 +f 249 10146 3505 +f 10213 10215 10212 +f 10212 10215 10214 +f 10215 9574 10214 +f 169 3585 3586 +f 3578 201 3580 +f 3582 169 10216 +f 10216 169 3586 +f 10216 3586 10217 +f 10217 3586 3566 +f 10217 3566 3564 +f 240 3574 3547 +f 3544 3545 3546 +f 3523 3521 3541 +f 10210 3179 10218 +f 10218 3179 3182 +f 10218 3182 10219 +f 10219 3182 3184 +f 10219 3184 4002 +f 10213 10210 10220 +f 10220 10210 10218 +f 10220 10218 10221 +f 10221 10218 10219 +f 10221 10219 10222 +f 10222 10219 4002 +f 10222 4002 4000 +f 10215 10213 10223 +f 10223 10213 10220 +f 10223 10220 10224 +f 10224 10220 10221 +f 10224 10221 10225 +f 10225 10221 10222 +f 10225 10222 10226 +f 10226 10222 4000 +f 10226 4000 3998 +f 104 10227 9570 +f 9570 10227 10228 +f 9570 10228 9569 +f 9569 10228 10229 +f 9569 10229 9565 +f 9565 10229 9566 +f 9574 10215 10230 +f 10230 10215 10223 +f 10230 10223 10231 +f 10231 10223 10224 +f 10231 10224 10232 +f 10232 10224 10225 +f 10232 10225 10233 +f 10233 10225 10226 +f 10233 10226 4118 +f 4118 10226 3998 +f 104 9574 10227 +f 10227 9574 10230 +f 10227 10230 10234 +f 10234 10230 10231 +f 10234 10231 10235 +f 10235 10231 10232 +f 10235 10232 10236 +f 10236 10232 10233 +f 10236 10233 4116 +f 4116 10233 4118 +f 1 9563 9557 +f 9551 22 9556 +f 9556 22 9555 +f 9347 9367 10237 +f 10237 9367 9369 +f 10237 9369 10238 +f 10238 9369 9370 +f 10238 9370 10239 +f 10239 9370 9371 +f 10239 9371 10240 +f 10240 9371 9372 +f 10240 9372 10241 +f 10241 9372 9373 +f 10241 9373 9374 +f 9463 10242 10243 +f 10243 10242 10244 +f 10243 10244 10245 +f 10245 10244 10246 +f 10245 10246 10247 +f 10247 10246 10248 +f 10247 10248 10184 +f 10184 10248 3674 +f 10242 10249 10244 +f 10244 10249 10250 +f 10244 10250 10246 +f 10246 10250 10251 +f 10246 10251 10248 +f 10248 10251 3672 +f 10248 3672 3674 +f 9463 9462 10242 +f 10242 9462 10252 +f 10242 10252 10249 +f 10249 10252 10253 +f 10249 10253 10254 +f 10254 10253 10255 +f 10254 10255 10256 +f 10256 10255 10257 +f 10256 10257 3666 +f 3666 10257 3664 +f 10249 10254 10250 +f 10250 10254 10258 +f 10250 10258 10251 +f 10251 10258 3670 +f 10251 3670 3672 +f 10254 10256 10258 +f 10258 10256 3668 +f 10258 3668 3670 +f 10256 3666 3668 +f 3665 10259 10260 +f 10260 10259 10261 +f 10260 10261 10262 +f 10262 10261 10263 +f 10262 10263 10264 +f 10264 10263 10265 +f 10264 10265 10188 +f 10188 10265 10189 +f 10259 10266 10261 +f 10261 10266 10267 +f 10261 10267 10263 +f 10263 10267 10268 +f 10263 10268 10265 +f 10265 10268 10269 +f 10265 10269 10189 +f 10189 10269 10190 +f 3665 3663 10259 +f 10259 3663 10270 +f 10259 10270 10266 +f 10266 10270 10271 +f 10266 10271 10272 +f 10272 10271 10273 +f 10272 10273 10274 +f 10274 10273 10275 +f 10274 10275 10276 +f 10276 10275 10277 +f 10276 10277 10278 +f 10278 10277 10279 +f 10278 10279 10280 +f 10280 10279 10281 +f 10280 10281 10282 +f 10282 10281 10283 +f 10282 10283 10284 +f 10284 10283 10285 +f 10284 10285 10286 +f 10286 10285 10287 +f 10286 10287 10288 +f 10288 10287 10289 +f 10288 10289 10290 +f 10290 10289 10291 +f 10290 10291 10292 +f 10292 10291 10293 +f 10292 10293 10294 +f 10294 10293 10295 +f 10294 10295 10296 +f 10296 10295 10297 +f 10296 10297 10298 +f 10298 10297 10299 +f 10298 10299 10300 +f 10300 10299 10301 +f 10300 10301 10302 +f 10302 10301 10303 +f 10302 10303 10304 +f 10304 10303 10305 +f 10304 10305 3412 +f 3412 10305 3592 +f 3412 3592 3413 +f 10266 10272 10267 +f 10267 10272 10306 +f 10267 10306 10268 +f 10268 10306 10307 +f 10268 10307 10269 +f 10269 10307 10308 +f 10269 10308 10190 +f 10190 10308 10191 +f 10272 10274 10306 +f 10306 10274 10309 +f 10306 10309 10307 +f 10307 10309 10310 +f 10307 10310 10308 +f 10308 10310 10311 +f 10308 10311 10191 +f 10191 10311 10192 +f 10274 10276 10309 +f 10309 10276 10312 +f 10309 10312 10310 +f 10310 10312 10313 +f 10310 10313 10311 +f 10311 10313 10314 +f 10311 10314 10192 +f 10192 10314 10193 +f 10276 10278 10312 +f 10312 10278 10315 +f 10312 10315 10313 +f 10313 10315 10316 +f 10313 10316 10314 +f 10314 10316 10317 +f 10314 10317 10193 +f 10193 10317 10194 +f 10278 10280 10315 +f 10315 10280 10318 +f 10315 10318 10316 +f 10316 10318 10319 +f 10316 10319 10317 +f 10317 10319 10320 +f 10317 10320 10194 +f 10194 10320 10195 +f 10280 10282 10318 +f 10318 10282 10321 +f 10318 10321 10319 +f 10319 10321 10322 +f 10319 10322 10320 +f 10320 10322 10323 +f 10320 10323 10195 +f 10195 10323 10196 +f 10282 10284 10321 +f 10321 10284 10324 +f 10321 10324 10322 +f 10322 10324 10325 +f 10322 10325 10323 +f 10323 10325 10326 +f 10323 10326 10196 +f 10196 10326 10197 +f 10284 10286 10324 +f 10324 10286 10327 +f 10324 10327 10325 +f 10325 10327 10328 +f 10325 10328 10326 +f 10326 10328 10329 +f 10326 10329 10197 +f 10197 10329 10198 +f 10286 10288 10327 +f 10327 10288 10330 +f 10327 10330 10328 +f 10328 10330 10331 +f 10328 10331 10329 +f 10329 10331 10332 +f 10329 10332 10198 +f 10198 10332 10199 +f 10288 10290 10330 +f 10330 10290 10333 +f 10330 10333 10331 +f 10331 10333 10334 +f 10331 10334 10332 +f 10332 10334 10335 +f 10332 10335 10199 +f 10199 10335 10200 +f 10290 10292 10333 +f 10333 10292 10336 +f 10333 10336 10334 +f 10334 10336 10337 +f 10334 10337 10335 +f 10335 10337 10338 +f 10335 10338 10200 +f 10200 10338 10201 +f 10292 10294 10336 +f 10336 10294 10339 +f 10336 10339 10337 +f 10337 10339 10340 +f 10337 10340 10338 +f 10338 10340 10341 +f 10338 10341 10201 +f 10201 10341 10202 +f 10294 10296 10339 +f 10339 10296 10342 +f 10339 10342 10340 +f 10340 10342 10343 +f 10340 10343 10341 +f 10341 10343 10344 +f 10341 10344 10202 +f 10202 10344 10203 +f 10296 10298 10342 +f 10342 10298 10345 +f 10342 10345 10343 +f 10343 10345 10346 +f 10343 10346 10344 +f 10344 10346 10347 +f 10344 10347 10203 +f 10203 10347 10204 +f 10298 10300 10345 +f 10345 10300 10348 +f 10345 10348 10346 +f 10346 10348 10349 +f 10346 10349 10347 +f 10347 10349 10350 +f 10347 10350 10204 +f 10204 10350 10205 +f 10300 10302 10348 +f 10348 10302 10351 +f 10348 10351 10349 +f 10349 10351 10352 +f 10349 10352 10350 +f 10350 10352 10353 +f 10350 10353 10205 +f 10205 10353 10206 +f 10302 10304 10351 +f 10351 10304 10354 +f 10351 10354 10352 +f 10352 10354 10355 +f 10352 10355 10353 +f 10353 10355 10356 +f 10353 10356 10206 +f 10206 10356 3407 +f 10304 3412 10354 +f 10354 3412 3411 +f 10354 3411 10355 +f 10355 3411 3410 +f 10355 3410 10356 +f 10356 3410 3409 +f 10356 3409 3407 +f 3588 3589 10357 +f 10357 3589 3591 +f 10357 3591 10358 +f 10358 3591 3593 +f 10358 3593 10359 +f 10359 3593 3595 +f 10359 3595 10360 +f 10360 3595 3597 +f 10360 3597 10361 +f 10361 3597 3599 +f 10361 3599 10362 +f 10362 3599 3601 +f 10362 3601 10363 +f 10363 3601 3603 +f 10363 3603 10364 +f 10364 3603 3605 +f 10364 3605 10365 +f 10365 3605 3607 +f 10365 3607 10366 +f 10366 3607 3609 +f 10366 3609 3710 +f 3710 3609 3611 +f 3587 3588 10367 +f 10367 3588 10357 +f 10367 10357 10368 +f 10368 10357 10358 +f 10368 10358 10369 +f 10369 10358 10359 +f 10369 10359 10370 +f 10370 10359 10360 +f 10370 10360 10371 +f 10371 10360 10361 +f 10371 10361 10372 +f 10372 10361 10362 +f 10372 10362 10373 +f 10373 10362 10363 +f 10373 10363 10374 +f 10374 10363 10364 +f 10374 10364 10375 +f 10375 10364 10365 +f 10375 10365 10376 +f 10376 10365 10366 +f 10376 10366 3708 +f 3708 10366 3710 +f 3569 3587 10377 +f 10377 3587 10367 +f 10377 10367 10378 +f 10378 10367 10368 +f 10378 10368 10379 +f 10379 10368 10369 +f 10379 10369 10380 +f 10380 10369 10370 +f 10380 10370 10381 +f 10381 10370 10371 +f 10381 10371 10382 +f 10382 10371 10372 +f 10382 10372 10383 +f 10383 10372 10373 +f 10383 10373 10384 +f 10384 10373 10374 +f 10384 10374 10385 +f 10385 10374 10375 +f 10385 10375 10386 +f 10386 10375 10376 +f 10386 10376 3708 +f 3579 3581 10387 +f 10387 3581 10216 +f 10387 10216 10388 +f 10388 10216 10217 +f 10388 10217 10389 +f 10389 10217 3564 +f 10389 3564 3562 +f 239 3579 3575 +f 3575 3579 10387 +f 3575 10387 3576 +f 3576 10387 10388 +f 3576 10388 3577 +f 3577 10388 10389 +f 3577 10389 3559 +f 3559 10389 3562 +f 3544 3546 3541 +f 3541 3546 10390 +f 3541 10390 3523 +f 3523 10390 3525 +f 10390 3546 3548 +f 10145 3508 3510 +f 10143 10145 10391 +f 10391 10145 3510 +f 10391 3510 3512 +f 10141 10143 10392 +f 10392 10143 10391 +f 10392 10391 10393 +f 10393 10391 3512 +f 10393 3512 3514 +f 10131 10141 10132 +f 10132 10141 10392 +f 10132 10392 10133 +f 10133 10392 10393 +f 10133 10393 10134 +f 10134 10393 3514 +f 10134 3514 3516 +f 10227 10234 10228 +f 10228 10234 10394 +f 10228 10394 10229 +f 10229 10394 10395 +f 10229 10395 9566 +f 9566 10395 4110 +f 10394 10234 10235 +f 9565 9564 9569 +f 9547 9546 9551 +f 9551 9556 10396 +f 10396 9556 9558 +f 10396 9558 10397 +f 10397 9558 9560 +f 10397 9560 4102 +f 4102 9560 4106 +f 4129 4126 4124 +f 3581 3582 10216 +f 3665 10260 3667 +f 3667 10260 10398 +f 3667 10398 3669 +f 3669 10398 10399 +f 3669 10399 3671 +f 3671 10399 10185 +f 3671 10185 3673 +f 10398 10260 10262 +f 9463 10243 9464 +f 9464 10243 10400 +f 9464 10400 9465 +f 9465 10400 10401 +f 9465 10401 9466 +f 9466 10401 10181 +f 9466 10181 9467 +f 10400 10243 10245 +f 10398 10262 10402 +f 10402 10262 10264 +f 10402 10264 10187 +f 10187 10264 10188 +f 10400 10245 10403 +f 10403 10245 10247 +f 10403 10247 10183 +f 10183 10247 10184 +f 10398 10402 10399 +f 10399 10402 10186 +f 10399 10186 10185 +f 10186 10402 10187 +f 10400 10403 10401 +f 10401 10403 10182 +f 10401 10182 10181 +f 10182 10403 10183 +f 3946 3944 9543 +f 9543 3944 10404 +f 9543 10404 10405 +f 10405 10404 10406 +f 10405 10406 3817 +f 3817 10406 3815 +f 3944 3942 10404 +f 10404 3942 10407 +f 10404 10407 10406 +f 10406 10407 10408 +f 10406 10408 3815 +f 3815 10408 3813 +f 3942 3941 10407 +f 10407 3941 10409 +f 10407 10409 10408 +f 10408 10409 3801 +f 10408 3801 3813 +f 3813 3801 3811 +f 3941 3940 10409 +f 10409 3940 3797 +f 10409 3797 3801 +f 3747 3746 3758 +f 3757 3773 10410 +f 10410 3773 3954 +f 10410 3954 10411 +f 10411 3954 3959 +f 10411 3959 3964 +f 3748 3747 10412 +f 10412 3747 3758 +f 10412 3758 3760 +f 3749 3748 10413 +f 10413 3748 10412 +f 10413 10412 10414 +f 10414 10412 3760 +f 10414 3760 3762 +f 3750 3749 10415 +f 10415 3749 10413 +f 10415 10413 10416 +f 10416 10413 10414 +f 10416 10414 10417 +f 10417 10414 3762 +f 10417 3762 3764 +f 3751 3750 10418 +f 10418 3750 10415 +f 10418 10415 10419 +f 10419 10415 10416 +f 10419 10416 10420 +f 10420 10416 10417 +f 10420 10417 10421 +f 10421 10417 3764 +f 10421 3764 3766 +f 3752 3751 10422 +f 10422 3751 10418 +f 10422 10418 10423 +f 10423 10418 10419 +f 10423 10419 10424 +f 10424 10419 10420 +f 10424 10420 10425 +f 10425 10420 10421 +f 10425 10421 10426 +f 10426 10421 3766 +f 10426 3766 3768 +f 3753 3752 10427 +f 10427 3752 10422 +f 10427 10422 10428 +f 10428 10422 10423 +f 10428 10423 10429 +f 10429 10423 10424 +f 10429 10424 10430 +f 10430 10424 10425 +f 10430 10425 10431 +f 10431 10425 10426 +f 10431 10426 10432 +f 10432 10426 3768 +f 10432 3768 3770 +f 3754 3753 10433 +f 10433 3753 10427 +f 10433 10427 10434 +f 10434 10427 10428 +f 10434 10428 10435 +f 10435 10428 10429 +f 10435 10429 10436 +f 10436 10429 10430 +f 10436 10430 10437 +f 10437 10430 10431 +f 10437 10431 10438 +f 10438 10431 10432 +f 10438 10432 3770 +f 3755 3754 10439 +f 10439 3754 10433 +f 10439 10433 10440 +f 10440 10433 10434 +f 10440 10434 10441 +f 10441 10434 10435 +f 10441 10435 10442 +f 10442 10435 10436 +f 10442 10436 10443 +f 10443 10436 10437 +f 10443 10437 10444 +f 10444 10437 10438 +f 10444 10438 10445 +f 10445 10438 3770 +f 10445 3770 3772 +f 3214 3755 3212 +f 3212 3755 10439 +f 3212 10439 3210 +f 3210 10439 10440 +f 3210 10440 3208 +f 3208 10440 10441 +f 3208 10441 3206 +f 3206 10441 10442 +f 3206 10442 3204 +f 3204 10442 10443 +f 3204 10443 3202 +f 3202 10443 10444 +f 3202 10444 3200 +f 3200 10444 10445 +f 3200 10445 3198 +f 3198 10445 3772 +f 4085 3213 3211 +f 9542 9543 10405 +f 3811 3801 3803 +f 3809 3811 3803 +f 3819 9542 10405 +f 3819 10405 3817 +f 3805 3809 3803 +f 3838 3836 3883 +f 3883 3836 3881 +f 3836 3834 3881 +f 3881 3834 3882 +f 3834 3832 3882 +f 3840 3838 3883 +f 3852 3887 3854 +f 3854 3887 3889 +f 3854 3889 3856 +f 3856 3889 3891 +f 3858 3899 3860 +f 3860 3899 10446 +f 3860 10446 3862 +f 3862 10446 10447 +f 3862 10447 3864 +f 3864 10447 10448 +f 3864 10448 3866 +f 3866 10448 3868 +f 3867 3869 9511 +f 9511 3869 10449 +f 9511 10449 9509 +f 9509 10449 9507 +f 9509 9507 9506 +f 9482 9484 10450 +f 10450 9484 9486 +f 10450 9486 10451 +f 10451 9486 9488 +f 10451 9488 10452 +f 10452 9488 9490 +f 10452 9490 10453 +f 10453 9490 9492 +f 10453 9492 3709 +f 3709 9492 3707 +f 3621 3623 9480 +f 9480 9482 10454 +f 10454 9482 10450 +f 10454 10450 10455 +f 10455 10450 10451 +f 10455 10451 10456 +f 10456 10451 10452 +f 10456 10452 10457 +f 10457 10452 10453 +f 10457 10453 3711 +f 3711 10453 3709 +f 3627 3624 10458 +f 10458 3624 3622 +f 10458 3622 10459 +f 10459 3622 3620 +f 10459 3620 10460 +f 10460 3620 3618 +f 10460 3618 10461 +f 10461 3618 3616 +f 10461 3616 10462 +f 10462 3616 3614 +f 10462 3614 10463 +f 10463 3614 3612 +f 10463 3612 10464 +f 10464 3612 3610 +f 10464 3610 10465 +f 10465 3610 3608 +f 10465 3608 10466 +f 10466 3608 3606 +f 10466 3606 10467 +f 10467 3606 3604 +f 10467 3604 10468 +f 10468 3604 3602 +f 10468 3602 10469 +f 10469 3602 3600 +f 10469 3600 10470 +f 10470 3600 3598 +f 10470 3598 10471 +f 10471 3598 3596 +f 10471 3596 10472 +f 10472 3596 3594 +f 10472 3594 10305 +f 10305 3594 3592 +f 3629 3627 10473 +f 10473 3627 10458 +f 10473 10458 10474 +f 10474 10458 10459 +f 10474 10459 10475 +f 10475 10459 10460 +f 10475 10460 10476 +f 10476 10460 10461 +f 10476 10461 10477 +f 10477 10461 10462 +f 10477 10462 10478 +f 10478 10462 10463 +f 10478 10463 10479 +f 10479 10463 10464 +f 10479 10464 10480 +f 10480 10464 10465 +f 10480 10465 10481 +f 10481 10465 10466 +f 10481 10466 10482 +f 10482 10466 10467 +f 10482 10467 10483 +f 10483 10467 10468 +f 10483 10468 10484 +f 10484 10468 10469 +f 10484 10469 10485 +f 10485 10469 10470 +f 10485 10470 10486 +f 10486 10470 10471 +f 10486 10471 10487 +f 10487 10471 10472 +f 10487 10472 10303 +f 10303 10472 10305 +f 3631 3629 10488 +f 10488 3629 10473 +f 10488 10473 10489 +f 10489 10473 10474 +f 10489 10474 10490 +f 10490 10474 10475 +f 10490 10475 10491 +f 10491 10475 10476 +f 10491 10476 10492 +f 10492 10476 10477 +f 10492 10477 10493 +f 10493 10477 10478 +f 10493 10478 10494 +f 10494 10478 10479 +f 10494 10479 10495 +f 10495 10479 10480 +f 10495 10480 10496 +f 10496 10480 10481 +f 10496 10481 10497 +f 10497 10481 10482 +f 10497 10482 10498 +f 10498 10482 10483 +f 10498 10483 10499 +f 10499 10483 10484 +f 10499 10484 10500 +f 10500 10484 10501 +f 10500 10501 10502 +f 10502 10501 10503 +f 10502 10503 10504 +f 10504 10503 10505 +f 10504 10505 10299 +f 10299 10505 10301 +f 9470 9472 10506 +f 10506 9472 9474 +f 10506 9474 10507 +f 10507 9474 9476 +f 10507 9476 10508 +f 10508 9476 3638 +f 10508 3638 3640 +f 9468 9470 10509 +f 10509 9470 10506 +f 10509 10506 10510 +f 10510 10506 10507 +f 10510 10507 10511 +f 10511 10507 10508 +f 10511 10508 10512 +f 10512 10508 3640 +f 10512 3640 3642 +f 9445 9468 10513 +f 10513 9468 10509 +f 10513 10509 10514 +f 10514 10509 10510 +f 10514 10510 10515 +f 10515 10510 10511 +f 10515 10511 10516 +f 10516 10511 10512 +f 10516 10512 10517 +f 10517 10512 3642 +f 10517 3642 3644 +f 9446 9445 10518 +f 10518 9445 10513 +f 10518 10513 10519 +f 10519 10513 10514 +f 10519 10514 10520 +f 10520 10514 10515 +f 10520 10515 10521 +f 10521 10515 10516 +f 10521 10516 10522 +f 10522 10516 10517 +f 10522 10517 10523 +f 10523 10517 3644 +f 10523 3644 3646 +f 9364 9363 9442 +f 9442 9363 10524 +f 9442 10524 9440 +f 9440 10524 10525 +f 9440 10525 9438 +f 9438 10525 10526 +f 9438 10526 9436 +f 9436 10526 10527 +f 9436 10527 9434 +f 9434 10527 10528 +f 9434 10528 9432 +f 9432 10528 10529 +f 9432 10529 9394 +f 9394 10529 9392 +f 3899 3898 10446 +f 10446 3898 10530 +f 10446 10530 10447 +f 10447 10530 10531 +f 10447 10531 10448 +f 10448 10531 10532 +f 10448 10532 3868 +f 3868 10532 3870 +f 9508 9507 10449 +f 9508 10449 3871 +f 3871 10449 3869 +f 3619 3621 10454 +f 10454 3621 9480 +f 3619 10454 10455 +f 3631 10488 3633 +f 3633 10488 10533 +f 3633 10533 3635 +f 3635 10533 10534 +f 3635 10534 3637 +f 3637 10534 10535 +f 3637 10535 3639 +f 3639 10535 10536 +f 3639 10536 3641 +f 3641 10536 10537 +f 3641 10537 3643 +f 3643 10537 10538 +f 3643 10538 3645 +f 3645 10538 10539 +f 3645 10539 3647 +f 3647 10539 10540 +f 3647 10540 3649 +f 3649 10540 10541 +f 3649 10541 3651 +f 3651 10541 10542 +f 3651 10542 3653 +f 3653 10542 10543 +f 3653 10543 3655 +f 3655 10543 10544 +f 3655 10544 3657 +f 3657 10544 10545 +f 3657 10545 3659 +f 3659 10545 10546 +f 3659 10546 3661 +f 3661 10546 10270 +f 3661 10270 3663 +f 10533 10488 10489 +f 9446 10518 9447 +f 9447 10518 10547 +f 9447 10547 9448 +f 9448 10547 10548 +f 9448 10548 9449 +f 9449 10548 10549 +f 9449 10549 9450 +f 9450 10549 10550 +f 9450 10550 9451 +f 9451 10550 10551 +f 9451 10551 9452 +f 9452 10551 9453 +f 10547 10518 10519 +f 9363 9362 10524 +f 10524 9362 10552 +f 10524 10552 10525 +f 10525 10552 10553 +f 10525 10553 10526 +f 10526 10553 10554 +f 10526 10554 10527 +f 10527 10554 10555 +f 10527 10555 10528 +f 10528 10555 10556 +f 10528 10556 10529 +f 10529 10556 10557 +f 10529 10557 9392 +f 9392 10557 9390 +f 3898 3902 10530 +f 10530 3902 10558 +f 10530 10558 10531 +f 10531 10558 10559 +f 10531 10559 10532 +f 10532 10559 10560 +f 10532 10560 3870 +f 3870 10560 3872 +f 3873 9508 3871 +f 3617 3619 10455 +f 3617 10455 10456 +f 10533 10489 10561 +f 10561 10489 10490 +f 10561 10490 10562 +f 10562 10490 10491 +f 10562 10491 10563 +f 10563 10491 10492 +f 10563 10492 10564 +f 10564 10492 10493 +f 10564 10493 10565 +f 10565 10493 10494 +f 10565 10494 10566 +f 10566 10494 10495 +f 10566 10495 10567 +f 10567 10495 10496 +f 10567 10496 10568 +f 10568 10496 10497 +f 10568 10497 10569 +f 10569 10497 10498 +f 10569 10498 10570 +f 10570 10498 10499 +f 10570 10499 10571 +f 10571 10499 10500 +f 10571 10500 10572 +f 10572 10500 10502 +f 10572 10502 10573 +f 10573 10502 10504 +f 10573 10504 10297 +f 10297 10504 10299 +f 10547 10519 10574 +f 10574 10519 10520 +f 10574 10520 10575 +f 10575 10520 10521 +f 10575 10521 10576 +f 10576 10521 10522 +f 10576 10522 10577 +f 10577 10522 10523 +f 10577 10523 10578 +f 10578 10523 3646 +f 10578 3646 3648 +f 9362 9361 10552 +f 10552 9361 10579 +f 10552 10579 10553 +f 10553 10579 10580 +f 10553 10580 10554 +f 10554 10580 10581 +f 10554 10581 10555 +f 10555 10581 10582 +f 10555 10582 10556 +f 10556 10582 10583 +f 10556 10583 10557 +f 10557 10583 10584 +f 10557 10584 9390 +f 9390 10584 9388 +f 10558 3902 10585 +f 10585 3902 3901 +f 10585 3901 3691 +f 10559 10558 10586 +f 10586 10558 10585 +f 10586 10585 3693 +f 3693 10585 3691 +f 10560 10559 10587 +f 10587 10559 10586 +f 10587 10586 3695 +f 3695 10586 3693 +f 3872 10560 10588 +f 10588 10560 10587 +f 10588 10587 3697 +f 3697 10587 3695 +f 3615 3617 10456 +f 3615 10456 10457 +f 10533 10561 10534 +f 10534 10561 10589 +f 10534 10589 10535 +f 10535 10589 10590 +f 10535 10590 10536 +f 10536 10590 10591 +f 10536 10591 10537 +f 10537 10591 10592 +f 10537 10592 10538 +f 10538 10592 10593 +f 10538 10593 10539 +f 10539 10593 10594 +f 10539 10594 10540 +f 10540 10594 10595 +f 10540 10595 10541 +f 10541 10595 10596 +f 10541 10596 10542 +f 10542 10596 10597 +f 10542 10597 10543 +f 10543 10597 10598 +f 10543 10598 10544 +f 10544 10598 10599 +f 10544 10599 10545 +f 10545 10599 10600 +f 10545 10600 10546 +f 10546 10600 10271 +f 10546 10271 10270 +f 10589 10561 10562 +f 10547 10574 10548 +f 10548 10574 10601 +f 10548 10601 10549 +f 10549 10601 10602 +f 10549 10602 10550 +f 10550 10602 10603 +f 10550 10603 10551 +f 10551 10603 10604 +f 10551 10604 9453 +f 9453 10604 10605 +f 9453 10605 9454 +f 9454 10605 10606 +f 9454 10606 9455 +f 9455 10606 10607 +f 9455 10607 9456 +f 9456 10607 10608 +f 9456 10608 9457 +f 9457 10608 10609 +f 9457 10609 9458 +f 9458 10609 10610 +f 9458 10610 9459 +f 9459 10610 10611 +f 9459 10611 9460 +f 9460 10611 10612 +f 9460 10612 9461 +f 9461 10612 10252 +f 9461 10252 9462 +f 10601 10574 10575 +f 9361 9360 10579 +f 10579 9360 10613 +f 10579 10613 10580 +f 10580 10613 10614 +f 10580 10614 10581 +f 10581 10614 10615 +f 10581 10615 10582 +f 10582 10615 10616 +f 10582 10616 10583 +f 10583 10616 10617 +f 10583 10617 10584 +f 10584 10617 10618 +f 10584 10618 9388 +f 9388 10618 9386 +f 3872 10588 3874 +f 3874 10588 3699 +f 3874 3699 3701 +f 3699 10588 3697 +f 3613 3615 10457 +f 3613 10457 3711 +f 10589 10562 10619 +f 10619 10562 10563 +f 10619 10563 10620 +f 10620 10563 10564 +f 10620 10564 10621 +f 10621 10564 10565 +f 10621 10565 10622 +f 10622 10565 10566 +f 10622 10566 10623 +f 10623 10566 10567 +f 10623 10567 10624 +f 10624 10567 10568 +f 10624 10568 10625 +f 10625 10568 10569 +f 10625 10569 10626 +f 10626 10569 10570 +f 10626 10570 10627 +f 10627 10570 10571 +f 10627 10571 10628 +f 10628 10571 10572 +f 10628 10572 10629 +f 10629 10572 10573 +f 10629 10573 10295 +f 10295 10573 10297 +f 10601 10575 10630 +f 10630 10575 10576 +f 10630 10576 10631 +f 10631 10576 10577 +f 10631 10577 10632 +f 10632 10577 10578 +f 10632 10578 10633 +f 10633 10578 3648 +f 10633 3648 3650 +f 9360 9359 10613 +f 10613 9359 10634 +f 10613 10634 10614 +f 10614 10634 10635 +f 10614 10635 10615 +f 10615 10635 10636 +f 10615 10636 10616 +f 10616 10636 10637 +f 10616 10637 10617 +f 10617 10637 10638 +f 10617 10638 10618 +f 10618 10638 10639 +f 10618 10639 9386 +f 9386 10639 9384 +f 10589 10619 10590 +f 10590 10619 10640 +f 10590 10640 10591 +f 10591 10640 10641 +f 10591 10641 10592 +f 10592 10641 10642 +f 10592 10642 10593 +f 10593 10642 10643 +f 10593 10643 10594 +f 10594 10643 10644 +f 10594 10644 10595 +f 10595 10644 10645 +f 10595 10645 10596 +f 10596 10645 10646 +f 10596 10646 10597 +f 10597 10646 10647 +f 10597 10647 10598 +f 10598 10647 10648 +f 10598 10648 10599 +f 10599 10648 10649 +f 10599 10649 10600 +f 10600 10649 10273 +f 10600 10273 10271 +f 10640 10619 10620 +f 10601 10630 10602 +f 10602 10630 10650 +f 10602 10650 10603 +f 10603 10650 10651 +f 10603 10651 10604 +f 10604 10651 10652 +f 10604 10652 10605 +f 10605 10652 10653 +f 10605 10653 10606 +f 10606 10653 10654 +f 10606 10654 10607 +f 10607 10654 10655 +f 10607 10655 10608 +f 10608 10655 10656 +f 10608 10656 10609 +f 10609 10656 10657 +f 10609 10657 10610 +f 10610 10657 10658 +f 10610 10658 10611 +f 10611 10658 10659 +f 10611 10659 10612 +f 10612 10659 10253 +f 10612 10253 10252 +f 10650 10630 10631 +f 9359 9358 10634 +f 10634 9358 10660 +f 10634 10660 10635 +f 10635 10660 10661 +f 10635 10661 10636 +f 10636 10661 10662 +f 10636 10662 10637 +f 10637 10662 10663 +f 10637 10663 10638 +f 10638 10663 10664 +f 10638 10664 10639 +f 10639 10664 10665 +f 10639 10665 9384 +f 9384 10665 9382 +f 3694 4013 3696 +f 3696 4013 10666 +f 3696 10666 3698 +f 3698 10666 10667 +f 3698 10667 3700 +f 3700 10667 10668 +f 3700 10668 3702 +f 3702 10668 10669 +f 3702 10669 3704 +f 3704 10669 10670 +f 3704 10670 3706 +f 3706 10670 10386 +f 3706 10386 3708 +f 10640 10620 10671 +f 10671 10620 10621 +f 10671 10621 10672 +f 10672 10621 10622 +f 10672 10622 10673 +f 10673 10622 10623 +f 10673 10623 10674 +f 10674 10623 10624 +f 10674 10624 10675 +f 10675 10624 10625 +f 10675 10625 10676 +f 10676 10625 10626 +f 10676 10626 10677 +f 10677 10626 10627 +f 10677 10627 10678 +f 10678 10627 10628 +f 10678 10628 10679 +f 10679 10628 10629 +f 10679 10629 10293 +f 10293 10629 10295 +f 10650 10631 10680 +f 10680 10631 10632 +f 10680 10632 10681 +f 10681 10632 10633 +f 10681 10633 10682 +f 10682 10633 3650 +f 10682 3650 3652 +f 9358 9357 10660 +f 10660 9357 10683 +f 10660 10683 10661 +f 10661 10683 10684 +f 10661 10684 10662 +f 10662 10684 10685 +f 10662 10685 10663 +f 10663 10685 10686 +f 10663 10686 10664 +f 10664 10686 10687 +f 10664 10687 10665 +f 10665 10687 10688 +f 10665 10688 9382 +f 9382 10688 9380 +f 4166 4170 4172 +f 4146 4166 4148 +f 4148 4166 4172 +f 4148 4172 3945 +f 3909 3943 3911 +f 3963 3980 3985 +f 3963 3985 3965 +f 3965 3985 3987 +f 3965 3987 3967 +f 3967 3987 3989 +f 3967 3989 3969 +f 3969 3989 3991 +f 3969 3991 3971 +f 3971 3991 3993 +f 3971 3993 3973 +f 3973 3993 3995 +f 3973 3995 3975 +f 3975 3995 3997 +f 3975 3997 3977 +f 3977 3997 3999 +f 3977 3999 3979 +f 3979 3999 4001 +f 3979 4001 3188 +f 3188 4001 3186 +f 3966 10689 10690 +f 10690 10689 10691 +f 10690 10691 10692 +f 10692 10691 3761 +f 10692 3761 3759 +f 10689 10693 10691 +f 10691 10693 3763 +f 10691 3763 3761 +f 3966 3968 10689 +f 10689 3968 10694 +f 10689 10694 10693 +f 10693 10694 10695 +f 10693 10695 3765 +f 3765 10695 3767 +f 10693 3765 3763 +f 3205 10696 3207 +f 3207 10696 10697 +f 3207 10697 3209 +f 3209 10697 10698 +f 3209 10698 3211 +f 3211 10698 4085 +f 10696 4068 10697 +f 10697 4068 4067 +f 10697 4067 10698 +f 10698 4067 4080 +f 10698 4080 4085 +f 10696 3205 10699 +f 10699 3205 3203 +f 10699 3203 10700 +f 10700 3203 3201 +f 10700 3201 10701 +f 10701 3201 3199 +f 10701 3199 10702 +f 10702 3199 3197 +f 10702 3197 3519 +f 4068 10696 4070 +f 4070 10696 10699 +f 4070 10699 4072 +f 4072 10699 10700 +f 4072 10700 4074 +f 4074 10700 10701 +f 4074 10701 4076 +f 4076 10701 10702 +f 4076 10702 4078 +f 4078 10702 3519 +f 4078 3519 3517 +f 4056 4055 4069 +f 4018 4200 4015 +f 4015 4200 10703 +f 4015 10703 4013 +f 4013 10703 10666 +f 4200 4196 10703 +f 10703 4196 10704 +f 10703 10704 10666 +f 10666 10704 10667 +f 4196 10705 10704 +f 10704 10705 10706 +f 10704 10706 10667 +f 10667 10706 10668 +f 10705 10707 10706 +f 10706 10707 10708 +f 10706 10708 10668 +f 10668 10708 10669 +f 10705 4196 10709 +f 10709 4196 4194 +f 10709 4194 4192 +f 10707 10710 10708 +f 10708 10710 10711 +f 10708 10711 10669 +f 10669 10711 10670 +f 10707 10705 10712 +f 10712 10705 10709 +f 10712 10709 10713 +f 10713 10709 4192 +f 10713 4192 4190 +f 10710 10384 10711 +f 10711 10384 10385 +f 10711 10385 10670 +f 10670 10385 10386 +f 10710 10707 10714 +f 10714 10707 10712 +f 10714 10712 10715 +f 10715 10712 10713 +f 10715 10713 10716 +f 10716 10713 4190 +f 10716 4190 4188 +f 10384 10710 10383 +f 10383 10710 10714 +f 10383 10714 10382 +f 10382 10714 10715 +f 10382 10715 10381 +f 10381 10715 10716 +f 10381 10716 10380 +f 10380 10716 4188 +f 10380 4188 10379 +f 10379 4188 4211 +f 10379 4211 10378 +f 10378 4211 4213 +f 10378 4213 10377 +f 10377 4213 3567 +f 10377 3567 3569 +f 10673 10717 10672 +f 10672 10717 10718 +f 10672 10718 10671 +f 10671 10718 10641 +f 10671 10641 10640 +f 10717 10719 10718 +f 10718 10719 10642 +f 10718 10642 10641 +f 10717 10673 10720 +f 10720 10673 10674 +f 10720 10674 10721 +f 10721 10674 10675 +f 10721 10675 10722 +f 10722 10675 10676 +f 10722 10676 10723 +f 10723 10676 10677 +f 10723 10677 10724 +f 10724 10677 10678 +f 10724 10678 10725 +f 10725 10678 10679 +f 10725 10679 10291 +f 10291 10679 10293 +f 10642 10719 10643 +f 10643 10719 10726 +f 10643 10726 10644 +f 10644 10726 10727 +f 10644 10727 10645 +f 10645 10727 10728 +f 10645 10728 10646 +f 10646 10728 10729 +f 10646 10729 10647 +f 10647 10729 10730 +f 10647 10730 10648 +f 10648 10730 10731 +f 10648 10731 10649 +f 10649 10731 10275 +f 10649 10275 10273 +f 10719 10717 10732 +f 10732 10717 10720 +f 10732 10720 10733 +f 10733 10720 10721 +f 10733 10721 10734 +f 10734 10721 10722 +f 10734 10722 10735 +f 10735 10722 10723 +f 10735 10723 10736 +f 10736 10723 10724 +f 10736 10724 10737 +f 10737 10724 10725 +f 10737 10725 10289 +f 10289 10725 10291 +f 10682 10738 10681 +f 10681 10738 10739 +f 10681 10739 10680 +f 10680 10739 10651 +f 10680 10651 10650 +f 10738 10740 10739 +f 10739 10740 10652 +f 10739 10652 10651 +f 10738 10682 10741 +f 10741 10682 3652 +f 10741 3652 3654 +f 10652 10740 10653 +f 10653 10740 10742 +f 10653 10742 10654 +f 10654 10742 10743 +f 10654 10743 10655 +f 10655 10743 10744 +f 10655 10744 10656 +f 10656 10744 10745 +f 10656 10745 10657 +f 10657 10745 10746 +f 10657 10746 10658 +f 10658 10746 10747 +f 10658 10747 10659 +f 10659 10747 10255 +f 10659 10255 10253 +f 10740 10738 10748 +f 10748 10738 10741 +f 10748 10741 10749 +f 10749 10741 3654 +f 10749 3654 3656 +f 9355 10750 10751 +f 10751 10750 10752 +f 10751 10752 10684 +f 10684 10752 10685 +f 10750 10753 10752 +f 10752 10753 10754 +f 10752 10754 10685 +f 10685 10754 10686 +f 9355 9354 10750 +f 10750 9354 10755 +f 10750 10755 10753 +f 10753 10755 10756 +f 10753 10756 10757 +f 10757 10756 10758 +f 10757 10758 10759 +f 10759 10758 10760 +f 10759 10760 10761 +f 10761 10760 10762 +f 10761 10762 10763 +f 10763 10762 9375 +f 10763 9375 9376 +f 10753 10757 10754 +f 10754 10757 10764 +f 10754 10764 10686 +f 10686 10764 10687 +f 10757 10759 10764 +f 10764 10759 10765 +f 10764 10765 10687 +f 10687 10765 10688 +f 10759 10761 10765 +f 10765 10761 10766 +f 10765 10766 10688 +f 10688 10766 9380 +f 10761 10763 10766 +f 10766 10763 9378 +f 10766 9378 9380 +f 10763 9376 9378 +f 9355 10751 9356 +f 9356 10751 10683 +f 9356 10683 9357 +f 10683 10751 10684 +f 10411 3964 10690 +f 10690 3964 3966 +f 10411 10690 10692 +f 10692 3759 10410 +f 10410 3759 3757 +f 10692 10410 10411 +f 4134 4120 4136 +f 4136 4120 4149 +f 4136 4149 4138 +f 4120 4134 4122 +f 4122 4134 4132 +f 4122 4132 4124 +f 4124 4132 4129 +f 10397 4102 4100 +f 10397 4100 9548 +f 4110 10395 4112 +f 4112 10395 10767 +f 4112 10767 4114 +f 4114 10767 10236 +f 4114 10236 4116 +f 3978 3190 3192 +f 3515 4062 4079 +f 4079 4062 4061 +f 4079 4061 4077 +f 4077 4061 4060 +f 4077 4060 4075 +f 4075 4060 4059 +f 4075 4059 4073 +f 4073 4059 4058 +f 4073 4058 4071 +f 4071 4058 4057 +f 4071 4057 4069 +f 4069 4057 4056 +f 4062 3515 3513 +f 3527 10768 3529 +f 3529 10768 10769 +f 3529 10769 3531 +f 3531 10769 4221 +f 3531 4221 3533 +f 3533 4221 4223 +f 3533 4223 3535 +f 10768 3552 10769 +f 10769 3552 4216 +f 10769 4216 4221 +f 10768 3527 10770 +f 10770 3527 3525 +f 10770 3525 10390 +f 3552 10768 3550 +f 3550 10768 10770 +f 3550 10770 3548 +f 3548 10770 10390 +f 3565 4212 3563 +f 10486 10503 10485 +f 10485 10503 10501 +f 10485 10501 10484 +f 10503 10486 10505 +f 10505 10486 10487 +f 10505 10487 10301 +f 10301 10487 10303 +f 10736 10771 10735 +f 10735 10771 10772 +f 10735 10772 10734 +f 10734 10772 10773 +f 10734 10773 10733 +f 10733 10773 10774 +f 10733 10774 10732 +f 10732 10774 10726 +f 10732 10726 10719 +f 10771 10775 10772 +f 10772 10775 10776 +f 10772 10776 10773 +f 10773 10776 10777 +f 10773 10777 10774 +f 10774 10777 10727 +f 10774 10727 10726 +f 10771 10736 10778 +f 10778 10736 10737 +f 10778 10737 10287 +f 10287 10737 10289 +f 10775 10779 10776 +f 10776 10779 10780 +f 10776 10780 10777 +f 10777 10780 10728 +f 10777 10728 10727 +f 10775 10771 10781 +f 10781 10771 10778 +f 10781 10778 10285 +f 10285 10778 10287 +f 10779 10782 10780 +f 10780 10782 10729 +f 10780 10729 10728 +f 10779 10775 10783 +f 10783 10775 10781 +f 10783 10781 10283 +f 10283 10781 10285 +f 10729 10782 10730 +f 10730 10782 10784 +f 10730 10784 10731 +f 10731 10784 10277 +f 10731 10277 10275 +f 10782 10779 10785 +f 10785 10779 10783 +f 10785 10783 10281 +f 10281 10783 10283 +f 3660 10786 10787 +f 10787 10786 10745 +f 10787 10745 10744 +f 10745 10786 10746 +f 10746 10786 10788 +f 10746 10788 10747 +f 10747 10788 10257 +f 10747 10257 10255 +f 10788 10786 3662 +f 3662 10786 3660 +f 9350 10789 10790 +f 10790 10789 10791 +f 10790 10791 10792 +f 10792 10791 10793 +f 10792 10793 10794 +f 10794 10793 10240 +f 10794 10240 10241 +f 10793 10791 10795 +f 10795 10791 10789 +f 10795 10789 10796 +f 10796 10789 9349 +f 10796 9349 9348 +f 10789 9350 9349 +f 10240 10793 10239 +f 10239 10793 10795 +f 10239 10795 10238 +f 10238 10795 10796 +f 10238 10796 10237 +f 10237 10796 9348 +f 10237 9348 9347 +f 9350 10790 9351 +f 9351 10790 10797 +f 9351 10797 9352 +f 9352 10797 10798 +f 9352 10798 9353 +f 9353 10798 10755 +f 9353 10755 9354 +f 10797 10790 10792 +f 3660 10787 3658 +f 3658 10787 10799 +f 3658 10799 3656 +f 3656 10799 10749 +f 3978 3192 10800 +f 10800 3192 3194 +f 10800 3194 10801 +f 10801 3194 3196 +f 10801 3196 3771 +f 3996 3994 4117 +f 4117 3994 10802 +f 4117 10802 4115 +f 4115 10802 10803 +f 4115 10803 4113 +f 4113 10803 4177 +f 4113 4177 4111 +f 3767 10695 10804 +f 10804 10695 10805 +f 10804 10805 10806 +f 10806 10805 3972 +f 10806 3972 3974 +f 10695 10694 10805 +f 10805 10694 3970 +f 10805 3970 3972 +f 10694 3968 3970 +f 4161 4160 4167 +f 4167 4160 4162 +f 4142 4161 4144 +f 4144 4161 4167 +f 3986 4004 3988 +f 3988 4004 4173 +f 3988 4173 3990 +f 3990 4173 10807 +f 3990 10807 3992 +f 3992 10807 10802 +f 3992 10802 3994 +f 3767 10804 3769 +f 3769 10804 10808 +f 3769 10808 3771 +f 3771 10808 10801 +f 10808 10804 10806 +f 4031 4228 4227 +f 10808 10806 10809 +f 10809 10806 3974 +f 10809 3974 3976 +f 4177 10803 4175 +f 4175 10803 10807 +f 4175 10807 4173 +f 10803 10802 10807 +f 3976 10800 10809 +f 10809 10800 10801 +f 10809 10801 10808 +f 10800 3976 3978 +f 10794 10241 10810 +f 10810 10241 9374 +f 10810 9374 10762 +f 10762 9374 9375 +f 10792 10794 10811 +f 10811 10794 10810 +f 10811 10810 10760 +f 10760 10810 10762 +f 10797 10792 10812 +f 10812 10792 10811 +f 10812 10811 10758 +f 10758 10811 10760 +f 10799 10787 10813 +f 10813 10787 10744 +f 10813 10744 10743 +f 10799 10813 10814 +f 10814 10813 10743 +f 10814 10743 10742 +f 10814 10742 10748 +f 10748 10742 10740 +f 10814 10748 10749 +f 10812 10758 10756 +f 10812 10756 10798 +f 10798 10756 10755 +f 10812 10798 10797 +f 10814 10749 10799 +f 9656 9650 9654 +f 9654 9650 9648 +f 9654 9648 9652 +f 4348 4593 9656 +f 9656 4593 9650 +f 9649 10815 9647 +f 9647 10815 10816 +f 9647 10816 9645 +f 9645 10816 10817 +f 9645 10817 9643 +f 9643 10817 10818 +f 9643 10818 9642 +f 9642 10818 10819 +f 9642 10819 9641 +f 9641 10819 8548 +f 9641 8548 8546 +f 10815 10820 10816 +f 10816 10820 10821 +f 10816 10821 10817 +f 10817 10821 10822 +f 10817 10822 10818 +f 10818 10822 10823 +f 10818 10823 10819 +f 10819 10823 8550 +f 10819 8550 8548 +f 4591 4589 9649 +f 9649 4589 10815 +f 10820 10824 10821 +f 10821 10824 10825 +f 10821 10825 10822 +f 10822 10825 10826 +f 10822 10826 10823 +f 10823 10826 8552 +f 10823 8552 8550 +f 4589 4587 10815 +f 10815 4587 10820 +f 10824 10827 10825 +f 10825 10827 10828 +f 10825 10828 10826 +f 10826 10828 8554 +f 10826 8554 8552 +f 4587 4585 10820 +f 10820 4585 10824 +f 10827 10829 10828 +f 10828 10829 8556 +f 10828 8556 8554 +f 4585 4583 10824 +f 10824 4583 10827 +f 8556 10829 8558 +f 8558 10829 4579 +f 8558 4579 4577 +f 4583 4581 10827 +f 10827 4581 10829 +f 4581 4579 10829 +f 8557 8559 8526 +f 8526 8559 8427 +f 8427 8559 4575 +f 8408 10830 8406 +f 8406 10830 10831 +f 8406 10831 8404 +f 8404 10831 10832 +f 8404 10832 8402 +f 8402 10832 10833 +f 8402 10833 8400 +f 8400 10833 10834 +f 8400 10834 8398 +f 8398 10834 10835 +f 8398 10835 8396 +f 8396 10835 10836 +f 8396 10836 8394 +f 8394 10836 10837 +f 8394 10837 8392 +f 8392 10837 10838 +f 8392 10838 8390 +f 8390 10838 10839 +f 8390 10839 8388 +f 8388 10839 10840 +f 8388 10840 8386 +f 8386 10840 10841 +f 8386 10841 8384 +f 8384 10841 10842 +f 8384 10842 8382 +f 8382 10842 10843 +f 8382 10843 8380 +f 8380 10843 10844 +f 8380 10844 8378 +f 8378 10844 10845 +f 8378 10845 8376 +f 8376 10845 8374 +f 10830 10846 10847 +f 10847 10846 10848 +f 10847 10848 10849 +f 10849 10848 10850 +f 10849 10850 10851 +f 10851 10850 10852 +f 10851 10852 10853 +f 10853 10852 10854 +f 10853 10854 10855 +f 10855 10854 8293 +f 10855 8293 8294 +f 4571 4569 8408 +f 8408 4569 10830 +f 10846 10856 10848 +f 10848 10856 10857 +f 10848 10857 10850 +f 10850 10857 10858 +f 10850 10858 10852 +f 10852 10858 8291 +f 10852 8291 10854 +f 10854 8291 8292 +f 10854 8292 8293 +f 4569 4567 10830 +f 10830 4567 10846 +f 10856 8289 10857 +f 10857 8289 8287 +f 10857 8287 10858 +f 10858 8287 8285 +f 10858 8285 8291 +f 4567 4565 10846 +f 10846 4565 10856 +f 4565 4563 10856 +f 10856 4563 8289 +f 8288 10859 8286 +f 8286 10859 10860 +f 8286 10860 8283 +f 8283 10860 8282 +f 10859 10861 10860 +f 10860 10861 10862 +f 10860 10862 8282 +f 8282 10862 8280 +f 4561 4559 8288 +f 8288 4559 10859 +f 10861 10863 10862 +f 10862 10863 4269 +f 10862 4269 8280 +f 4559 4557 10859 +f 10859 4557 10861 +f 4269 10863 4267 +f 4267 10863 4553 +f 4267 4553 4551 +f 4557 4555 10861 +f 10861 4555 10863 +f 4555 4553 10863 +f 10849 10832 10847 +f 10847 10832 10831 +f 10847 10831 10830 +f 10832 10849 10833 +f 10833 10849 10851 +f 10833 10851 10834 +f 10834 10851 10853 +f 10834 10853 10835 +f 10835 10853 10855 +f 10835 10855 10836 +f 10836 10855 8294 +f 10836 8294 10837 +f 10837 8294 8296 +f 10837 8296 10838 +f 10838 8296 8298 +f 10838 8298 10839 +f 10839 8298 8300 +f 10839 8300 10840 +f 10840 8300 8302 +f 10840 8302 10841 +f 10841 8302 8304 +f 10841 8304 10842 +f 10842 8304 8306 +f 10842 8306 10843 +f 10843 8306 8308 +f 10843 8308 10844 +f 10844 8308 8310 +f 10844 8310 10845 +f 10845 8310 8312 +f 10845 8312 8374 +f 8374 8312 8314 +f 8426 8425 8525 +f 8525 8425 10864 +f 8525 10864 8523 +f 8523 10864 8465 +f 8523 8465 8521 +f 8521 8465 8463 +f 8521 8463 8519 +f 8519 8463 10865 +f 8519 10865 8517 +f 8517 10865 10866 +f 8517 10866 8515 +f 8515 10866 10867 +f 8515 10867 8513 +f 8513 10867 10868 +f 8513 10868 8511 +f 8511 10868 10869 +f 8511 10869 8509 +f 8509 10869 10870 +f 8509 10870 8507 +f 8507 10870 10871 +f 8507 10871 8505 +f 8505 10871 10872 +f 8505 10872 8503 +f 8503 10872 10873 +f 8503 10873 8501 +f 8501 10873 8479 +f 8501 8479 8499 +f 8499 8479 8478 +f 10864 8425 8424 +f 8557 8526 8524 +f 8557 8524 8555 +f 8555 8524 8522 +f 8555 8522 8553 +f 8553 8522 8520 +f 8553 8520 8551 +f 8551 8520 8518 +f 8551 8518 8549 +f 8549 8518 8516 +f 8549 8516 8547 +f 8547 8516 8514 +f 8547 8514 8545 +f 8545 8514 8512 +f 8545 8512 8543 +f 8543 8512 8510 +f 8543 8510 8541 +f 8541 8510 8508 +f 8541 8508 8539 +f 8539 8508 8506 +f 8539 8506 8537 +f 8537 8506 8504 +f 8537 8504 8535 +f 8535 8504 8502 +f 8535 8502 8533 +f 8533 8502 8500 +f 8533 8500 8531 +f 8531 8500 8498 +f 8531 8498 8497 +f 4317 4325 9660 +f 9671 9673 10874 +f 10874 9673 9675 +f 10874 9675 10875 +f 10875 9675 8742 +f 10875 8742 8744 +f 9670 9672 9671 +f 9671 9672 9673 +f 9677 8738 9674 +f 9674 8738 8740 +f 9676 9677 9674 +f 8773 8772 8806 +f 8806 8772 8804 +f 8802 8804 8771 +f 8771 8804 8772 +f 8805 8803 8841 +f 8841 8803 8839 +f 8837 8839 8801 +f 8801 8839 8803 +f 8840 8838 8876 +f 8876 8838 8874 +f 8872 8874 8836 +f 8836 8874 8838 +f 8875 8873 8911 +f 8911 8873 8909 +f 8907 8909 8871 +f 8871 8909 8873 +f 8910 8908 8946 +f 8946 8908 8944 +f 8942 8944 8906 +f 8906 8944 8908 +f 8945 8943 8979 +f 8979 8943 8977 +f 8975 8977 8941 +f 8941 8977 8943 +f 8978 8976 5115 +f 5115 8976 5113 +f 5111 5113 8974 +f 8974 5113 8976 +f 5112 10876 10877 +f 10877 10876 5054 +f 10877 5054 5052 +f 5054 10876 5056 +f 5056 10876 10878 +f 5056 10878 5058 +f 5058 10878 10879 +f 5058 10879 5060 +f 5060 10879 10880 +f 5060 10880 5062 +f 5062 10880 10881 +f 5062 10881 5064 +f 5064 10881 10882 +f 5064 10882 5066 +f 5066 10882 10883 +f 5066 10883 5068 +f 5068 10883 10884 +f 5068 10884 5070 +f 5070 10884 10885 +f 5070 10885 5072 +f 5072 10885 10886 +f 5072 10886 5074 +f 5074 10886 10887 +f 5074 10887 5076 +f 5076 10887 10888 +f 5076 10888 5078 +f 5078 10888 10889 +f 5078 10889 5080 +f 5080 10889 5082 +f 10878 10876 5110 +f 5110 10876 5112 +f 9054 10890 10891 +f 10891 10890 10892 +f 10891 10892 10893 +f 10893 10892 10894 +f 10893 10894 10895 +f 10895 10894 10896 +f 10895 10896 10897 +f 10897 10896 10898 +f 10897 10898 10899 +f 10899 10898 10900 +f 10899 10900 10901 +f 10901 10900 10902 +f 10901 10902 10903 +f 10903 10902 10904 +f 10903 10904 10905 +f 10905 10904 10906 +f 10905 10906 10907 +f 10907 10906 10908 +f 10907 10908 10909 +f 10909 10908 10910 +f 10909 10910 10037 +f 10037 10910 10038 +f 10890 10911 10892 +f 10892 10911 10912 +f 10892 10912 10894 +f 10894 10912 10913 +f 10894 10913 10896 +f 10896 10913 10914 +f 10896 10914 10898 +f 10898 10914 10915 +f 10898 10915 10900 +f 10900 10915 10916 +f 10900 10916 10902 +f 10902 10916 10917 +f 10902 10917 10904 +f 10904 10917 10918 +f 10904 10918 10906 +f 10906 10918 10919 +f 10906 10919 10908 +f 10908 10919 10920 +f 10908 10920 10910 +f 10910 10920 10921 +f 10910 10921 10038 +f 10038 10921 10039 +f 9054 9053 10890 +f 10890 9053 10922 +f 10890 10922 10911 +f 10911 10922 10923 +f 10911 10923 10924 +f 10924 10923 9117 +f 10924 9117 10925 +f 10925 9117 9118 +f 10925 9118 9119 +f 10911 10924 10912 +f 10912 10924 10926 +f 10912 10926 10913 +f 10913 10926 10927 +f 10913 10927 10914 +f 10914 10927 10928 +f 10914 10928 10915 +f 10915 10928 10929 +f 10915 10929 10916 +f 10916 10929 10930 +f 10916 10930 10917 +f 10917 10930 10931 +f 10917 10931 10918 +f 10918 10931 10932 +f 10918 10932 10919 +f 10919 10932 10933 +f 10919 10933 10920 +f 10920 10933 10934 +f 10920 10934 10921 +f 10921 10934 10935 +f 10921 10935 10039 +f 10039 10935 10040 +f 10924 10925 10926 +f 10926 10925 10936 +f 10926 10936 10927 +f 10927 10936 10937 +f 10927 10937 10928 +f 10928 10937 10938 +f 10928 10938 10929 +f 10929 10938 10939 +f 10929 10939 10930 +f 10930 10939 10940 +f 10930 10940 10931 +f 10931 10940 10941 +f 10931 10941 10932 +f 10932 10941 10942 +f 10932 10942 10933 +f 10933 10942 10943 +f 10933 10943 10934 +f 10934 10943 10944 +f 10934 10944 10935 +f 10935 10944 10945 +f 10935 10945 10040 +f 10040 10945 9161 +f 10925 9119 10936 +f 10936 9119 9121 +f 10936 9121 10937 +f 10937 9121 9123 +f 10937 9123 10938 +f 10938 9123 9125 +f 10938 9125 10939 +f 10939 9125 9127 +f 10939 9127 10940 +f 10940 9127 9129 +f 10940 9129 10941 +f 10941 9129 9131 +f 10941 9131 10942 +f 10942 9131 9133 +f 10942 9133 10943 +f 10943 9133 9135 +f 10943 9135 10944 +f 10944 9135 9137 +f 10944 9137 10945 +f 10945 9137 9159 +f 10945 9159 9161 +f 9120 9139 9122 +f 9122 9139 9142 +f 9122 9142 9124 +f 9124 9142 9144 +f 9124 9144 9126 +f 9126 9144 9146 +f 9126 9146 9128 +f 9128 9146 9148 +f 9128 9148 9130 +f 9130 9148 9150 +f 9130 9150 9132 +f 9132 9150 9152 +f 9054 10891 9055 +f 9055 10891 10946 +f 9055 10946 9056 +f 9056 10946 10947 +f 9056 10947 9057 +f 9057 10947 10948 +f 9057 10948 9058 +f 9058 10948 10949 +f 9058 10949 9059 +f 9059 10949 10950 +f 9059 10950 9060 +f 9060 10950 10951 +f 9060 10951 9061 +f 9061 10951 10952 +f 9061 10952 9062 +f 9062 10952 10953 +f 9062 10953 9064 +f 9064 10953 10954 +f 9064 10954 9066 +f 9066 10954 10027 +f 9066 10027 9068 +f 10946 10891 10893 +f 5112 10877 5114 +f 5114 10877 10955 +f 5114 10955 5116 +f 5116 10955 10956 +f 5116 10956 5118 +f 5118 10956 5046 +f 5118 5046 5044 +f 10955 10877 5052 +f 8980 8978 5117 +f 5117 8978 5115 +f 8947 8945 8981 +f 8981 8945 8979 +f 8912 8910 8948 +f 8948 8910 8946 +f 8877 8875 8913 +f 8913 8875 8911 +f 8842 8840 8878 +f 8878 8840 8876 +f 8807 8805 8843 +f 8843 8805 8841 +f 8774 8773 8808 +f 8808 8773 8806 +f 9668 9667 10874 +f 10874 9667 9671 +f 9668 10874 10875 +f 4626 4317 9660 +f 4626 9660 9662 +f 10946 10893 10957 +f 10957 10893 10895 +f 10957 10895 10958 +f 10958 10895 10897 +f 10958 10897 10959 +f 10959 10897 10899 +f 10959 10899 10960 +f 10960 10899 10901 +f 10960 10901 10961 +f 10961 10901 10903 +f 10961 10903 10962 +f 10962 10903 10905 +f 10962 10905 10963 +f 10963 10905 10907 +f 10963 10907 10964 +f 10964 10907 10909 +f 10964 10909 10036 +f 10036 10909 10037 +f 10956 10955 5050 +f 5050 10955 5052 +f 8982 8980 5119 +f 5119 8980 5117 +f 8949 8947 8983 +f 8983 8947 8981 +f 8914 8912 8950 +f 8950 8912 8948 +f 8879 8877 8915 +f 8915 8877 8913 +f 8844 8842 8880 +f 8880 8842 8878 +f 8809 8807 8845 +f 8845 8807 8843 +f 8775 8774 8810 +f 8810 8774 8808 +f 9669 9668 10875 +f 9669 10875 8744 +f 4628 4626 9662 +f 4628 9662 9664 +f 4661 4614 4658 +f 4777 4782 4652 +f 4652 4782 4472 +f 4652 4472 4471 +f 4782 4473 4472 +f 4592 4350 4352 +f 4590 4592 10965 +f 10965 4592 4352 +f 10965 4352 4354 +f 4588 4590 10966 +f 10966 4590 10965 +f 10966 10965 10967 +f 10967 10965 4354 +f 10967 4354 4356 +f 4586 4588 10968 +f 10968 4588 10966 +f 10968 10966 10969 +f 10969 10966 10967 +f 10969 10967 10970 +f 10970 10967 4356 +f 10970 4356 4358 +f 4584 4586 10971 +f 10971 4586 10968 +f 10971 10968 10972 +f 10972 10968 10969 +f 10972 10969 10973 +f 10973 10969 10970 +f 10973 10970 10974 +f 10974 10970 4358 +f 10974 4358 4360 +f 4582 4584 10975 +f 10975 4584 10971 +f 10975 10971 10976 +f 10976 10971 10972 +f 10976 10972 10977 +f 10977 10972 10973 +f 10977 10973 10978 +f 10978 10973 10974 +f 10978 10974 10979 +f 10979 10974 4360 +f 10979 4360 4362 +f 4580 4582 10980 +f 10980 4582 10975 +f 10980 10975 10981 +f 10981 10975 10976 +f 10981 10976 10982 +f 10982 10976 10977 +f 10982 10977 10983 +f 10983 10977 10978 +f 10983 10978 10984 +f 10984 10978 10979 +f 10984 10979 10985 +f 10985 10979 4362 +f 10985 4362 4364 +f 4578 4580 10986 +f 10986 4580 10980 +f 10986 10980 10987 +f 10987 10980 10981 +f 10987 10981 10988 +f 10988 10981 10982 +f 10988 10982 10989 +f 10989 10982 10983 +f 10989 10983 10990 +f 10990 10983 10984 +f 10990 10984 10991 +f 10991 10984 10985 +f 10991 10985 10992 +f 10992 10985 4364 +f 10992 4364 4366 +f 4576 4578 10993 +f 10993 4578 10986 +f 10993 10986 10994 +f 10994 10986 10987 +f 10994 10987 10995 +f 10995 10987 10988 +f 10995 10988 10996 +f 10996 10988 10989 +f 10996 10989 10997 +f 10997 10989 10990 +f 10997 10990 10998 +f 10998 10990 10991 +f 10998 10991 10999 +f 10999 10991 10992 +f 10999 10992 11000 +f 11000 10992 4366 +f 11000 4366 4368 +f 4572 4574 11001 +f 11001 4574 10993 +f 11001 10993 11002 +f 11002 10993 10994 +f 11002 10994 11003 +f 11003 10994 10995 +f 11003 10995 11004 +f 11004 10995 10996 +f 11004 10996 11005 +f 11005 10996 10997 +f 11005 10997 11006 +f 11006 10997 10998 +f 11006 10998 11007 +f 11007 10998 10999 +f 11007 10999 11008 +f 11008 10999 11000 +f 11008 11000 11009 +f 11009 11000 4368 +f 11009 4368 4370 +f 4570 4572 11010 +f 11010 4572 11001 +f 11010 11001 11011 +f 11011 11001 11002 +f 11011 11002 11003 +f 4568 4570 11012 +f 11012 4570 11010 +f 11012 11010 11013 +f 11013 11010 11011 +f 11013 11011 11014 +f 11014 11011 11003 +f 11014 11003 11015 +f 11015 11003 11004 +f 11015 11004 11016 +f 11016 11004 11005 +f 11016 11005 11017 +f 11017 11005 11006 +f 11017 11006 11018 +f 11018 11006 11007 +f 11018 11007 11019 +f 11019 11007 11008 +f 11019 11008 11020 +f 11020 11008 11009 +f 11020 11009 11021 +f 11021 11009 4370 +f 11021 4370 4372 +f 4566 4568 11022 +f 11022 4568 11012 +f 11022 11012 11023 +f 11023 11012 11013 +f 11023 11013 11024 +f 11024 11013 11014 +f 11024 11014 11025 +f 11025 11014 11015 +f 11025 11015 11026 +f 11026 11015 11016 +f 11026 11016 11027 +f 11027 11016 11017 +f 11027 11017 11028 +f 11028 11017 11018 +f 11028 11018 11029 +f 11029 11018 11019 +f 11029 11019 11030 +f 11030 11019 11020 +f 11030 11020 11021 +f 4564 4566 11031 +f 11031 4566 11022 +f 11031 11022 11032 +f 11032 11022 11023 +f 11032 11023 11033 +f 11033 11023 11024 +f 11033 11024 11034 +f 11034 11024 11025 +f 11034 11025 11035 +f 11035 11025 11026 +f 11035 11026 11036 +f 11036 11026 11027 +f 11036 11027 11037 +f 11037 11027 11028 +f 11037 11028 11038 +f 11038 11028 11029 +f 11038 11029 11039 +f 11039 11029 11030 +f 11039 11030 11040 +f 11040 11030 11021 +f 11040 11021 11041 +f 11041 11021 4372 +f 11041 4372 4374 +f 4562 4564 11042 +f 11042 4564 11031 +f 11042 11031 11043 +f 11043 11031 11032 +f 11043 11032 11044 +f 11044 11032 11033 +f 11044 11033 11045 +f 11045 11033 11034 +f 11045 11034 11046 +f 11046 11034 11035 +f 11046 11035 11047 +f 11047 11035 11036 +f 11047 11036 11048 +f 11048 11036 11037 +f 11048 11037 11049 +f 11049 11037 11038 +f 11049 11038 11050 +f 11050 11038 11039 +f 11050 11039 11051 +f 11051 11039 11040 +f 11051 11040 11052 +f 11052 11040 11041 +f 11052 11041 11053 +f 11053 11041 4374 +f 11053 4374 4376 +f 4560 4562 11054 +f 11054 4562 11042 +f 11054 11042 11055 +f 11055 11042 11043 +f 11055 11043 11056 +f 11056 11043 11044 +f 11056 11044 11057 +f 11057 11044 11045 +f 11057 11045 11058 +f 11058 11045 11046 +f 11058 11046 11059 +f 11059 11046 11047 +f 11059 11047 11060 +f 11060 11047 11048 +f 11060 11048 11061 +f 11061 11048 11049 +f 11061 11049 11062 +f 11062 11049 11050 +f 11062 11050 11063 +f 11063 11050 11051 +f 11063 11051 11064 +f 11064 11051 11052 +f 11064 11052 11065 +f 11065 11052 11053 +f 11065 11053 11066 +f 11066 11053 4376 +f 11066 4376 4378 +f 4558 4560 11067 +f 11067 4560 11054 +f 11067 11054 11068 +f 11068 11054 11055 +f 11068 11055 11069 +f 11069 11055 11056 +f 11069 11056 11070 +f 11070 11056 11057 +f 11070 11057 11071 +f 11071 11057 11058 +f 11071 11058 11072 +f 11072 11058 11059 +f 11072 11059 11073 +f 11073 11059 11060 +f 11073 11060 11074 +f 11074 11060 11061 +f 11074 11061 11075 +f 11075 11061 11062 +f 11075 11062 11076 +f 11076 11062 11063 +f 11076 11063 11077 +f 11077 11063 11064 +f 11077 11064 11078 +f 11078 11064 11065 +f 11078 11065 11079 +f 11079 11065 11066 +f 11079 11066 11080 +f 11080 11066 4378 +f 11080 4378 4380 +f 4556 4558 11081 +f 11081 4558 11067 +f 11081 11067 11082 +f 11082 11067 11068 +f 11082 11068 11083 +f 11083 11068 11069 +f 11083 11069 11084 +f 11084 11069 11070 +f 11084 11070 11085 +f 11085 11070 11071 +f 11085 11071 11086 +f 11086 11071 11072 +f 11086 11072 11087 +f 11087 11072 11073 +f 11087 11073 11088 +f 11088 11073 11074 +f 11088 11074 11089 +f 11089 11074 11075 +f 11089 11075 11090 +f 11090 11075 11076 +f 11090 11076 11091 +f 11091 11076 11077 +f 11091 11077 11092 +f 11092 11077 11078 +f 11092 11078 11093 +f 11093 11078 11079 +f 11093 11079 11094 +f 11094 11079 11080 +f 11094 11080 11095 +f 11095 11080 4380 +f 11095 4380 4382 +f 4554 4556 11096 +f 11096 4556 11081 +f 11096 11081 11097 +f 11097 11081 11082 +f 11097 11082 11098 +f 11098 11082 11083 +f 11098 11083 11099 +f 11099 11083 11084 +f 11099 11084 11100 +f 11100 11084 11085 +f 11100 11085 11101 +f 11101 11085 11086 +f 11101 11086 11102 +f 11102 11086 11087 +f 11102 11087 11103 +f 11103 11087 11088 +f 11103 11088 11104 +f 11104 11088 11089 +f 11104 11089 11105 +f 11105 11089 11090 +f 11105 11090 11106 +f 11106 11090 11091 +f 11106 11091 11107 +f 11107 11091 11092 +f 11107 11092 11108 +f 11108 11092 11093 +f 11108 11093 11109 +f 11109 11093 11094 +f 11109 11094 11110 +f 11110 11094 11095 +f 11110 11095 11111 +f 11111 11095 4382 +f 11111 4382 4384 +f 4719 4717 11096 +f 11096 4717 4554 +f 4719 11096 11097 +f 4696 4710 4718 +f 4574 4576 10993 +f 10946 10957 10947 +f 10947 10957 11112 +f 10947 11112 10948 +f 10948 11112 11113 +f 10948 11113 10949 +f 10949 11113 11114 +f 10949 11114 10950 +f 10950 11114 11115 +f 10950 11115 10951 +f 10951 11115 11116 +f 10951 11116 10952 +f 10952 11116 11117 +f 10952 11117 10953 +f 10953 11117 11118 +f 10953 11118 10954 +f 10954 11118 10028 +f 10954 10028 10027 +f 11112 10957 10958 +f 5046 10956 5048 +f 5048 10956 5050 +f 5040 8982 5042 +f 5042 8982 5119 +f 5036 8949 5038 +f 5038 8949 8983 +f 5032 8914 5034 +f 5034 8914 8950 +f 5028 8879 5030 +f 5030 8879 8915 +f 5024 8844 5026 +f 5026 8844 8880 +f 5020 8809 5022 +f 5022 8809 8845 +f 5016 8775 5018 +f 5018 8775 8810 +f 5012 9669 8744 +f 5008 5006 9664 +f 9664 5006 4628 +f 4783 4781 11119 +f 11119 4781 4784 +f 11119 4784 4862 +f 4474 4783 11120 +f 11120 4783 11119 +f 11120 11119 11121 +f 11121 11119 4862 +f 11121 4862 4867 +f 4474 11120 4475 +f 4475 11120 11122 +f 4475 11122 4476 +f 4476 11122 11123 +f 4476 11123 4477 +f 4477 11123 11124 +f 4477 11124 4478 +f 4478 11124 11125 +f 4478 11125 4479 +f 4479 11125 11126 +f 4479 11126 4480 +f 4480 11126 11127 +f 4480 11127 4481 +f 4481 11127 11128 +f 4481 11128 4482 +f 4482 11128 11129 +f 4482 11129 4483 +f 4483 11129 11130 +f 4483 11130 4484 +f 4484 11130 11131 +f 4484 11131 4485 +f 4485 11131 11132 +f 4485 11132 4486 +f 4486 11132 11133 +f 4486 11133 4487 +f 4487 11133 11134 +f 4487 11134 4488 +f 4488 11134 11135 +f 4488 11135 4489 +f 4489 11135 11136 +f 4489 11136 4490 +f 4490 11136 11137 +f 4490 11137 4491 +f 4491 11137 11138 +f 4491 11138 4492 +f 4492 11138 11139 +f 4492 11139 4493 +f 4493 11139 11140 +f 4493 11140 4494 +f 4494 11140 11141 +f 4494 11141 4495 +f 4495 11141 11142 +f 4495 11142 4496 +f 4496 11142 11143 +f 4496 11143 4497 +f 4497 11143 11144 +f 4497 11144 4498 +f 4498 11144 6589 +f 11122 11120 11121 +f 4719 11097 4721 +f 4721 11097 11098 +f 4721 11098 4723 +f 4723 11098 11099 +f 4723 11099 4725 +f 4725 11099 11100 +f 4725 11100 4727 +f 4727 11100 11101 +f 4727 11101 4729 +f 4729 11101 11102 +f 4729 11102 4731 +f 4731 11102 11103 +f 4731 11103 4733 +f 4733 11103 11104 +f 4733 11104 4735 +f 4735 11104 11105 +f 4735 11105 4737 +f 4737 11105 11106 +f 4737 11106 4739 +f 4739 11106 11107 +f 4739 11107 4741 +f 4741 11107 11108 +f 4741 11108 4743 +f 4743 11108 11109 +f 4743 11109 4745 +f 4745 11109 11110 +f 4745 11110 4747 +f 4747 11110 11111 +f 4747 11111 4749 +f 4749 11111 4384 +f 4749 4384 4386 +f 4696 4718 11145 +f 11145 4718 4720 +f 11145 4720 11146 +f 11146 4720 4722 +f 11146 4722 11147 +f 11147 4722 4724 +f 11147 4724 11148 +f 11148 4724 4726 +f 11148 4726 5200 +f 4703 4698 11145 +f 11145 4698 4696 +f 4703 11145 11146 +f 11112 10958 11149 +f 11149 10958 10959 +f 11149 10959 11150 +f 11150 10959 10960 +f 11150 10960 11151 +f 11151 10960 10961 +f 11151 10961 11152 +f 11152 10961 10962 +f 11152 10962 11153 +f 11153 10962 10963 +f 11153 10963 11154 +f 11154 10963 10964 +f 11154 10964 10035 +f 10035 10964 10036 +f 5006 4851 4628 +f 11122 11121 11155 +f 11155 11121 4867 +f 11155 4867 4869 +f 4706 4703 11146 +f 4706 11146 11147 +f 4866 5123 4868 +f 4868 5123 11156 +f 4868 11156 4870 +f 4870 11156 11157 +f 4870 11157 4872 +f 4872 11157 11158 +f 4872 11158 4874 +f 4874 11158 11159 +f 4874 11159 4876 +f 4876 11159 11160 +f 4876 11160 4878 +f 4878 11160 11161 +f 4878 11161 4880 +f 4880 11161 11162 +f 4880 11162 4882 +f 4882 11162 11163 +f 4882 11163 4884 +f 4884 11163 11164 +f 4884 11164 4886 +f 4886 11164 11165 +f 4886 11165 4888 +f 4888 11165 11166 +f 4888 11166 4890 +f 4890 11166 11167 +f 4890 11167 4892 +f 4892 11167 11168 +f 4892 11168 4894 +f 4894 11168 11169 +f 4894 11169 4896 +f 4896 11169 11170 +f 4896 11170 4898 +f 4898 11170 11171 +f 4898 11171 4900 +f 4900 11171 11172 +f 4900 11172 4902 +f 4902 11172 11173 +f 4902 11173 4904 +f 4904 11173 11174 +f 4904 11174 4906 +f 4906 11174 11175 +f 4906 11175 4908 +f 4908 11175 11176 +f 4908 11176 4910 +f 4910 11176 11177 +f 4910 11177 4912 +f 4912 11177 8278 +f 11156 5123 5131 +f 4869 11178 11155 +f 11155 11178 11123 +f 11155 11123 11122 +f 11123 11178 11124 +f 11124 11178 11179 +f 11124 11179 11125 +f 11125 11179 11180 +f 11125 11180 11126 +f 11126 11180 11181 +f 11126 11181 11127 +f 11127 11181 11182 +f 11127 11182 11128 +f 11128 11182 11183 +f 11128 11183 11129 +f 11129 11183 11184 +f 11129 11184 11130 +f 11130 11184 11185 +f 11130 11185 11131 +f 11131 11185 11186 +f 11131 11186 11132 +f 11132 11186 11187 +f 11132 11187 11133 +f 11133 11187 11188 +f 11133 11188 11134 +f 11134 11188 11189 +f 11134 11189 11135 +f 11135 11189 11190 +f 11135 11190 11136 +f 11136 11190 11191 +f 11136 11191 11137 +f 11137 11191 11192 +f 11137 11192 11138 +f 11138 11192 11193 +f 11138 11193 11139 +f 11139 11193 11194 +f 11139 11194 11140 +f 11140 11194 11195 +f 11140 11195 11141 +f 11141 11195 11196 +f 11141 11196 11142 +f 11142 11196 11197 +f 11142 11197 11143 +f 11143 11197 11198 +f 11143 11198 11144 +f 11144 11198 6695 +f 11144 6695 6589 +f 11179 11178 4871 +f 4871 11178 4869 +f 4706 11147 4961 +f 4961 11147 11148 +f 4961 11148 4962 +f 4962 11148 5200 +f 4962 5200 5198 +f 4676 9151 9149 +f 11112 11149 11113 +f 11113 11149 11199 +f 11113 11199 11114 +f 11114 11199 11200 +f 11114 11200 11115 +f 11115 11200 11201 +f 11115 11201 11116 +f 11116 11201 11202 +f 11116 11202 11117 +f 11117 11202 11203 +f 11117 11203 11118 +f 11118 11203 10029 +f 11118 10029 10028 +f 11199 11149 11150 +f 5047 9001 5045 +f 5045 9001 9003 +f 5045 9003 5043 +f 5043 9003 9005 +f 5043 9005 5041 +f 5041 9005 9007 +f 5041 9007 5039 +f 5039 9007 9009 +f 5039 9009 5037 +f 5037 9009 9011 +f 5037 9011 5035 +f 5035 9011 9013 +f 5035 9013 5033 +f 5033 9013 9015 +f 5033 9015 5031 +f 5031 9015 9017 +f 5031 9017 5029 +f 5029 9017 9019 +f 5029 9019 5027 +f 5027 9019 9021 +f 5027 9021 5025 +f 5025 9021 9023 +f 5025 9023 5023 +f 5023 9023 9025 +f 5023 9025 5021 +f 5021 9025 9027 +f 5021 9027 5019 +f 5019 9027 9029 +f 5019 9029 5017 +f 5017 9029 9031 +f 5017 9031 5015 +f 5015 9031 9033 +f 5015 9033 5013 +f 5013 9033 9035 +f 5013 9035 5011 +f 5011 9035 9037 +f 5011 9037 5009 +f 5009 9037 9039 +f 5009 9039 5007 +f 5007 9039 9041 +f 5007 9041 5005 +f 5005 9041 9043 +f 5005 9043 4984 +f 4984 9043 4986 +f 11156 5131 11204 +f 11204 5131 5220 +f 11204 5220 5228 +f 11156 11204 11157 +f 11157 11204 11205 +f 11157 11205 11158 +f 11158 11205 11206 +f 11158 11206 11159 +f 11159 11206 11207 +f 11159 11207 11160 +f 11160 11207 11208 +f 11160 11208 11161 +f 11161 11208 11209 +f 11161 11209 11162 +f 11162 11209 11210 +f 11162 11210 11163 +f 11163 11210 11211 +f 11163 11211 11164 +f 11164 11211 11212 +f 11164 11212 11165 +f 11165 11212 11213 +f 11165 11213 11166 +f 11166 11213 11214 +f 11166 11214 11167 +f 11167 11214 11215 +f 11167 11215 11168 +f 11168 11215 11216 +f 11168 11216 11169 +f 11169 11216 11217 +f 11169 11217 11170 +f 11170 11217 11218 +f 11170 11218 11171 +f 11171 11218 11219 +f 11171 11219 11172 +f 11172 11219 11220 +f 11172 11220 11173 +f 11173 11220 11221 +f 11173 11221 11174 +f 11174 11221 11222 +f 11174 11222 11175 +f 11175 11222 11223 +f 11175 11223 11176 +f 11176 11223 11224 +f 11176 11224 11177 +f 11177 11224 11225 +f 11177 11225 8278 +f 8278 11225 8276 +f 11205 11204 5228 +f 11179 4871 4873 +f 11179 4873 11180 +f 11180 4873 4875 +f 11180 4875 11181 +f 11181 4875 4877 +f 11181 4877 11182 +f 11182 4877 4879 +f 11182 4879 11183 +f 11183 4879 4881 +f 11183 4881 11184 +f 11184 4881 4883 +f 11184 4883 11185 +f 11185 4883 4885 +f 11185 4885 11186 +f 11186 4885 4887 +f 11186 4887 11187 +f 11187 4887 4889 +f 11187 4889 11188 +f 11188 4889 4891 +f 11188 4891 11189 +f 11189 4891 4893 +f 11189 4893 11190 +f 11190 4893 4895 +f 11190 4895 11191 +f 11191 4895 4897 +f 11191 4897 11192 +f 11192 4897 4899 +f 11192 4899 11193 +f 11193 4899 4901 +f 11193 4901 11194 +f 11194 4901 4903 +f 11194 4903 11195 +f 11195 4903 4905 +f 11195 4905 11196 +f 11196 4905 4907 +f 11196 4907 11197 +f 11197 4907 4909 +f 11197 4909 11198 +f 11198 4909 4911 +f 11198 4911 6695 +f 4728 4730 5199 +f 5199 4730 11226 +f 5199 11226 5171 +f 5171 11226 5173 +f 11226 4730 4732 +f 5198 4963 4962 +f 11199 11150 11227 +f 11227 11150 11151 +f 11227 11151 11228 +f 11228 11151 11152 +f 11228 11152 11229 +f 11229 11152 11153 +f 11229 11153 11230 +f 11230 11153 11154 +f 11230 11154 10034 +f 10034 11154 10035 +f 11205 5228 5230 +f 11205 5230 11206 +f 11206 5230 5232 +f 11206 5232 11207 +f 11207 5232 5234 +f 11207 5234 11208 +f 11208 5234 5236 +f 11208 5236 11209 +f 11209 5236 5238 +f 11209 5238 11210 +f 11210 5238 5240 +f 11210 5240 11211 +f 11211 5240 5242 +f 11211 5242 11212 +f 11212 5242 5244 +f 11212 5244 11213 +f 11213 5244 5246 +f 11213 5246 11214 +f 11214 5246 5248 +f 11214 5248 11215 +f 11215 5248 5250 +f 11215 5250 11216 +f 11216 5250 5252 +f 11216 5252 11217 +f 11217 5252 5254 +f 11217 5254 11218 +f 11218 5254 5256 +f 11218 5256 11219 +f 11219 5256 5258 +f 11219 5258 11220 +f 11220 5258 5260 +f 11220 5260 11221 +f 11221 5260 5262 +f 11221 5262 11222 +f 11222 5262 5264 +f 11222 5264 11223 +f 11223 5264 5266 +f 11223 5266 11224 +f 11224 5266 5268 +f 11224 5268 11225 +f 11225 5268 5270 +f 11225 5270 8276 +f 8276 5270 5272 +f 11226 4732 11231 +f 11231 4732 4734 +f 11231 4734 11232 +f 11232 4734 4736 +f 11232 4736 11233 +f 11233 4736 4738 +f 11233 4738 11234 +f 11234 4738 4740 +f 11234 4740 11235 +f 11235 4740 4742 +f 11235 4742 11236 +f 11236 4742 4744 +f 11236 4744 11237 +f 11237 4744 4746 +f 11237 4746 11238 +f 11238 4746 4748 +f 11238 4748 11239 +f 11239 4748 4750 +f 11239 4750 11240 +f 11240 4750 4388 +f 11240 4388 4390 +f 5175 5173 11231 +f 11231 5173 11226 +f 5175 11231 11232 +f 5315 5172 5174 +f 9136 9134 9158 +f 11199 11227 11200 +f 11200 11227 11241 +f 11200 11241 11201 +f 11201 11241 11242 +f 11201 11242 11202 +f 11202 11242 11243 +f 11202 11243 11203 +f 11203 11243 10030 +f 11203 10030 10029 +f 11241 11227 11228 +f 9006 10026 9008 +f 9008 10026 11244 +f 9008 11244 9010 +f 9010 11244 11245 +f 9010 11245 9012 +f 9012 11245 11246 +f 9012 11246 9014 +f 9014 11246 9883 +f 9014 9883 9016 +f 5364 9044 11247 +f 11247 9044 9735 +f 11247 9735 11248 +f 11248 9735 9733 +f 11248 9733 11249 +f 11249 9733 9731 +f 11249 9731 6723 +f 6723 9731 6724 +f 5175 11232 5177 +f 5177 11232 11233 +f 5177 11233 5179 +f 5179 11233 11234 +f 5179 11234 5181 +f 5181 11234 11235 +f 5181 11235 5183 +f 5183 11235 11236 +f 5183 11236 5185 +f 5185 11236 11237 +f 5185 11237 5187 +f 5187 11237 11238 +f 5187 11238 5189 +f 5189 11238 11239 +f 5189 11239 5191 +f 5191 11239 11240 +f 5191 11240 5193 +f 5193 11240 4390 +f 5193 4390 4392 +f 5315 5174 5317 +f 5317 5174 5176 +f 5470 5590 5471 +f 5471 5590 5598 +f 5471 5598 5472 +f 5472 5598 5600 +f 5472 5600 5473 +f 5473 5600 5602 +f 5473 5602 5474 +f 5474 5602 5604 +f 5474 5604 5475 +f 5475 5604 5606 +f 5475 5606 5476 +f 5476 5606 5608 +f 5476 5608 5477 +f 5477 5608 5610 +f 5477 5610 5478 +f 5478 5610 5612 +f 5478 5612 5479 +f 5479 5612 5614 +f 5479 5614 5480 +f 5480 5614 5616 +f 5480 5616 5481 +f 5481 5616 5618 +f 5481 5618 5482 +f 5482 5618 5620 +f 5482 5620 5483 +f 5483 5620 5622 +f 5483 5622 5484 +f 5484 5622 5624 +f 5484 5624 5485 +f 5485 5624 5626 +f 5485 5626 5486 +f 5486 5626 5628 +f 5486 5628 5487 +f 5487 5628 5630 +f 5487 5630 5488 +f 11241 11228 11250 +f 11250 11228 11229 +f 11250 11229 11251 +f 11251 11229 11230 +f 11251 11230 10033 +f 10033 11230 10034 +f 10026 10025 11244 +f 11244 10025 11252 +f 11244 11252 11245 +f 11245 11252 11253 +f 11245 11253 11246 +f 11246 11253 9882 +f 11246 9882 9883 +f 5364 11247 5367 +f 5367 11247 11254 +f 5367 11254 5577 +f 5577 11254 11255 +f 5577 11255 5838 +f 5838 11255 6206 +f 11254 11247 11248 +f 5597 5756 5599 +f 5599 5756 11256 +f 5599 11256 5601 +f 5601 11256 11257 +f 5601 11257 5603 +f 5603 11257 11258 +f 5603 11258 5605 +f 5605 11258 11259 +f 5605 11259 5607 +f 5607 11259 11260 +f 5607 11260 5609 +f 5609 11260 11261 +f 5609 11261 5611 +f 5611 11261 11262 +f 5611 11262 5613 +f 5613 11262 11263 +f 5613 11263 5615 +f 5615 11263 11264 +f 5615 11264 5617 +f 5617 11264 11265 +f 5617 11265 5619 +f 5619 11265 11266 +f 5619 11266 5621 +f 5621 11266 11267 +f 5621 11267 5623 +f 5623 11267 11268 +f 5623 11268 5625 +f 5625 11268 11269 +f 5625 11269 5627 +f 5627 11269 10012 +f 5627 10012 5629 +f 5807 5732 5182 +f 5182 5732 5180 +f 5807 5182 5184 +f 5756 5847 11256 +f 11256 5847 11270 +f 11256 11270 11257 +f 11257 11270 11271 +f 11257 11271 11258 +f 11258 11271 11272 +f 11258 11272 11259 +f 11259 11272 11273 +f 11259 11273 11260 +f 11260 11273 11274 +f 11260 11274 11261 +f 11261 11274 11275 +f 11261 11275 11262 +f 11262 11275 11276 +f 11262 11276 11263 +f 11263 11276 11277 +f 11263 11277 11264 +f 11264 11277 11278 +f 11264 11278 11265 +f 11265 11278 11279 +f 11265 11279 11266 +f 11266 11279 11280 +f 11266 11280 11267 +f 11267 11280 11281 +f 11267 11281 11268 +f 11268 11281 11282 +f 11268 11282 11269 +f 11269 11282 10013 +f 11269 10013 10012 +f 5896 5807 5184 +f 5896 5184 5186 +f 5847 5928 11270 +f 11270 5928 11283 +f 11270 11283 11271 +f 11271 11283 11284 +f 11271 11284 11272 +f 11272 11284 11285 +f 11272 11285 11273 +f 11273 11285 11286 +f 11273 11286 11274 +f 11274 11286 11287 +f 11274 11287 11275 +f 11275 11287 11288 +f 11275 11288 11276 +f 11276 11288 11289 +f 11276 11289 11277 +f 11277 11289 11290 +f 11277 11290 11278 +f 11278 11290 11291 +f 11278 11291 11279 +f 11279 11291 11292 +f 11279 11292 11280 +f 11280 11292 11293 +f 11280 11293 11281 +f 11281 11293 11294 +f 11281 11294 11282 +f 11282 11294 10015 +f 11282 10015 10013 +f 5897 5896 5186 +f 5897 5186 5188 +f 11241 11250 11242 +f 11242 11250 11295 +f 11242 11295 11243 +f 11243 11295 10031 +f 11243 10031 10030 +f 11295 11250 11251 +f 10025 10024 11252 +f 11252 10024 11296 +f 11252 11296 11253 +f 11253 11296 9881 +f 11253 9881 9882 +f 11254 11248 11297 +f 11297 11248 11249 +f 11297 11249 6722 +f 6722 11249 6723 +f 5933 6003 11283 +f 11283 6003 11284 +f 11285 11284 6005 +f 6005 11284 6003 +f 5897 5188 5979 +f 5979 5188 5190 +f 5979 5190 6089 +f 6089 5190 5192 +f 6089 5192 6174 +f 6174 5192 5194 +f 6174 5194 6175 +f 6175 5194 4394 +f 6175 4394 4396 +f 6002 6122 6004 +f 6004 6122 11298 +f 6004 11298 6006 +f 6006 11298 11299 +f 6006 11299 6008 +f 6008 11299 11300 +f 6008 11300 6010 +f 6010 11300 11301 +f 6010 11301 6012 +f 6012 11301 11302 +f 6012 11302 6014 +f 6014 11302 11303 +f 6014 11303 6016 +f 6016 11303 11304 +f 6016 11304 6018 +f 6018 11304 11305 +f 6018 11305 6020 +f 6020 11305 11306 +f 6020 11306 6022 +f 6022 11306 10021 +f 6022 10021 6024 +f 11286 11285 6007 +f 6007 11285 6005 +f 6122 6233 11298 +f 11298 6233 11307 +f 11298 11307 11299 +f 11299 11307 11308 +f 11299 11308 11300 +f 11300 11308 11309 +f 11300 11309 11301 +f 11301 11309 11310 +f 11301 11310 11302 +f 11302 11310 11311 +f 11302 11311 11303 +f 11303 11311 11312 +f 11303 11312 11304 +f 11304 11312 11313 +f 11304 11313 11305 +f 11305 11313 11314 +f 11305 11314 11306 +f 11306 11314 10022 +f 11306 10022 10021 +f 11287 11286 6009 +f 6009 11286 6007 +f 5928 5933 11283 +f 10033 10032 11251 +f 11251 10032 11295 +f 10032 10031 11295 +f 9880 9881 11296 +f 9880 11296 10023 +f 10023 11296 10024 +f 11254 11297 11255 +f 11255 11297 6721 +f 11255 6721 6206 +f 6721 11297 6722 +f 6238 6312 11307 +f 11307 6312 11308 +f 11309 11308 6314 +f 6314 11308 6312 +f 11287 6009 6011 +f 11287 6011 11288 +f 11288 6011 6013 +f 11288 6013 11289 +f 11289 6013 6015 +f 11289 6015 11290 +f 11290 6015 6017 +f 11290 6017 11291 +f 11291 6017 6019 +f 11291 6019 11292 +f 11292 6019 6021 +f 11292 6021 11293 +f 11293 6021 6023 +f 11293 6023 11294 +f 11294 6023 6025 +f 11294 6025 10015 +f 6311 6384 6313 +f 6313 6384 6449 +f 6313 6449 6315 +f 6315 6449 6451 +f 6315 6451 6317 +f 6317 6451 6453 +f 6317 6453 6319 +f 6319 6453 6455 +f 6319 6455 6321 +f 6321 6455 6457 +f 6321 6457 6323 +f 6323 6457 6459 +f 6323 6459 6325 +f 11310 11309 6316 +f 6316 11309 6314 +f 11311 11310 6318 +f 6318 11310 6316 +f 6448 6540 6450 +f 6450 6540 6619 +f 6450 6619 6452 +f 6452 6619 6621 +f 6452 6621 6454 +f 6454 6621 6623 +f 6454 6623 6456 +f 6456 6623 6625 +f 6456 6625 6458 +f 11312 11311 6320 +f 6320 11311 6318 +f 11313 11312 6322 +f 6322 11312 6320 +f 11314 11313 6324 +f 6324 11313 6322 +f 4915 6691 4913 +f 6233 6238 11307 +f 6730 6735 6731 +f 6731 6735 2398 +f 6801 2398 6796 +f 6796 2398 6735 +f 9678 2397 9679 +f 11314 6324 6326 +f 6326 10022 11314 +f 6934 7066 6936 +f 6936 7066 11315 +f 6936 11315 6938 +f 6938 11315 7173 +f 6938 7173 6940 +f 10101 10090 11316 +f 11316 10090 6937 +f 11316 6937 6939 +f 10101 11316 10102 +f 10102 11316 11317 +f 10102 11317 10103 +f 10103 11317 11318 +f 10103 11318 10104 +f 10104 11318 11319 +f 10104 11319 10105 +f 10105 11319 11320 +f 10105 11320 10106 +f 10106 11320 11321 +f 10106 11321 10107 +f 10107 11321 11322 +f 10107 11322 10108 +f 10108 11322 11323 +f 10108 11323 10109 +f 10109 11323 11324 +f 10109 11324 10110 +f 10110 11324 11325 +f 10110 11325 10111 +f 10111 11325 11326 +f 10111 11326 10112 +f 10112 11326 11327 +f 10112 11327 3245 +f 3245 11327 11328 +f 3245 11328 3247 +f 3247 11328 11329 +f 3247 11329 3249 +f 3249 11329 6965 +f 3249 6965 3251 +f 3251 6965 6967 +f 3251 6967 3253 +f 3253 6967 6969 +f 3253 6969 3255 +f 3255 6969 6971 +f 3255 6971 3257 +f 3257 6971 6973 +f 3257 6973 3259 +f 3259 6973 6975 +f 3259 6975 3261 +f 3261 6975 6977 +f 3261 6977 3263 +f 3263 6977 6979 +f 3263 6979 3265 +f 3265 6979 6981 +f 3265 6981 3267 +f 3267 6981 6983 +f 3267 6983 3269 +f 3269 6983 6985 +f 3269 6985 3271 +f 3271 6985 6987 +f 3271 6987 3273 +f 3273 6987 6989 +f 3273 6989 3275 +f 3275 6989 6991 +f 3275 6991 3156 +f 3156 6991 3158 +f 11317 11316 6939 +f 6470 6637 6639 +f 6470 6639 6472 +f 6472 6639 6641 +f 6472 6641 6474 +f 6337 6471 6473 +f 6337 6473 6339 +f 6339 6473 6475 +f 6339 6475 6341 +f 6341 6475 6477 +f 6341 6477 6343 +f 6343 6477 5679 +f 6343 5679 5677 +f 10092 6338 6340 +f 10092 6340 10093 +f 10093 6340 6342 +f 10093 6342 10094 +f 10094 6342 6344 +f 10094 6344 10095 +f 10095 6344 5675 +f 10095 5675 5673 +f 6039 11330 10113 +f 10113 11330 10097 +f 10113 10097 10096 +f 10097 11330 10098 +f 10098 11330 11331 +f 10098 11331 10099 +f 10099 11331 11332 +f 10099 11332 10100 +f 10100 11332 5665 +f 10100 5665 5663 +f 11331 11330 6041 +f 6041 11330 6039 +f 5495 5642 5644 +f 9222 9224 9198 +f 9198 9224 9197 +f 9168 10066 9170 +f 9170 10066 11333 +f 9170 11333 9172 +f 9172 11333 11334 +f 9172 11334 9174 +f 9174 11334 11335 +f 9174 11335 9176 +f 9176 11335 11336 +f 9176 11336 9178 +f 9178 11336 11337 +f 9178 11337 9180 +f 9180 11337 11338 +f 9180 11338 9182 +f 9182 11338 11339 +f 9182 11339 9184 +f 9184 11339 11340 +f 9184 11340 9186 +f 9186 11340 11341 +f 9186 11341 9188 +f 9188 11341 10171 +f 9188 10171 9190 +f 11333 10066 10067 +f 9992 10077 9993 +f 9993 10077 11342 +f 9993 11342 9994 +f 9994 11342 11343 +f 9994 11343 9995 +f 9995 11343 11344 +f 9995 11344 9996 +f 9996 11344 11345 +f 9996 11345 9997 +f 9997 11345 11346 +f 9997 11346 9998 +f 9998 11346 11347 +f 9998 11347 9999 +f 9999 11347 11348 +f 9999 11348 10000 +f 10000 11348 11349 +f 10000 11349 10001 +f 10001 11349 11350 +f 10001 11350 10002 +f 10002 11350 10161 +f 10002 10161 10003 +f 11342 10077 10078 +f 3386 3385 9693 +f 3386 9693 9695 +f 7072 7171 7069 +f 7069 7171 11315 +f 7069 11315 7066 +f 7171 7173 11315 +f 11317 6939 6941 +f 11317 6941 11318 +f 11318 6941 6943 +f 11318 6943 11319 +f 11319 6943 6945 +f 11319 6945 11320 +f 11320 6945 6947 +f 11320 6947 11321 +f 11321 6947 6949 +f 11321 6949 11322 +f 11322 6949 6951 +f 11322 6951 11323 +f 11323 6951 6953 +f 11323 6953 11324 +f 11324 6953 6955 +f 11324 6955 11325 +f 11325 6955 6957 +f 11325 6957 11326 +f 11326 6957 6959 +f 11326 6959 11327 +f 11327 6959 6961 +f 11327 6961 11328 +f 11328 6961 6963 +f 11328 6963 11329 +f 11329 6963 6965 +f 5681 6476 5683 +f 5683 6476 6642 +f 11331 6041 6043 +f 11331 6043 11332 +f 11332 6043 5667 +f 11332 5667 5665 +f 5647 5645 10062 +f 5647 10062 5652 +f 5652 10062 5659 +f 5652 5659 5655 +f 9220 9222 9199 +f 9199 9222 9198 +f 11333 10067 11351 +f 11351 10067 10068 +f 11351 10068 11352 +f 11352 10068 10069 +f 11352 10069 11353 +f 11353 10069 10070 +f 11353 10070 11354 +f 11354 10070 10071 +f 11354 10071 11355 +f 11355 10071 10072 +f 11355 10072 11356 +f 11356 10072 10073 +f 11356 10073 11357 +f 11357 10073 10074 +f 11357 10074 11358 +f 11358 10074 10075 +f 11358 10075 10180 +f 10180 10075 10076 +f 11342 10078 11359 +f 11359 10078 10079 +f 11359 10079 11360 +f 11360 10079 10080 +f 11360 10080 11361 +f 11361 10080 10081 +f 11361 10081 11362 +f 11362 10081 10082 +f 11362 10082 11363 +f 11363 10082 10083 +f 11363 10083 11364 +f 11364 10083 10084 +f 11364 10084 11365 +f 11365 10084 10085 +f 11365 10085 11366 +f 11366 10085 10086 +f 11366 10086 10170 +f 10170 10086 10087 +f 3388 3386 9695 +f 3388 9695 9697 +f 3301 3299 3387 +f 7172 7170 11367 +f 11367 7170 7178 +f 11367 7178 7234 +f 7234 7178 7181 +f 7174 7172 11368 +f 11368 7172 11367 +f 11368 11367 7236 +f 7236 11367 7234 +f 6942 7174 11369 +f 11369 7174 11368 +f 11369 11368 7238 +f 7238 11368 7236 +f 7163 5660 11370 +f 11370 5660 11371 +f 11370 11371 11372 +f 11372 11371 11373 +f 11372 11373 3095 +f 3095 11373 3093 +f 5660 5662 11371 +f 11371 5662 11374 +f 11371 11374 11373 +f 11373 11374 11375 +f 11373 11375 3093 +f 3093 11375 3091 +f 5662 5664 11374 +f 11374 5664 11376 +f 11374 11376 11375 +f 11375 11376 11377 +f 11375 11377 3091 +f 3091 11377 3089 +f 5664 5666 11376 +f 11376 5666 11378 +f 11376 11378 11377 +f 11377 11378 11379 +f 11377 11379 3089 +f 3089 11379 3087 +f 5666 5668 11378 +f 11378 5668 11380 +f 11378 11380 11379 +f 11379 11380 11381 +f 11379 11381 3087 +f 3087 11381 3085 +f 5668 5670 11380 +f 11380 5670 11382 +f 11380 11382 11381 +f 11381 11382 11383 +f 11381 11383 3085 +f 3085 11383 3083 +f 5670 5672 11382 +f 11382 5672 11384 +f 11382 11384 11383 +f 11383 11384 11385 +f 11383 11385 3083 +f 3083 11385 3081 +f 5672 5674 11384 +f 11384 5674 11386 +f 11384 11386 11385 +f 11385 11386 11387 +f 11385 11387 3081 +f 3081 11387 3079 +f 5674 5676 11386 +f 11386 5676 11388 +f 11386 11388 11387 +f 11387 11388 11389 +f 11387 11389 3079 +f 3079 11389 3077 +f 5676 5678 11388 +f 11388 5678 11390 +f 11388 11390 11389 +f 11389 11390 11391 +f 11389 11391 3077 +f 3077 11391 3075 +f 5678 5680 11390 +f 11390 5680 11392 +f 11390 11392 11391 +f 11391 11392 11393 +f 11391 11393 3075 +f 3075 11393 3073 +f 5680 5682 11392 +f 11392 5682 11394 +f 11392 11394 11393 +f 11393 11394 3071 +f 11393 3071 3073 +f 5682 5684 11394 +f 11394 5684 5686 +f 11394 5686 3069 +f 3069 5686 3067 +f 7240 6946 6944 +f 7238 7240 11369 +f 11369 7240 6944 +f 11369 6944 6942 +f 3071 11394 3069 +f 7158 7156 11370 +f 11370 7156 7163 +f 7158 11370 11372 +f 9201 9220 9200 +f 9200 9220 9199 +f 11333 11351 11334 +f 11334 11351 11395 +f 11334 11395 11335 +f 11335 11395 11396 +f 11335 11396 11336 +f 11336 11396 11397 +f 11336 11397 11337 +f 11337 11397 11398 +f 11337 11398 11338 +f 11338 11398 11399 +f 11338 11399 11339 +f 11339 11399 11400 +f 11339 11400 11340 +f 11340 11400 11401 +f 11340 11401 11341 +f 11341 11401 10172 +f 11341 10172 10171 +f 11395 11351 11352 +f 9175 9177 9963 +f 9963 9177 11402 +f 9963 11402 9961 +f 9961 11402 11403 +f 9961 11403 9959 +f 9959 11403 11404 +f 9959 11404 9957 +f 9957 11404 11405 +f 9957 11405 9955 +f 9955 11405 11406 +f 9955 11406 9953 +f 9953 11406 9916 +f 9953 9916 9915 +f 11342 11359 11343 +f 11343 11359 11407 +f 11343 11407 11344 +f 11344 11407 11408 +f 11344 11408 11345 +f 11345 11408 11409 +f 11345 11409 11346 +f 11346 11409 11410 +f 11346 11410 11347 +f 11347 11410 11411 +f 11347 11411 11348 +f 11348 11411 11412 +f 11348 11412 11349 +f 11349 11412 11413 +f 11349 11413 11350 +f 11350 11413 10162 +f 11350 10162 10161 +f 11407 11359 11360 +f 3390 3388 9697 +f 3390 9697 9699 +f 3303 3301 3387 +f 3303 3387 3389 +f 7235 7233 11414 +f 11414 7233 7244 +f 11414 7244 7249 +f 7237 7235 11415 +f 11415 7235 11414 +f 11415 11414 11416 +f 11416 11414 7249 +f 11416 7249 7251 +f 7239 7237 11417 +f 11417 7237 11415 +f 11417 11415 11418 +f 11418 11415 11416 +f 11418 11416 11419 +f 11419 11416 7251 +f 11419 7251 7253 +f 7241 7239 11420 +f 11420 7239 11417 +f 11420 11417 11421 +f 11421 11417 11418 +f 11421 11418 11422 +f 11422 11418 11419 +f 11422 11419 11423 +f 11423 11419 7253 +f 11423 7253 7255 +f 6948 7241 11424 +f 11424 7241 11420 +f 11424 11420 11425 +f 11425 11420 11421 +f 11425 11421 11426 +f 11426 11421 11422 +f 11426 11422 11427 +f 11427 11422 11423 +f 11427 11423 11428 +f 11428 11423 7255 +f 11428 7255 7257 +f 3097 7158 11372 +f 3097 11372 3095 +f 6950 11424 11429 +f 11429 11424 11425 +f 11429 11425 11430 +f 11430 11425 11426 +f 11430 11426 11431 +f 11431 11426 11427 +f 11431 11427 11432 +f 11432 11427 11428 +f 11432 11428 11433 +f 11433 11428 7257 +f 11433 7257 7259 +f 11424 6950 6948 +f 7304 7303 7305 +f 6950 11429 6952 +f 6952 11429 11434 +f 6952 11434 6954 +f 6954 11434 11435 +f 6954 11435 6956 +f 6956 11435 11436 +f 6956 11436 6958 +f 6958 11436 11437 +f 6958 11437 6960 +f 6960 11437 11438 +f 6960 11438 6962 +f 6962 11438 11439 +f 6962 11439 6964 +f 6964 11439 11440 +f 6964 11440 6966 +f 6966 11440 11441 +f 6966 11441 6968 +f 6968 11441 6970 +f 11434 11429 11430 +f 3074 3242 3076 +f 3076 3242 11442 +f 3076 11442 3078 +f 3078 11442 11443 +f 3078 11443 3080 +f 3080 11443 11444 +f 3080 11444 3082 +f 3082 11444 11445 +f 3082 11445 3084 +f 3084 11445 11446 +f 3084 11446 3086 +f 3086 11446 11447 +f 3086 11447 3088 +f 3088 11447 11448 +f 3088 11448 3090 +f 3090 11448 11449 +f 3090 11449 3092 +f 3092 11449 11450 +f 3092 11450 3094 +f 3094 11450 11451 +f 3094 11451 3096 +f 3096 11451 11452 +f 3096 11452 3098 +f 3098 11452 3108 +f 3098 3108 3100 +f 3100 3108 3103 +f 11395 11352 11453 +f 11453 11352 11353 +f 11453 11353 11454 +f 11454 11353 11354 +f 11454 11354 11455 +f 11455 11354 11355 +f 11455 11355 11456 +f 11456 11355 11356 +f 11456 11356 11457 +f 11457 11356 11357 +f 11457 11357 11458 +f 11458 11357 11358 +f 11458 11358 10179 +f 10179 11358 10180 +f 9177 9179 11402 +f 11402 9179 11459 +f 11402 11459 11403 +f 11403 11459 11460 +f 11403 11460 11404 +f 11404 11460 11461 +f 11404 11461 11405 +f 11405 11461 11462 +f 11405 11462 11406 +f 11406 11462 9917 +f 11406 9917 9916 +f 11407 11360 11463 +f 11463 11360 11361 +f 11463 11361 11464 +f 11464 11361 11362 +f 11464 11362 11465 +f 11465 11362 11363 +f 11465 11363 11466 +f 11466 11363 11364 +f 11466 11364 11467 +f 11467 11364 11365 +f 11467 11365 11468 +f 11468 11365 11366 +f 11468 11366 10169 +f 10169 11366 10170 +f 3392 3390 9699 +f 3392 9699 9701 +f 3305 3303 3389 +f 3305 3389 3391 +f 11434 11430 11469 +f 11469 11430 11431 +f 11469 11431 11470 +f 11470 11431 11432 +f 11470 11432 11471 +f 11471 11432 11433 +f 11471 11433 11472 +f 11472 11433 7259 +f 11472 7259 7261 +f 3242 3244 11442 +f 11442 3244 11473 +f 11442 11473 11443 +f 11443 11473 11474 +f 11443 11474 11444 +f 11444 11474 11475 +f 11444 11475 11445 +f 11445 11475 11476 +f 11445 11476 11446 +f 11446 11476 11477 +f 11446 11477 11447 +f 11447 11477 11478 +f 11447 11478 11448 +f 11448 11478 11479 +f 11448 11479 11449 +f 11449 11479 11480 +f 11449 11480 11450 +f 11450 11480 11481 +f 11450 11481 11451 +f 11451 11481 11482 +f 11451 11482 11452 +f 11452 11482 3110 +f 11452 3110 3108 +f 3112 3110 11483 +f 11483 3110 11484 +f 11483 11484 11485 +f 11485 11484 11486 +f 11485 11486 11487 +f 11487 11486 11488 +f 11487 11488 11489 +f 11489 11488 11490 +f 11489 11490 11491 +f 11491 11490 11492 +f 11491 11492 11493 +f 11493 11492 11494 +f 11493 11494 11495 +f 11495 11494 11496 +f 11495 11496 11497 +f 11497 11496 11498 +f 11497 11498 11499 +f 11499 11498 11500 +f 11499 11500 11501 +f 11501 11500 11502 +f 11501 11502 11503 +f 11503 11502 3266 +f 11503 3266 3268 +f 3110 11482 11484 +f 11484 11482 11504 +f 11484 11504 11486 +f 11486 11504 11505 +f 11486 11505 11488 +f 11488 11505 11506 +f 11488 11506 11490 +f 11490 11506 11507 +f 11490 11507 11492 +f 11492 11507 11508 +f 11492 11508 11494 +f 11494 11508 11509 +f 11494 11509 11496 +f 11496 11509 11510 +f 11496 11510 11498 +f 11498 11510 11511 +f 11498 11511 11500 +f 11500 11511 11512 +f 11500 11512 11502 +f 11502 11512 3264 +f 11502 3264 3266 +f 11482 11481 11504 +f 11504 11481 11513 +f 11504 11513 11505 +f 11505 11513 11514 +f 11505 11514 11506 +f 11506 11514 11515 +f 11506 11515 11507 +f 11507 11515 11516 +f 11507 11516 11508 +f 11508 11516 11517 +f 11508 11517 11509 +f 11509 11517 11518 +f 11509 11518 11510 +f 11510 11518 11519 +f 11510 11519 11511 +f 11511 11519 11520 +f 11511 11520 11512 +f 11512 11520 3262 +f 11512 3262 3264 +f 11481 11480 11513 +f 11513 11480 11521 +f 11513 11521 11514 +f 11514 11521 11522 +f 11514 11522 11515 +f 11515 11522 11523 +f 11515 11523 11516 +f 11516 11523 11524 +f 11516 11524 11517 +f 11517 11524 11525 +f 11517 11525 11518 +f 11518 11525 11526 +f 11518 11526 11519 +f 11519 11526 11527 +f 11519 11527 11520 +f 11520 11527 3260 +f 11520 3260 3262 +f 11480 11479 11521 +f 11521 11479 11528 +f 11521 11528 11522 +f 11522 11528 11529 +f 11522 11529 11523 +f 11523 11529 11530 +f 11523 11530 11524 +f 11524 11530 11531 +f 11524 11531 11525 +f 11525 11531 11532 +f 11525 11532 11526 +f 11526 11532 11533 +f 11526 11533 11527 +f 11527 11533 3258 +f 11527 3258 3260 +f 11479 11478 11528 +f 11528 11478 11534 +f 11528 11534 11529 +f 11529 11534 11535 +f 11529 11535 11530 +f 11530 11535 11536 +f 11530 11536 11531 +f 11531 11536 11537 +f 11531 11537 11532 +f 11532 11537 11538 +f 11532 11538 11533 +f 11533 11538 3256 +f 11533 3256 3258 +f 11478 11477 11534 +f 11534 11477 11539 +f 11534 11539 11535 +f 11535 11539 11540 +f 11535 11540 11536 +f 11536 11540 11541 +f 11536 11541 11537 +f 11537 11541 11542 +f 11537 11542 11538 +f 11538 11542 3254 +f 11538 3254 3256 +f 11477 11476 11539 +f 11539 11476 11543 +f 11539 11543 11540 +f 11540 11543 11544 +f 11540 11544 11541 +f 11541 11544 11545 +f 11541 11545 11542 +f 11542 11545 3252 +f 11542 3252 3254 +f 11476 11475 11543 +f 11543 11475 11546 +f 11543 11546 11544 +f 11544 11546 11547 +f 11544 11547 11545 +f 11545 11547 3250 +f 11545 3250 3252 +f 11475 11474 11546 +f 11546 11474 11548 +f 11546 11548 11547 +f 11547 11548 3248 +f 11547 3248 3250 +f 11474 11473 11548 +f 11548 11473 3246 +f 11548 3246 3248 +f 11473 3244 3246 +f 11435 11469 11549 +f 11549 11469 11470 +f 11549 11470 11550 +f 11550 11470 11471 +f 11550 11471 11551 +f 11551 11471 11472 +f 11551 11472 11552 +f 11552 11472 7261 +f 11552 7261 7263 +f 11469 11435 11434 +f 7254 7252 7379 +f 7379 7252 7374 +f 7374 7252 7250 +f 7437 7436 7438 +f 7256 7254 7381 +f 7381 7254 7379 +f 11435 11549 11436 +f 11436 11549 11553 +f 11436 11553 11437 +f 11437 11553 11554 +f 11437 11554 11438 +f 11438 11554 11555 +f 11438 11555 11439 +f 11439 11555 11556 +f 11439 11556 11440 +f 11440 11556 11557 +f 11440 11557 11441 +f 11441 11557 11558 +f 11441 11558 6970 +f 6970 11558 11559 +f 6970 11559 6972 +f 6972 11559 11560 +f 6972 11560 6974 +f 6974 11560 11561 +f 6974 11561 6976 +f 6976 11561 11562 +f 6976 11562 6978 +f 6978 11562 11563 +f 6978 11563 6980 +f 6980 11563 11564 +f 6980 11564 6982 +f 6982 11564 11565 +f 6982 11565 6984 +f 6984 11565 7287 +f 6984 7287 6986 +f 11553 11549 11550 +f 3119 3117 11483 +f 11483 3117 3112 +f 3119 11483 11485 +f 11395 11453 11396 +f 11396 11453 11566 +f 11396 11566 11397 +f 11397 11566 11567 +f 11397 11567 11398 +f 11398 11567 11568 +f 11398 11568 11399 +f 11399 11568 11569 +f 11399 11569 11400 +f 11400 11569 11570 +f 11400 11570 11401 +f 11401 11570 10173 +f 11401 10173 10172 +f 11566 11453 11454 +f 9179 9181 11459 +f 11459 9181 11571 +f 11459 11571 11460 +f 11460 11571 11572 +f 11460 11572 11461 +f 11461 11572 11573 +f 11461 11573 11462 +f 11462 11573 9918 +f 11462 9918 9917 +f 11407 11463 11408 +f 11408 11463 11574 +f 11408 11574 11409 +f 11409 11574 11575 +f 11409 11575 11410 +f 11410 11575 11576 +f 11410 11576 11411 +f 11411 11576 11577 +f 11411 11577 11412 +f 11412 11577 11578 +f 11412 11578 11413 +f 11413 11578 10163 +f 11413 10163 10162 +f 11574 11463 11464 +f 3394 3392 9701 +f 3394 9701 9703 +f 3307 3305 3391 +f 3307 3391 3393 +f 7258 7256 7383 +f 7383 7256 7381 +f 11553 11550 11579 +f 11579 11550 11551 +f 11579 11551 11580 +f 11580 11551 11552 +f 11580 11552 11581 +f 11581 11552 7263 +f 11581 7263 7265 +f 3121 3119 11485 +f 3121 11485 11487 +f 3125 3121 11582 +f 11582 3121 11583 +f 11582 11583 11584 +f 11584 11583 11585 +f 11584 11585 11586 +f 11586 11585 11587 +f 11586 11587 11588 +f 11588 11587 11589 +f 11588 11589 11590 +f 11590 11589 11591 +f 11590 11591 11592 +f 11592 11591 11593 +f 11592 11593 11594 +f 11594 11593 11595 +f 11594 11595 11596 +f 11596 11595 11597 +f 11596 11597 11598 +f 11598 11597 11599 +f 11598 11599 11600 +f 11600 11599 3270 +f 11600 3270 3272 +f 3121 11487 11583 +f 11583 11487 11489 +f 11583 11489 11585 +f 11585 11489 11491 +f 11585 11491 11587 +f 11587 11491 11493 +f 11587 11493 11589 +f 11589 11493 11495 +f 11589 11495 11591 +f 11591 11495 11497 +f 11591 11497 11593 +f 11593 11497 11499 +f 11593 11499 11595 +f 11595 11499 11501 +f 11595 11501 11597 +f 11597 11501 11503 +f 11597 11503 11599 +f 11599 11503 3268 +f 11599 3268 3270 +f 11554 11579 11601 +f 11601 11579 11580 +f 11601 11580 11602 +f 11602 11580 11581 +f 11602 11581 11603 +f 11603 11581 7265 +f 11603 7265 7267 +f 11579 11554 11553 +f 7260 7258 7385 +f 7385 7258 7383 +f 7526 7384 7382 +f 7524 7526 7519 +f 7519 7526 7382 +f 7519 7382 7380 +f 7544 7543 7545 +f 7262 7260 7387 +f 7387 7260 7385 +f 11554 11601 11555 +f 11555 11601 11604 +f 11555 11604 11556 +f 11556 11604 11605 +f 11556 11605 11557 +f 11557 11605 11606 +f 11557 11606 11558 +f 11558 11606 11607 +f 11558 11607 11559 +f 11559 11607 11608 +f 11559 11608 11560 +f 11560 11608 11561 +f 11604 11601 11602 +f 3130 3128 11582 +f 11582 3128 3125 +f 3130 11582 11584 +f 11566 11454 11609 +f 11609 11454 11455 +f 11609 11455 11610 +f 11610 11455 11456 +f 11610 11456 11611 +f 11611 11456 11457 +f 11611 11457 11612 +f 11612 11457 11458 +f 11612 11458 10178 +f 10178 11458 10179 +f 9181 9183 11571 +f 11571 9183 11613 +f 11571 11613 11572 +f 11572 11613 11614 +f 11572 11614 11573 +f 11573 11614 9919 +f 11573 9919 9918 +f 11574 11464 11615 +f 11615 11464 11465 +f 11615 11465 11616 +f 11616 11465 11466 +f 11616 11466 11617 +f 11617 11466 11467 +f 11617 11467 11618 +f 11618 11467 11468 +f 11618 11468 10168 +f 10168 11468 10169 +f 3396 3394 9703 +f 3396 9703 9705 +f 3309 3307 3393 +f 3309 3393 3395 +f 7525 7590 7527 +f 7527 7590 11619 +f 7527 11619 7386 +f 7386 11619 7388 +f 7264 7262 7389 +f 7389 7262 7387 +f 11604 11602 11620 +f 11620 11602 11603 +f 11620 11603 11621 +f 11621 11603 7267 +f 11621 7267 7269 +f 3132 3130 11584 +f 3132 11584 11586 +f 3132 11586 11622 +f 11622 11586 11588 +f 11622 11588 11623 +f 11623 11588 11590 +f 11623 11590 11624 +f 11624 11590 11592 +f 11624 11592 11625 +f 11625 11592 11594 +f 11625 11594 11626 +f 11626 11594 11596 +f 11626 11596 11627 +f 11627 11596 11598 +f 11627 11598 11628 +f 11628 11598 11600 +f 11628 11600 11629 +f 11629 11600 3272 +f 11629 3272 3274 +f 7566 3135 3137 +f 11605 11620 11630 +f 11630 11620 11621 +f 11630 11621 11631 +f 11631 11621 7269 +f 11631 7269 7271 +f 11620 11605 11604 +f 7266 7264 7391 +f 7391 7264 7389 +f 7388 11619 11632 +f 11632 11619 7592 +f 11632 7592 7594 +f 11619 7590 7592 +f 7659 7658 7660 +f 7388 11632 7390 +f 7390 11632 11633 +f 7390 11633 7392 +f 7392 11633 11634 +f 7392 11634 7394 +f 7394 11634 11635 +f 7394 11635 7396 +f 7396 11635 11636 +f 7396 11636 7398 +f 7398 11636 11637 +f 7398 11637 7400 +f 7400 11637 11638 +f 7400 11638 7402 +f 7402 11638 11639 +f 7402 11639 7404 +f 7404 11639 11640 +f 7404 11640 7406 +f 7406 11640 11641 +f 7406 11641 7408 +f 7408 11641 11642 +f 7408 11642 7410 +f 7410 11642 11643 +f 7410 11643 7412 +f 7412 11643 11644 +f 7412 11644 7414 +f 7414 11644 11645 +f 7414 11645 7416 +f 7416 11645 11646 +f 7416 11646 7418 +f 7418 11646 7623 +f 7418 7623 7420 +f 7420 7623 3500 +f 11633 11632 7594 +f 7268 7266 7393 +f 7393 7266 7391 +f 11605 11630 11606 +f 11606 11630 11647 +f 11606 11647 11607 +f 11607 11647 11648 +f 11607 11648 11608 +f 11608 11648 11649 +f 11608 11649 11561 +f 11561 11649 11650 +f 11561 11650 11562 +f 11562 11650 11651 +f 11562 11651 11563 +f 11563 11651 11652 +f 11563 11652 11564 +f 11564 11652 11653 +f 11564 11653 11565 +f 11565 11653 7285 +f 11565 7285 7287 +f 11647 11630 11631 +f 3138 3136 11622 +f 11622 3136 3132 +f 3138 11622 11623 +f 11566 11609 11567 +f 11567 11609 11654 +f 11567 11654 11568 +f 11568 11654 11655 +f 11568 11655 11569 +f 11569 11655 11656 +f 11569 11656 11570 +f 11570 11656 10174 +f 11570 10174 10173 +f 11654 11609 11610 +f 9183 9185 11613 +f 11613 9185 11657 +f 11613 11657 11614 +f 11614 11657 9920 +f 11614 9920 9919 +f 11574 11615 11575 +f 11575 11615 11658 +f 11575 11658 11576 +f 11576 11658 11659 +f 11576 11659 11577 +f 11577 11659 11660 +f 11577 11660 11578 +f 11578 11660 10164 +f 11578 10164 10163 +f 11658 11615 11616 +f 3398 3396 9705 +f 3398 9705 9707 +f 3311 3309 3395 +f 3311 3395 3397 +f 11634 11633 7596 +f 7596 11633 7594 +f 7270 7268 7395 +f 7395 7268 7393 +f 11647 11631 11661 +f 11661 11631 7271 +f 11661 7271 7273 +f 3140 3138 11623 +f 3140 11623 11624 +f 7713 7711 7721 +f 3140 11624 3142 +f 3142 11624 11625 +f 3142 11625 3144 +f 3144 11625 11626 +f 3144 11626 3146 +f 3146 11626 11627 +f 3146 11627 3148 +f 3148 11627 11628 +f 3148 11628 3150 +f 3150 11628 11629 +f 3150 11629 3152 +f 3152 11629 3274 +f 3152 3274 3154 +f 11648 11661 11662 +f 11662 11661 7273 +f 11662 7273 7275 +f 11661 11648 11647 +f 7272 7270 7397 +f 7397 7270 7395 +f 11635 11634 7598 +f 7598 11634 7596 +f 7744 7631 7630 +f 7742 7744 7737 +f 7737 7744 7630 +f 7737 7630 7629 +f 7766 7765 7767 +f 11636 11635 7600 +f 7600 11635 7598 +f 7274 7272 7399 +f 7399 7272 7397 +f 11648 11662 11649 +f 11649 11662 11663 +f 11649 11663 11650 +f 11650 11663 11664 +f 11650 11664 11651 +f 11651 11664 11652 +f 11663 11662 7275 +f 7713 7721 3141 +f 7713 3141 3143 +f 11654 11610 11665 +f 11665 11610 11611 +f 11665 11611 11666 +f 11666 11611 11612 +f 11666 11612 10177 +f 10177 11612 10178 +f 9921 9920 11657 +f 9921 11657 9187 +f 9187 11657 9185 +f 11658 11616 11667 +f 11667 11616 11617 +f 11667 11617 11668 +f 11668 11617 11618 +f 11668 11618 10167 +f 10167 11618 10168 +f 3400 3398 9707 +f 3400 9707 9709 +f 3313 3311 3397 +f 3313 3397 3399 +f 7745 7743 11669 +f 11669 7743 7750 +f 11669 7750 7844 +f 7844 7750 7842 +f 7632 7745 11670 +f 11670 7745 11669 +f 11670 11669 7846 +f 7846 11669 7844 +f 11637 11636 7602 +f 7602 11636 7600 +f 7276 7274 7401 +f 7401 7274 7399 +f 11664 11663 7277 +f 7277 11663 7275 +f 7920 7815 7712 +f 7922 7920 7714 +f 7714 7920 7712 +f 3147 7922 3145 +f 3145 7922 7714 +f 11652 11664 7279 +f 7279 11664 7277 +f 7278 7276 7403 +f 7403 7276 7401 +f 11638 11637 7604 +f 7604 11637 7602 +f 7848 7634 7633 +f 7846 7848 11670 +f 11670 7848 7633 +f 11670 7633 7632 +f 11639 11638 7606 +f 7606 11638 7604 +f 7280 7278 7405 +f 7405 7278 7403 +f 11653 11652 7281 +f 7281 11652 7279 +f 11654 11665 11655 +f 11655 11665 11671 +f 11655 11671 11656 +f 11656 11671 10175 +f 11656 10175 10174 +f 11671 11665 11666 +f 9189 9921 9187 +f 11658 11667 11659 +f 11659 11667 11672 +f 11659 11672 11660 +f 11660 11672 10165 +f 11660 10165 10164 +f 11672 11667 11668 +f 3402 3400 9709 +f 3402 9709 9711 +f 3315 3313 3399 +f 3315 3399 3401 +f 7843 7933 7845 +f 7845 7933 11673 +f 7845 11673 7847 +f 7847 11673 11674 +f 7847 11674 7849 +f 7849 11674 11675 +f 7849 11675 7635 +f 7635 11675 7636 +f 11640 11639 7608 +f 7608 11639 7606 +f 7282 7280 7407 +f 7407 7280 7405 +f 7285 11653 7283 +f 7283 11653 7281 +f 8160 7923 8259 +f 8259 7923 3149 +f 7905 7918 7919 +f 8159 8160 8257 +f 8257 8160 8259 +f 8258 3151 3153 +f 7284 7282 7409 +f 7409 7282 7407 +f 11641 11640 7610 +f 7610 11640 7608 +f 7636 11675 11676 +f 11676 11675 11677 +f 11676 11677 11678 +f 11678 11677 11679 +f 11678 11679 11680 +f 11680 11679 7939 +f 11680 7939 7941 +f 11675 11674 11677 +f 11677 11674 11681 +f 11677 11681 11679 +f 11679 11681 7937 +f 11679 7937 7939 +f 11674 11673 11681 +f 11681 11673 7935 +f 11681 7935 7937 +f 11673 7933 7935 +f 7636 11676 7637 +f 7637 11676 11682 +f 7637 11682 7638 +f 7638 11682 11683 +f 7638 11683 7639 +f 7639 11683 11684 +f 7639 11684 7640 +f 7640 11684 11685 +f 7640 11685 7641 +f 7641 11685 11686 +f 7641 11686 7642 +f 7642 11686 11687 +f 7642 11687 7643 +f 7643 11687 3492 +f 7643 3492 3494 +f 11682 11676 11678 +f 11642 11641 7612 +f 7612 11641 7610 +f 7409 7411 7284 +f 7284 7411 11688 +f 7284 11688 7286 +f 7286 11688 11689 +f 7286 11689 7288 +f 7288 11689 11690 +f 7288 11690 6988 +f 6988 11690 6990 +f 8256 8258 8244 +f 8244 8258 3153 +f 8158 8159 8255 +f 8255 8159 8257 +f 10177 10176 11666 +f 11666 10176 11671 +f 10176 10175 11671 +f 10167 10166 11668 +f 11668 10166 11672 +f 10166 10165 11672 +f 3404 3402 9711 +f 3404 9711 9713 +f 3317 3315 3401 +f 3317 3401 3403 +f 3428 7980 3417 +f 3417 7980 7927 +f 3428 3417 3416 +f 11682 11678 11691 +f 11691 11678 11680 +f 11691 11680 11692 +f 11692 11680 7941 +f 11692 7941 7943 +f 11643 11642 7614 +f 7614 11642 7612 +f 7411 7413 11688 +f 11688 7413 11693 +f 11688 11693 11689 +f 11689 11693 11694 +f 11689 11694 11690 +f 11690 11694 11695 +f 11690 11695 6990 +f 6990 11695 6992 +f 8243 3155 3157 +f 8254 8256 8242 +f 8242 8256 8244 +f 8157 8158 8253 +f 8253 8158 8255 +f 7897 7899 8021 +f 8156 8157 8251 +f 8251 8157 8253 +f 8252 8254 8240 +f 8240 8254 8242 +f 8243 3157 11696 +f 11696 3157 3159 +f 11696 3159 9599 +f 6992 11695 11697 +f 11697 11695 11698 +f 11697 11698 11699 +f 11699 11698 11700 +f 11699 11700 11701 +f 11701 11700 7419 +f 11701 7419 7421 +f 11695 11694 11698 +f 11698 11694 11702 +f 11698 11702 11700 +f 11700 11702 7417 +f 11700 7417 7419 +f 11694 11693 11702 +f 11702 11693 7415 +f 11702 7415 7417 +f 11693 7413 7415 +f 11644 11643 7616 +f 7616 11643 7614 +f 11683 11691 11703 +f 11703 11691 11692 +f 11703 11692 11704 +f 11704 11692 7943 +f 11704 7943 7945 +f 11691 11683 11682 +f 11683 11703 11684 +f 11684 11703 11705 +f 11684 11705 11685 +f 11685 11705 11706 +f 11685 11706 11686 +f 11686 11706 11707 +f 11686 11707 11687 +f 11687 11707 3490 +f 11687 3490 3492 +f 11705 11703 11704 +f 11645 11644 7618 +f 7618 11644 7616 +f 3162 3160 11697 +f 11697 3160 6992 +f 3162 11697 11699 +f 8243 11696 8241 +f 8241 11696 11708 +f 8241 11708 8239 +f 8239 11708 11709 +f 8239 11709 8237 +f 8237 11709 9601 +f 8237 9601 8235 +f 11708 11696 9599 +f 8250 8252 8238 +f 8238 8252 8240 +f 8153 8156 8249 +f 8249 8156 8251 +f 8078 8165 8079 +f 8079 8165 8170 +f 8079 8170 8080 +f 8080 8170 10160 +f 11705 11704 11710 +f 11710 11704 7945 +f 11710 7945 7947 +f 11646 11645 7620 +f 7620 11645 7618 +f 3164 3162 11699 +f 3164 11699 11701 +f 11709 11708 9597 +f 9597 11708 9599 +f 8248 8250 8236 +f 8236 8250 8238 +f 8151 8153 8249 +f 10159 10160 8172 +f 8172 10160 8170 +f 10159 8172 8264 +f 3480 8081 3479 +f 7947 11711 11710 +f 11710 11711 11706 +f 11710 11706 11705 +f 11706 11711 11707 +f 11707 11711 3488 +f 11707 3488 3490 +f 3488 11711 3486 +f 3486 11711 7947 +f 11646 7620 7622 +f 7622 7623 11646 +f 3164 11701 3166 +f 3166 11701 7421 +f 3166 7421 3168 +f 11709 9597 9595 +f 9593 9601 9595 +f 9595 9601 11709 +f 8248 8236 8234 +f 8248 8234 8245 +f 8245 8234 8233 +f 8245 8233 8231 +f 3476 10159 8264 +f 8423 8466 8424 +f 8424 8466 10864 +f 8466 8465 10864 +f 8800 8802 8769 +f 8769 8802 8771 +f 8835 8837 8799 +f 8799 8837 8801 +f 8870 8872 8834 +f 8834 8872 8836 +f 8905 8907 8869 +f 8869 8907 8871 +f 8940 8942 8904 +f 8904 8942 8906 +f 8973 8975 8939 +f 8939 8975 8941 +f 5109 5111 8972 +f 8972 5111 8974 +f 10879 10878 5108 +f 5108 10878 5110 +f 9053 9052 10922 +f 10922 9052 9115 +f 10922 9115 10923 +f 10923 9115 9116 +f 10923 9116 9117 +f 8467 8422 9618 +f 9618 8422 8421 +f 9618 9617 8467 +f 8353 8338 11712 +f 11712 8338 8336 +f 11712 8336 11713 +f 11713 8336 8334 +f 11713 8334 11714 +f 11714 8334 8330 +f 11714 8330 8328 +f 8352 8353 11715 +f 11715 8353 11712 +f 11715 11712 11716 +f 11716 11712 11713 +f 11716 11713 11717 +f 11717 11713 11714 +f 11717 11714 11718 +f 11718 11714 8328 +f 11718 8328 8326 +f 8351 8352 11719 +f 11719 8352 11715 +f 11719 11715 11720 +f 11720 11715 11716 +f 11720 11716 11721 +f 11721 11716 11717 +f 11721 11717 11722 +f 11722 11717 11718 +f 11722 11718 11723 +f 11723 11718 8326 +f 11723 8326 8324 +f 8350 8351 11724 +f 11724 8351 11719 +f 11724 11719 11725 +f 11725 11719 11720 +f 11725 11720 11726 +f 11726 11720 11721 +f 11726 11721 11727 +f 11727 11721 11722 +f 11727 11722 11728 +f 11728 11722 11723 +f 11728 11723 11729 +f 11729 11723 8324 +f 11729 8324 8322 +f 8341 8340 8349 +f 8349 8350 11730 +f 11730 8350 11724 +f 11730 11724 11731 +f 11731 11724 11725 +f 11731 11725 11732 +f 11732 11725 11726 +f 11732 11726 11733 +f 11733 11726 11727 +f 11733 11727 11734 +f 11734 11727 11728 +f 11734 11728 11735 +f 11735 11728 11729 +f 11735 11729 11736 +f 11736 11729 8322 +f 11736 8322 8320 +f 9611 9613 8420 +f 9611 8420 8419 +f 8342 8341 11730 +f 11730 8341 8349 +f 8342 11730 11731 +f 9609 9611 8419 +f 9609 8419 8418 +f 8343 8342 11731 +f 8343 11731 11732 +f 8344 8343 11732 +f 8344 11732 11733 +f 8345 8344 11733 +f 8345 11733 11734 +f 8346 8345 11734 +f 8346 11734 11735 +f 8355 8363 8356 +f 8356 8363 11737 +f 8356 11737 8357 +f 8357 11737 11738 +f 8357 11738 8358 +f 8358 11738 8371 +f 8358 8371 8359 +f 8359 8371 8360 +f 8347 8346 11735 +f 8347 11735 11736 +f 8363 8365 11737 +f 11737 8365 8373 +f 11737 8373 11738 +f 11738 8373 8372 +f 11738 8372 8371 +f 8348 8347 11736 +f 8348 11736 8320 +f 8348 8320 8318 +f 5088 5086 10889 +f 10889 5086 5082 +f 8952 8951 5089 +f 5089 8951 5087 +f 8919 8918 8953 +f 8953 8918 8917 +f 8884 8883 8920 +f 8920 8883 8882 +f 8849 8848 8885 +f 8885 8848 8847 +f 8814 8813 8850 +f 8850 8813 8812 +f 8779 8778 8815 +f 8815 8778 8777 +f 8712 8711 8748 +f 8749 8747 8780 +f 8780 8747 8746 +f 8748 8750 8712 +f 8712 8750 11739 +f 8712 11739 8713 +f 8713 11739 8715 +f 8690 8689 8714 +f 8714 8716 8690 +f 8690 8716 11740 +f 8690 11740 8691 +f 8691 11740 8693 +f 8647 8646 8670 +f 8671 8669 9628 +f 9628 8669 8668 +f 8670 8672 8647 +f 8647 8672 11741 +f 8647 11741 8648 +f 8648 11741 8649 +f 8604 8603 8627 +f 8628 8626 8650 +f 8650 8626 8625 +f 8627 8629 8604 +f 8604 8629 11742 +f 8604 11742 8605 +f 8605 11742 8606 +f 8585 8584 8607 +f 8607 8584 8583 +f 8564 8562 8586 +f 8586 8562 8561 +f 8530 8529 9640 +f 9640 8529 8528 +f 8469 8468 8481 +f 8482 8480 10873 +f 10873 8480 8479 +f 8481 8483 8469 +f 8469 8483 11743 +f 8469 11743 8470 +f 8470 11743 8471 +f 8451 8450 8472 +f 8472 8450 8449 +f 5090 5088 10888 +f 10888 5088 10889 +f 8954 8952 5091 +f 5091 8952 5089 +f 8921 8919 8955 +f 8955 8919 8953 +f 8886 8884 8922 +f 8922 8884 8920 +f 8851 8849 8887 +f 8887 8849 8885 +f 8816 8814 8852 +f 8852 8814 8850 +f 8781 8779 8817 +f 8817 8779 8815 +f 8751 8749 8782 +f 8782 8749 8780 +f 8750 8752 11739 +f 11739 8752 11744 +f 11739 11744 8715 +f 8715 11744 8717 +f 8716 8718 11740 +f 11740 8718 11745 +f 11740 11745 8693 +f 8693 11745 8695 +f 8673 8671 9627 +f 9627 8671 9628 +f 8672 8674 11741 +f 11741 8674 11746 +f 11741 11746 8649 +f 8649 11746 8651 +f 8630 8628 8652 +f 8652 8628 8650 +f 8629 8631 11742 +f 11742 8631 11747 +f 11742 11747 8606 +f 8606 11747 8608 +f 8587 8585 8609 +f 8609 8585 8607 +f 8566 8564 8588 +f 8588 8564 8586 +f 8532 8530 9639 +f 9639 8530 9640 +f 8484 8482 10872 +f 10872 8482 10873 +f 8483 8485 11743 +f 11743 8485 11748 +f 11743 11748 8471 +f 8471 11748 8473 +f 8453 8451 8474 +f 8474 8451 8472 +f 5090 10888 10887 +f 5090 10887 5092 +f 5092 10887 10886 +f 5092 10886 5094 +f 5094 10886 10885 +f 5094 10885 5096 +f 5096 10885 10884 +f 5096 10884 5098 +f 5098 10884 10883 +f 5098 10883 5100 +f 5100 10883 10882 +f 5100 10882 5102 +f 5102 10882 10881 +f 5102 10881 5104 +f 5104 10881 10880 +f 5104 10880 5106 +f 5106 10880 10879 +f 5106 10879 5108 +f 8954 5091 5093 +f 8954 5093 8956 +f 8956 5093 5095 +f 8956 5095 8958 +f 8958 5095 5097 +f 8958 5097 8960 +f 8960 5097 5099 +f 8960 5099 8962 +f 8962 5099 5101 +f 8962 5101 8964 +f 8964 5101 5103 +f 8964 5103 8966 +f 8966 5103 5105 +f 8966 5105 8968 +f 8968 5105 5107 +f 8968 5107 8970 +f 8970 5107 5109 +f 8970 5109 8972 +f 8921 8955 8957 +f 8921 8957 8923 +f 8923 8957 8959 +f 8923 8959 8925 +f 8925 8959 8961 +f 8925 8961 8927 +f 8927 8961 8963 +f 8927 8963 8929 +f 8929 8963 8965 +f 8929 8965 8931 +f 8931 8965 8967 +f 8931 8967 8933 +f 8933 8967 8969 +f 8933 8969 8935 +f 8935 8969 8971 +f 8935 8971 8937 +f 8937 8971 8973 +f 8937 8973 8939 +f 8886 8922 8924 +f 8886 8924 8888 +f 8888 8924 8926 +f 8888 8926 8890 +f 8890 8926 8928 +f 8890 8928 8892 +f 8892 8928 8930 +f 8892 8930 8894 +f 8894 8930 8932 +f 8894 8932 8896 +f 8896 8932 8934 +f 8896 8934 8898 +f 8898 8934 8936 +f 8898 8936 8900 +f 8900 8936 8938 +f 8900 8938 8902 +f 8902 8938 8940 +f 8902 8940 8904 +f 8851 8887 8889 +f 8851 8889 8853 +f 8853 8889 8891 +f 8853 8891 8855 +f 8855 8891 8893 +f 8855 8893 8857 +f 8857 8893 8895 +f 8857 8895 8859 +f 8859 8895 8897 +f 8859 8897 8861 +f 8861 8897 8899 +f 8861 8899 8863 +f 8863 8899 8901 +f 8863 8901 8865 +f 8865 8901 8903 +f 8865 8903 8867 +f 8867 8903 8905 +f 8867 8905 8869 +f 8816 8852 8854 +f 8816 8854 8818 +f 8818 8854 8856 +f 8818 8856 8820 +f 8820 8856 8858 +f 8820 8858 8822 +f 8822 8858 8860 +f 8822 8860 8824 +f 8824 8860 8862 +f 8824 8862 8826 +f 8826 8862 8864 +f 8826 8864 8828 +f 8828 8864 8866 +f 8828 8866 8830 +f 8830 8866 8868 +f 8830 8868 8832 +f 8832 8868 8870 +f 8832 8870 8834 +f 8781 8817 8819 +f 8781 8819 8783 +f 8783 8819 8821 +f 8783 8821 8785 +f 8785 8821 8823 +f 8785 8823 8787 +f 8787 8823 8825 +f 8787 8825 8789 +f 8789 8825 8827 +f 8789 8827 8791 +f 8791 8827 8829 +f 8791 8829 8793 +f 8793 8829 8831 +f 8793 8831 8795 +f 8795 8831 8833 +f 8795 8833 8797 +f 8797 8833 8835 +f 8797 8835 8799 +f 8751 8782 8784 +f 8751 8784 8753 +f 8753 8784 8786 +f 8753 8786 8755 +f 8755 8786 8788 +f 8755 8788 8757 +f 8757 8788 8790 +f 8757 8790 8759 +f 8759 8790 8792 +f 8759 8792 8761 +f 8761 8792 8794 +f 8761 8794 8763 +f 8763 8794 8796 +f 8763 8796 8765 +f 8765 8796 8798 +f 8765 8798 8767 +f 8767 8798 8800 +f 8767 8800 8769 +f 11744 8752 8754 +f 8717 11744 11749 +f 11749 11744 8754 +f 11749 8754 8756 +f 8717 11749 8719 +f 8719 11749 11750 +f 8719 11750 8721 +f 8721 11750 11751 +f 8721 11751 8723 +f 8723 11751 11752 +f 8723 11752 8725 +f 8725 11752 11753 +f 8725 11753 8727 +f 8727 11753 11754 +f 8727 11754 8729 +f 8729 11754 11755 +f 8729 11755 8731 +f 8731 11755 11756 +f 8731 11756 8733 +f 8733 11756 8734 +f 11750 11749 8756 +f 11745 8718 8720 +f 8695 11745 11757 +f 11757 11745 8720 +f 11757 8720 8722 +f 8695 11757 8697 +f 8697 11757 11758 +f 8697 11758 8699 +f 8699 11758 11759 +f 8699 11759 8701 +f 8701 11759 11760 +f 8701 11760 8703 +f 8703 11760 11761 +f 8703 11761 8705 +f 8705 11761 11762 +f 8705 11762 8707 +f 8707 11762 9619 +f 8707 9619 8709 +f 11758 11757 8722 +f 8673 9627 9626 +f 8673 9626 8675 +f 8675 9626 9625 +f 8675 9625 8677 +f 8677 9625 9624 +f 8677 9624 8679 +f 8679 9624 9623 +f 8679 9623 8681 +f 8681 9623 9622 +f 8681 9622 8683 +f 8683 9622 9621 +f 8683 9621 8685 +f 8685 9621 9620 +f 8685 9620 8687 +f 11746 8674 8676 +f 8651 11746 11763 +f 11763 11746 8676 +f 11763 8676 8678 +f 8651 11763 8653 +f 8653 11763 11764 +f 8653 11764 8655 +f 8655 11764 11765 +f 8655 11765 8657 +f 8657 11765 11766 +f 8657 11766 8659 +f 8659 11766 11767 +f 8659 11767 8661 +f 8661 11767 11768 +f 8661 11768 8663 +f 8663 11768 9629 +f 8663 9629 8665 +f 11764 11763 8678 +f 8630 8652 8654 +f 8630 8654 8632 +f 8632 8654 8656 +f 8632 8656 8634 +f 8634 8656 8658 +f 8634 8658 8636 +f 8636 8658 8660 +f 8636 8660 8638 +f 8638 8660 8662 +f 8638 8662 8640 +f 8640 8662 8664 +f 8640 8664 8642 +f 8642 8664 8666 +f 8642 8666 8644 +f 11747 8631 8633 +f 8608 11747 11769 +f 11769 11747 8633 +f 11769 8633 8635 +f 8608 11769 8610 +f 8610 11769 11770 +f 8610 11770 8612 +f 8612 11770 11771 +f 8612 11771 8614 +f 8614 11771 11772 +f 8614 11772 8616 +f 8616 11772 11773 +f 8616 11773 8618 +f 8618 11773 11774 +f 8618 11774 8620 +f 8620 11774 9630 +f 8620 9630 8622 +f 8622 9630 473 +f 11770 11769 8635 +f 8587 8609 8611 +f 8587 8611 8589 +f 8589 8611 8613 +f 8589 8613 8591 +f 8591 8613 8615 +f 8591 8615 8593 +f 8593 8615 8617 +f 8593 8617 8595 +f 8595 8617 8619 +f 8595 8619 8597 +f 8597 8619 8621 +f 8597 8621 8599 +f 8599 8621 8623 +f 8599 8623 8601 +f 8566 8588 8590 +f 8566 8590 8568 +f 8568 8590 8592 +f 8568 8592 8570 +f 8570 8592 8594 +f 8570 8594 8572 +f 8572 8594 8596 +f 8572 8596 8574 +f 8574 8596 8598 +f 8574 8598 8576 +f 8576 8598 8600 +f 8576 8600 8578 +f 8578 8600 8602 +f 8578 8602 8580 +f 8532 9639 9638 +f 8532 9638 8534 +f 8534 9638 9637 +f 8534 9637 8536 +f 8536 9637 9636 +f 8536 9636 8538 +f 8538 9636 9635 +f 8538 9635 8540 +f 8540 9635 9634 +f 8540 9634 8542 +f 8542 9634 9633 +f 8542 9633 8544 +f 8544 9633 9632 +f 8544 9632 8546 +f 8546 9632 9641 +f 8484 10872 10871 +f 8484 10871 8486 +f 8486 10871 10870 +f 8486 10870 8488 +f 8488 10870 10869 +f 8488 10869 8490 +f 8490 10869 10868 +f 8490 10868 8492 +f 8492 10868 10867 +f 8492 10867 8494 +f 8494 10867 10866 +f 8494 10866 8495 +f 8495 10866 10865 +f 8495 10865 8462 +f 8462 10865 8463 +f 11748 8485 8487 +f 8473 11748 11775 +f 11775 11748 8487 +f 11775 8487 8489 +f 8473 11775 8475 +f 8475 11775 11776 +f 8475 11776 8477 +f 8477 11776 11777 +f 8477 11777 8457 +f 8457 11777 8458 +f 11776 11775 8489 +f 8453 8474 8476 +f 8456 8455 8476 +f 8476 8455 8453 +f 11751 11750 8758 +f 8758 11750 8756 +f 11759 11758 8724 +f 8724 11758 8722 +f 11765 11764 8680 +f 8680 11764 8678 +f 11771 11770 8637 +f 8637 11770 8635 +f 11777 11776 8491 +f 8491 11776 8489 +f 11752 11751 8760 +f 8760 11751 8758 +f 11760 11759 8726 +f 8726 11759 8724 +f 11766 11765 8682 +f 8682 11765 8680 +f 11772 11771 8639 +f 8639 11771 8637 +f 8458 11777 8493 +f 8493 11777 8491 +f 11753 11752 8762 +f 8762 11752 8760 +f 11761 11760 8728 +f 8728 11760 8726 +f 11767 11766 8684 +f 8684 11766 8682 +f 11773 11772 8641 +f 8641 11772 8639 +f 8459 8458 8493 +f 11754 11753 8764 +f 8764 11753 8762 +f 11762 11761 8730 +f 8730 11761 8728 +f 11768 11767 8686 +f 8686 11767 8684 +f 11774 11773 8643 +f 8643 11773 8641 +f 8461 8460 8459 +f 9050 9049 9114 +f 11755 11754 8766 +f 8766 11754 8764 +f 9619 11762 8732 +f 8732 11762 8730 +f 9629 11768 8688 +f 8688 11768 8686 +f 9630 11774 8645 +f 8645 11774 8643 +f 11756 11755 8768 +f 8768 11755 8766 +f 9115 9052 9051 +f 8734 11756 8770 +f 8770 11756 8768 +f 8735 8734 8770 +f 3662 3664 10788 +f 10788 3664 10257 +f 10785 10281 10279 +f 10785 10279 10784 +f 10784 10279 10277 +f 10236 10767 10235 +f 10235 10767 10394 +f 10767 10395 10394 +f 9548 9547 10396 +f 10396 9547 9551 +f 9548 10396 10397 +f 10785 10784 10782 +f 1880 1787 1879 +f 1879 1789 1878 +f 1878 1789 1807 +f 1878 1807 1877 +f 1877 1807 1792 +f 1875 1808 1866 +f 1866 1808 1809 +f 1866 1809 1865 +f 1865 1809 1810 +f 1865 1810 1874 +f 1874 1810 1833 +f 1834 1928 1833 +f 1833 1928 1926 +f 1833 1926 1927 +f 1927 1926 1915 +f 1927 1915 1916 +f 1916 1914 1936 +f 1936 1914 1935 +f 1931 1935 1932 +f 1867 1932 1862 +f 1862 1932 1933 +f 1862 1933 1934 +f 1934 1933 1912 +f 1934 1912 1911 +f 1911 1913 1923 +f 1923 1925 1924 +f 1924 1925 1928 +f 1924 1928 1835 +f 1835 1928 1834 +f 1835 1836 1924 +f 1924 1922 1923 +f 1911 1921 1910 +f 1911 1910 1934 +f 1934 1910 1862 +f 1920 1842 1843 +f 1920 1843 1908 +f 1908 1843 1844 +f 1908 1844 1909 +f 1909 1844 1862 +f 1909 1862 1910 +f 1844 1841 1862 +f 1931 1869 1930 +f 1931 1930 1936 +f 1936 1930 1937 +f 1936 1937 1916 +f 1916 1937 1917 +f 1916 1917 1927 +f 1927 1917 1833 +f 1869 1870 1930 +f 1930 1870 1871 +f 1929 1871 1872 +f 1919 1872 1873 +f 1919 1873 1918 +f 1918 1873 1833 +f 1918 1833 1917 +f 1873 1874 1833 +f 1915 1926 1925 +f 1925 1926 1928 +f 1929 1919 1918 +f 1929 1918 1937 +f 1937 1918 1917 +f 1930 1929 1937 +f 1935 1914 1912 +f 1922 1920 1921 +f 1921 1920 1909 +f 1921 1909 1910 +f 1908 1909 1920 +f 1932 1935 1933 +f 1933 1935 1912 +f 1841 1846 1862 +f 1862 1846 1856 +f 1850 1960 1846 +f 1846 1960 1961 +f 1846 1961 1958 +f 1958 1961 1951 +f 1958 1951 1950 +f 1950 1951 1952 +f 1942 1941 1964 +f 1942 1964 1967 +f 1967 1964 1852 +f 1967 1852 1966 +f 1966 1852 1854 +f 1850 1849 1960 +f 1960 1849 1959 +f 1960 1959 1957 +f 1953 1956 1955 +f 1953 1955 1954 +f 1954 1955 1939 +f 1954 1939 1940 +f 1940 1939 1852 +f 1940 1852 1964 +f 1959 1848 1956 +f 1848 1847 1956 +f 1956 1847 1845 +f 1956 1845 1955 +f 1955 1845 1838 +f 1955 1838 1938 +f 1938 1838 1839 +f 1938 1839 1939 +f 1939 1839 1852 +f 1839 1840 1852 +f 1966 1855 1965 +f 1965 1857 1962 +f 1962 1857 1858 +f 1962 1858 1859 +f 1962 1859 1946 +f 1947 1861 1948 +f 1948 1861 1846 +f 1948 1846 1949 +f 1949 1846 1958 +f 1949 1958 1950 +f 1861 1856 1846 +f 1951 1961 1957 +f 1957 1961 1960 +f 1946 1947 1948 +f 1948 1949 1945 +f 1945 1949 1950 +f 1952 1951 1953 +f 1953 1951 1957 +f 1948 1945 1946 +f 1946 1945 1944 +f 1962 1944 1963 +f 1962 1963 1965 +f 1965 1963 1966 +f 1963 1944 1942 +f 1942 1944 1943 +f 1938 1939 1955 +f 1964 1941 1940 +f 1940 1941 1954 +f 1966 1963 1967 +f 1967 1963 1942 +f 1812 1851 1852 +f 1851 1811 1888 +f 1887 1798 1799 +f 1886 1800 1885 +f 1907 1802 1813 +f 1907 1813 1906 +f 1906 1813 1817 +f 1818 1986 1817 +f 1817 1986 1985 +f 1817 1985 1978 +f 1978 1985 1979 +f 1978 1979 1992 +f 1992 1979 1973 +f 1992 1973 1974 +f 1974 1973 1987 +f 1899 1989 1892 +f 1892 1989 1988 +f 1892 1988 1970 +f 1970 1988 1971 +f 1970 1971 1990 +f 1990 1971 1981 +f 1990 1981 1982 +f 1982 1981 1984 +f 1821 1984 1820 +f 1820 1984 1819 +f 1819 1984 1986 +f 1819 1986 1818 +f 1982 1983 1990 +f 1990 1983 1969 +f 1990 1969 1970 +f 1970 1969 1892 +f 1983 1968 1969 +f 1969 1968 1824 +f 1969 1824 1892 +f 1892 1824 1825 +f 1974 1975 1992 +f 1992 1975 1977 +f 1992 1977 1978 +f 1978 1977 1817 +f 1902 1903 1975 +f 1975 1904 1976 +f 1976 1905 1977 +f 1977 1905 1817 +f 1905 1906 1817 +f 1985 1986 1980 +f 1980 1986 1984 +f 1980 1984 1981 +f 1975 1976 1977 +f 1985 1980 1979 +f 1979 1980 1991 +f 1979 1991 1973 +f 1973 1991 1972 +f 1973 1972 1987 +f 1987 1972 1989 +f 1991 1980 1981 +f 1972 1991 1971 +f 1971 1991 1981 +f 1989 1972 1988 +f 1988 1972 1971 +f 1825 1826 1892 +f 1892 1826 1893 +f 1827 2010 1826 +f 1826 2010 2011 +f 1826 2011 2003 +f 2003 2011 2004 +f 2003 2004 2017 +f 2017 2004 1998 +f 2017 1998 1999 +f 1999 1998 2012 +f 1891 2012 1896 +f 1896 2012 2013 +f 1890 2013 1881 +f 1881 2013 2014 +f 1881 2014 1995 +f 1995 2014 1996 +f 1995 1996 2015 +f 2015 1996 2006 +f 2015 2006 2007 +f 2007 2006 2009 +f 2007 2009 1829 +f 1829 2009 1828 +f 1829 1830 2007 +f 2007 1831 2008 +f 2008 1831 1832 +f 2008 1832 1993 +f 1993 1782 1994 +f 1994 1782 1881 +f 1994 1881 1995 +f 1782 1783 1881 +f 1999 1895 2000 +f 2000 1897 2001 +f 2001 1897 1898 +f 2001 1898 2002 +f 2002 1898 1826 +f 2002 1826 2003 +f 1898 1893 1826 +f 2011 2010 2005 +f 2005 2010 2009 +f 2005 2009 2006 +f 2000 2001 2002 +f 2000 2002 2017 +f 2017 2002 2003 +f 2011 2005 2004 +f 2004 2005 2016 +f 2004 2016 1998 +f 1998 2016 1997 +f 1998 1997 2012 +f 2012 1997 2013 +f 2016 2005 2006 +f 1999 2000 2017 +f 1997 2016 1996 +f 1996 2016 2006 +f 2007 2008 2015 +f 2015 2008 1994 +f 2015 1994 1995 +f 1993 1994 2008 +f 2013 1997 2014 +f 2014 1997 1996 +f 322 541 320 +f 318 475 316 +f 316 475 473 +f 316 473 315 +f 315 473 471 +f 315 471 313 +f 313 471 470 +f 311 542 310 +f 310 542 543 +f 310 543 545 +f 354 551 355 +f 355 551 553 +f 355 553 398 +f 407 395 398 +f 529 592 525 +f 525 592 591 +f 525 591 344 +f 344 591 343 +f 341 590 339 +f 339 590 589 +f 339 589 338 +f 324 588 587 +f 323 587 322 +f 322 587 586 +f 322 586 540 +f 540 586 538 +f 538 586 595 +f 538 595 537 +f 537 595 534 +f 534 595 594 +f 534 594 533 +f 533 594 593 +f 531 592 530 +f 530 592 529 +f 540 541 322 +f 344 345 525 +f 590 591 592 +f 589 590 593 +f 593 590 592 +f 588 589 594 +f 594 589 593 +f 587 588 595 +f 595 588 594 +f 586 587 595 +f 485 345 333 +f 409 601 407 +f 407 601 600 +f 407 600 386 +f 386 600 385 +f 385 600 599 +f 394 599 393 +f 393 599 598 +f 393 598 392 +f 392 597 391 +f 391 597 596 +f 390 596 389 +f 389 596 388 +f 388 596 605 +f 388 605 417 +f 415 605 604 +f 413 603 602 +f 413 602 412 +f 412 602 411 +f 411 602 601 +f 417 418 388 +f 388 418 387 +f 387 418 419 +f 386 395 407 +f 599 600 601 +f 598 599 602 +f 602 599 601 +f 597 598 603 +f 603 598 602 +f 596 597 604 +f 604 597 603 +f 605 596 604 +f 443 612 436 +f 436 612 611 +f 436 611 378 +f 378 611 365 +f 365 610 366 +f 366 609 367 +f 367 609 369 +f 369 609 608 +f 371 607 373 +f 373 607 606 +f 373 606 451 +f 450 606 615 +f 450 615 449 +f 444 612 443 +f 451 453 373 +f 378 379 436 +f 610 611 612 +f 609 610 613 +f 613 610 612 +f 608 609 614 +f 614 609 613 +f 607 608 615 +f 615 608 614 +f 606 607 615 +f 375 453 441 +f 375 441 376 +f 376 441 432 +f 346 434 307 +f 307 435 305 +f 305 435 455 +f 305 455 303 +f 301 455 503 +f 296 510 517 +f 296 517 294 +f 521 621 519 +f 519 621 620 +f 519 620 291 +f 328 619 329 +f 329 619 618 +f 335 616 336 +f 336 616 625 +f 336 625 487 +f 487 625 488 +f 488 624 489 +f 489 624 491 +f 491 624 623 +f 491 623 493 +f 493 623 622 +f 493 622 524 +f 523 622 621 +f 487 486 336 +f 336 486 485 +f 336 485 333 +f 291 292 519 +f 619 620 621 +f 618 619 622 +f 622 619 621 +f 617 618 623 +f 623 618 622 +f 616 617 624 +f 624 617 623 +f 625 616 624 +f 3 1 241 +f 240 1 22 +f 240 22 239 +f 239 22 34 +f 239 34 201 +f 201 34 46 +f 201 46 169 +f 168 58 70 +f 168 70 198 +f 193 72 73 +f 132 267 122 +f 122 267 266 +f 122 266 190 +f 176 265 177 +f 177 265 264 +f 181 263 262 +f 181 262 182 +f 182 262 180 +f 180 262 261 +f 180 261 129 +f 129 261 138 +f 138 261 270 +f 137 269 136 +f 136 269 134 +f 134 269 268 +f 133 268 267 +f 133 267 132 +f 129 130 180 +f 190 191 122 +f 265 266 267 +f 267 268 265 +f 265 268 269 +f 264 270 263 +f 263 270 262 +f 261 262 270 +f 130 140 180 +f 146 277 145 +f 145 277 276 +f 145 276 187 +f 187 276 186 +f 186 276 275 +f 186 275 185 +f 185 275 274 +f 185 274 184 +f 184 274 183 +f 183 274 273 +f 155 272 157 +f 157 272 271 +f 157 271 152 +f 151 280 150 +f 150 279 149 +f 149 279 148 +f 148 279 278 +f 148 278 147 +f 147 278 277 +f 147 277 146 +f 152 144 157 +f 187 188 145 +f 275 276 277 +f 277 278 275 +f 275 279 274 +f 274 279 280 +f 274 280 273 +f 273 280 272 +f 271 272 280 +f 89 90 161 +f 259 90 93 +f 259 93 255 +f 255 93 95 +f 252 95 68 +f 252 68 208 +f 210 56 57 +f 210 57 212 +f 45 285 44 +f 44 285 214 +f 44 214 212 +f 285 96 284 +f 285 284 216 +f 217 284 219 +f 219 283 220 +f 220 282 222 +f 222 281 223 +f 223 281 224 +f 224 281 225 +f 225 281 21 +f 225 21 99 +f 96 97 284 +f 284 97 32 +f 283 32 33 +f 283 33 282 +f 282 33 98 +f 282 98 281 +f 281 98 20 +f 281 20 21 +f 216 214 285 +f 225 100 226 +f 226 100 248 +f 248 100 101 +f 251 101 102 +f 251 102 250 +f 250 102 290 +f 250 290 249 +f 249 290 289 +f 249 289 247 +f 246 288 245 +f 245 288 287 +f 245 287 244 +f 244 287 243 +f 242 286 241 +f 241 286 113 +f 241 113 3 +f 102 103 290 +f 3713 3745 3219 +f 3218 3735 3734 +f 3716 3731 3718 +f 3718 3731 3729 +f 3720 3729 3727 +f 3720 3727 3722 +f 3722 3727 3725 +f 3722 3725 3724 +f 3776 11778 3781 +f 3781 11778 11779 +f 3781 11779 11780 +f 11780 11779 11781 +f 3225 11781 3224 +f 3224 11781 11782 +f 3224 11782 11783 +f 11783 11782 11784 +f 11783 11784 11785 +f 11785 11784 11786 +f 11785 11786 11787 +f 11778 3775 11788 +f 11778 11788 11789 +f 11789 11788 11784 +f 11789 11784 11782 +f 3775 3774 11788 +f 11788 3774 11786 +f 11788 11786 11784 +f 11787 3756 11790 +f 11791 3745 3713 +f 11791 3713 11792 +f 11792 3222 11783 +f 11783 3222 3224 +f 3225 3675 11780 +f 11780 3675 3781 +f 3675 3677 3781 +f 11781 11779 11789 +f 11789 11779 11778 +f 11782 11781 11789 +f 11792 11783 11785 +f 11790 11791 11787 +f 11787 11791 11785 +f 11791 11792 11785 +f 3802 11793 3804 +f 3804 11793 11794 +f 3804 11794 11795 +f 11795 11794 11796 +f 3907 11797 11798 +f 3686 11798 11799 +f 3684 11799 3683 +f 3683 11799 11800 +f 3683 11800 11801 +f 11801 11800 11802 +f 11801 11802 3791 +f 3794 11802 11803 +f 3794 11803 3795 +f 3795 11803 3796 +f 3796 11803 11804 +f 3796 11804 3799 +f 3799 11804 3800 +f 3800 11804 11793 +f 3800 11793 3802 +f 11801 3790 3683 +f 3790 3789 3683 +f 11795 3900 3804 +f 3900 3896 3804 +f 11794 11793 11805 +f 11805 11793 11804 +f 11805 11804 11806 +f 11806 11804 11803 +f 11806 11803 11807 +f 11807 11803 11802 +f 11807 11802 11800 +f 11797 11796 11805 +f 11805 11796 11794 +f 11797 11805 11806 +f 11798 11797 11806 +f 11798 11806 11807 +f 11799 11798 11807 +f 11799 11807 11800 +f 3805 3896 3895 +f 3806 3895 3894 +f 3876 3890 3888 +f 3879 3888 3886 +f 3880 3886 3885 +f 3884 3846 3844 +f 3961 11808 3962 +f 3962 11808 11809 +f 3962 11809 11810 +f 11810 11809 11811 +f 11810 11811 4083 +f 4086 11811 4087 +f 4087 11812 4088 +f 4088 11812 4089 +f 4089 11812 4090 +f 4090 11813 3226 +f 3226 11813 3227 +f 3712 11814 3678 +f 3678 11814 11815 +f 3678 11815 11816 +f 11816 11815 11817 +f 3779 11817 11818 +f 3955 11818 3956 +f 3956 11818 11819 +f 3958 11808 3960 +f 3960 11808 3961 +f 11816 3783 3678 +f 3783 3784 3678 +f 11810 4082 4081 +f 11810 4081 3962 +f 3962 4081 4066 +f 11809 11808 11820 +f 11820 11808 11819 +f 11820 11819 11821 +f 11821 11819 11818 +f 11821 11818 11822 +f 11822 11818 11817 +f 11822 11817 11815 +f 11812 11811 11820 +f 11820 11811 11809 +f 11812 11820 11821 +f 11813 11812 11821 +f 11813 11821 11822 +f 11814 11813 11822 +f 11814 11822 11815 +f 3793 11823 3788 +f 3788 11823 11824 +f 3788 11824 11825 +f 11825 11824 11826 +f 4092 11827 4093 +f 4093 11827 4094 +f 4094 11828 4095 +f 4095 11828 11829 +f 4096 11829 4014 +f 4014 11829 11830 +f 4014 11830 11831 +f 11831 11830 11832 +f 3950 11832 3951 +f 3951 11832 11833 +f 3951 11833 3952 +f 3952 11833 3953 +f 3798 11823 3793 +f 3950 3939 11831 +f 11831 3939 4014 +f 3939 3908 4014 +f 11825 3688 3788 +f 3688 3685 3788 +f 11824 11823 11835 +f 11835 11823 11834 +f 11835 11834 11836 +f 11836 11834 11833 +f 11836 11833 11837 +f 11837 11833 11832 +f 11837 11832 11830 +f 11827 11826 11835 +f 11835 11826 11824 +f 11827 11835 11836 +f 11828 11827 11836 +f 11828 11836 11837 +f 11829 11828 11837 +f 11829 11837 11830 +f 3908 4012 4014 +f 3912 11838 3910 +f 3910 11838 11839 +f 3910 11839 11840 +f 11840 11839 11841 +f 11840 11841 11842 +f 11842 11841 11843 +f 11842 11843 4019 +f 4019 11843 4020 +f 4020 11843 4021 +f 4021 11843 11844 +f 4021 11844 4022 +f 4022 11844 11845 +f 4022 11845 4024 +f 4024 11845 4026 +f 4026 11845 11846 +f 4026 11846 11847 +f 11847 11846 11848 +f 11847 11848 11849 +f 11849 11848 11850 +f 11849 11850 3918 +f 3918 11850 3916 +f 3916 11850 3915 +f 3915 11850 11851 +f 3913 11851 11838 +f 11849 11852 11847 +f 11847 11852 3922 +f 11847 3922 4026 +f 4026 3922 3923 +f 4019 4017 11842 +f 11842 4017 11853 +f 11842 11853 11840 +f 11840 11853 4016 +f 11840 4016 3910 +f 3910 4016 4012 +f 11839 11838 11854 +f 11854 11838 11851 +f 11854 11851 11855 +f 11855 11851 11850 +f 11855 11850 11848 +f 11839 11854 11841 +f 11841 11854 11856 +f 11841 11856 11843 +f 11843 11856 11844 +f 11856 11854 11855 +f 11856 11855 11857 +f 11857 11855 11848 +f 11857 11848 11846 +f 11845 11844 11857 +f 11857 11844 11856 +f 11845 11857 11846 +f 3930 11858 3929 +f 3929 11858 11859 +f 3929 11859 11860 +f 11860 11859 11861 +f 11860 11861 4037 +f 4037 11861 4039 +f 4052 11862 4053 +f 4053 11863 4043 +f 4043 11863 11864 +f 4043 11864 4054 +f 4054 11864 4064 +f 4064 11864 11865 +f 4064 11865 11866 +f 11866 11865 11867 +f 11866 11867 4003 +f 4010 11869 3932 +f 4003 3983 11866 +f 11866 3983 4064 +f 3983 3982 4064 +f 4037 4034 11860 +f 11860 4034 3929 +f 4034 4032 3929 +f 11859 11858 11870 +f 11870 11858 11869 +f 11870 11869 11871 +f 11871 11869 11868 +f 11871 11868 11872 +f 11872 11868 11867 +f 11872 11867 11865 +f 11862 11861 11870 +f 11870 11861 11859 +f 11862 11870 11871 +f 11863 11862 11871 +f 11863 11871 11872 +f 11864 11863 11872 +f 11864 11872 11865 +f 3982 3981 4064 +f 4064 3981 4065 +f 4066 3981 3962 +f 3928 3926 4031 +f 4031 3926 4029 +f 4205 3926 3919 +f 4171 11873 3919 +f 3919 11873 11874 +f 3919 11874 11875 +f 11875 11874 11876 +f 11875 11876 11877 +f 11877 11876 11878 +f 11877 11878 4202 +f 4201 11878 4199 +f 4197 11880 4195 +f 4195 11880 11881 +f 4195 11881 11882 +f 11882 11881 11883 +f 11882 11883 11884 +f 11884 11883 11885 +f 11884 11885 4165 +f 4165 11885 4168 +f 4168 11885 4169 +f 11884 4164 11887 +f 11884 11887 11882 +f 11882 11887 4163 +f 11882 4163 4195 +f 4195 4163 4159 +f 11877 11888 11875 +f 11875 11888 4204 +f 11875 4204 3919 +f 3919 4204 4205 +f 11874 11873 11889 +f 11889 11873 11886 +f 11889 11886 11890 +f 11890 11886 11885 +f 11890 11885 11883 +f 11874 11889 11876 +f 11876 11889 11891 +f 11876 11891 11878 +f 11878 11891 11879 +f 11891 11889 11890 +f 11891 11890 11892 +f 11892 11890 11883 +f 11892 11883 11881 +f 11880 11879 11892 +f 11892 11879 11891 +f 11880 11892 11881 +f 4159 4157 4195 +f 4195 4157 4191 +f 4191 4157 4189 +f 4189 4157 4155 +f 4154 11893 4155 +f 4155 11893 11894 +f 4155 11894 11895 +f 11895 11894 11896 +f 11895 11896 11897 +f 11897 11896 11898 +f 11897 11898 4207 +f 4209 11898 11899 +f 4209 11899 4210 +f 4210 11900 4214 +f 4214 11900 4215 +f 4215 11900 11901 +f 4215 11901 11902 +f 11902 11901 11903 +f 11902 11903 11904 +f 11904 11903 11905 +f 11904 11905 4150 +f 4153 11906 11893 +f 4153 11893 4154 +f 4150 4119 11904 +f 11904 4119 11907 +f 11904 11907 11902 +f 11902 11907 4097 +f 11902 4097 4215 +f 4215 4097 4099 +f 4119 4097 11907 +f 11897 4206 11908 +f 11897 11908 11895 +f 11895 11908 4187 +f 11895 4187 4155 +f 4155 4187 4189 +f 4206 4187 11908 +f 11894 11893 11909 +f 11909 11893 11906 +f 11909 11906 11910 +f 11910 11906 11905 +f 11910 11905 11903 +f 11894 11909 11896 +f 11896 11909 11911 +f 11896 11911 11898 +f 11898 11911 11899 +f 11911 11909 11910 +f 11911 11910 11912 +f 11912 11910 11903 +f 11912 11903 11901 +f 11900 11899 11912 +f 11912 11899 11911 +f 11900 11912 11901 +f 4099 4101 4215 +f 4215 4101 3561 +f 3561 4101 3560 +f 4104 11913 4103 +f 4103 11913 11914 +f 4103 11914 11915 +f 11915 11914 11916 +f 11915 11916 11917 +f 11917 11916 11918 +f 3556 11918 3555 +f 3555 11918 3554 +f 3554 11918 11919 +f 4218 11920 4219 +f 4219 11920 11921 +f 4219 11921 11922 +f 11922 11921 11923 +f 11922 11923 11924 +f 11924 11923 11925 +f 4105 11926 11913 +f 11924 11927 11922 +f 11922 11927 4219 +f 4183 4182 11927 +f 11927 4182 4219 +f 4182 4181 4219 +f 3556 3557 11917 +f 11917 3557 11928 +f 11917 11928 11915 +f 11915 11928 3558 +f 11915 3558 4103 +f 4103 3558 3560 +f 3557 3558 11928 +f 11914 11913 11929 +f 11929 11913 11926 +f 11929 11926 11930 +f 11930 11926 11925 +f 11930 11925 11923 +f 11914 11929 11916 +f 11916 11929 11931 +f 11916 11931 11918 +f 11918 11931 11919 +f 11931 11929 11930 +f 11931 11930 11932 +f 11932 11930 11923 +f 11932 11923 11921 +f 11920 11919 11932 +f 11932 11919 11931 +f 11920 11932 11921 +f 4174 11933 4179 +f 4179 11933 11934 +f 4179 11934 11935 +f 11935 11934 11936 +f 11935 11936 3537 +f 3537 11936 3538 +f 3538 11936 4226 +f 4226 11936 11937 +f 4226 11937 4040 +f 4040 11937 4038 +f 4036 11938 11939 +f 4035 11939 4031 +f 4031 11939 11940 +f 4031 11940 11941 +f 11941 11940 11942 +f 11941 11942 3933 +f 3933 11942 3935 +f 3935 11942 3937 +f 3937 11943 3938 +f 3938 11944 4007 +f 4007 11944 4006 +f 4006 11944 11933 +f 4006 11933 4174 +f 11941 3931 4031 +f 3931 3928 4031 +f 11935 4225 4179 +f 4225 4224 4179 +f 11934 11933 11945 +f 11945 11933 11944 +f 11945 11944 11946 +f 11946 11944 11943 +f 11946 11943 11947 +f 11947 11943 11942 +f 11947 11942 11940 +f 11937 11936 11945 +f 11945 11936 11934 +f 11937 11945 11946 +f 11938 11937 11946 +f 11938 11946 11947 +f 11939 11938 11947 +f 11939 11947 11940 +f 4273 4272 4466 +f 4466 4272 4467 +f 4272 11949 11950 +f 11950 11949 11951 +f 11950 11951 11952 +f 11952 11951 11953 +f 11952 11953 11954 +f 11954 11953 11955 +f 11954 11955 11956 +f 11956 11955 11957 +f 11956 11957 11958 +f 11958 11957 11959 +f 11958 11959 11960 +f 11960 11959 11961 +f 11960 11961 11962 +f 11962 11961 11963 +f 11962 11963 11964 +f 11967 4268 4266 +f 4305 11972 4303 +f 4303 11973 11964 +f 11964 11973 11974 +f 11964 11974 11962 +f 11962 11974 11975 +f 11962 11975 11960 +f 11960 11975 11976 +f 11960 11976 11958 +f 11958 11976 11977 +f 11958 11977 11956 +f 11956 11977 11978 +f 11956 11978 11954 +f 11954 11978 11979 +f 11954 11979 11952 +f 11952 11979 11980 +f 11952 11980 11950 +f 11950 4467 4272 +f 4305 4526 11972 +f 11972 4526 11981 +f 11972 11981 11973 +f 11973 11981 11974 +f 4526 4524 11981 +f 11981 4524 11982 +f 11981 11982 11974 +f 11974 11982 11975 +f 4524 4522 11982 +f 11982 4522 11983 +f 11982 11983 11975 +f 11975 11983 11976 +f 4522 4520 11983 +f 11983 4520 11984 +f 11983 11984 11976 +f 11976 11984 11977 +f 11984 4516 11985 +f 11984 11985 11977 +f 11977 11985 11978 +f 4516 4469 11985 +f 11985 11986 11978 +f 11978 11986 11979 +f 11986 4468 11987 +f 11986 11987 11979 +f 11979 11987 11980 +f 4468 4467 11987 +f 11963 11961 11971 +f 11971 11961 11970 +f 11961 11959 11970 +f 11970 11959 11969 +f 11959 11957 11969 +f 11969 11957 11968 +f 11957 11955 11968 +f 11968 11955 11967 +f 11955 11953 11967 +f 11967 11953 11966 +f 11949 11948 11965 +f 11953 11951 11966 +f 11966 11951 11965 +f 11951 11949 11965 +f 4254 4253 4303 +f 4303 4253 4301 +f 4249 11988 11989 +f 11990 11989 11991 +f 11990 11991 11992 +f 11992 11991 11993 +f 11992 11993 11994 +f 11994 11993 11995 +f 11994 11995 11996 +f 11996 11995 11997 +f 11996 11997 11998 +f 11998 11997 11999 +f 11998 11999 12000 +f 12000 11999 12001 +f 12000 12001 12002 +f 12002 12001 12003 +f 12002 12003 12004 +f 12004 4230 4321 +f 11988 4246 12005 +f 12005 4246 4245 +f 12005 4245 12006 +f 12006 4245 4247 +f 12006 4247 12007 +f 12007 4247 4240 +f 12007 4240 12008 +f 12009 4238 4237 +f 12009 4237 12010 +f 12010 4237 4234 +f 12011 4234 4232 +f 12011 4232 4230 +f 4321 12013 12014 +f 12014 12013 12015 +f 12014 12015 12016 +f 12016 12015 12017 +f 12016 12017 12018 +f 12018 12017 12019 +f 12018 12019 12020 +f 12020 12019 12021 +f 12020 12021 12022 +f 12022 12021 12023 +f 12022 12023 12024 +f 12024 12023 12025 +f 12024 12025 12026 +f 12026 12025 12027 +f 12026 12027 12028 +f 12028 12027 4297 +f 12028 4297 4249 +f 4320 4319 12012 +f 12012 12029 12013 +f 12013 12029 12015 +f 4319 4318 12029 +f 12029 4318 12030 +f 12029 12030 12015 +f 12015 12030 12017 +f 4318 4316 12030 +f 12030 4316 12031 +f 12030 12031 12017 +f 12017 12031 12019 +f 12031 4314 12032 +f 12031 12032 12019 +f 12019 12032 12021 +f 12032 12033 12021 +f 12021 12033 12023 +f 4312 4309 12033 +f 12033 4309 12034 +f 12033 12034 12023 +f 12023 12034 12025 +f 4309 4295 12034 +f 12034 12035 12025 +f 12025 12035 12027 +f 4295 4297 12035 +f 12003 12001 12011 +f 12011 12001 12010 +f 12001 11999 12010 +f 12010 11999 12009 +f 11999 11997 12009 +f 12009 11997 12008 +f 11997 11995 12008 +f 12008 11995 12007 +f 11995 11993 12007 +f 12007 11993 12006 +f 11989 11988 12005 +f 11993 11991 12006 +f 12006 11991 12005 +f 12028 4249 11990 +f 11991 11989 12005 +f 12004 4321 12014 +f 12014 12016 12004 +f 12004 12016 12002 +f 12016 12018 12002 +f 12002 12018 12000 +f 12018 12020 12000 +f 12000 12020 11998 +f 12020 12022 11998 +f 11998 12022 11996 +f 12022 12024 11996 +f 11996 12024 11994 +f 12028 11990 11992 +f 12024 12026 11994 +f 11994 12026 11992 +f 12026 12028 11992 +f 4294 12036 4229 +f 4229 12036 12037 +f 4229 12037 12038 +f 12038 12037 12039 +f 12038 12039 12040 +f 12040 12039 12041 +f 12040 12041 12042 +f 12042 12041 12043 +f 12042 12043 12044 +f 12044 12043 12045 +f 12044 12045 12046 +f 12046 12045 12047 +f 12046 12047 12048 +f 12048 12047 12049 +f 12048 12049 12050 +f 12050 12049 4333 +f 12050 4333 12051 +f 12051 4333 4332 +f 12052 4332 4330 +f 12052 4330 4329 +f 12036 4293 12053 +f 12036 12053 12037 +f 12037 12053 12039 +f 4293 4292 12053 +f 12053 4292 12054 +f 12053 12054 12039 +f 12039 12054 12041 +f 4292 4291 12054 +f 12054 12055 12041 +f 12041 12055 12043 +f 4291 4290 12055 +f 12055 4290 12056 +f 12055 12056 12043 +f 12043 12056 12045 +f 12056 12057 12045 +f 12045 12057 12047 +f 4288 4287 12057 +f 12057 4287 12058 +f 12057 12058 12047 +f 12047 12058 12049 +f 4287 4285 12058 +f 12058 4285 12049 +f 4285 4333 12049 +f 12052 4329 12059 +f 12059 4329 4328 +f 12059 4328 12060 +f 12060 4328 4327 +f 12060 4327 12061 +f 12061 12062 12042 +f 12042 12062 12040 +f 12062 12063 12040 +f 12040 12063 12038 +f 4326 4323 12063 +f 12063 4323 4322 +f 12063 4322 12038 +f 12038 4322 4229 +f 12042 12044 12061 +f 12061 12044 12060 +f 12044 12046 12060 +f 12060 12046 12059 +f 12050 12051 12052 +f 12046 12048 12059 +f 12059 12048 12052 +f 12048 12050 12052 +f 4335 4289 4337 +f 4283 12064 12065 +f 12066 12065 12067 +f 12066 12067 12068 +f 12068 12067 12069 +f 12068 12069 12070 +f 12070 12069 12071 +f 12070 12071 12072 +f 12072 12071 12073 +f 12072 12073 12074 +f 12074 12073 12075 +f 12074 12075 12076 +f 12076 12075 12077 +f 12076 12077 12078 +f 12078 12077 12079 +f 12078 12079 12080 +f 12081 4273 4466 +f 12081 4466 12082 +f 12082 4466 12083 +f 12082 12083 12084 +f 12084 12083 12085 +f 12084 12085 12086 +f 12086 12085 12087 +f 12086 12087 12088 +f 12088 4418 4417 +f 4282 4281 12064 +f 12064 12089 12065 +f 12065 12089 12067 +f 12089 12090 12067 +f 12067 12090 12069 +f 4279 4278 12090 +f 12090 12091 12069 +f 12069 12091 12071 +f 12091 4277 12092 +f 12091 12092 12071 +f 12071 12092 12073 +f 4277 4276 12092 +f 12092 4276 12093 +f 12092 12093 12073 +f 12073 12093 12075 +f 4276 4274 12093 +f 12093 12094 12075 +f 12075 12094 12077 +f 12094 4274 12095 +f 12095 4274 4273 +f 12095 4273 12079 +f 4419 12096 4466 +f 4466 12096 12097 +f 4466 12097 12083 +f 12083 12097 12085 +f 4418 12087 4419 +f 12096 12098 12097 +f 12100 4415 12101 +f 12101 4339 4338 +f 12101 4338 12102 +f 12103 12104 12105 +f 12105 12104 12106 +f 12105 12106 12107 +f 12107 12106 12108 +f 12107 12108 12109 +f 12109 12108 12072 +f 12109 12072 12074 +f 12104 4337 12110 +f 12110 4337 4283 +f 12110 4283 12111 +f 12111 12066 12068 +f 12077 12094 12095 +f 12079 12077 12095 +f 12101 12102 12112 +f 12112 12102 12103 +f 12112 12103 12105 +f 12100 12101 12113 +f 12113 12101 12112 +f 12113 12112 12114 +f 12114 12112 12105 +f 12114 12105 12107 +f 12099 12100 12115 +f 12115 12100 12113 +f 12115 12113 12116 +f 12116 12113 12114 +f 12116 12114 12117 +f 12117 12114 12107 +f 12117 12107 12109 +f 12088 12099 12118 +f 12118 12099 12115 +f 12118 12115 12119 +f 12119 12115 12116 +f 12119 12116 12120 +f 12120 12116 12117 +f 12120 12117 12121 +f 12121 12117 12109 +f 12121 12109 12074 +f 12097 12098 12085 +f 12085 12098 12087 +f 12088 12118 12086 +f 12086 12118 12122 +f 12086 12122 12084 +f 12084 12122 12123 +f 12084 12123 12082 +f 12082 12123 12081 +f 12122 12118 12119 +f 12122 12119 12124 +f 12124 12119 12120 +f 12124 12120 12125 +f 12125 12120 12121 +f 12125 12121 12076 +f 12076 12121 12074 +f 12104 12110 12106 +f 12106 12110 12126 +f 12106 12126 12108 +f 12108 12126 12070 +f 12108 12070 12072 +f 12122 12124 12123 +f 12123 12124 12127 +f 12123 12127 12081 +f 12081 12127 12080 +f 12127 12124 12125 +f 12110 12111 12126 +f 12126 12111 12068 +f 12126 12068 12070 +f 12076 12078 12125 +f 12125 12078 12127 +f 12078 12080 12127 +f 4600 12128 4601 +f 4601 12128 12129 +f 4601 12129 12130 +f 12130 12129 12131 +f 12130 12131 12132 +f 12132 12131 12133 +f 12132 12133 12134 +f 12134 12133 12135 +f 12134 12135 12136 +f 12136 12135 12137 +f 12136 12137 12138 +f 12138 12137 12139 +f 12138 12139 12140 +f 12140 12139 12141 +f 12140 12141 12142 +f 12142 12141 12143 +f 12142 12143 12144 +f 12144 12143 4544 +f 12145 4600 4599 +f 12147 4598 4597 +f 12147 4597 12148 +f 12148 4597 4596 +f 12150 4595 4594 +f 12150 4594 12151 +f 12151 4594 4548 +f 12151 4548 4544 +f 4614 12152 4612 +f 12144 12153 12154 +f 12144 12154 12142 +f 12142 12154 12155 +f 12142 12155 12140 +f 12140 12155 12156 +f 12140 12156 12138 +f 12138 12156 12157 +f 12138 12157 12136 +f 12136 12157 12158 +f 12136 12158 12134 +f 12134 12158 12159 +f 12134 12159 12132 +f 12132 12159 12160 +f 12132 12160 12130 +f 4614 4662 12152 +f 12152 4662 12161 +f 12152 12161 12153 +f 12153 12161 12154 +f 4662 4657 12161 +f 12161 12162 12154 +f 12154 12162 12155 +f 4657 4656 12162 +f 12162 4656 12163 +f 12162 12163 12155 +f 12155 12163 12156 +f 4656 4655 12163 +f 12163 4655 12164 +f 12163 12164 12156 +f 12156 12164 12157 +f 12164 4653 12165 +f 12164 12165 12157 +f 12157 12165 12158 +f 12165 12166 12158 +f 12158 12166 12159 +f 4651 4650 12166 +f 12166 4650 12167 +f 12166 12167 12159 +f 12159 12167 12160 +f 4650 4649 12167 +f 12167 4649 12160 +f 12143 12141 12151 +f 12151 12141 12150 +f 12141 12139 12150 +f 12150 12139 12149 +f 12139 12137 12149 +f 12149 12137 12148 +f 12137 12135 12148 +f 12148 12135 12147 +f 12135 12133 12147 +f 12147 12133 12146 +f 12129 12128 12145 +f 12133 12131 12146 +f 12146 12131 12145 +f 12131 12129 12145 +f 4540 12168 4542 +f 4542 12168 12169 +f 4542 12169 12170 +f 12170 12169 12171 +f 12170 12171 12172 +f 12172 12171 12173 +f 12172 12173 12174 +f 12174 12173 12175 +f 12174 12175 12176 +f 12176 12175 12177 +f 12176 12177 12178 +f 12178 12177 12179 +f 12178 12179 12180 +f 12180 12179 12181 +f 12180 12181 12182 +f 12182 12181 12183 +f 12182 12183 12184 +f 12184 12183 4528 +f 12184 4528 4643 +f 12186 4537 4536 +f 12186 4536 12187 +f 12187 4536 4535 +f 12187 4535 12188 +f 12188 4535 4534 +f 12189 4532 12190 +f 12190 4530 12191 +f 12191 4530 4529 +f 12191 4529 4528 +f 12194 12193 12195 +f 12194 12195 12196 +f 12196 12195 12197 +f 12196 12197 12198 +f 12198 12197 12199 +f 12198 12199 12200 +f 12200 12199 12201 +f 12200 12201 12202 +f 12202 12201 12203 +f 12202 12203 12204 +f 12204 12203 12205 +f 12204 12205 12206 +f 12206 12205 12207 +f 12206 12207 12208 +f 12208 4608 4542 +f 4642 4641 12192 +f 12192 12209 12193 +f 12193 12209 12195 +f 4641 4640 12209 +f 12209 4640 12210 +f 12209 12210 12195 +f 12195 12210 12197 +f 4640 4624 12210 +f 12210 4624 12211 +f 12210 12211 12197 +f 12197 12211 12199 +f 4624 4622 12211 +f 12211 4622 12212 +f 12211 12212 12199 +f 12199 12212 12201 +f 4622 4620 12212 +f 12212 4620 12213 +f 12212 12213 12201 +f 12201 12213 12203 +f 4620 4618 12213 +f 12213 4618 12214 +f 12213 12214 12203 +f 12203 12214 12205 +f 4618 4606 12214 +f 12214 12215 12205 +f 12205 12215 12207 +f 4606 4608 12215 +f 12215 4608 12207 +f 12191 4528 12183 +f 12183 12181 12191 +f 12191 12181 12190 +f 12181 12179 12190 +f 12190 12179 12189 +f 12179 12177 12189 +f 12189 12177 12188 +f 12177 12175 12188 +f 12188 12175 12187 +f 12175 12173 12187 +f 12187 12173 12186 +f 12169 12168 12185 +f 12173 12171 12186 +f 12186 12171 12185 +f 12208 4542 12170 +f 12171 12169 12185 +f 12184 4643 12194 +f 12194 12196 12184 +f 12184 12196 12182 +f 12196 12198 12182 +f 12182 12198 12180 +f 12198 12200 12180 +f 12180 12200 12178 +f 12200 12202 12178 +f 12178 12202 12176 +f 12202 12204 12176 +f 12176 12204 12174 +f 12208 12170 12172 +f 12204 12206 12174 +f 12174 12206 12172 +f 12206 12208 12172 +f 4235 12216 4527 +f 4527 12216 12217 +f 4527 12217 12218 +f 12218 12217 12219 +f 12218 12219 12220 +f 12220 12219 12221 +f 12220 12221 12222 +f 12222 12221 12223 +f 12222 12223 12224 +f 12224 12223 12225 +f 12224 12225 12226 +f 12226 12225 12227 +f 12226 12227 12228 +f 12228 12227 12229 +f 12228 12229 12230 +f 12230 12229 4298 +f 12230 4298 12231 +f 12231 4298 4296 +f 12231 4296 12232 +f 12232 4296 4310 +f 12232 4310 4311 +f 4235 4236 12216 +f 12216 4236 12233 +f 12216 12233 12217 +f 12217 12233 12219 +f 4236 4239 12233 +f 12233 4239 12234 +f 12233 12234 12219 +f 12219 12234 12221 +f 12234 12235 12221 +f 12221 12235 12223 +f 4241 4243 12235 +f 12235 4243 12236 +f 12235 12236 12223 +f 12223 12236 12225 +f 4243 4244 12236 +f 12236 4244 12237 +f 12236 12237 12225 +f 12225 12237 12227 +f 12237 12238 12227 +f 12227 12238 12229 +f 4248 4250 12238 +f 12238 4250 12229 +f 4250 4298 12229 +f 12232 4311 12239 +f 12239 4311 4313 +f 12239 4313 12240 +f 12240 4313 4315 +f 12240 4315 12241 +f 12241 4315 12242 +f 12241 12242 12222 +f 12222 12242 12220 +f 12242 4646 12243 +f 12242 12243 12220 +f 12220 12243 12218 +f 4646 4645 12243 +f 12243 4645 4644 +f 12218 4644 4527 +f 12222 12224 12241 +f 12241 12224 12240 +f 12224 12226 12240 +f 12240 12226 12239 +f 12230 12231 12232 +f 12226 12228 12239 +f 12239 12228 12232 +f 12228 12230 12232 +f 4298 4252 4300 +f 4300 4252 4304 +f 4304 4252 4258 +f 4259 12244 4258 +f 12246 12245 12247 +f 12246 12247 12248 +f 12248 12247 12249 +f 12248 12249 12250 +f 12250 12249 12251 +f 12250 12251 12252 +f 12252 12251 12253 +f 12252 12253 12254 +f 12254 12253 12255 +f 12254 12255 12256 +f 12256 12255 12257 +f 12256 12257 12258 +f 12258 12257 12259 +f 12258 12259 12260 +f 12260 4602 12261 +f 12261 4602 4648 +f 12261 4648 12262 +f 12262 12263 12264 +f 12264 12263 12265 +f 12264 12265 12266 +f 12266 12265 12267 +f 12266 12267 12268 +f 12268 12267 4517 +f 12268 4517 4519 +f 4259 4263 12244 +f 12244 4263 12269 +f 12244 12269 12245 +f 12245 12269 12247 +f 4263 4262 12269 +f 12269 12270 12247 +f 12247 12270 12249 +f 4262 4264 12270 +f 12270 12271 12249 +f 12249 12271 12251 +f 4264 4605 12271 +f 12271 4605 12272 +f 12271 12272 12251 +f 12251 12272 12253 +f 12272 4604 12273 +f 12272 12273 12253 +f 12253 12273 12255 +f 12273 4603 12274 +f 12273 12274 12255 +f 12255 12274 12257 +f 4518 12276 4648 +f 4648 12276 12277 +f 4648 12277 12263 +f 12263 12277 12265 +f 4517 12267 4518 +f 12276 12278 12277 +f 12281 4525 4307 +f 12281 4307 4306 +f 12281 4306 12282 +f 12282 4306 4304 +f 12282 4304 12283 +f 12283 4304 12284 +f 12283 12284 12285 +f 12285 12284 12286 +f 12285 12286 12287 +f 12287 12286 12288 +f 12287 12288 12289 +f 12289 12288 12252 +f 12289 12252 12254 +f 12284 4304 12290 +f 12290 4304 4258 +f 12290 4258 12291 +f 12291 4258 12246 +f 12291 12246 12248 +f 12257 12274 12275 +f 12259 12257 12275 +f 12281 12282 12292 +f 12292 12282 12283 +f 12292 12283 12285 +f 12280 12281 12293 +f 12293 12281 12292 +f 12293 12292 12294 +f 12294 12292 12285 +f 12294 12285 12287 +f 12279 12280 12295 +f 12295 12280 12293 +f 12295 12293 12296 +f 12296 12293 12294 +f 12296 12294 12297 +f 12297 12294 12287 +f 12297 12287 12289 +f 12268 12279 12298 +f 12298 12279 12295 +f 12298 12295 12299 +f 12299 12295 12296 +f 12299 12296 12300 +f 12300 12296 12297 +f 12300 12297 12301 +f 12301 12297 12289 +f 12301 12289 12254 +f 12277 12278 12265 +f 12265 12278 12267 +f 12268 12298 12266 +f 12266 12298 12302 +f 12266 12302 12264 +f 12264 12302 12303 +f 12264 12303 12262 +f 12262 12303 12261 +f 12302 12298 12299 +f 12302 12299 12304 +f 12304 12299 12300 +f 12304 12300 12305 +f 12305 12300 12301 +f 12305 12301 12256 +f 12256 12301 12254 +f 12284 12290 12286 +f 12286 12290 12306 +f 12286 12306 12288 +f 12288 12306 12250 +f 12288 12250 12252 +f 12302 12304 12303 +f 12303 12304 12307 +f 12303 12307 12261 +f 12261 12307 12260 +f 12307 12304 12305 +f 12290 12291 12306 +f 12306 12291 12248 +f 12306 12248 12250 +f 12256 12258 12305 +f 12305 12258 12307 +f 12258 12260 12307 +f 4752 4751 4776 +f 4776 4751 4778 +f 12310 12309 12311 +f 12310 12311 12312 +f 12312 12311 12313 +f 12312 12313 12314 +f 12314 12313 12315 +f 12314 12315 12316 +f 12316 12315 12317 +f 12316 12317 12318 +f 12318 12317 12319 +f 12318 12319 12320 +f 12320 12319 12321 +f 12320 12321 12322 +f 12322 12321 12323 +f 12322 12323 12324 +f 12324 12323 4690 +f 12308 4716 12325 +f 12326 4715 4714 +f 12327 4714 4713 +f 12327 4713 12328 +f 12328 4713 4712 +f 12329 4712 4711 +f 4766 12333 12324 +f 12324 12333 12334 +f 12324 12334 12322 +f 12322 12334 12335 +f 12322 12335 12320 +f 12320 12335 12336 +f 12320 12336 12318 +f 12318 12336 12337 +f 12318 12337 12316 +f 12316 12337 12338 +f 12316 12338 12314 +f 12314 12338 12339 +f 12314 12339 12312 +f 12312 12339 12340 +f 12312 12340 12310 +f 12310 12340 4778 +f 12310 4778 4751 +f 4795 4794 12332 +f 12332 4794 12341 +f 12332 12341 12333 +f 12333 12341 12334 +f 4794 4791 12341 +f 12341 12342 12334 +f 12334 12342 12335 +f 4791 4788 12342 +f 12342 4788 12343 +f 12342 12343 12335 +f 12335 12343 12336 +f 4788 4786 12343 +f 12343 4786 12344 +f 12343 12344 12336 +f 12336 12344 12337 +f 4786 4785 12344 +f 12344 12345 12337 +f 12337 12345 12338 +f 4785 4780 12345 +f 12345 4780 12346 +f 12345 12346 12338 +f 12338 12346 12339 +f 4780 4779 12346 +f 12346 4779 12347 +f 12346 12347 12339 +f 12339 12347 12340 +f 4779 4778 12347 +f 12347 4778 12340 +f 12331 4690 12323 +f 12323 12321 12331 +f 12331 12321 12330 +f 12321 12319 12330 +f 12330 12319 12329 +f 12319 12317 12329 +f 12329 12317 12328 +f 12317 12315 12328 +f 12328 12315 12327 +f 12315 12313 12327 +f 12327 12313 12326 +f 12309 12308 12325 +f 12313 12311 12326 +f 12326 12311 12325 +f 12311 12309 12325 +f 4690 4762 4766 +f 4681 12348 4685 +f 4685 12348 12349 +f 4685 12349 12350 +f 12350 12349 12351 +f 12350 12351 12352 +f 12352 12351 12353 +f 12352 12353 12354 +f 12354 12353 12355 +f 12354 12355 12356 +f 12356 12355 12357 +f 12356 12357 12358 +f 12358 12357 12359 +f 12358 12359 12360 +f 12360 12359 12361 +f 12360 12361 12362 +f 12362 12361 12363 +f 12362 12363 12364 +f 12364 12363 4664 +f 12364 4664 4630 +f 12366 4672 12367 +f 12367 4672 4671 +f 12367 4671 12368 +f 12368 4671 4670 +f 12368 4670 12369 +f 12369 4670 4669 +f 12369 4669 12370 +f 12370 4669 4668 +f 12371 4668 4666 +f 12371 4666 4664 +f 4631 12372 4630 +f 4630 12372 12373 +f 12374 12373 12375 +f 12374 12375 12376 +f 12376 12375 12377 +f 12376 12377 12378 +f 12378 12377 12379 +f 12378 12379 12380 +f 12380 12379 12381 +f 12380 12381 12382 +f 12382 12381 12383 +f 12382 12383 12384 +f 12384 12383 12385 +f 12384 12385 12386 +f 12386 12385 12387 +f 12386 12387 12388 +f 12388 12387 4762 +f 12388 4762 4685 +f 12372 12389 12373 +f 12373 12389 12375 +f 4632 4633 12389 +f 12389 4633 12390 +f 12389 12390 12375 +f 12375 12390 12377 +f 4633 4635 12390 +f 12390 4635 12391 +f 12390 12391 12377 +f 12377 12391 12379 +f 4635 4772 12391 +f 12391 12392 12379 +f 12379 12392 12381 +f 4772 4771 12392 +f 12392 12393 12381 +f 12381 12393 12383 +f 4771 4769 12393 +f 12393 12394 12383 +f 12383 12394 12385 +f 4769 4760 12394 +f 12394 4760 12395 +f 12394 12395 12385 +f 12385 12395 12387 +f 4760 4762 12395 +f 12363 12361 12371 +f 12371 12361 12370 +f 12361 12359 12370 +f 12370 12359 12369 +f 12359 12357 12369 +f 12369 12357 12368 +f 12357 12355 12368 +f 12368 12355 12367 +f 12355 12353 12367 +f 12367 12353 12366 +f 12349 12348 12365 +f 12353 12351 12366 +f 12366 12351 12365 +f 12388 4685 12350 +f 12351 12349 12365 +f 12364 4630 12374 +f 12374 12376 12364 +f 12364 12376 12362 +f 12376 12378 12362 +f 12362 12378 12360 +f 12378 12380 12360 +f 12360 12380 12358 +f 12380 12382 12358 +f 12358 12382 12356 +f 12382 12384 12356 +f 12356 12384 12354 +f 12388 12350 12352 +f 12384 12386 12354 +f 12354 12386 12352 +f 12386 12388 12352 +f 4531 12396 4663 +f 4663 12396 12397 +f 4663 12397 12398 +f 12398 12397 12399 +f 12398 12399 12400 +f 12400 12399 12401 +f 12400 12401 12402 +f 12402 12401 12403 +f 12402 12403 12404 +f 12404 12403 12405 +f 12404 12405 12406 +f 12406 12405 12407 +f 12406 12407 12408 +f 12408 12407 12409 +f 12408 12409 12410 +f 12410 12409 4609 +f 12410 4609 12411 +f 12411 4609 4607 +f 12412 4607 4617 +f 12412 4617 4773 +f 12396 12413 12397 +f 12397 12413 12399 +f 12413 12414 12399 +f 12399 12414 12401 +f 12414 4757 12415 +f 12414 12415 12401 +f 12401 12415 12403 +f 12415 12416 12403 +f 12403 12416 12405 +f 4538 4539 12416 +f 12416 4539 12417 +f 12416 12417 12405 +f 12405 12417 12407 +f 12417 12418 12407 +f 12407 12418 12409 +f 4541 4543 12418 +f 12418 4543 12409 +f 4543 4609 12409 +f 12412 4773 12419 +f 12419 4773 4621 +f 12419 4621 12420 +f 12420 4621 4623 +f 12420 4623 12421 +f 12421 4623 12422 +f 12421 12422 12402 +f 12402 12422 12400 +f 4623 4625 12422 +f 12422 4625 12423 +f 12422 12423 12400 +f 12400 12423 12398 +f 4625 4627 12423 +f 12423 4627 4629 +f 12423 4629 12398 +f 12398 4629 4663 +f 12402 12404 12421 +f 12421 12404 12420 +f 12404 12406 12420 +f 12420 12406 12419 +f 12410 12411 12412 +f 12406 12408 12419 +f 12419 12408 12412 +f 12408 12410 12412 +f 4545 12425 12426 +f 12426 12425 12427 +f 12426 12427 12428 +f 12428 12427 12429 +f 12428 12429 12430 +f 12430 12429 12431 +f 12430 12431 12432 +f 12432 12431 12433 +f 12432 12433 12434 +f 12434 12433 12435 +f 12434 12435 12436 +f 12436 12435 12437 +f 12436 12437 12438 +f 12438 12437 12439 +f 12438 12439 12440 +f 12440 12439 4752 +f 12440 4752 12441 +f 12441 4752 4776 +f 12441 4776 12442 +f 12442 4776 12443 +f 12442 12443 12444 +f 12444 12443 12445 +f 12444 12445 12446 +f 12446 12445 12447 +f 12446 12447 12448 +f 4547 4549 12424 +f 12424 12449 12425 +f 12425 12449 12427 +f 12449 12450 12427 +f 12427 12450 12429 +f 12450 4756 12451 +f 12450 12451 12429 +f 12429 12451 12431 +f 12451 4755 12452 +f 12451 12452 12431 +f 12431 12452 12433 +f 12452 4754 12453 +f 12452 12453 12433 +f 12433 12453 12435 +f 12453 4753 12454 +f 12453 12454 12435 +f 12435 12454 12437 +f 12454 4753 12455 +f 12455 4752 12439 +f 4775 12456 4776 +f 4776 12456 12457 +f 4776 12457 12443 +f 12443 12457 12445 +f 4654 12447 4775 +f 4775 12447 12458 +f 4775 12458 12456 +f 12456 12458 12457 +f 12459 4659 12460 +f 12461 4616 4615 +f 12461 4615 12462 +f 12463 12464 12465 +f 12465 12464 12466 +f 12465 12466 12467 +f 12467 12466 12468 +f 12467 12468 12469 +f 12469 12468 12432 +f 12469 12432 12434 +f 12470 4613 4545 +f 12470 4545 12471 +f 12471 4545 12426 +f 12471 12426 12428 +f 12437 12454 12455 +f 12439 12437 12455 +f 12461 12462 12472 +f 12472 12462 12463 +f 12472 12463 12465 +f 12460 12461 12473 +f 12473 12461 12472 +f 12473 12472 12474 +f 12474 12472 12465 +f 12474 12465 12467 +f 12459 12460 12475 +f 12475 12460 12473 +f 12475 12473 12476 +f 12476 12473 12474 +f 12476 12474 12477 +f 12477 12474 12467 +f 12477 12467 12469 +f 12448 12459 12478 +f 12478 12459 12475 +f 12478 12475 12479 +f 12479 12475 12476 +f 12479 12476 12480 +f 12480 12476 12477 +f 12480 12477 12481 +f 12481 12477 12469 +f 12481 12469 12434 +f 12457 12458 12445 +f 12445 12458 12447 +f 12448 12478 12446 +f 12446 12478 12482 +f 12446 12482 12444 +f 12444 12482 12483 +f 12444 12483 12442 +f 12442 12483 12441 +f 12482 12478 12479 +f 12482 12479 12484 +f 12484 12479 12480 +f 12484 12480 12485 +f 12485 12480 12481 +f 12485 12481 12436 +f 12436 12481 12434 +f 12464 12470 12466 +f 12466 12470 12486 +f 12466 12486 12468 +f 12468 12486 12430 +f 12468 12430 12432 +f 12482 12484 12483 +f 12483 12484 12487 +f 12483 12487 12441 +f 12441 12487 12440 +f 12487 12484 12485 +f 12470 12471 12486 +f 12486 12471 12428 +f 12486 12428 12430 +f 12436 12438 12485 +f 12485 12438 12487 +f 12438 12440 12487 +f 4705 12488 4704 +f 12490 12489 12491 +f 12490 12491 12492 +f 12492 12491 12493 +f 12492 12493 12494 +f 12494 12493 12495 +f 12494 12495 12496 +f 12496 12495 12497 +f 12496 12497 12498 +f 12498 12497 12499 +f 12498 12499 12500 +f 12500 12499 12501 +f 12500 12501 12502 +f 12502 12501 12503 +f 12502 12503 12504 +f 12505 4705 4828 +f 12505 4828 12506 +f 12506 4828 4827 +f 12506 4827 12507 +f 12507 4827 4825 +f 4925 12512 4839 +f 4839 12512 12513 +f 12504 12513 12514 +f 12504 12514 12502 +f 12502 12514 12515 +f 12502 12515 12500 +f 12500 12515 12516 +f 12500 12516 12498 +f 12498 12516 12517 +f 12498 12517 12496 +f 12496 12517 12518 +f 12496 12518 12494 +f 12494 12518 12519 +f 12494 12519 12492 +f 12492 12519 12520 +f 12492 12520 12490 +f 12490 12520 4863 +f 12490 4863 4704 +f 4925 4926 12512 +f 12512 4926 12521 +f 12512 12521 12513 +f 12513 12521 12514 +f 12521 4921 12522 +f 12521 12522 12514 +f 12514 12522 12515 +f 4921 4919 12522 +f 12522 4919 12523 +f 12522 12523 12515 +f 12515 12523 12516 +f 4919 4917 12523 +f 12523 4917 12524 +f 12523 12524 12516 +f 12516 12524 12517 +f 12524 4916 12525 +f 12524 12525 12517 +f 12517 12525 12518 +f 4916 4865 12525 +f 12525 4865 12526 +f 12525 12526 12518 +f 12518 12526 12519 +f 4865 4864 12526 +f 12526 12527 12519 +f 12519 12527 12520 +f 12503 12501 12511 +f 12511 12501 12510 +f 12501 12499 12510 +f 12510 12499 12509 +f 12499 12497 12509 +f 12509 12497 12508 +f 12497 12495 12508 +f 12508 12495 12507 +f 12495 12493 12507 +f 12507 12493 12506 +f 12489 12488 12505 +f 12493 12491 12506 +f 12506 12491 12505 +f 12491 12489 12505 +f 4813 4835 4815 +f 12530 12529 12531 +f 12530 12531 12532 +f 12532 12531 12533 +f 12532 12533 12534 +f 12534 12533 12535 +f 12534 12535 12536 +f 12536 12535 12537 +f 12536 12537 12538 +f 12538 12537 12539 +f 12538 12539 12540 +f 12540 12539 12541 +f 12540 12541 12542 +f 12542 12541 12543 +f 12542 12543 12544 +f 12544 12543 4798 +f 12544 4798 4856 +f 12546 4807 4804 +f 12546 4804 12547 +f 12547 4804 4803 +f 12547 4803 12548 +f 12548 4802 12549 +f 12549 4802 4801 +f 12550 4800 12551 +f 12551 4799 4798 +f 4853 12552 4856 +f 12554 12553 12555 +f 12554 12555 12556 +f 12556 12555 12557 +f 12556 12557 12558 +f 12558 12557 12559 +f 12558 12559 12560 +f 12560 12559 12561 +f 12560 12561 12562 +f 12562 12561 12563 +f 12562 12563 12564 +f 12564 12563 12565 +f 12564 12565 12566 +f 12566 12565 12567 +f 12566 12567 12568 +f 12568 4835 4813 +f 12552 4852 12569 +f 12552 12569 12553 +f 12553 12569 12555 +f 4852 4850 12569 +f 12569 4850 12570 +f 12569 12570 12555 +f 12555 12570 12557 +f 4850 4855 12570 +f 12570 4855 12571 +f 12570 12571 12557 +f 12557 12571 12559 +f 4855 4854 12571 +f 12571 12572 12559 +f 12559 12572 12561 +f 12572 4844 12573 +f 12572 12573 12561 +f 12561 12573 12563 +f 12573 4842 12574 +f 12573 12574 12563 +f 12563 12574 12565 +f 4842 4833 12574 +f 12574 12575 12565 +f 12565 12575 12567 +f 12551 4798 12543 +f 12543 12541 12551 +f 12551 12541 12550 +f 12541 12539 12550 +f 12550 12539 12549 +f 12539 12537 12549 +f 12549 12537 12548 +f 12537 12535 12548 +f 12548 12535 12547 +f 12535 12533 12547 +f 12547 12533 12546 +f 12529 12528 12545 +f 12533 12531 12546 +f 12546 12531 12545 +f 12568 4813 12530 +f 12531 12529 12545 +f 12544 4856 12554 +f 12554 12556 12544 +f 12544 12556 12542 +f 12556 12558 12542 +f 12542 12558 12540 +f 12558 12560 12540 +f 12540 12560 12538 +f 12560 12562 12538 +f 12538 12562 12536 +f 12562 12564 12536 +f 12536 12564 12534 +f 12568 12530 12532 +f 12564 12566 12534 +f 12534 12566 12532 +f 12566 12568 12532 +f 4797 4857 4798 +f 4798 4857 4856 +f 4832 12576 4797 +f 4797 12576 12577 +f 4797 12577 12578 +f 12578 12577 12579 +f 12578 12579 12580 +f 12580 12579 12581 +f 12580 12581 12582 +f 12582 12581 12583 +f 12582 12583 12584 +f 12584 12583 12585 +f 12584 12585 12586 +f 12586 12585 12587 +f 12586 12587 12588 +f 12588 12587 12589 +f 12588 12589 12590 +f 12590 12589 4763 +f 12590 4763 12591 +f 12591 4763 4761 +f 12591 4761 12592 +f 12592 4761 4770 +f 12592 4770 4639 +f 12576 12593 12577 +f 12577 12593 12579 +f 12593 12594 12579 +f 12579 12594 12581 +f 12594 4829 12595 +f 12594 12595 12581 +f 12581 12595 12583 +f 12595 4684 12596 +f 12595 12596 12583 +f 12583 12596 12585 +f 4684 4683 12596 +f 12596 4683 12597 +f 12596 12597 12585 +f 12585 12597 12587 +f 4683 4682 12597 +f 12597 4682 12598 +f 12597 12598 12587 +f 12587 12598 12589 +f 4682 4686 12598 +f 4686 4763 12589 +f 12592 4639 12599 +f 12599 4639 4638 +f 12599 4638 12600 +f 12600 4638 4636 +f 12600 4636 12601 +f 12601 4636 12602 +f 12601 12602 12582 +f 12582 12602 12580 +f 4636 4634 12602 +f 12602 4634 12603 +f 12602 12603 12580 +f 12580 12603 12578 +f 4634 4858 12603 +f 12603 4858 4857 +f 12578 4857 4797 +f 12582 12584 12601 +f 12601 12584 12600 +f 12584 12586 12600 +f 12600 12586 12599 +f 12590 12591 12592 +f 12586 12588 12599 +f 12599 12588 12592 +f 12588 12590 12592 +f 4763 4688 4767 +f 4691 12604 4688 +f 4688 12604 12605 +f 4688 12605 12606 +f 12606 12605 12607 +f 12606 12607 12608 +f 12608 12607 12609 +f 12608 12609 12610 +f 12610 12609 12611 +f 12610 12611 12612 +f 12612 12611 12613 +f 12612 12613 12614 +f 12614 12613 12615 +f 12614 12615 12616 +f 12616 12615 12617 +f 12616 12617 12618 +f 12618 12617 12619 +f 12618 12619 12620 +f 12620 12619 4702 +f 12620 4702 12621 +f 12621 4702 4861 +f 12621 4861 12622 +f 12622 12623 12624 +f 12624 12623 12625 +f 12624 12625 12626 +f 12626 12625 12627 +f 12626 12627 12628 +f 12628 12627 4859 +f 12604 4693 12629 +f 12604 12629 12605 +f 12605 12629 12607 +f 12629 12630 12607 +f 12607 12630 12609 +f 12630 4697 12631 +f 12630 12631 12609 +f 12609 12631 12611 +f 4697 4699 12631 +f 12631 4699 12632 +f 12631 12632 12611 +f 12611 12632 12613 +f 4699 4700 12632 +f 12632 4700 12633 +f 12632 12633 12613 +f 12613 12633 12615 +f 12633 12634 12615 +f 12615 12634 12617 +f 12634 4701 12635 +f 12635 4702 12619 +f 12623 12637 12625 +f 4860 12627 12638 +f 12636 12638 12637 +f 12628 4787 12639 +f 12639 4787 4789 +f 12640 4789 4790 +f 12640 4790 12641 +f 12641 4796 4768 +f 12641 4768 12642 +f 12643 12644 12645 +f 12645 12644 12646 +f 12645 12646 12647 +f 12647 12646 12648 +f 12647 12648 12649 +f 12649 12648 12612 +f 12649 12612 12614 +f 12644 4767 12650 +f 12650 4767 4688 +f 12650 4688 12651 +f 12651 4688 12606 +f 12651 12606 12608 +f 12617 12634 12635 +f 12619 12617 12635 +f 12641 12642 12652 +f 12652 12642 12643 +f 12652 12643 12645 +f 12640 12641 12653 +f 12653 12641 12652 +f 12653 12652 12654 +f 12654 12652 12645 +f 12654 12645 12647 +f 12639 12640 12655 +f 12655 12640 12653 +f 12655 12653 12656 +f 12656 12653 12654 +f 12656 12654 12657 +f 12657 12654 12647 +f 12657 12647 12649 +f 12628 12639 12658 +f 12658 12639 12655 +f 12658 12655 12659 +f 12659 12655 12656 +f 12659 12656 12660 +f 12660 12656 12657 +f 12660 12657 12661 +f 12661 12657 12649 +f 12661 12649 12614 +f 12637 12638 12625 +f 12625 12638 12627 +f 12628 12658 12626 +f 12626 12658 12662 +f 12626 12662 12624 +f 12624 12662 12663 +f 12624 12663 12622 +f 12622 12663 12621 +f 12662 12658 12659 +f 12662 12659 12664 +f 12664 12659 12660 +f 12664 12660 12665 +f 12665 12660 12661 +f 12665 12661 12616 +f 12616 12661 12614 +f 12644 12650 12646 +f 12646 12650 12666 +f 12646 12666 12648 +f 12648 12666 12610 +f 12648 12610 12612 +f 12662 12664 12663 +f 12663 12664 12667 +f 12663 12667 12621 +f 12621 12667 12620 +f 12667 12664 12665 +f 12650 12651 12666 +f 12666 12651 12608 +f 12666 12608 12610 +f 12616 12618 12665 +f 12665 12618 12667 +f 12618 12620 12667 +f 4955 12668 4960 +f 4960 12668 12669 +f 4960 12669 12670 +f 12670 12669 12671 +f 12670 12671 12672 +f 12672 12671 12673 +f 12672 12673 12674 +f 12674 12673 12675 +f 12674 12675 12676 +f 12676 12675 12677 +f 12676 12677 12678 +f 12678 12677 12679 +f 12678 12679 12680 +f 12680 12679 12681 +f 12680 12681 12682 +f 12682 12681 12683 +f 12682 12683 12684 +f 12668 4955 12685 +f 12685 4955 4956 +f 12685 4956 12686 +f 12686 4956 4957 +f 12687 4958 12688 +f 12688 4958 4959 +f 12688 4959 12689 +f 12689 4959 4952 +f 12689 4952 12690 +f 12690 4952 4950 +f 12691 4950 4948 +f 12691 4948 4945 +f 4972 12693 12684 +f 12684 12693 12694 +f 12684 12694 12682 +f 12682 12694 12695 +f 12682 12695 12680 +f 12680 12695 12696 +f 12680 12696 12678 +f 12678 12696 12697 +f 12678 12697 12676 +f 12676 12697 12698 +f 12676 12698 12674 +f 12674 12698 12699 +f 12674 12699 12672 +f 12672 12699 12700 +f 12672 12700 12670 +f 12670 12700 5124 +f 5138 5135 12692 +f 12692 5135 12701 +f 12692 12701 12693 +f 12693 12701 12694 +f 12701 12702 12694 +f 12694 12702 12695 +f 5130 5129 12702 +f 12702 5129 12703 +f 12702 12703 12695 +f 12695 12703 12696 +f 5129 5128 12703 +f 12703 5128 12704 +f 12703 12704 12696 +f 12696 12704 12697 +f 12704 12705 12697 +f 12697 12705 12698 +f 5127 5126 12705 +f 12705 5126 12706 +f 12705 12706 12698 +f 12698 12706 12699 +f 5126 5125 12706 +f 12706 12707 12699 +f 12699 12707 12700 +f 12691 4945 12683 +f 12683 12681 12691 +f 12691 12681 12690 +f 12681 12679 12690 +f 12690 12679 12689 +f 12679 12677 12689 +f 12689 12677 12688 +f 12677 12675 12688 +f 12688 12675 12687 +f 12675 12673 12687 +f 12687 12673 12686 +f 12669 12668 12685 +f 12673 12671 12686 +f 12686 12671 12685 +f 12671 12669 12685 +f 4943 4970 4945 +f 4945 4970 4972 +f 4943 12708 12709 +f 4943 12709 12710 +f 12710 12709 12711 +f 12710 12711 12712 +f 12712 12711 12713 +f 12712 12713 12714 +f 12714 12713 12715 +f 12714 12715 12716 +f 12716 12715 12717 +f 12716 12717 12718 +f 12718 12717 12719 +f 12718 12719 12720 +f 12720 12719 12721 +f 12720 12721 12722 +f 12722 12721 12723 +f 12722 12723 12724 +f 12724 4928 5002 +f 12727 4934 4933 +f 12731 4930 4929 +f 12731 4929 4928 +f 5001 12732 5002 +f 5002 12732 12733 +f 5002 12733 12734 +f 12734 12733 12735 +f 12734 12735 12736 +f 12736 12735 12737 +f 12736 12737 12738 +f 12738 12737 12739 +f 12738 12739 12740 +f 12740 12739 12741 +f 12740 12741 12742 +f 12742 12741 12743 +f 12742 12743 12744 +f 12744 12743 12745 +f 12744 12745 12746 +f 12746 12745 12747 +f 12746 12747 12748 +f 12748 12747 4970 +f 12748 4970 4943 +f 5001 5000 12732 +f 12732 12749 12733 +f 12733 12749 12735 +f 5000 4999 12749 +f 12749 4999 12750 +f 12749 12750 12735 +f 12735 12750 12737 +f 4999 4998 12750 +f 12750 4998 12751 +f 12750 12751 12737 +f 12737 12751 12739 +f 12751 12752 12739 +f 12739 12752 12741 +f 12752 12753 12741 +f 12741 12753 12743 +f 12753 12754 12743 +f 12743 12754 12745 +f 12754 12755 12745 +f 12745 12755 12747 +f 4968 4970 12755 +f 12755 4970 12747 +f 12731 4928 12723 +f 12723 12721 12731 +f 12731 12721 12730 +f 12721 12719 12730 +f 12730 12719 12729 +f 12719 12717 12729 +f 12729 12717 12728 +f 12717 12715 12728 +f 12728 12715 12727 +f 12715 12713 12727 +f 12727 12713 12726 +f 12709 12708 12725 +f 12713 12711 12726 +f 12726 12711 12725 +f 12748 4943 12710 +f 12711 12709 12725 +f 12724 5002 12734 +f 12734 12736 12724 +f 12724 12736 12722 +f 12736 12738 12722 +f 12722 12738 12720 +f 12738 12740 12720 +f 12720 12740 12718 +f 12740 12742 12718 +f 12718 12742 12716 +f 12742 12744 12716 +f 12716 12744 12714 +f 12748 12710 12712 +f 12744 12746 12714 +f 12714 12746 12712 +f 12746 12748 12712 +f 4927 5003 4928 +f 4928 5003 5002 +f 4967 12756 4927 +f 4927 12756 12757 +f 4927 12757 12758 +f 12758 12757 12759 +f 12758 12759 12760 +f 12760 12759 12761 +f 12760 12761 12762 +f 12762 12761 12763 +f 12762 12763 12764 +f 12764 12763 12765 +f 12764 12765 12766 +f 12766 12765 12767 +f 12766 12767 12768 +f 12768 12767 12769 +f 12768 12769 12770 +f 12770 12769 4836 +f 12770 4836 12771 +f 12772 4834 4843 +f 12772 4843 4845 +f 12756 12773 12757 +f 12757 12773 12759 +f 4806 4805 12773 +f 12773 4805 12774 +f 12773 12774 12759 +f 12759 12774 12761 +f 12774 12775 12761 +f 12761 12775 12763 +f 12775 4809 12776 +f 12775 12776 12763 +f 12763 12776 12765 +f 12776 12777 12765 +f 12765 12777 12767 +f 12777 4811 12778 +f 12777 12778 12767 +f 12767 12778 12769 +f 4811 4814 12778 +f 12778 4814 12769 +f 4814 4836 12769 +f 12772 4845 12779 +f 12779 4845 4846 +f 12779 4846 12780 +f 12780 4846 4848 +f 12780 4848 12781 +f 12781 12782 12762 +f 12762 12782 12760 +f 4848 4849 12782 +f 12782 4849 12783 +f 12782 12783 12760 +f 12760 12783 12758 +f 4849 5004 12783 +f 12758 5003 4927 +f 12762 12764 12781 +f 12781 12764 12780 +f 12764 12766 12780 +f 12780 12766 12779 +f 12770 12771 12772 +f 12766 12768 12779 +f 12779 12768 12772 +f 12768 12770 12772 +f 4814 4816 4836 +f 4817 12784 4816 +f 4816 12784 12785 +f 4816 12785 12786 +f 12786 12785 12787 +f 12786 12787 12788 +f 12788 12787 12789 +f 12788 12789 12790 +f 12790 12789 12791 +f 12790 12791 12792 +f 12792 12791 12793 +f 12792 12793 12794 +f 12794 12793 12795 +f 12794 12795 12796 +f 12796 12795 12797 +f 12796 12797 12798 +f 12798 12797 12799 +f 12798 12799 12800 +f 12800 12799 4965 +f 12801 4965 5122 +f 12801 5122 12802 +f 12802 12803 12804 +f 12804 12803 12805 +f 12804 12805 12806 +f 12806 12805 12807 +f 12806 12807 12808 +f 12808 12807 5120 +f 12808 5120 4918 +f 4817 4819 12784 +f 12784 4819 12809 +f 12784 12809 12785 +f 12785 12809 12787 +f 12809 12810 12787 +f 12787 12810 12789 +f 12810 12811 12789 +f 12789 12811 12791 +f 4823 4966 12811 +f 12811 4966 12812 +f 12811 12812 12791 +f 12791 12812 12793 +f 4966 4709 12812 +f 12812 4709 12813 +f 12812 12813 12793 +f 12793 12813 12795 +f 12813 12814 12795 +f 12795 12814 12797 +f 5121 12816 5122 +f 5122 12817 12803 +f 12803 12817 12805 +f 5120 12807 5121 +f 5121 12807 12818 +f 5121 12818 12816 +f 12816 12818 12817 +f 12819 4918 4920 +f 12820 4920 4922 +f 12820 4922 12821 +f 12821 4922 4924 +f 12821 4924 4841 +f 12821 4841 12822 +f 12822 4841 4840 +f 12822 4840 12823 +f 12823 4840 12824 +f 12823 12824 12825 +f 12825 12824 12826 +f 12825 12826 12827 +f 12827 12826 12828 +f 12827 12828 12829 +f 12829 12828 12792 +f 12829 12792 12794 +f 12830 4840 4816 +f 12830 4816 12831 +f 12831 4816 12786 +f 12831 12786 12788 +f 12797 12814 12815 +f 12799 12797 12815 +f 12821 12822 12832 +f 12832 12822 12823 +f 12832 12823 12825 +f 12820 12821 12833 +f 12833 12821 12832 +f 12833 12832 12834 +f 12834 12832 12825 +f 12834 12825 12827 +f 12819 12820 12835 +f 12835 12820 12833 +f 12835 12833 12836 +f 12836 12833 12834 +f 12836 12834 12837 +f 12837 12834 12827 +f 12837 12827 12829 +f 12808 12819 12838 +f 12838 12819 12835 +f 12838 12835 12839 +f 12839 12835 12836 +f 12839 12836 12840 +f 12840 12836 12837 +f 12840 12837 12841 +f 12841 12837 12829 +f 12841 12829 12794 +f 12817 12818 12805 +f 12805 12818 12807 +f 12808 12838 12806 +f 12806 12838 12842 +f 12806 12842 12804 +f 12804 12842 12843 +f 12804 12843 12802 +f 12802 12843 12801 +f 12842 12838 12839 +f 12842 12839 12844 +f 12844 12839 12840 +f 12844 12840 12845 +f 12845 12840 12841 +f 12845 12841 12796 +f 12796 12841 12794 +f 12824 12830 12826 +f 12826 12830 12846 +f 12826 12846 12828 +f 12828 12846 12790 +f 12828 12790 12792 +f 12842 12844 12843 +f 12843 12844 12847 +f 12843 12847 12801 +f 12801 12847 12800 +f 12847 12844 12845 +f 12830 12831 12846 +f 12846 12831 12788 +f 12846 12788 12790 +f 12796 12798 12845 +f 12845 12798 12847 +f 12798 12800 12847 +f 5202 5201 5219 +f 5219 5201 5221 +f 12850 12849 12851 +f 12850 12851 12852 +f 12852 12851 12853 +f 12852 12853 12854 +f 12854 12853 12855 +f 12854 12855 12856 +f 12856 12855 12857 +f 12856 12857 12858 +f 12858 12857 12859 +f 12858 12859 12860 +f 12860 12859 12861 +f 12860 12861 12862 +f 12862 12861 12863 +f 12862 12863 12864 +f 12864 5155 5209 +f 12866 5196 5195 +f 12868 5164 5163 +f 12868 5163 12869 +f 12869 5163 5162 +f 12870 5162 5160 +f 12864 12873 12874 +f 12864 12874 12862 +f 12862 12874 12875 +f 12862 12875 12860 +f 12860 12875 12876 +f 12860 12876 12858 +f 12858 12876 12877 +f 12858 12877 12856 +f 12856 12877 12878 +f 12856 12878 12854 +f 12854 12878 12879 +f 12854 12879 12852 +f 12852 12879 12880 +f 12852 12880 12850 +f 5281 5278 12872 +f 12872 5278 12881 +f 12872 12881 12873 +f 12873 12881 12874 +f 12881 5276 12882 +f 12881 12882 12874 +f 12874 12882 12875 +f 5276 5226 12882 +f 12882 5226 12883 +f 12882 12883 12875 +f 12875 12883 12876 +f 5226 5225 12883 +f 12883 5225 12884 +f 12883 12884 12876 +f 12876 12884 12877 +f 5225 5224 12884 +f 12884 5224 12885 +f 12884 12885 12877 +f 12877 12885 12878 +f 5224 5223 12885 +f 12885 12886 12878 +f 12878 12886 12879 +f 5223 5222 12886 +f 12886 12887 12879 +f 12879 12887 12880 +f 5222 5221 12887 +f 12887 5221 12880 +f 12863 12861 12871 +f 12871 12861 12870 +f 12861 12859 12870 +f 12870 12859 12869 +f 12859 12857 12869 +f 12869 12857 12868 +f 12857 12855 12868 +f 12868 12855 12867 +f 12855 12853 12867 +f 12867 12853 12866 +f 12849 12848 12865 +f 12853 12851 12866 +f 12866 12851 12865 +f 12851 12849 12865 +f 5152 12888 5154 +f 5154 12888 12889 +f 12890 12889 12891 +f 12890 12891 12892 +f 12892 12891 12893 +f 12892 12893 12894 +f 12894 12893 12895 +f 12894 12895 12896 +f 12896 12895 12897 +f 12896 12897 12898 +f 12898 12897 12899 +f 12898 12899 12900 +f 12900 12899 12901 +f 12900 12901 12902 +f 12902 12901 12903 +f 12902 12903 12904 +f 12904 5139 4988 +f 12905 5152 5150 +f 12906 5145 12907 +f 12907 5145 5144 +f 12909 5142 12910 +f 12910 5142 5141 +f 12911 5141 5140 +f 4989 12912 4988 +f 4988 12912 12913 +f 4988 12913 12914 +f 12914 12913 12915 +f 12914 12915 12916 +f 12916 12915 12917 +f 12916 12917 12918 +f 12918 12917 12919 +f 12918 12919 12920 +f 12920 12919 12921 +f 12920 12921 12922 +f 12922 12921 12923 +f 12922 12923 12924 +f 12924 12923 12925 +f 12924 12925 12926 +f 12926 12925 12927 +f 12926 12927 12928 +f 12928 5207 5154 +f 4989 4990 12912 +f 12912 12929 12913 +f 12913 12929 12915 +f 4990 4992 12929 +f 12929 4992 12930 +f 12929 12930 12915 +f 12915 12930 12917 +f 4992 4993 12930 +f 12930 4993 12931 +f 12930 12931 12917 +f 12917 12931 12919 +f 4993 4994 12931 +f 12931 4994 12932 +f 12931 12932 12919 +f 12919 12932 12921 +f 12932 5215 12933 +f 12932 12933 12921 +f 12921 12933 12923 +f 12933 12934 12923 +f 12923 12934 12925 +f 12934 12935 12925 +f 12925 12935 12927 +f 12935 5207 12927 +f 12903 12901 12911 +f 12911 12901 12910 +f 12901 12899 12910 +f 12910 12899 12909 +f 12899 12897 12909 +f 12909 12897 12908 +f 12897 12895 12908 +f 12908 12895 12907 +f 12895 12893 12907 +f 12907 12893 12906 +f 12889 12888 12905 +f 12893 12891 12906 +f 12906 12891 12905 +f 12928 5154 12890 +f 12891 12889 12905 +f 12904 4988 12914 +f 12914 12916 12904 +f 12904 12916 12902 +f 12916 12918 12902 +f 12902 12918 12900 +f 12918 12920 12900 +f 12900 12920 12898 +f 12920 12922 12898 +f 12898 12922 12896 +f 12922 12924 12896 +f 12896 12924 12894 +f 12928 12890 12892 +f 12924 12926 12894 +f 12894 12926 12892 +f 12926 12928 12892 +f 5139 4987 4988 +f 4679 12936 4680 +f 4680 12936 12937 +f 4680 12937 12938 +f 12938 12937 12939 +f 12938 12939 12940 +f 12940 12939 12941 +f 12940 12941 12942 +f 12942 12941 12943 +f 12942 12943 12944 +f 12944 12943 12945 +f 12944 12945 12946 +f 12946 12945 12947 +f 12946 12947 12948 +f 12948 12947 12949 +f 12948 12949 12950 +f 12950 12949 4969 +f 12950 4969 12951 +f 12952 4977 4979 +f 4679 4936 12936 +f 12936 4936 12953 +f 12936 12953 12937 +f 12937 12953 12939 +f 12953 12954 12939 +f 12939 12954 12941 +f 4935 4940 12954 +f 12954 4940 12955 +f 12954 12955 12941 +f 12941 12955 12943 +f 4940 4939 12955 +f 12955 12956 12943 +f 12943 12956 12945 +f 12956 4938 12957 +f 12956 12957 12945 +f 12945 12957 12947 +f 4938 4941 12957 +f 12957 4941 12958 +f 12957 12958 12947 +f 12947 12958 12949 +f 4941 4944 12958 +f 12958 4944 12949 +f 4944 4969 12949 +f 12952 4979 12959 +f 12959 4979 4980 +f 12959 4980 12960 +f 12960 4980 4982 +f 12960 4982 12961 +f 12961 12962 12942 +f 12942 12962 12940 +f 12962 12963 12940 +f 12940 12963 12938 +f 12938 4987 4680 +f 12942 12944 12961 +f 12961 12944 12960 +f 12944 12946 12960 +f 12960 12946 12959 +f 12950 12951 12952 +f 12946 12948 12959 +f 12959 12948 12952 +f 12948 12950 12952 +f 12966 12965 12967 +f 12966 12967 12968 +f 12968 12967 12969 +f 12968 12969 12970 +f 12970 12969 12971 +f 12970 12971 12972 +f 12972 12971 12973 +f 12972 12973 12974 +f 12974 12973 12975 +f 12974 12975 12976 +f 12976 12975 12977 +f 12976 12977 12978 +f 12978 12977 12979 +f 12978 12979 12980 +f 12981 5202 5219 +f 12981 5219 12982 +f 12982 12983 12984 +f 12984 12983 12985 +f 12984 12985 12986 +f 12986 12985 12987 +f 12986 12987 12988 +f 4947 4949 12964 +f 12964 12989 12965 +f 12965 12989 12967 +f 12989 12990 12967 +f 12967 12990 12969 +f 4951 5204 12990 +f 12990 5204 12991 +f 12990 12991 12969 +f 12969 12991 12971 +f 12991 12992 12971 +f 12971 12992 12973 +f 5203 4964 12992 +f 12992 12993 12973 +f 12973 12993 12975 +f 4964 4963 12993 +f 12993 12994 12975 +f 12975 12994 12977 +f 5218 12996 5219 +f 5219 12996 12997 +f 5219 12997 12983 +f 12983 12997 12985 +f 5217 12987 5218 +f 12996 12998 12997 +f 12988 5133 12999 +f 12999 5132 13000 +f 13000 5134 13001 +f 13001 5136 4974 +f 13001 4974 13002 +f 13002 4974 4973 +f 13002 4973 13003 +f 13003 4973 13004 +f 13003 13004 13005 +f 13005 13004 13006 +f 13005 13006 13007 +f 13007 13006 13008 +f 13007 13008 13009 +f 13009 13008 12972 +f 13009 12972 12974 +f 13004 4973 13010 +f 13010 4973 4946 +f 13010 4946 13011 +f 13011 4946 12966 +f 13011 12966 12968 +f 12977 12994 12995 +f 12979 12977 12995 +f 13001 13002 13012 +f 13012 13002 13003 +f 13012 13003 13005 +f 13000 13001 13013 +f 13013 13001 13012 +f 13013 13012 13014 +f 13014 13012 13005 +f 13014 13005 13007 +f 12999 13000 13015 +f 13015 13000 13013 +f 13015 13013 13016 +f 13016 13013 13014 +f 13016 13014 13017 +f 13017 13014 13007 +f 13017 13007 13009 +f 12988 12999 13018 +f 13018 12999 13015 +f 13018 13015 13019 +f 13019 13015 13016 +f 13019 13016 13020 +f 13020 13016 13017 +f 13020 13017 13021 +f 13021 13017 13009 +f 13021 13009 12974 +f 12997 12998 12985 +f 12985 12998 12987 +f 12988 13018 12986 +f 12986 13018 13022 +f 12986 13022 12984 +f 12984 13022 13023 +f 12984 13023 12982 +f 12982 13023 12981 +f 13022 13018 13019 +f 13022 13019 13024 +f 13024 13019 13020 +f 13024 13020 13025 +f 13025 13020 13021 +f 13025 13021 12976 +f 12976 13021 12974 +f 13004 13010 13006 +f 13006 13010 13026 +f 13006 13026 13008 +f 13008 13026 12970 +f 13008 12970 12972 +f 13022 13024 13023 +f 13023 13024 13027 +f 13023 13027 12981 +f 12981 13027 12980 +f 13027 13024 13025 +f 13010 13011 13026 +f 13026 13011 12968 +f 13026 12968 12970 +f 12976 12978 13025 +f 13025 12978 13027 +f 12978 12980 13027 +f 5336 5335 5385 +f 5314 13028 5335 +f 5335 13028 13029 +f 5335 13029 13030 +f 13030 13029 13031 +f 13030 13031 13032 +f 13032 13031 13033 +f 13032 13033 13034 +f 13034 13033 13035 +f 13034 13035 13036 +f 13036 13035 13037 +f 13036 13037 13038 +f 13038 13037 13039 +f 13038 13039 13040 +f 13040 13039 13041 +f 13040 13041 13042 +f 13042 13041 13043 +f 13042 13043 13044 +f 13044 13043 5300 +f 13044 5300 5350 +f 13045 5314 5313 +f 13045 5313 13046 +f 13047 5312 5311 +f 13047 5311 13048 +f 13048 5311 5309 +f 13049 5309 5307 +f 13050 5307 5305 +f 13044 13053 13054 +f 13044 13054 13042 +f 13042 13054 13055 +f 13042 13055 13040 +f 13040 13055 13056 +f 13040 13056 13038 +f 13038 13056 13057 +f 13038 13057 13036 +f 13036 13057 13058 +f 13036 13058 13034 +f 13034 13058 13059 +f 13034 13059 13032 +f 13032 13059 13060 +f 13032 13060 13030 +f 13030 13060 5415 +f 13030 5415 5335 +f 5427 5424 13052 +f 13052 5424 13061 +f 13052 13061 13053 +f 13053 13061 13054 +f 13061 5421 13062 +f 13061 13062 13054 +f 13054 13062 13055 +f 5421 5420 13062 +f 13062 13063 13055 +f 13055 13063 13056 +f 13063 5419 13064 +f 13063 13064 13056 +f 13056 13064 13057 +f 5419 5418 13064 +f 13064 5418 13065 +f 13064 13065 13057 +f 13057 13065 13058 +f 5418 5417 13065 +f 13065 5417 13066 +f 13065 13066 13058 +f 13058 13066 13059 +f 13066 5416 13067 +f 13066 13067 13059 +f 13059 13067 13060 +f 13043 13041 13051 +f 13051 13041 13050 +f 13041 13039 13050 +f 13050 13039 13049 +f 13039 13037 13049 +f 13049 13037 13048 +f 13037 13035 13048 +f 13048 13035 13047 +f 13035 13033 13047 +f 13047 13033 13046 +f 13029 13028 13045 +f 13033 13031 13046 +f 13046 13031 13045 +f 13031 13029 13045 +f 5299 5348 5300 +f 5300 5348 5350 +f 5297 13068 5299 +f 13070 13069 13071 +f 13070 13071 13072 +f 13072 13071 13073 +f 13072 13073 13074 +f 13074 13073 13075 +f 13074 13075 13076 +f 13076 13075 13077 +f 13076 13077 13078 +f 13078 13077 13079 +f 13078 13079 13080 +f 13080 13079 13081 +f 13080 13081 13082 +f 13082 13081 13083 +f 13082 13083 13084 +f 13084 5283 5378 +f 13068 5297 13085 +f 13086 5295 5290 +f 13086 5290 13087 +f 13087 5290 5289 +f 13087 5289 13088 +f 13091 5286 5285 +f 13091 5285 5283 +f 13094 13093 13095 +f 13094 13095 13096 +f 13096 13095 13097 +f 13096 13097 13098 +f 13098 13097 13099 +f 13098 13099 13100 +f 13100 13099 13101 +f 13100 13101 13102 +f 13102 13101 13103 +f 13102 13103 13104 +f 13104 13103 13105 +f 13104 13105 13106 +f 13106 13105 13107 +f 13106 13107 13108 +f 13108 13107 5348 +f 13108 5348 5299 +f 5377 5376 13092 +f 13092 5376 13109 +f 13092 13109 13093 +f 13093 13109 13095 +f 5376 5375 13109 +f 13109 5375 13110 +f 13109 13110 13095 +f 13095 13110 13097 +f 5375 5374 13110 +f 13110 5374 13111 +f 13110 13111 13097 +f 13097 13111 13099 +f 5374 5358 13111 +f 13111 5358 13112 +f 13111 13112 13099 +f 13099 13112 13101 +f 13112 13113 13101 +f 13101 13113 13103 +f 13113 13114 13103 +f 13103 13114 13105 +f 13114 13115 13105 +f 13105 13115 13107 +f 13115 5348 13107 +f 13083 13081 13091 +f 13091 13081 13090 +f 13081 13079 13090 +f 13090 13079 13089 +f 13079 13077 13089 +f 13089 13077 13088 +f 13077 13075 13088 +f 13088 13075 13087 +f 13075 13073 13087 +f 13087 13073 13086 +f 13069 13068 13085 +f 13073 13071 13086 +f 13086 13071 13085 +f 13108 5299 13070 +f 13071 13069 13085 +f 13084 5378 13094 +f 13094 13096 13084 +f 13084 13096 13082 +f 13096 13098 13082 +f 13082 13098 13080 +f 13098 13100 13080 +f 13080 13100 13078 +f 13100 13102 13078 +f 13078 13102 13076 +f 13102 13104 13076 +f 13076 13104 13074 +f 13108 13070 13072 +f 13104 13106 13074 +f 13074 13106 13072 +f 13106 13108 13072 +f 5283 5379 5378 +f 5338 13116 5282 +f 5282 13116 13117 +f 5282 13117 13118 +f 13118 13117 13119 +f 13118 13119 13120 +f 13120 13119 13121 +f 13120 13121 13122 +f 13122 13121 13123 +f 13122 13123 13124 +f 13124 13123 13125 +f 13124 13125 13126 +f 13126 13125 13127 +f 13126 13127 13128 +f 13128 13127 13129 +f 13128 13129 13130 +f 13130 13129 5206 +f 13130 5206 13131 +f 13132 5214 5216 +f 5338 5337 13116 +f 13116 13133 13117 +f 13117 13133 13119 +f 5337 5148 13133 +f 13133 13134 13119 +f 13119 13134 13121 +f 13134 13135 13121 +f 13121 13135 13123 +f 13135 13136 13123 +f 13123 13136 13125 +f 5146 5149 13136 +f 13136 5149 13137 +f 13136 13137 13125 +f 13125 13137 13127 +f 5149 5151 13137 +f 13137 13138 13127 +f 13127 13138 13129 +f 5153 5206 13129 +f 13132 5216 13139 +f 13139 5216 4996 +f 13139 4996 13140 +f 13140 4996 4995 +f 13140 4995 13141 +f 13141 13142 13122 +f 13122 13142 13120 +f 13142 13143 13120 +f 13120 13143 13118 +f 5381 5380 13143 +f 13143 5380 5379 +f 13143 5379 13118 +f 13118 5379 5282 +f 13122 13124 13141 +f 13141 13124 13140 +f 13124 13126 13140 +f 13140 13126 13139 +f 13130 13131 13132 +f 13126 13128 13139 +f 13139 13128 13132 +f 13128 13130 13132 +f 5153 5158 5206 +f 5158 13145 13146 +f 13146 13145 13147 +f 13146 13147 13148 +f 13148 13147 13149 +f 13148 13149 13150 +f 13150 13149 13151 +f 13150 13151 13152 +f 13152 13151 13153 +f 13152 13153 13154 +f 13154 13153 13155 +f 13154 13155 13156 +f 13156 13155 13157 +f 13156 13157 13158 +f 13158 13157 13159 +f 13158 13159 13160 +f 13160 13159 5336 +f 13160 5336 13161 +f 13161 5336 5385 +f 13161 5385 13162 +f 13162 5385 13163 +f 13162 13163 13164 +f 13164 13163 13165 +f 13164 13165 13166 +f 13166 13165 13167 +f 13166 13167 13168 +f 13168 13167 5383 +f 13144 13169 13145 +f 13145 13169 13147 +f 5159 5161 13169 +f 13169 13170 13147 +f 13147 13170 13149 +f 5161 5167 13170 +f 13170 5167 13171 +f 13170 13171 13149 +f 13149 13171 13151 +f 5167 5168 13171 +f 13171 13172 13151 +f 13151 13172 13153 +f 13172 13173 13153 +f 13153 13173 13155 +f 5169 5170 13173 +f 13173 13174 13155 +f 13155 13174 13157 +f 13174 5170 13175 +f 13175 5170 5336 +f 13175 5336 13159 +f 5384 13176 5385 +f 13163 13177 13165 +f 5384 13167 13178 +f 13176 13178 13177 +f 13168 5382 13179 +f 13180 5277 13181 +f 13181 5277 5279 +f 13181 5279 5211 +f 13181 5211 13182 +f 13182 5211 5210 +f 13183 5210 13184 +f 13183 13184 13185 +f 13185 13184 13186 +f 13185 13186 13187 +f 13187 13186 13188 +f 13187 13188 13189 +f 13189 13188 13152 +f 13189 13152 13154 +f 13190 5210 5158 +f 13190 5158 13191 +f 13191 5158 13146 +f 13191 13146 13148 +f 13157 13174 13175 +f 13159 13157 13175 +f 13181 13182 13192 +f 13192 13182 13183 +f 13192 13183 13185 +f 13180 13181 13193 +f 13193 13181 13192 +f 13193 13192 13194 +f 13194 13192 13185 +f 13194 13185 13187 +f 13179 13180 13195 +f 13195 13180 13193 +f 13195 13193 13196 +f 13196 13193 13194 +f 13196 13194 13197 +f 13197 13194 13187 +f 13197 13187 13189 +f 13168 13179 13198 +f 13198 13179 13195 +f 13198 13195 13199 +f 13199 13195 13196 +f 13199 13196 13200 +f 13200 13196 13197 +f 13200 13197 13201 +f 13201 13197 13189 +f 13201 13189 13154 +f 13177 13178 13165 +f 13165 13178 13167 +f 13168 13198 13166 +f 13166 13198 13202 +f 13166 13202 13164 +f 13164 13202 13203 +f 13164 13203 13162 +f 13162 13203 13161 +f 13202 13198 13199 +f 13202 13199 13204 +f 13204 13199 13200 +f 13204 13200 13205 +f 13205 13200 13201 +f 13205 13201 13156 +f 13156 13201 13154 +f 13184 13190 13186 +f 13186 13190 13206 +f 13186 13206 13188 +f 13188 13206 13150 +f 13188 13150 13152 +f 13202 13204 13203 +f 13203 13204 13207 +f 13203 13207 13161 +f 13161 13207 13160 +f 13207 13204 13205 +f 13190 13191 13206 +f 13206 13191 13148 +f 13206 13148 13150 +f 13156 13158 13205 +f 13205 13158 13207 +f 13158 13160 13207 +f 5319 5499 5318 +f 5320 13208 5319 +f 5319 13208 13209 +f 5319 13209 13210 +f 13210 13209 13211 +f 13210 13211 13212 +f 13212 13211 13213 +f 13212 13213 13214 +f 13214 13213 13215 +f 13214 13215 13216 +f 13216 13215 13217 +f 13216 13217 13218 +f 13218 13217 13219 +f 13218 13219 13220 +f 13220 13219 13221 +f 13220 13221 13222 +f 13222 13221 13223 +f 13222 13223 13224 +f 13224 5332 5455 +f 13208 5320 13225 +f 13225 5322 13226 +f 13226 5322 5323 +f 13226 5323 13227 +f 13227 5323 5324 +f 13228 5324 5325 +f 13228 5325 13229 +f 13229 5325 5326 +f 13230 5328 13231 +f 13231 5328 5330 +f 5455 13232 13233 +f 5455 13233 13224 +f 13224 13233 13234 +f 13224 13234 13222 +f 13222 13234 13235 +f 13222 13235 13220 +f 13220 13235 13236 +f 13220 13236 13218 +f 13218 13236 13237 +f 13218 13237 13216 +f 13216 13237 13238 +f 13216 13238 13214 +f 13214 13238 13239 +f 13214 13239 13212 +f 13212 13239 13240 +f 13212 13240 13210 +f 13210 13240 5499 +f 13210 5499 5319 +f 5512 5509 13232 +f 13232 5509 13241 +f 13232 13241 13233 +f 13233 13241 13234 +f 13241 13242 13234 +f 13234 13242 13235 +f 5507 5506 13242 +f 13242 5506 13243 +f 13242 13243 13235 +f 13235 13243 13236 +f 13243 5503 13244 +f 13243 13244 13236 +f 13236 13244 13237 +f 13244 13245 13237 +f 13237 13245 13238 +f 5502 5501 13245 +f 13245 13246 13238 +f 13238 13246 13239 +f 13246 13247 13239 +f 13239 13247 13240 +f 13231 5332 13223 +f 13223 13221 13231 +f 13231 13221 13230 +f 13221 13219 13230 +f 13230 13219 13229 +f 13219 13217 13229 +f 13229 13217 13228 +f 13217 13215 13228 +f 13228 13215 13227 +f 13215 13213 13227 +f 13227 13213 13226 +f 13209 13208 13225 +f 13213 13211 13226 +f 13226 13211 13225 +f 13211 13209 13225 +f 5332 5453 5455 +f 13250 13249 13251 +f 13250 13251 13252 +f 13252 13251 13253 +f 13252 13253 13254 +f 13254 13253 13255 +f 13254 13255 13256 +f 13256 13255 13257 +f 13256 13257 13258 +f 13258 13257 13259 +f 13258 13259 13260 +f 13260 13259 13261 +f 13260 13261 13262 +f 13262 13261 13263 +f 13262 13263 13264 +f 13264 13263 5429 +f 13264 5429 5366 +f 13265 5446 5444 +f 13266 5444 5442 +f 13267 5442 5440 +f 13274 13273 13275 +f 13274 13275 13276 +f 13276 13275 13277 +f 13276 13277 13278 +f 13278 13277 13279 +f 13278 13279 13280 +f 13280 13279 13281 +f 13280 13281 13282 +f 13282 13281 13283 +f 13282 13283 13284 +f 13284 13283 13285 +f 13284 13285 13286 +f 13286 13285 13287 +f 13286 13287 13288 +f 13288 5453 5447 +f 5368 5369 13272 +f 13272 13289 13273 +f 13273 13289 13275 +f 5369 5371 13289 +f 13289 5371 13290 +f 13289 13290 13275 +f 13275 13290 13277 +f 5371 5465 13290 +f 13290 5465 13291 +f 13290 13291 13277 +f 13277 13291 13279 +f 5465 5463 13291 +f 13291 5463 13292 +f 13291 13292 13279 +f 13279 13292 13281 +f 5463 5461 13292 +f 13292 13293 13281 +f 13281 13293 13283 +f 5461 5459 13293 +f 13293 13294 13283 +f 13283 13294 13285 +f 13294 5451 13295 +f 13294 13295 13285 +f 13285 13295 13287 +f 13295 5453 13287 +f 13263 13261 13271 +f 13271 13261 13270 +f 13261 13259 13270 +f 13270 13259 13269 +f 13259 13257 13269 +f 13269 13257 13268 +f 13257 13255 13268 +f 13268 13255 13267 +f 13255 13253 13267 +f 13267 13253 13266 +f 13249 13248 13265 +f 13253 13251 13266 +f 13266 13251 13265 +f 13288 5447 13250 +f 13251 13249 13265 +f 13264 5366 13274 +f 13274 13276 13264 +f 13264 13276 13262 +f 13276 13278 13262 +f 13262 13278 13260 +f 13278 13280 13260 +f 13260 13280 13258 +f 13280 13282 13258 +f 13258 13282 13256 +f 13282 13284 13256 +f 13256 13284 13254 +f 13288 13250 13252 +f 13284 13286 13254 +f 13254 13286 13252 +f 13286 13288 13252 +f 5431 13296 5430 +f 5430 13296 13297 +f 5430 13297 13298 +f 13298 13297 13299 +f 13298 13299 13300 +f 13300 13299 13301 +f 13300 13301 13302 +f 13302 13301 13303 +f 13302 13303 13304 +f 13304 13303 13305 +f 13304 13305 13306 +f 13306 13305 13307 +f 13306 13307 13308 +f 13308 13307 13309 +f 13308 13309 13310 +f 13310 13309 5347 +f 13312 5353 5355 +f 13312 5355 5357 +f 5431 5432 13296 +f 13296 13313 13297 +f 13297 13313 13299 +f 13313 5293 13314 +f 13313 13314 13299 +f 13299 13314 13301 +f 13314 5292 13315 +f 13314 13315 13301 +f 13301 13315 13303 +f 13315 5291 13316 +f 13315 13316 13303 +f 13303 13316 13305 +f 5291 5294 13316 +f 13316 13317 13305 +f 13305 13317 13307 +f 13317 13318 13307 +f 13307 13318 13309 +f 5296 5298 13318 +f 13318 5298 13309 +f 5298 5347 13309 +f 13312 5357 13319 +f 13319 5357 5359 +f 13319 5359 13320 +f 13320 5359 5360 +f 13320 5360 13321 +f 13321 5360 13322 +f 13321 13322 13302 +f 13302 13322 13300 +f 13322 5362 13323 +f 13322 13323 13300 +f 13300 13323 13298 +f 13323 5363 5365 +f 13323 5365 13298 +f 13298 5365 5430 +f 13302 13304 13321 +f 13321 13304 13320 +f 13304 13306 13320 +f 13320 13306 13319 +f 13310 13311 13312 +f 13306 13308 13319 +f 13319 13308 13312 +f 13308 13310 13312 +f 5298 5303 5347 +f 5302 13324 5303 +f 13326 13325 13327 +f 13326 13327 13328 +f 13328 13327 13329 +f 13328 13329 13330 +f 13330 13329 13331 +f 13330 13331 13332 +f 13332 13331 13333 +f 13332 13333 13334 +f 13334 13333 13335 +f 13334 13335 13336 +f 13336 13335 13337 +f 13336 13337 13338 +f 13338 13337 13339 +f 13338 13339 13340 +f 13340 5318 13341 +f 13341 5318 5469 +f 13341 5469 13342 +f 13342 5469 13343 +f 13342 13343 13344 +f 13344 13343 13345 +f 13344 13345 13346 +f 13346 13345 13347 +f 13346 13347 13348 +f 13348 13347 5467 +f 13348 5467 5466 +f 5302 5304 13324 +f 13324 13349 13325 +f 13325 13349 13327 +f 5304 5306 13349 +f 13349 5306 13350 +f 13349 13350 13327 +f 13327 13350 13329 +f 5306 5450 13350 +f 13350 5450 13351 +f 13350 13351 13329 +f 13329 13351 13331 +f 13351 13352 13331 +f 13331 13352 13333 +f 5449 5448 13352 +f 13352 13353 13333 +f 13333 13353 13335 +f 5448 5316 13353 +f 13353 5316 13354 +f 13353 13354 13335 +f 13335 13354 13337 +f 13354 5316 13355 +f 13355 5316 5318 +f 5468 13356 5469 +f 5469 13356 13357 +f 5469 13357 13343 +f 13343 13357 13345 +f 5467 13347 5468 +f 5468 13347 13358 +f 5468 13358 13356 +f 13356 13358 13357 +f 13360 5422 5423 +f 13360 5423 13361 +f 13361 5425 5352 +f 13361 5352 13362 +f 13362 5352 5351 +f 13362 5351 13363 +f 13363 5351 13364 +f 13363 13364 13365 +f 13365 13364 13366 +f 13365 13366 13367 +f 13367 13366 13368 +f 13367 13368 13369 +f 13369 13368 13332 +f 13369 13332 13334 +f 13364 5351 13370 +f 13370 5351 5303 +f 13370 5303 13371 +f 13371 5303 13326 +f 13371 13326 13328 +f 13337 13354 13355 +f 13339 13337 13355 +f 13361 13362 13372 +f 13372 13362 13363 +f 13372 13363 13365 +f 13360 13361 13373 +f 13373 13361 13372 +f 13373 13372 13374 +f 13374 13372 13365 +f 13374 13365 13367 +f 13359 13360 13375 +f 13375 13360 13373 +f 13375 13373 13376 +f 13376 13373 13374 +f 13376 13374 13377 +f 13377 13374 13367 +f 13377 13367 13369 +f 13348 13359 13378 +f 13378 13359 13375 +f 13378 13375 13379 +f 13379 13375 13376 +f 13379 13376 13380 +f 13380 13376 13377 +f 13380 13377 13381 +f 13381 13377 13369 +f 13381 13369 13334 +f 13357 13358 13345 +f 13345 13358 13347 +f 13348 13378 13346 +f 13346 13378 13382 +f 13346 13382 13344 +f 13344 13382 13383 +f 13344 13383 13342 +f 13342 13383 13341 +f 13382 13378 13379 +f 13382 13379 13384 +f 13384 13379 13380 +f 13384 13380 13385 +f 13385 13380 13381 +f 13385 13381 13336 +f 13336 13381 13334 +f 13364 13370 13366 +f 13366 13370 13386 +f 13366 13386 13368 +f 13368 13386 13330 +f 13368 13330 13332 +f 13382 13384 13383 +f 13383 13384 13387 +f 13383 13387 13341 +f 13341 13387 13340 +f 13387 13384 13385 +f 13370 13371 13386 +f 13386 13371 13328 +f 13386 13328 13330 +f 13336 13338 13385 +f 13385 13338 13387 +f 13338 13340 13387 +f 5550 5592 5551 +f 5550 13388 13389 +f 13390 13389 13391 +f 13390 13391 13392 +f 13392 13391 13393 +f 13392 13393 13394 +f 13394 13393 13395 +f 13394 13395 13396 +f 13396 13395 13397 +f 13396 13397 13398 +f 13398 13397 13399 +f 13398 13399 13400 +f 13400 13399 13401 +f 13400 13401 13402 +f 13402 13401 13403 +f 13402 13403 13404 +f 13404 13403 5533 +f 13405 5547 5546 +f 13406 5545 13407 +f 13407 5543 13408 +f 13408 5543 5542 +f 13410 5538 13411 +f 13411 5538 5534 +f 13411 5534 5533 +f 5698 13412 5560 +f 5560 13413 13404 +f 13404 13413 13414 +f 13404 13414 13402 +f 13402 13414 13415 +f 13402 13415 13400 +f 13400 13415 13416 +f 13400 13416 13398 +f 13398 13416 13417 +f 13398 13417 13396 +f 13396 13417 13418 +f 13396 13418 13394 +f 13394 13418 13419 +f 13394 13419 13392 +f 13392 13419 13420 +f 13392 13420 13390 +f 5698 5695 13412 +f 13412 5695 13421 +f 13412 13421 13413 +f 13413 13421 13414 +f 13421 13422 13414 +f 13414 13422 13415 +f 13422 13423 13415 +f 13415 13423 13416 +f 13423 5596 13424 +f 13423 13424 13416 +f 13416 13424 13417 +f 13424 13425 13417 +f 13417 13425 13418 +f 13425 13426 13418 +f 13418 13426 13419 +f 5594 5593 13426 +f 13426 13427 13419 +f 13419 13427 13420 +f 5593 5592 13427 +f 13411 5533 13403 +f 13403 13401 13411 +f 13411 13401 13410 +f 13401 13399 13410 +f 13410 13399 13409 +f 13399 13397 13409 +f 13409 13397 13408 +f 13397 13395 13408 +f 13408 13395 13407 +f 13395 13393 13407 +f 13407 13393 13406 +f 13389 13388 13405 +f 13393 13391 13406 +f 13406 13391 13405 +f 13391 13389 13405 +f 5532 5558 5533 +f 5533 5558 5560 +f 5532 13428 13429 +f 13430 13429 13431 +f 13430 13431 13432 +f 13432 13431 13433 +f 13432 13433 13434 +f 13434 13433 13435 +f 13434 13435 13436 +f 13436 13435 13437 +f 13436 13437 13438 +f 13438 13437 13439 +f 13438 13439 13440 +f 13440 13439 13441 +f 13440 13441 13442 +f 13442 13441 13443 +f 13442 13443 13444 +f 13444 5514 5586 +f 13445 5530 5528 +f 13446 5528 5526 +f 13448 5524 5518 +f 13451 5516 5515 +f 13454 13453 13455 +f 13454 13455 13456 +f 13456 13455 13457 +f 13456 13457 13458 +f 13458 13457 13459 +f 13458 13459 13460 +f 13460 13459 13461 +f 13460 13461 13462 +f 13462 13461 13463 +f 13462 13463 13464 +f 13464 13463 13465 +f 13464 13465 13466 +f 13466 13465 13467 +f 13466 13467 13468 +f 13468 13467 5558 +f 13468 5558 5532 +f 13452 13469 13453 +f 13453 13469 13455 +f 5584 5583 13469 +f 13469 5583 13470 +f 13469 13470 13455 +f 13455 13470 13457 +f 5583 5570 13470 +f 13470 5570 13471 +f 13470 13471 13457 +f 13457 13471 13459 +f 13471 13472 13459 +f 13459 13472 13461 +f 13472 13473 13461 +f 13461 13473 13463 +f 13473 5564 13474 +f 13473 13474 13463 +f 13463 13474 13465 +f 13474 5556 13475 +f 13474 13475 13465 +f 13465 13475 13467 +f 13475 5558 13467 +f 13443 13441 13451 +f 13451 13441 13450 +f 13441 13439 13450 +f 13450 13439 13449 +f 13439 13437 13449 +f 13449 13437 13448 +f 13437 13435 13448 +f 13448 13435 13447 +f 13435 13433 13447 +f 13447 13433 13446 +f 13429 13428 13445 +f 13433 13431 13446 +f 13446 13431 13445 +f 13468 5532 13430 +f 13431 13429 13445 +f 13444 5586 13454 +f 13454 13456 13444 +f 13444 13456 13442 +f 13456 13458 13442 +f 13442 13458 13440 +f 13458 13460 13440 +f 13440 13460 13438 +f 13460 13462 13438 +f 13438 13462 13436 +f 13462 13464 13436 +f 13436 13464 13434 +f 13468 13430 13432 +f 13464 13466 13434 +f 13434 13466 13432 +f 13466 13468 13432 +f 5433 13476 5513 +f 5513 13476 13477 +f 5513 13477 13478 +f 13478 13477 13479 +f 13478 13479 13480 +f 13480 13479 13481 +f 13480 13481 13482 +f 13482 13481 13483 +f 13482 13483 13484 +f 13484 13483 13485 +f 13484 13485 13486 +f 13486 13485 13487 +f 13486 13487 13488 +f 13488 13487 13489 +f 13488 13489 13490 +f 13490 13489 5452 +f 13490 5452 13491 +f 13492 5460 5462 +f 13476 13493 13477 +f 13477 13493 13479 +f 13493 13494 13479 +f 13479 13494 13481 +f 13494 13495 13481 +f 13481 13495 13483 +f 13495 5441 13496 +f 13495 13496 13483 +f 13483 13496 13485 +f 5441 5443 13496 +f 13496 5443 13497 +f 13496 13497 13485 +f 13485 13497 13487 +f 13497 5445 13498 +f 13497 13498 13487 +f 13487 13498 13489 +f 5445 5334 13498 +f 13498 5334 13489 +f 5334 5452 13489 +f 13492 5462 13499 +f 13499 5462 5464 +f 13499 5464 13500 +f 13500 5464 5373 +f 13500 5373 13501 +f 13501 5373 13502 +f 13501 13502 13482 +f 13482 13502 13480 +f 5373 5372 13502 +f 13502 5372 13503 +f 13502 13503 13480 +f 13480 13503 13478 +f 13503 5370 5587 +f 13478 5587 5513 +f 13482 13484 13501 +f 13501 13484 13500 +f 13484 13486 13500 +f 13500 13486 13499 +f 13490 13491 13492 +f 13486 13488 13499 +f 13499 13488 13492 +f 13488 13490 13492 +f 5331 13504 5333 +f 13506 13505 13507 +f 13506 13507 13508 +f 13508 13507 13509 +f 13508 13509 13510 +f 13510 13509 13511 +f 13510 13511 13512 +f 13512 13511 13513 +f 13512 13513 13514 +f 13514 13513 13515 +f 13514 13515 13516 +f 13516 13515 13517 +f 13516 13517 13518 +f 13518 13517 13519 +f 13518 13519 13520 +f 13520 13519 5551 +f 13520 5551 13521 +f 13521 5551 5591 +f 13521 5591 13522 +f 13522 13523 13524 +f 13524 13523 13525 +f 13524 13525 13526 +f 13526 13525 13527 +f 13526 13527 13528 +f 13504 5329 13529 +f 13504 13529 13505 +f 13505 13529 13507 +f 13529 5327 13530 +f 13529 13530 13507 +f 13507 13530 13509 +f 5327 5555 13530 +f 13530 5555 13531 +f 13530 13531 13509 +f 13509 13531 13511 +f 13531 13532 13511 +f 13511 13532 13513 +f 5554 5553 13532 +f 13532 13533 13513 +f 13513 13533 13515 +f 5553 5552 13533 +f 13533 5552 13534 +f 13533 13534 13515 +f 13515 13534 13517 +f 13535 5552 5551 +f 5589 13536 5591 +f 5591 13536 13537 +f 5591 13537 13523 +f 13523 13537 13525 +f 13536 13538 13537 +f 13528 5504 13539 +f 13539 5504 5505 +f 13539 5505 13540 +f 13540 5505 5508 +f 13540 5508 13541 +f 13541 5508 5510 +f 13541 5510 5457 +f 13541 5457 13542 +f 13543 13544 13545 +f 13545 13544 13546 +f 13545 13546 13547 +f 13547 13546 13548 +f 13547 13548 13549 +f 13549 13548 13512 +f 13549 13512 13514 +f 13544 5456 13550 +f 13550 5456 5333 +f 13550 5333 13551 +f 13551 13506 13508 +f 13517 13534 13535 +f 13519 13517 13535 +f 13541 13542 13552 +f 13552 13542 13543 +f 13552 13543 13545 +f 13540 13541 13553 +f 13553 13541 13552 +f 13553 13552 13554 +f 13554 13552 13545 +f 13554 13545 13547 +f 13539 13540 13555 +f 13555 13540 13553 +f 13555 13553 13556 +f 13556 13553 13554 +f 13556 13554 13557 +f 13557 13554 13547 +f 13557 13547 13549 +f 13528 13539 13558 +f 13558 13539 13555 +f 13558 13555 13559 +f 13559 13555 13556 +f 13559 13556 13560 +f 13560 13556 13557 +f 13560 13557 13561 +f 13561 13557 13549 +f 13561 13549 13514 +f 13537 13538 13525 +f 13525 13538 13527 +f 13528 13558 13526 +f 13526 13558 13562 +f 13526 13562 13524 +f 13524 13562 13563 +f 13524 13563 13522 +f 13522 13563 13521 +f 13562 13558 13559 +f 13562 13559 13564 +f 13564 13559 13560 +f 13564 13560 13565 +f 13565 13560 13561 +f 13565 13561 13516 +f 13516 13561 13514 +f 13544 13550 13546 +f 13546 13550 13566 +f 13546 13566 13548 +f 13548 13566 13510 +f 13548 13510 13512 +f 13562 13564 13563 +f 13563 13564 13567 +f 13563 13567 13521 +f 13521 13567 13520 +f 13567 13564 13565 +f 13550 13551 13566 +f 13566 13551 13508 +f 13566 13508 13510 +f 13516 13518 13565 +f 13565 13518 13567 +f 13518 13520 13567 +f 5733 5758 5734 +f 5731 13568 5733 +f 13570 13569 13571 +f 13570 13571 13572 +f 13572 13571 13573 +f 13572 13573 13574 +f 13574 13573 13575 +f 13574 13575 13576 +f 13576 13575 13577 +f 13576 13577 13578 +f 13578 13577 13579 +f 13578 13579 13580 +f 13580 13579 13581 +f 13580 13581 13582 +f 13582 13581 13583 +f 13582 13583 13584 +f 13584 13583 5718 +f 13585 5730 13586 +f 13587 5728 13588 +f 13589 5725 13590 +f 13590 5725 5723 +f 13590 5723 13591 +f 13591 5723 5719 +f 13591 5719 5718 +f 5772 13592 5743 +f 5743 13592 13593 +f 5743 13593 13584 +f 13584 13593 13594 +f 13584 13594 13582 +f 13582 13594 13595 +f 13582 13595 13580 +f 13580 13595 13596 +f 13580 13596 13578 +f 13578 13596 13597 +f 13578 13597 13576 +f 13576 13597 13598 +f 13576 13598 13574 +f 13574 13598 13599 +f 13574 13599 13572 +f 13572 13599 13600 +f 13572 13600 13570 +f 5772 5769 13592 +f 13592 5769 13601 +f 13592 13601 13593 +f 13593 13601 13594 +f 5769 5767 13601 +f 13601 5767 13602 +f 13601 13602 13594 +f 13594 13602 13595 +f 5767 5766 13602 +f 13602 5766 13603 +f 13602 13603 13595 +f 13595 13603 13596 +f 13603 13604 13596 +f 13596 13604 13597 +f 13604 5761 13605 +f 13604 13605 13597 +f 13597 13605 13598 +f 5761 5760 13605 +f 13605 5760 13606 +f 13605 13606 13598 +f 13598 13606 13599 +f 5760 5759 13606 +f 13606 5759 13607 +f 13606 13607 13599 +f 13599 13607 13600 +f 13591 5718 13583 +f 13583 13581 13591 +f 13591 13581 13590 +f 13581 13579 13590 +f 13590 13579 13589 +f 13579 13577 13589 +f 13589 13577 13588 +f 13577 13575 13588 +f 13588 13575 13587 +f 13575 13573 13587 +f 13587 13573 13586 +f 13569 13568 13585 +f 13573 13571 13586 +f 13586 13571 13585 +f 13571 13569 13585 +f 5717 5741 5718 +f 5718 5741 5743 +f 5717 13608 13609 +f 13610 13609 13611 +f 13610 13611 13612 +f 13612 13611 13613 +f 13612 13613 13614 +f 13614 13613 13615 +f 13614 13615 13616 +f 13616 13615 13617 +f 13616 13617 13618 +f 13618 13617 13619 +f 13618 13619 13620 +f 13620 13619 13621 +f 13620 13621 13622 +f 13622 13621 13623 +f 13622 13623 13624 +f 13624 5701 5576 +f 13627 5709 13628 +f 13628 5707 13629 +f 13629 5707 5705 +f 13630 5705 5702 +f 13631 5699 5701 +f 5578 13632 5576 +f 13634 13633 13635 +f 13634 13635 13636 +f 13636 13635 13637 +f 13636 13637 13638 +f 13638 13637 13639 +f 13638 13639 13640 +f 13640 13639 13641 +f 13640 13641 13642 +f 13642 13641 13643 +f 13642 13643 13644 +f 13644 13643 13645 +f 13644 13645 13646 +f 13646 13645 13647 +f 13646 13647 13648 +f 13648 13647 5741 +f 13648 5741 5717 +f 5578 5580 13632 +f 13632 5580 13649 +f 13632 13649 13633 +f 13633 13649 13635 +f 5580 5755 13649 +f 13649 5755 13650 +f 13649 13650 13635 +f 13635 13650 13637 +f 5755 5753 13650 +f 13650 5753 13651 +f 13650 13651 13637 +f 13637 13651 13639 +f 13651 13652 13639 +f 13639 13652 13641 +f 5751 5749 13652 +f 13652 13653 13641 +f 13641 13653 13643 +f 13653 5747 13654 +f 13653 13654 13643 +f 13643 13654 13645 +f 13654 13655 13645 +f 13645 13655 13647 +f 13655 5741 13647 +f 13631 5701 13623 +f 13623 13621 13631 +f 13631 13621 13630 +f 13621 13619 13630 +f 13630 13619 13629 +f 13619 13617 13629 +f 13629 13617 13628 +f 13617 13615 13628 +f 13628 13615 13627 +f 13615 13613 13627 +f 13627 13613 13626 +f 13609 13608 13625 +f 13613 13611 13626 +f 13626 13611 13625 +f 13648 5717 13610 +f 13611 13609 13625 +f 13624 5576 13634 +f 13634 13636 13624 +f 13624 13636 13622 +f 13636 13638 13622 +f 13622 13638 13620 +f 13638 13640 13620 +f 13620 13640 13618 +f 13640 13642 13618 +f 13618 13642 13616 +f 13642 13644 13616 +f 13616 13644 13614 +f 13648 13610 13612 +f 13644 13646 13614 +f 13614 13646 13612 +f 13646 13648 13612 +f 5519 5575 5701 +f 5701 5575 5576 +f 5520 13656 5519 +f 5519 13656 13657 +f 5519 13657 13658 +f 13658 13657 13659 +f 13658 13659 13660 +f 13660 13659 13661 +f 13660 13661 13662 +f 13662 13661 13663 +f 13662 13663 13664 +f 13664 13663 13665 +f 13664 13665 13666 +f 13666 13665 13667 +f 13666 13667 13668 +f 13668 13667 13669 +f 13668 13669 13670 +f 13670 13669 5557 +f 13671 5557 5563 +f 13671 5563 13672 +f 13672 5565 5567 +f 5520 5521 13656 +f 13656 5521 13673 +f 13656 13673 13657 +f 13657 13673 13659 +f 5521 5522 13673 +f 13673 13674 13659 +f 13659 13674 13661 +f 5522 5523 13674 +f 13674 13675 13661 +f 13661 13675 13663 +f 13675 13676 13663 +f 13663 13676 13665 +f 13676 13677 13665 +f 13665 13677 13667 +f 13677 5529 13678 +f 13677 13678 13667 +f 13667 13678 13669 +f 5531 5557 13669 +f 13672 5567 13679 +f 13679 5567 5569 +f 13679 5569 13680 +f 13680 5569 5571 +f 13680 5571 13681 +f 13681 13682 13662 +f 13662 13682 13660 +f 5571 5572 13682 +f 13682 13683 13660 +f 13660 13683 13658 +f 13658 5575 5519 +f 13662 13664 13681 +f 13681 13664 13680 +f 13664 13666 13680 +f 13680 13666 13679 +f 13670 13671 13672 +f 13666 13668 13679 +f 13679 13668 13672 +f 13668 13670 13672 +f 5531 5536 5557 +f 5557 5536 5561 +f 5536 13685 13686 +f 13686 13685 13687 +f 13686 13687 13688 +f 13688 13687 13689 +f 13688 13689 13690 +f 13690 13689 13691 +f 13690 13691 13692 +f 13692 13691 13693 +f 13692 13693 13694 +f 13694 13693 13695 +f 13694 13695 13696 +f 13696 13695 13697 +f 13696 13697 13698 +f 13698 13697 13699 +f 13698 13699 13700 +f 13701 5734 5757 +f 13701 5757 13702 +f 13702 13703 13704 +f 13704 13703 13705 +f 13704 13705 13706 +f 13706 13705 13707 +f 13706 13707 13708 +f 13708 13707 5691 +f 13708 5691 5690 +f 13684 5537 13709 +f 13684 13709 13685 +f 13685 13709 13687 +f 5537 5539 13709 +f 13709 5539 13710 +f 13709 13710 13687 +f 13687 13710 13689 +f 5539 5738 13710 +f 13710 5738 13711 +f 13710 13711 13689 +f 13689 13711 13691 +f 13711 5737 13712 +f 13711 13712 13691 +f 13691 13712 13693 +f 5737 5736 13712 +f 13712 5736 13713 +f 13712 13713 13693 +f 13693 13713 13695 +f 13713 5735 13714 +f 13713 13714 13695 +f 13695 13714 13697 +f 13714 5735 13715 +f 13715 5735 5734 +f 13715 5734 13699 +f 5692 13716 5757 +f 5757 13716 13717 +f 5757 13717 13703 +f 13703 13717 13705 +f 5691 13707 5692 +f 5692 13707 13718 +f 13716 13718 13717 +f 13708 5690 13719 +f 13719 5690 5689 +f 13719 5689 13720 +f 13720 5689 5694 +f 13721 5696 5562 +f 13721 5562 13722 +f 13722 5562 5561 +f 13723 13724 13725 +f 13725 13724 13726 +f 13725 13726 13727 +f 13727 13726 13728 +f 13727 13728 13729 +f 13729 13728 13692 +f 13729 13692 13694 +f 13724 5561 13730 +f 13730 5561 5536 +f 13730 5536 13731 +f 13731 5536 13686 +f 13731 13686 13688 +f 13697 13714 13715 +f 13699 13697 13715 +f 13721 13722 13732 +f 13732 13722 13723 +f 13732 13723 13725 +f 13720 13721 13733 +f 13733 13721 13732 +f 13733 13732 13734 +f 13734 13732 13725 +f 13734 13725 13727 +f 13719 13720 13735 +f 13735 13720 13733 +f 13735 13733 13736 +f 13736 13733 13734 +f 13736 13734 13737 +f 13737 13734 13727 +f 13737 13727 13729 +f 13708 13719 13738 +f 13738 13719 13735 +f 13738 13735 13739 +f 13739 13735 13736 +f 13739 13736 13740 +f 13740 13736 13737 +f 13740 13737 13741 +f 13741 13737 13729 +f 13741 13729 13694 +f 13717 13718 13705 +f 13705 13718 13707 +f 13708 13738 13706 +f 13706 13738 13742 +f 13706 13742 13704 +f 13704 13742 13743 +f 13704 13743 13702 +f 13702 13743 13701 +f 13742 13738 13739 +f 13742 13739 13744 +f 13744 13739 13740 +f 13744 13740 13745 +f 13745 13740 13741 +f 13745 13741 13696 +f 13696 13741 13694 +f 13724 13730 13726 +f 13726 13730 13746 +f 13726 13746 13728 +f 13728 13746 13690 +f 13728 13690 13692 +f 13742 13744 13743 +f 13743 13744 13747 +f 13743 13747 13701 +f 13701 13747 13700 +f 13747 13744 13745 +f 13730 13731 13746 +f 13746 13731 13688 +f 13746 13688 13690 +f 13696 13698 13745 +f 13745 13698 13747 +f 13698 13700 13747 +f 5809 5848 5846 +f 5806 13748 5808 +f 13750 13749 13751 +f 13750 13751 13752 +f 13752 13751 13753 +f 13752 13753 13754 +f 13754 13753 13755 +f 13754 13755 13756 +f 13756 13755 13757 +f 13756 13757 13758 +f 13758 13757 13759 +f 13758 13759 13760 +f 13760 13759 13761 +f 13760 13761 13762 +f 13762 13761 13763 +f 13762 13763 13764 +f 13764 5793 5818 +f 13767 5804 5803 +f 13767 5803 13768 +f 13768 5803 5802 +f 13768 5802 13769 +f 13769 5802 5800 +f 13770 5800 5798 +f 13770 5798 13771 +f 13771 5798 5794 +f 13771 5794 5793 +f 5863 13772 5818 +f 13764 13773 13774 +f 13764 13774 13762 +f 13762 13774 13775 +f 13762 13775 13760 +f 13760 13775 13776 +f 13760 13776 13758 +f 13758 13776 13777 +f 13758 13777 13756 +f 13756 13777 13778 +f 13756 13778 13754 +f 13754 13778 13779 +f 13754 13779 13752 +f 13752 13779 13780 +f 13752 13780 13750 +f 13750 13780 5848 +f 13750 5848 5808 +f 5863 5860 13772 +f 13772 5860 13781 +f 13772 13781 13773 +f 13773 13781 13774 +f 5860 5858 13781 +f 13781 5858 13782 +f 13781 13782 13774 +f 13774 13782 13775 +f 5858 5853 13782 +f 13782 5853 13783 +f 13782 13783 13775 +f 13775 13783 13776 +f 5853 5852 13783 +f 13783 13784 13776 +f 13776 13784 13777 +f 5852 5851 13784 +f 13784 5851 13785 +f 13784 13785 13777 +f 13777 13785 13778 +f 13785 5850 13786 +f 13785 13786 13778 +f 13778 13786 13779 +f 13786 13787 13779 +f 13779 13787 13780 +f 13787 5848 13780 +f 13763 13761 13771 +f 13771 13761 13770 +f 13761 13759 13770 +f 13770 13759 13769 +f 13759 13757 13769 +f 13769 13757 13768 +f 13757 13755 13768 +f 13768 13755 13767 +f 13755 13753 13767 +f 13767 13753 13766 +f 13749 13748 13765 +f 13753 13751 13766 +f 13766 13751 13765 +f 13751 13749 13765 +f 5793 5816 5818 +f 5790 13788 5792 +f 5792 13788 13789 +f 5792 13789 13790 +f 13790 13789 13791 +f 13790 13791 13792 +f 13792 13791 13793 +f 13792 13793 13794 +f 13794 13793 13795 +f 13794 13795 13796 +f 13796 13795 13797 +f 13796 13797 13798 +f 13798 13797 13799 +f 13798 13799 13800 +f 13800 13799 13801 +f 13800 13801 13802 +f 13802 13801 13803 +f 13802 13803 13804 +f 13804 5773 5836 +f 13807 5784 13808 +f 13808 5784 5782 +f 13809 5782 5776 +f 13810 5775 13811 +f 13811 5775 5774 +f 13814 13813 13815 +f 13814 13815 13816 +f 13816 13815 13817 +f 13816 13817 13818 +f 13818 13817 13819 +f 13818 13819 13820 +f 13820 13819 13821 +f 13820 13821 13822 +f 13822 13821 13823 +f 13822 13823 13824 +f 13824 13823 13825 +f 13824 13825 13826 +f 13826 13825 13827 +f 13826 13827 13828 +f 13828 5816 5792 +f 5835 5832 13812 +f 13812 13829 13813 +f 13813 13829 13815 +f 5832 5830 13829 +f 13829 5830 13830 +f 13829 13830 13815 +f 13815 13830 13817 +f 5830 5828 13830 +f 13830 5828 13831 +f 13830 13831 13817 +f 13817 13831 13819 +f 5828 5826 13831 +f 13831 5826 13832 +f 13831 13832 13819 +f 13819 13832 13821 +f 5826 5824 13832 +f 13832 5824 13833 +f 13832 13833 13821 +f 13821 13833 13823 +f 5824 5822 13833 +f 13833 13834 13823 +f 13823 13834 13825 +f 13834 13835 13825 +f 13825 13835 13827 +f 5814 5816 13835 +f 13835 5816 13827 +f 13811 5773 13803 +f 13803 13801 13811 +f 13811 13801 13810 +f 13801 13799 13810 +f 13810 13799 13809 +f 13799 13797 13809 +f 13809 13797 13808 +f 13797 13795 13808 +f 13808 13795 13807 +f 13795 13793 13807 +f 13807 13793 13806 +f 13789 13788 13805 +f 13793 13791 13806 +f 13806 13791 13805 +f 13828 5792 13790 +f 13791 13789 13805 +f 13804 5836 13814 +f 13814 13816 13804 +f 13804 13816 13802 +f 13816 13818 13802 +f 13802 13818 13800 +f 13818 13820 13800 +f 13800 13820 13798 +f 13820 13822 13798 +f 13798 13822 13796 +f 13822 13824 13796 +f 13796 13824 13794 +f 13828 13790 13792 +f 13824 13826 13794 +f 13794 13826 13792 +f 13826 13828 13792 +f 5700 5579 5773 +f 5773 5579 5836 +f 5703 13836 5700 +f 5700 13836 13837 +f 5700 13837 13838 +f 13838 13837 13839 +f 13838 13839 13840 +f 13840 13839 13841 +f 13840 13841 13842 +f 13842 13841 13843 +f 13842 13843 13844 +f 13844 13843 13845 +f 13844 13845 13846 +f 13846 13845 13847 +f 13846 13847 13848 +f 13848 13847 13849 +f 13848 13849 13850 +f 13850 13849 5740 +f 13850 5740 13851 +f 13852 5746 5748 +f 13852 5748 5750 +f 5703 5704 13836 +f 13836 13853 13837 +f 13837 13853 13839 +f 5704 5706 13853 +f 13853 13854 13839 +f 13839 13854 13841 +f 13854 5708 13855 +f 13854 13855 13841 +f 13841 13855 13843 +f 5708 5710 13855 +f 13855 5710 13856 +f 13855 13856 13843 +f 13843 13856 13845 +f 5710 5712 13856 +f 13856 5712 13857 +f 13856 13857 13845 +f 13845 13857 13847 +f 5712 5714 13857 +f 13857 13858 13847 +f 13847 13858 13849 +f 5714 5716 13858 +f 13858 5716 13849 +f 5716 5740 13849 +f 13852 5750 13859 +f 13859 5750 5752 +f 13859 5752 13860 +f 13860 5752 5754 +f 13860 5754 13861 +f 13861 5754 13862 +f 13861 13862 13842 +f 13842 13862 13840 +f 5754 5582 13862 +f 13862 5582 13863 +f 13862 13863 13840 +f 13840 13863 13838 +f 13863 5579 13838 +f 13838 5579 5700 +f 13842 13844 13861 +f 13861 13844 13860 +f 13844 13846 13860 +f 13860 13846 13859 +f 13850 13851 13852 +f 13846 13848 13859 +f 13859 13848 13852 +f 13848 13850 13852 +f 5740 5721 5744 +f 13866 13865 13867 +f 13866 13867 13868 +f 13868 13867 13869 +f 13868 13869 13870 +f 13870 13869 13871 +f 13870 13871 13872 +f 13872 13871 13873 +f 13872 13873 13874 +f 13874 13873 13875 +f 13874 13875 13876 +f 13876 13875 13877 +f 13876 13877 13878 +f 13878 13877 13879 +f 13878 13879 13880 +f 13880 13879 5809 +f 13880 5809 13881 +f 13881 5809 5846 +f 13881 5846 13882 +f 13882 13883 13884 +f 13884 13883 13885 +f 13884 13885 13886 +f 13886 13885 13887 +f 13886 13887 13888 +f 13888 5764 5763 +f 5720 5722 13864 +f 13864 5722 13889 +f 13864 13889 13865 +f 13865 13889 13867 +f 13889 13890 13867 +f 13867 13890 13869 +f 13890 13891 13869 +f 13869 13891 13871 +f 13891 13892 13871 +f 13871 13892 13873 +f 5812 5811 13892 +f 13892 13893 13873 +f 13873 13893 13875 +f 5811 5810 13893 +f 13893 5810 13894 +f 13893 13894 13875 +f 13875 13894 13877 +f 5846 13896 13897 +f 13883 13897 13885 +f 5845 13887 13898 +f 5845 13898 13896 +f 13896 13898 13897 +f 13888 5763 13899 +f 13899 5763 5765 +f 13899 5765 13900 +f 13900 5765 5768 +f 13900 5768 13901 +f 13901 5768 5770 +f 13901 5770 5745 +f 13901 5745 13902 +f 13902 5745 5744 +f 13903 5744 13904 +f 13903 13904 13905 +f 13905 13904 13906 +f 13905 13906 13907 +f 13907 13906 13908 +f 13907 13908 13909 +f 13909 13908 13872 +f 13909 13872 13874 +f 13910 5744 5721 +f 13910 5721 13911 +f 13911 13866 13868 +f 13877 13894 13895 +f 13879 13877 13895 +f 13901 13902 13912 +f 13912 13902 13903 +f 13912 13903 13905 +f 13900 13901 13913 +f 13913 13901 13912 +f 13913 13912 13914 +f 13914 13912 13905 +f 13914 13905 13907 +f 13899 13900 13915 +f 13915 13900 13913 +f 13915 13913 13916 +f 13916 13913 13914 +f 13916 13914 13917 +f 13917 13914 13907 +f 13917 13907 13909 +f 13888 13899 13918 +f 13918 13899 13915 +f 13918 13915 13919 +f 13919 13915 13916 +f 13919 13916 13920 +f 13920 13916 13917 +f 13920 13917 13921 +f 13921 13917 13909 +f 13921 13909 13874 +f 13897 13898 13885 +f 13885 13898 13887 +f 13888 13918 13886 +f 13886 13918 13922 +f 13886 13922 13884 +f 13884 13922 13923 +f 13884 13923 13882 +f 13882 13923 13881 +f 13922 13918 13919 +f 13922 13919 13924 +f 13924 13919 13920 +f 13924 13920 13925 +f 13925 13920 13921 +f 13925 13921 13876 +f 13876 13921 13874 +f 13904 13910 13906 +f 13906 13910 13926 +f 13906 13926 13908 +f 13908 13926 13870 +f 13908 13870 13872 +f 13922 13924 13923 +f 13923 13924 13927 +f 13923 13927 13881 +f 13881 13927 13880 +f 13927 13924 13925 +f 13910 13911 13926 +f 13926 13911 13868 +f 13926 13868 13870 +f 13876 13878 13925 +f 13925 13878 13927 +f 13878 13880 13927 +f 5894 13928 5895 +f 5895 13929 13930 +f 13930 13929 13931 +f 13930 13931 13932 +f 13932 13931 13933 +f 13932 13933 13934 +f 13934 13933 13935 +f 13934 13935 13936 +f 13936 13935 13937 +f 13936 13937 13938 +f 13938 13937 13939 +f 13938 13939 13940 +f 13940 13939 13941 +f 13940 13941 13942 +f 13942 13941 13943 +f 13942 13943 13944 +f 13944 5881 5909 +f 13928 5894 13945 +f 13945 5894 5893 +f 13945 5893 13946 +f 13946 5893 5892 +f 13947 5892 5891 +f 13948 5891 5890 +f 13948 5890 13949 +f 13949 5890 5888 +f 13949 5888 13950 +f 13950 5886 13951 +f 13951 5886 5882 +f 13944 13953 13954 +f 13944 13954 13942 +f 13942 13954 13955 +f 13942 13955 13940 +f 13940 13955 13956 +f 13940 13956 13938 +f 13938 13956 13957 +f 13938 13957 13936 +f 13936 13957 13958 +f 13936 13958 13934 +f 13934 13958 13959 +f 13934 13959 13932 +f 13932 13959 13960 +f 13932 13960 13930 +f 13930 13960 5930 +f 13930 5930 5895 +f 13952 13961 13953 +f 13953 13961 13954 +f 13961 13962 13954 +f 13954 13962 13955 +f 5941 5936 13962 +f 13962 13963 13955 +f 13955 13963 13956 +f 13963 13964 13956 +f 13956 13964 13957 +f 13964 13965 13957 +f 13957 13965 13958 +f 13965 5932 13966 +f 13965 13966 13958 +f 13958 13966 13959 +f 5932 5931 13966 +f 13966 5931 13967 +f 13966 13967 13959 +f 13959 13967 13960 +f 13943 13941 13951 +f 13951 13941 13950 +f 13941 13939 13950 +f 13950 13939 13949 +f 13939 13937 13949 +f 13949 13937 13948 +f 13937 13935 13948 +f 13948 13935 13947 +f 13935 13933 13947 +f 13947 13933 13946 +f 13929 13928 13945 +f 13933 13931 13946 +f 13946 13931 13945 +f 13931 13929 13945 +f 5880 5907 5881 +f 5881 5907 5909 +f 5880 13969 13970 +f 13970 13969 13971 +f 13970 13971 13972 +f 13972 13971 13973 +f 13972 13973 13974 +f 13974 13973 13975 +f 13974 13975 13976 +f 13976 13975 13977 +f 13976 13977 13978 +f 13978 13977 13979 +f 13978 13979 13980 +f 13980 13979 13981 +f 13980 13981 13982 +f 13982 13981 13983 +f 13982 13983 13984 +f 13984 5780 5927 +f 13968 5878 13985 +f 13986 5874 13987 +f 13987 5874 5872 +f 13988 5867 13989 +f 13991 5865 5864 +f 13991 5864 5780 +f 13994 13993 13995 +f 13994 13995 13996 +f 13996 13995 13997 +f 13996 13997 13998 +f 13998 13997 13999 +f 13998 13999 14000 +f 14000 13999 14001 +f 14000 14001 14002 +f 14002 14001 14003 +f 14002 14003 14004 +f 14004 14003 14005 +f 14004 14005 14006 +f 14006 14005 14007 +f 14006 14007 14008 +f 14008 5907 5880 +f 13992 14009 13993 +f 13993 14009 13995 +f 5925 5921 14009 +f 14009 5921 14010 +f 14009 14010 13995 +f 13995 14010 13997 +f 5921 5919 14010 +f 14010 5919 14011 +f 14010 14011 13997 +f 13997 14011 13999 +f 5919 5917 14011 +f 14011 5917 14012 +f 14011 14012 13999 +f 13999 14012 14001 +f 5917 5915 14012 +f 14012 5915 14013 +f 14012 14013 14001 +f 14001 14013 14003 +f 5915 5913 14013 +f 14013 5913 14014 +f 14013 14014 14003 +f 14003 14014 14005 +f 5913 5905 14014 +f 14014 5905 14015 +f 14014 14015 14005 +f 14005 14015 14007 +f 5905 5907 14015 +f 14015 5907 14007 +f 13983 13981 13991 +f 13991 13981 13990 +f 13981 13979 13990 +f 13990 13979 13989 +f 13979 13977 13989 +f 13989 13977 13988 +f 13977 13975 13988 +f 13988 13975 13987 +f 13975 13973 13987 +f 13987 13973 13986 +f 13969 13968 13985 +f 13973 13971 13986 +f 13986 13971 13985 +f 14008 5880 13970 +f 13971 13969 13985 +f 13984 5927 13994 +f 13994 13996 13984 +f 13984 13996 13982 +f 13996 13998 13982 +f 13982 13998 13980 +f 13998 14000 13980 +f 13980 14000 13978 +f 14000 14002 13978 +f 13978 14002 13976 +f 14002 14004 13976 +f 13976 14004 13974 +f 14008 13970 13972 +f 14004 14006 13974 +f 13974 14006 13972 +f 14006 14008 13972 +f 5780 5834 5927 +f 5778 14016 5779 +f 5779 14016 14017 +f 5779 14017 14018 +f 14018 14017 14019 +f 14018 14019 14020 +f 14020 14019 14021 +f 14020 14021 14022 +f 14022 14021 14023 +f 14022 14023 14024 +f 14024 14023 14025 +f 14024 14025 14026 +f 14026 14025 14027 +f 14026 14027 14028 +f 14028 14027 14029 +f 14028 14029 14030 +f 14030 14029 5815 +f 14031 5821 14032 +f 14032 5821 5823 +f 14032 5823 5825 +f 5778 5777 14016 +f 14016 5777 14033 +f 14016 14033 14017 +f 14017 14033 14019 +f 5777 5781 14033 +f 14033 5781 14034 +f 14033 14034 14019 +f 14019 14034 14021 +f 5781 5783 14034 +f 14034 5783 14035 +f 14034 14035 14021 +f 14021 14035 14023 +f 5783 5785 14035 +f 14035 5785 14036 +f 14035 14036 14023 +f 14023 14036 14025 +f 14036 5787 14037 +f 14036 14037 14025 +f 14025 14037 14027 +f 5787 5789 14037 +f 14037 14038 14027 +f 14027 14038 14029 +f 5789 5791 14038 +f 5791 5815 14029 +f 14032 5825 14039 +f 14039 5825 5827 +f 14039 5827 14040 +f 14040 5827 5829 +f 14040 5829 14041 +f 14041 14042 14022 +f 14022 14042 14020 +f 5829 5831 14042 +f 14042 14043 14020 +f 14020 14043 14018 +f 14043 5833 5834 +f 14018 5834 5779 +f 14022 14024 14041 +f 14041 14024 14040 +f 14024 14026 14040 +f 14040 14026 14039 +f 14030 14031 14032 +f 14026 14028 14039 +f 14039 14028 14032 +f 14028 14030 14032 +f 5791 5796 5815 +f 5815 5796 5819 +f 5796 14044 14045 +f 5796 14045 14046 +f 14046 14045 14047 +f 14046 14047 14048 +f 14048 14047 14049 +f 14048 14049 14050 +f 14050 14049 14051 +f 14050 14051 14052 +f 14052 14051 14053 +f 14052 14053 14054 +f 14054 14053 14055 +f 14054 14055 14056 +f 14056 14055 14057 +f 14056 14057 14058 +f 14058 14057 14059 +f 14058 14059 14060 +f 14060 14059 5900 +f 14061 5900 5929 +f 14061 5929 14062 +f 14062 14063 14064 +f 14064 14063 14065 +f 14064 14065 14066 +f 14066 14065 14067 +f 14066 14067 14068 +f 14068 14067 5856 +f 14044 5797 14069 +f 14044 14069 14045 +f 14045 14069 14047 +f 5797 5799 14069 +f 14069 5799 14070 +f 14069 14070 14047 +f 14047 14070 14049 +f 5799 5904 14070 +f 14070 5904 14071 +f 14070 14071 14049 +f 14049 14071 14051 +f 14071 5903 14072 +f 14071 14072 14051 +f 14051 14072 14053 +f 14072 5902 14073 +f 14072 14073 14053 +f 14053 14073 14055 +f 14073 5901 14074 +f 14073 14074 14055 +f 14055 14074 14057 +f 14074 5901 14075 +f 14075 5901 5900 +f 14075 5900 14059 +f 5857 14076 5929 +f 5929 14076 14077 +f 5929 14077 14063 +f 14063 14077 14065 +f 5857 14067 14078 +f 14076 14078 14077 +f 14079 5855 5854 +f 14079 5854 14080 +f 14080 5854 5859 +f 14080 5859 14081 +f 14081 5859 5861 +f 14081 5861 5820 +f 14081 5820 14082 +f 14082 5820 5819 +f 14082 5819 14083 +f 14083 5819 14084 +f 14083 14084 14085 +f 14085 14084 14086 +f 14085 14086 14087 +f 14087 14086 14088 +f 14087 14088 14089 +f 14089 14088 14052 +f 14089 14052 14054 +f 14090 5819 5796 +f 14090 5796 14091 +f 14091 14046 14048 +f 14057 14074 14075 +f 14059 14057 14075 +f 14081 14082 14092 +f 14092 14082 14083 +f 14092 14083 14085 +f 14080 14081 14093 +f 14093 14081 14092 +f 14093 14092 14094 +f 14094 14092 14085 +f 14094 14085 14087 +f 14079 14080 14095 +f 14095 14080 14093 +f 14095 14093 14096 +f 14096 14093 14094 +f 14096 14094 14097 +f 14097 14094 14087 +f 14097 14087 14089 +f 14068 14079 14098 +f 14098 14079 14095 +f 14098 14095 14099 +f 14099 14095 14096 +f 14099 14096 14100 +f 14100 14096 14097 +f 14100 14097 14101 +f 14101 14097 14089 +f 14101 14089 14054 +f 14077 14078 14065 +f 14065 14078 14067 +f 14068 14098 14066 +f 14066 14098 14102 +f 14066 14102 14064 +f 14064 14102 14103 +f 14064 14103 14062 +f 14062 14103 14061 +f 14102 14098 14099 +f 14102 14099 14104 +f 14104 14099 14100 +f 14104 14100 14105 +f 14105 14100 14101 +f 14105 14101 14056 +f 14056 14101 14054 +f 14084 14090 14086 +f 14086 14090 14106 +f 14086 14106 14088 +f 14088 14106 14050 +f 14088 14050 14052 +f 14102 14104 14103 +f 14103 14104 14107 +f 14103 14107 14061 +f 14061 14107 14060 +f 14107 14104 14105 +f 14090 14091 14106 +f 14106 14091 14048 +f 14106 14048 14050 +f 14056 14058 14105 +f 14105 14058 14107 +f 14058 14060 14107 +f 5980 14109 14110 +f 14110 14109 14111 +f 14110 14111 14112 +f 14112 14111 14113 +f 14112 14113 14114 +f 14114 14113 14115 +f 14114 14115 14116 +f 14116 14115 14117 +f 14116 14117 14118 +f 14118 14117 14119 +f 14118 14119 14120 +f 14120 14119 14121 +f 14120 14121 14122 +f 14122 14121 14123 +f 14122 14123 14124 +f 14124 14123 5965 +f 14127 5975 14128 +f 14128 5975 5974 +f 14128 5974 14129 +f 14129 5974 5972 +f 14131 5970 5966 +f 14131 5966 5965 +f 6057 14132 5988 +f 5988 14132 14133 +f 14124 14133 14134 +f 14124 14134 14122 +f 14122 14134 14135 +f 14122 14135 14120 +f 14120 14135 14136 +f 14120 14136 14118 +f 14118 14136 14137 +f 14118 14137 14116 +f 14116 14137 14138 +f 14116 14138 14114 +f 14114 14138 14139 +f 14114 14139 14112 +f 14112 14139 14140 +f 14112 14140 14110 +f 14110 14140 6044 +f 14110 6044 5980 +f 14132 6054 14141 +f 14132 14141 14133 +f 14133 14141 14134 +f 14141 14142 14134 +f 14134 14142 14135 +f 14142 14143 14135 +f 14135 14143 14136 +f 14143 14144 14136 +f 14136 14144 14137 +f 14144 6047 14145 +f 14144 14145 14137 +f 14137 14145 14138 +f 6047 6046 14145 +f 14145 6046 14146 +f 14145 14146 14138 +f 14138 14146 14139 +f 6046 6045 14146 +f 14146 14147 14139 +f 14139 14147 14140 +f 6045 6044 14147 +f 14147 6044 14140 +f 14131 5965 14123 +f 14123 14121 14131 +f 14131 14121 14130 +f 14121 14119 14130 +f 14130 14119 14129 +f 14119 14117 14129 +f 14129 14117 14128 +f 14117 14115 14128 +f 14128 14115 14127 +f 14115 14113 14127 +f 14127 14113 14126 +f 14109 14108 14125 +f 14113 14111 14126 +f 14126 14111 14125 +f 14111 14109 14125 +f 5962 14148 5964 +f 5964 14148 14149 +f 14150 14149 14151 +f 14150 14151 14152 +f 14152 14151 14153 +f 14152 14153 14154 +f 14154 14153 14155 +f 14154 14155 14156 +f 14156 14155 14157 +f 14156 14157 14158 +f 14158 14157 14159 +f 14158 14159 14160 +f 14160 14159 14161 +f 14160 14161 14162 +f 14162 14161 14163 +f 14162 14163 14164 +f 14164 5345 5839 +f 14148 5962 14165 +f 14165 5962 5960 +f 14165 5960 14166 +f 14168 5956 5954 +f 14168 5954 14169 +f 14169 5950 14170 +f 14170 5950 5949 +f 14170 5949 14171 +f 14171 5948 5345 +f 5839 14173 14174 +f 14174 14173 14175 +f 14174 14175 14176 +f 14176 14175 14177 +f 14176 14177 14178 +f 14178 14177 14179 +f 14178 14179 14180 +f 14180 14179 14181 +f 14180 14181 14182 +f 14182 14181 14183 +f 14182 14183 14184 +f 14184 14183 14185 +f 14184 14185 14186 +f 14186 14185 14187 +f 14186 14187 14188 +f 14188 14187 5986 +f 14188 5986 5964 +f 14172 5842 14189 +f 14172 14189 14173 +f 14173 14189 14175 +f 5842 6000 14189 +f 14189 6000 14190 +f 14189 14190 14175 +f 14175 14190 14177 +f 6000 5998 14190 +f 14190 5998 14191 +f 14190 14191 14177 +f 14177 14191 14179 +f 5998 5996 14191 +f 14191 5996 14192 +f 14191 14192 14179 +f 14179 14192 14181 +f 5996 5994 14192 +f 14192 5994 14193 +f 14192 14193 14181 +f 14181 14193 14183 +f 14193 14194 14183 +f 14183 14194 14185 +f 14194 14195 14185 +f 14185 14195 14187 +f 5984 5986 14195 +f 14195 5986 14187 +f 14171 5345 14163 +f 14163 14161 14171 +f 14171 14161 14170 +f 14161 14159 14170 +f 14170 14159 14169 +f 14159 14157 14169 +f 14169 14157 14168 +f 14157 14155 14168 +f 14168 14155 14167 +f 14155 14153 14167 +f 14167 14153 14166 +f 14149 14148 14165 +f 14153 14151 14166 +f 14166 14151 14165 +f 14188 5964 14150 +f 14151 14149 14165 +f 14164 5839 14174 +f 14174 14176 14164 +f 14164 14176 14162 +f 14176 14178 14162 +f 14162 14178 14160 +f 14178 14180 14160 +f 14160 14180 14158 +f 14180 14182 14158 +f 14158 14182 14156 +f 14182 14184 14156 +f 14156 14184 14154 +f 14188 14150 14152 +f 14184 14186 14154 +f 14154 14186 14152 +f 14186 14188 14152 +f 5344 5924 5345 +f 5870 14196 5344 +f 5344 14196 14197 +f 5344 14197 14198 +f 14198 14197 14199 +f 14198 14199 14200 +f 14200 14199 14201 +f 14200 14201 14202 +f 14202 14201 14203 +f 14202 14203 14204 +f 14204 14203 14205 +f 14204 14205 14206 +f 14206 14205 14207 +f 14206 14207 14208 +f 14208 14207 14209 +f 14208 14209 14210 +f 14210 14209 5906 +f 14212 5914 5916 +f 5870 5869 14196 +f 14196 5869 14213 +f 14196 14213 14197 +f 14197 14213 14199 +f 5869 5868 14213 +f 14213 14214 14199 +f 14199 14214 14201 +f 14214 5871 14215 +f 14214 14215 14201 +f 14201 14215 14203 +f 14215 14216 14203 +f 14203 14216 14205 +f 5873 5875 14216 +f 14216 14217 14205 +f 14205 14217 14207 +f 5875 5877 14217 +f 14217 5877 14218 +f 14217 14218 14207 +f 14207 14218 14209 +f 14218 5879 14209 +f 5879 5906 14209 +f 14212 5916 14219 +f 14219 5916 5918 +f 14219 5918 14220 +f 14220 5918 5920 +f 14220 5920 14221 +f 14221 14222 14202 +f 14202 14222 14200 +f 14222 14223 14200 +f 14200 14223 14198 +f 5922 5923 14223 +f 14223 5923 5924 +f 14223 5924 14198 +f 14198 5924 5344 +f 14202 14204 14221 +f 14221 14204 14220 +f 14204 14206 14220 +f 14220 14206 14219 +f 14210 14211 14212 +f 14206 14208 14219 +f 14219 14208 14212 +f 14208 14210 14212 +f 5906 5884 5910 +f 14226 14225 14227 +f 14226 14227 14228 +f 14228 14227 14229 +f 14228 14229 14230 +f 14230 14229 14231 +f 14230 14231 14232 +f 14232 14231 14233 +f 14232 14233 14234 +f 14234 14233 14235 +f 14234 14235 14236 +f 14236 14235 14237 +f 14236 14237 14238 +f 14238 14237 14239 +f 14238 14239 14240 +f 14240 14239 5981 +f 14241 5981 6001 +f 14241 6001 14242 +f 14242 6001 14243 +f 14242 14243 14244 +f 14244 14243 14245 +f 14244 14245 14246 +f 14246 14245 14247 +f 14246 14247 14248 +f 14248 14247 5939 +f 5883 5885 14224 +f 14224 5885 14249 +f 14224 14249 14225 +f 14225 14249 14227 +f 14249 14250 14227 +f 14227 14250 14229 +f 14250 14251 14229 +f 14229 14251 14231 +f 14251 5982 14252 +f 14251 14252 14231 +f 14231 14252 14233 +f 5982 5899 14252 +f 14252 5899 14253 +f 14252 14253 14233 +f 14233 14253 14235 +f 5899 5898 14253 +f 14253 14254 14235 +f 14235 14254 14237 +f 14254 5898 14255 +f 14255 5898 5981 +f 14255 5981 14239 +f 6001 14256 14257 +f 14243 14257 14245 +f 5939 14247 5940 +f 5940 14247 14258 +f 5940 14258 14256 +f 14256 14258 14257 +f 14248 5938 14259 +f 14259 5938 5937 +f 14259 5937 14260 +f 14260 5937 5942 +f 14260 5942 14261 +f 14261 5942 5944 +f 14261 5944 5911 +f 14261 5911 14262 +f 14263 14264 14265 +f 14265 14264 14266 +f 14265 14266 14267 +f 14267 14266 14268 +f 14267 14268 14269 +f 14269 14268 14232 +f 14269 14232 14234 +f 14264 5910 14270 +f 14270 5910 5884 +f 14270 5884 14271 +f 14271 5884 14226 +f 14271 14226 14228 +f 14237 14254 14255 +f 14239 14237 14255 +f 14261 14262 14272 +f 14272 14262 14263 +f 14272 14263 14265 +f 14260 14261 14273 +f 14273 14261 14272 +f 14273 14272 14274 +f 14274 14272 14265 +f 14274 14265 14267 +f 14259 14260 14275 +f 14275 14260 14273 +f 14275 14273 14276 +f 14276 14273 14274 +f 14276 14274 14277 +f 14277 14274 14267 +f 14277 14267 14269 +f 14248 14259 14278 +f 14278 14259 14275 +f 14278 14275 14279 +f 14279 14275 14276 +f 14279 14276 14280 +f 14280 14276 14277 +f 14280 14277 14281 +f 14281 14277 14269 +f 14281 14269 14234 +f 14257 14258 14245 +f 14245 14258 14247 +f 14248 14278 14246 +f 14246 14278 14282 +f 14246 14282 14244 +f 14244 14282 14283 +f 14244 14283 14242 +f 14242 14283 14241 +f 14282 14278 14279 +f 14282 14279 14284 +f 14284 14279 14280 +f 14284 14280 14285 +f 14285 14280 14281 +f 14285 14281 14236 +f 14236 14281 14234 +f 14264 14270 14266 +f 14266 14270 14286 +f 14266 14286 14268 +f 14268 14286 14230 +f 14268 14230 14232 +f 14282 14284 14283 +f 14283 14284 14287 +f 14283 14287 14241 +f 14241 14287 14240 +f 14287 14284 14285 +f 14270 14271 14286 +f 14286 14271 14228 +f 14286 14228 14230 +f 14236 14238 14285 +f 14285 14238 14287 +f 14238 14240 14287 +f 14290 14289 14291 +f 14290 14291 14292 +f 14292 14291 14293 +f 14292 14293 14294 +f 14294 14293 14295 +f 14294 14295 14296 +f 14296 14295 14297 +f 14296 14297 14298 +f 14298 14297 14299 +f 14298 14299 14300 +f 14300 14299 14301 +f 14300 14301 14302 +f 14302 14301 14303 +f 14302 14303 14304 +f 14304 14303 6075 +f 14288 6088 14305 +f 14305 6088 6087 +f 14305 6087 14306 +f 14306 6087 6086 +f 14306 6086 14307 +f 14307 6085 14308 +f 14309 6084 6082 +f 14309 6082 14310 +f 14311 6076 6075 +f 6138 14312 6100 +f 6100 14312 14313 +f 6100 14313 14304 +f 14304 14313 14314 +f 14304 14314 14302 +f 14302 14314 14315 +f 14302 14315 14300 +f 14300 14315 14316 +f 14300 14316 14298 +f 14298 14316 14317 +f 14298 14317 14296 +f 14296 14317 14318 +f 14296 14318 14294 +f 14294 14318 14319 +f 14294 14319 14292 +f 14292 14319 14320 +f 14292 14320 14290 +f 6138 6135 14312 +f 14312 14321 14313 +f 14313 14321 14314 +f 14321 14322 14314 +f 14314 14322 14315 +f 6133 6128 14322 +f 14322 14323 14315 +f 14315 14323 14316 +f 6128 6127 14323 +f 14323 14324 14316 +f 14316 14324 14317 +f 14324 6126 14325 +f 14324 14325 14317 +f 14317 14325 14318 +f 6126 6125 14325 +f 14325 6125 14326 +f 14325 14326 14318 +f 14318 14326 14319 +f 6125 6124 14326 +f 14326 6124 14327 +f 14326 14327 14319 +f 14319 14327 14320 +f 6124 6123 14327 +f 14327 6123 14320 +f 14311 6075 14303 +f 14303 14301 14311 +f 14311 14301 14310 +f 14301 14299 14310 +f 14310 14299 14309 +f 14299 14297 14309 +f 14309 14297 14308 +f 14297 14295 14308 +f 14308 14295 14307 +f 14295 14293 14307 +f 14307 14293 14306 +f 14289 14288 14305 +f 14293 14291 14306 +f 14306 14291 14305 +f 14291 14289 14305 +f 6075 6098 6100 +f 6072 14328 6074 +f 6074 14329 14330 +f 14330 14329 14331 +f 14330 14331 14332 +f 14332 14331 14333 +f 14332 14333 14334 +f 14334 14333 14335 +f 14334 14335 14336 +f 14336 14335 14337 +f 14336 14337 14338 +f 14338 14337 14339 +f 14338 14339 14340 +f 14340 14339 14341 +f 14340 14341 14342 +f 14342 14341 14343 +f 14342 14343 14344 +f 14344 14343 6058 +f 14344 6058 6118 +f 14328 6072 14345 +f 14345 6070 14346 +f 14347 6068 6066 +f 14348 6066 6064 +f 14348 6064 14349 +f 14349 6064 6062 +f 14349 6062 14350 +f 14350 6062 6060 +f 14350 6060 14351 +f 6118 14352 14353 +f 14354 14353 14355 +f 14354 14355 14356 +f 14356 14355 14357 +f 14356 14357 14358 +f 14358 14357 14359 +f 14358 14359 14360 +f 14360 14359 14361 +f 14360 14361 14362 +f 14362 14361 14363 +f 14362 14363 14364 +f 14364 14363 14365 +f 14364 14365 14366 +f 14366 14365 14367 +f 14366 14367 14368 +f 14368 6098 6074 +f 6117 6114 14352 +f 14352 14369 14353 +f 14353 14369 14355 +f 6114 6112 14369 +f 14369 6112 14370 +f 14369 14370 14355 +f 14355 14370 14357 +f 6112 6110 14370 +f 14370 6110 14371 +f 14370 14371 14357 +f 14357 14371 14359 +f 14371 14372 14359 +f 14359 14372 14361 +f 14372 14373 14361 +f 14361 14373 14363 +f 6106 6104 14373 +f 14373 6104 14374 +f 14373 14374 14363 +f 14363 14374 14365 +f 6104 6096 14374 +f 14374 6096 14375 +f 14374 14375 14365 +f 14365 14375 14367 +f 14351 6058 14343 +f 14343 14341 14351 +f 14351 14341 14350 +f 14341 14339 14350 +f 14350 14339 14349 +f 14339 14337 14349 +f 14349 14337 14348 +f 14337 14335 14348 +f 14348 14335 14347 +f 14335 14333 14347 +f 14347 14333 14346 +f 14329 14328 14345 +f 14333 14331 14346 +f 14346 14331 14345 +f 14368 6074 14330 +f 14331 14329 14345 +f 14344 6118 14354 +f 14354 14356 14344 +f 14344 14356 14342 +f 14356 14358 14342 +f 14342 14358 14340 +f 14358 14360 14340 +f 14340 14360 14338 +f 14360 14362 14338 +f 14338 14362 14336 +f 14362 14364 14336 +f 14336 14364 14334 +f 14368 14330 14332 +f 14364 14366 14334 +f 14334 14366 14332 +f 14366 14368 14332 +f 5947 14376 14377 +f 5947 14377 14378 +f 14378 14377 14379 +f 14378 14379 14380 +f 14380 14379 14381 +f 14380 14381 14382 +f 14382 14381 14383 +f 14382 14383 14384 +f 14384 14383 14385 +f 14384 14385 14386 +f 14386 14385 14387 +f 14386 14387 14388 +f 14388 14387 14389 +f 14388 14389 14390 +f 14390 14389 5985 +f 14390 5985 14391 +f 14391 5985 5991 +f 14392 5991 5993 +f 14392 5993 5995 +f 5952 5951 14376 +f 14376 14393 14377 +f 14377 14393 14379 +f 14393 5953 14394 +f 14393 14394 14379 +f 14379 14394 14381 +f 14394 5955 14395 +f 14394 14395 14381 +f 14381 14395 14383 +f 5955 5957 14395 +f 14395 5957 14396 +f 14395 14396 14383 +f 14383 14396 14385 +f 14396 5959 14397 +f 14396 14397 14385 +f 14385 14397 14387 +f 14397 14398 14387 +f 14387 14398 14389 +f 5963 5985 14389 +f 14392 5995 14399 +f 14399 5995 5997 +f 14399 5997 14400 +f 14400 5997 5999 +f 14400 5999 14401 +f 14401 14402 14382 +f 14382 14402 14380 +f 14402 14403 14380 +f 14380 14403 14378 +f 5844 5843 14403 +f 14403 5843 5840 +f 14403 5840 14378 +f 14378 5840 5947 +f 14382 14384 14401 +f 14401 14384 14400 +f 14384 14386 14400 +f 14400 14386 14399 +f 14390 14391 14392 +f 14386 14388 14399 +f 14399 14388 14392 +f 14388 14390 14392 +f 5985 5968 5989 +f 5968 14405 14406 +f 14406 14405 14407 +f 14406 14407 14408 +f 14408 14407 14409 +f 14408 14409 14410 +f 14410 14409 14411 +f 14410 14411 14412 +f 14412 14411 14413 +f 14412 14413 14414 +f 14414 14413 14415 +f 14414 14415 14416 +f 14416 14415 14417 +f 14416 14417 14418 +f 14418 14417 14419 +f 14418 14419 14420 +f 14420 14419 6091 +f 14420 6091 14421 +f 14421 6091 6121 +f 14421 6121 14422 +f 14422 14423 14424 +f 14424 14423 14425 +f 14424 14425 14426 +f 14426 14425 14427 +f 14426 14427 14428 +f 14404 14429 14405 +f 14405 14429 14407 +f 14429 5971 14430 +f 14429 14430 14407 +f 14407 14430 14409 +f 14430 14431 14409 +f 14409 14431 14411 +f 14431 14432 14411 +f 14411 14432 14413 +f 6094 6093 14432 +f 14432 14433 14413 +f 14413 14433 14415 +f 6093 6092 14433 +f 14433 6092 14434 +f 14433 14434 14415 +f 14415 14434 14417 +f 14434 6092 14435 +f 14435 6092 6091 +f 6121 14436 14437 +f 14423 14437 14425 +f 6120 14427 14438 +f 14436 14438 14437 +f 14428 6049 14439 +f 14439 6050 14440 +f 14440 6050 6053 +f 14441 6053 6055 +f 14441 6055 5990 +f 14441 5990 14442 +f 14443 14444 14445 +f 14445 14444 14446 +f 14445 14446 14447 +f 14447 14446 14448 +f 14447 14448 14449 +f 14449 14448 14412 +f 14449 14412 14414 +f 14444 5989 14450 +f 14450 5989 5968 +f 14450 5968 14451 +f 14451 14406 14408 +f 14417 14434 14435 +f 14419 14417 14435 +f 14441 14442 14452 +f 14452 14442 14443 +f 14452 14443 14445 +f 14440 14441 14453 +f 14453 14441 14452 +f 14453 14452 14454 +f 14454 14452 14445 +f 14454 14445 14447 +f 14439 14440 14455 +f 14455 14440 14453 +f 14455 14453 14456 +f 14456 14453 14454 +f 14456 14454 14457 +f 14457 14454 14447 +f 14457 14447 14449 +f 14428 14439 14458 +f 14458 14439 14455 +f 14458 14455 14459 +f 14459 14455 14456 +f 14459 14456 14460 +f 14460 14456 14457 +f 14460 14457 14461 +f 14461 14457 14449 +f 14461 14449 14414 +f 14437 14438 14425 +f 14425 14438 14427 +f 14428 14458 14426 +f 14426 14458 14462 +f 14426 14462 14424 +f 14424 14462 14463 +f 14424 14463 14422 +f 14422 14463 14421 +f 14462 14458 14459 +f 14462 14459 14464 +f 14464 14459 14460 +f 14464 14460 14465 +f 14465 14460 14461 +f 14465 14461 14416 +f 14416 14461 14414 +f 14444 14450 14446 +f 14446 14450 14466 +f 14446 14466 14448 +f 14448 14466 14410 +f 14448 14410 14412 +f 14462 14464 14463 +f 14463 14464 14467 +f 14463 14467 14421 +f 14421 14467 14420 +f 14467 14464 14465 +f 14450 14451 14466 +f 14466 14451 14408 +f 14466 14408 14410 +f 14416 14418 14465 +f 14465 14418 14467 +f 14418 14420 14467 +f 6172 14468 6173 +f 6173 14468 14469 +f 6173 14469 14470 +f 14470 14469 14471 +f 14470 14471 14472 +f 14472 14471 14473 +f 14472 14473 14474 +f 14474 14473 14475 +f 14474 14475 14476 +f 14476 14475 14477 +f 14476 14477 14478 +f 14478 14477 14479 +f 14478 14479 14480 +f 14480 14479 14481 +f 14480 14481 14482 +f 14482 14481 14483 +f 14482 14483 14484 +f 14484 14483 6159 +f 14485 6172 6171 +f 14488 6168 14489 +f 14489 6168 6166 +f 14489 6166 14490 +f 14490 6166 6164 +f 6188 14493 14484 +f 14484 14493 14494 +f 14484 14494 14482 +f 14482 14494 14495 +f 14482 14495 14480 +f 14480 14495 14496 +f 14480 14496 14478 +f 14478 14496 14497 +f 14478 14497 14476 +f 14476 14497 14498 +f 14476 14498 14474 +f 14474 14498 14499 +f 14474 14499 14472 +f 14472 14499 14500 +f 14472 14500 14470 +f 6251 6248 14492 +f 14492 6248 14501 +f 14492 14501 14493 +f 14493 14501 14494 +f 6248 6246 14501 +f 14501 6246 14502 +f 14501 14502 14494 +f 14494 14502 14495 +f 6246 6241 14502 +f 14502 6241 14503 +f 14502 14503 14495 +f 14495 14503 14496 +f 6241 6240 14503 +f 14503 6240 14504 +f 14503 14504 14496 +f 14496 14504 14497 +f 6240 6239 14504 +f 14504 6239 14505 +f 14504 14505 14497 +f 14497 14505 14498 +f 6239 6237 14505 +f 14505 6237 14506 +f 14505 14506 14498 +f 14498 14506 14499 +f 6237 6236 14506 +f 14506 14507 14499 +f 14499 14507 14500 +f 6236 6235 14507 +f 14491 6159 14483 +f 14483 14481 14491 +f 14491 14481 14490 +f 14481 14479 14490 +f 14490 14479 14489 +f 14479 14477 14489 +f 14489 14477 14488 +f 14477 14475 14488 +f 14488 14475 14487 +f 14475 14473 14487 +f 14487 14473 14486 +f 14469 14468 14485 +f 14473 14471 14486 +f 14486 14471 14485 +f 14471 14469 14485 +f 6158 6186 6159 +f 6159 6186 6188 +f 6156 14508 6158 +f 6158 14508 14509 +f 14510 14509 14511 +f 14510 14511 14512 +f 14512 14511 14513 +f 14512 14513 14514 +f 14514 14513 14515 +f 14514 14515 14516 +f 14516 14515 14517 +f 14516 14517 14518 +f 14518 14517 14519 +f 14518 14519 14520 +f 14520 14519 14521 +f 14520 14521 14522 +f 14522 14521 14523 +f 14522 14523 14524 +f 14524 6140 6232 +f 14508 6156 14525 +f 14525 6156 6154 +f 14526 6154 6152 +f 14526 6152 14527 +f 14527 6152 6150 +f 14528 6150 6148 +f 14528 6148 14529 +f 14529 6148 6143 +f 14529 6143 14530 +f 14534 14533 14535 +f 14534 14535 14536 +f 14536 14535 14537 +f 14536 14537 14538 +f 14538 14537 14539 +f 14538 14539 14540 +f 14540 14539 14541 +f 14540 14541 14542 +f 14542 14541 14543 +f 14542 14543 14544 +f 14544 14543 14545 +f 14544 14545 14546 +f 14546 14545 14547 +f 14546 14547 14548 +f 14548 6186 6158 +f 14532 6202 14549 +f 14532 14549 14533 +f 14533 14549 14535 +f 6202 6200 14549 +f 14549 6200 14550 +f 14549 14550 14535 +f 14535 14550 14537 +f 6200 6198 14550 +f 14550 6198 14551 +f 14550 14551 14537 +f 14537 14551 14539 +f 6198 6196 14551 +f 14551 6196 14552 +f 14551 14552 14539 +f 14539 14552 14541 +f 14552 6194 14553 +f 14552 14553 14541 +f 14541 14553 14543 +f 14553 14554 14543 +f 14543 14554 14545 +f 14554 14555 14545 +f 14545 14555 14547 +f 6184 6186 14555 +f 14523 14521 14531 +f 14531 14521 14530 +f 14521 14519 14530 +f 14530 14519 14529 +f 14519 14517 14529 +f 14529 14517 14528 +f 14517 14515 14528 +f 14528 14515 14527 +f 14515 14513 14527 +f 14527 14513 14526 +f 14509 14508 14525 +f 14513 14511 14526 +f 14526 14511 14525 +f 14548 6158 14510 +f 14511 14509 14525 +f 14524 6232 14534 +f 14534 14536 14524 +f 14524 14536 14522 +f 14536 14538 14522 +f 14522 14538 14520 +f 14538 14540 14520 +f 14520 14540 14518 +f 14540 14542 14518 +f 14518 14542 14516 +f 14542 14544 14516 +f 14516 14544 14514 +f 14548 14510 14512 +f 14544 14546 14514 +f 14514 14546 14512 +f 14546 14548 14512 +f 6139 6116 6140 +f 6183 14556 6139 +f 6139 14557 14558 +f 14558 14557 14559 +f 14558 14559 14560 +f 14560 14559 14561 +f 14560 14561 14562 +f 14562 14561 14563 +f 14562 14563 14564 +f 14564 14563 14565 +f 14564 14565 14566 +f 14566 14565 14567 +f 14566 14567 14568 +f 14568 14567 14569 +f 14568 14569 14570 +f 14570 14569 6097 +f 14570 6097 14571 +f 14571 6097 6103 +f 14571 6103 14572 +f 14572 6103 6105 +f 14572 6105 6107 +f 14556 14573 14557 +f 14557 14573 14559 +f 14573 6063 14574 +f 14573 14574 14559 +f 14559 14574 14561 +f 14574 6065 14575 +f 14574 14575 14561 +f 14561 14575 14563 +f 6065 6067 14575 +f 14575 14576 14563 +f 14563 14576 14565 +f 6067 6069 14576 +f 14576 6069 14577 +f 14576 14577 14565 +f 14565 14577 14567 +f 6069 6071 14577 +f 14577 14578 14567 +f 14567 14578 14569 +f 6071 6073 14578 +f 6073 6097 14569 +f 14572 6107 14579 +f 14579 6107 6109 +f 14579 6109 14580 +f 14580 6109 6111 +f 14580 6111 14581 +f 14581 14582 14562 +f 14562 14582 14560 +f 6111 6113 14582 +f 14582 14583 14560 +f 14560 14583 14558 +f 6113 6115 14583 +f 14558 6116 6139 +f 14562 14564 14581 +f 14581 14564 14580 +f 14564 14566 14580 +f 14580 14566 14579 +f 14570 14571 14572 +f 14566 14568 14579 +f 14579 14568 14572 +f 14568 14570 14572 +f 6077 14584 6078 +f 6078 14585 14586 +f 14586 14585 14587 +f 14586 14587 14588 +f 14588 14587 14589 +f 14588 14589 14590 +f 14590 14589 14591 +f 14590 14591 14592 +f 14592 14591 14593 +f 14592 14593 14594 +f 14594 14593 14595 +f 14594 14595 14596 +f 14596 14595 14597 +f 14596 14597 14598 +f 14598 14597 14599 +f 14598 14599 14600 +f 14600 14599 6178 +f 14600 6178 14601 +f 14601 6178 6234 +f 14601 6234 14602 +f 14602 6234 14603 +f 14602 14603 14604 +f 14604 14603 14605 +f 14604 14605 14606 +f 14606 14605 14607 +f 14606 14607 14608 +f 14608 6131 6130 +f 14584 6079 14609 +f 14584 14609 14585 +f 14585 14609 14587 +f 6079 6081 14609 +f 14609 6081 14610 +f 14609 14610 14587 +f 14587 14610 14589 +f 14610 6182 14611 +f 14610 14611 14589 +f 14589 14611 14591 +f 6182 6181 14611 +f 14611 6181 14612 +f 14611 14612 14591 +f 14591 14612 14593 +f 6181 6180 14612 +f 14612 6180 14613 +f 14612 14613 14593 +f 14593 14613 14595 +f 6180 6179 14613 +f 14613 6179 14614 +f 14613 14614 14595 +f 14595 14614 14597 +f 6132 14616 6234 +f 6234 14616 14617 +f 6234 14617 14603 +f 14603 14617 14605 +f 6131 14607 6132 +f 14616 14618 14617 +f 14619 6130 6129 +f 14620 6129 6134 +f 14621 6134 6136 +f 14621 6136 6102 +f 14621 6102 14622 +f 14622 6102 6101 +f 14622 6101 14623 +f 14623 6101 14624 +f 14623 14624 14625 +f 14625 14624 14626 +f 14625 14626 14627 +f 14627 14626 14628 +f 14627 14628 14629 +f 14629 14628 14592 +f 14629 14592 14594 +f 14624 6101 14630 +f 14630 6101 6078 +f 14630 6078 14631 +f 14631 14586 14588 +f 14597 14614 14615 +f 14599 14597 14615 +f 14621 14622 14632 +f 14632 14622 14623 +f 14632 14623 14625 +f 14620 14621 14633 +f 14633 14621 14632 +f 14633 14632 14634 +f 14634 14632 14625 +f 14634 14625 14627 +f 14619 14620 14635 +f 14635 14620 14633 +f 14635 14633 14636 +f 14636 14633 14634 +f 14636 14634 14637 +f 14637 14634 14627 +f 14637 14627 14629 +f 14608 14619 14638 +f 14638 14619 14635 +f 14638 14635 14639 +f 14639 14635 14636 +f 14639 14636 14640 +f 14640 14636 14637 +f 14640 14637 14641 +f 14641 14637 14629 +f 14641 14629 14594 +f 14617 14618 14605 +f 14605 14618 14607 +f 14608 14638 14606 +f 14606 14638 14642 +f 14606 14642 14604 +f 14604 14642 14643 +f 14604 14643 14602 +f 14602 14643 14601 +f 14642 14638 14639 +f 14642 14639 14644 +f 14644 14639 14640 +f 14644 14640 14645 +f 14645 14640 14641 +f 14645 14641 14596 +f 14596 14641 14594 +f 14624 14630 14626 +f 14626 14630 14646 +f 14626 14646 14628 +f 14628 14646 14590 +f 14628 14590 14592 +f 14642 14644 14643 +f 14643 14644 14647 +f 14643 14647 14601 +f 14601 14647 14600 +f 14647 14644 14645 +f 14630 14631 14646 +f 14646 14631 14588 +f 14646 14588 14590 +f 14596 14598 14645 +f 14645 14598 14647 +f 14598 14600 14647 +f 6285 6345 6286 +f 6286 6345 6310 +f 6284 14648 6285 +f 6285 14648 14649 +f 6285 14649 14650 +f 14650 14649 14651 +f 14650 14651 14652 +f 14652 14651 14653 +f 14652 14653 14654 +f 14654 14653 14655 +f 14654 14655 14656 +f 14656 14655 14657 +f 14656 14657 14658 +f 14658 14657 14659 +f 14658 14659 14660 +f 14660 14659 14661 +f 14660 14661 14662 +f 14662 14661 14663 +f 14662 14663 14664 +f 14664 14663 6271 +f 14664 6271 6293 +f 14648 6284 14665 +f 14665 6283 14666 +f 14666 6283 6282 +f 14667 6281 14668 +f 14668 6281 6280 +f 14668 6280 14669 +f 14669 6278 14670 +f 14670 6278 6276 +f 14671 6276 6272 +f 6358 14672 6293 +f 6293 14672 14673 +f 6293 14673 14664 +f 14664 14673 14674 +f 14664 14674 14662 +f 14662 14674 14675 +f 14662 14675 14660 +f 14660 14675 14676 +f 14660 14676 14658 +f 14658 14676 14677 +f 14658 14677 14656 +f 14656 14677 14678 +f 14656 14678 14654 +f 14654 14678 14679 +f 14654 14679 14652 +f 14652 14679 14680 +f 14652 14680 14650 +f 14650 6345 6285 +f 14672 14681 14673 +f 14673 14681 14674 +f 6355 6353 14681 +f 14681 6353 14682 +f 14681 14682 14674 +f 14674 14682 14675 +f 6353 6352 14682 +f 14682 6352 14683 +f 14682 14683 14675 +f 14675 14683 14676 +f 14683 6349 14684 +f 14683 14684 14676 +f 14676 14684 14677 +f 6349 6348 14684 +f 14684 14685 14677 +f 14677 14685 14678 +f 14685 14686 14678 +f 14678 14686 14679 +f 14686 6346 14687 +f 14686 14687 14679 +f 14679 14687 14680 +f 6346 6345 14687 +f 14663 14661 14671 +f 14671 14661 14670 +f 14661 14659 14670 +f 14670 14659 14669 +f 14659 14657 14669 +f 14669 14657 14668 +f 14657 14655 14668 +f 14668 14655 14667 +f 14655 14653 14667 +f 14667 14653 14666 +f 14649 14648 14665 +f 14653 14651 14666 +f 14666 14651 14665 +f 14651 14649 14665 +f 6271 6291 6293 +f 6268 14688 6270 +f 6270 14689 14690 +f 14690 14689 14691 +f 14690 14691 14692 +f 14692 14691 14693 +f 14692 14693 14694 +f 14694 14693 14695 +f 14694 14695 14696 +f 14696 14695 14697 +f 14696 14697 14698 +f 14698 14697 14699 +f 14698 14699 14700 +f 14700 14699 14701 +f 14700 14701 14702 +f 14702 14701 14703 +f 14702 14703 14704 +f 14704 14703 6254 +f 14704 6254 6205 +f 14688 6268 14705 +f 14705 6266 14706 +f 14707 6264 6262 +f 14707 6262 14708 +f 14708 6262 6260 +f 14708 6260 14709 +f 14709 6260 6258 +f 14714 14713 14715 +f 14714 14715 14716 +f 14716 14715 14717 +f 14716 14717 14718 +f 14718 14717 14719 +f 14718 14719 14720 +f 14720 14719 14721 +f 14720 14721 14722 +f 14722 14721 14723 +f 14722 14723 14724 +f 14724 14723 14725 +f 14724 14725 14726 +f 14726 14725 14727 +f 14726 14727 14728 +f 14728 6291 6270 +f 6309 6307 14712 +f 14712 14729 14713 +f 14713 14729 14715 +f 6307 6305 14729 +f 14729 6305 14730 +f 14729 14730 14715 +f 14715 14730 14717 +f 6305 6303 14730 +f 14730 6303 14731 +f 14730 14731 14717 +f 14717 14731 14719 +f 6303 6301 14731 +f 14731 14732 14719 +f 14719 14732 14721 +f 6301 6299 14732 +f 14732 6299 14733 +f 14732 14733 14721 +f 14721 14733 14723 +f 14733 14734 14723 +f 14723 14734 14725 +f 14734 6289 14735 +f 14734 14735 14725 +f 14725 14735 14727 +f 14711 6254 14703 +f 14703 14701 14711 +f 14711 14701 14710 +f 14701 14699 14710 +f 14710 14699 14709 +f 14699 14697 14709 +f 14709 14697 14708 +f 14697 14695 14708 +f 14708 14695 14707 +f 14695 14693 14707 +f 14707 14693 14706 +f 14689 14688 14705 +f 14693 14691 14706 +f 14706 14691 14705 +f 14728 6270 14690 +f 14691 14689 14705 +f 14704 6205 14714 +f 14714 14716 14704 +f 14704 14716 14702 +f 14716 14718 14702 +f 14702 14718 14700 +f 14718 14720 14700 +f 14700 14720 14698 +f 14720 14722 14698 +f 14698 14722 14696 +f 14722 14724 14696 +f 14696 14724 14694 +f 14728 14690 14692 +f 14724 14726 14694 +f 14694 14726 14692 +f 14726 14728 14692 +f 6146 6204 6254 +f 6145 14736 6146 +f 6146 14736 14737 +f 6146 14737 14738 +f 14738 14737 14739 +f 14738 14739 14740 +f 14740 14739 14741 +f 14740 14741 14742 +f 14742 14741 14743 +f 14742 14743 14744 +f 14744 14743 14745 +f 14744 14745 14746 +f 14746 14745 14747 +f 14746 14747 14748 +f 14748 14747 14749 +f 14748 14749 14750 +f 14750 14749 6185 +f 14752 6193 6195 +f 6145 6144 14736 +f 14736 6144 14753 +f 14736 14753 14737 +f 14737 14753 14739 +f 6144 6147 14753 +f 14753 6147 14754 +f 14753 14754 14739 +f 14739 14754 14741 +f 6147 6149 14754 +f 14754 14755 14741 +f 14741 14755 14743 +f 6149 6151 14755 +f 14755 14756 14743 +f 14743 14756 14745 +f 14756 14757 14745 +f 14745 14757 14747 +f 14757 14758 14747 +f 14747 14758 14749 +f 6155 6157 14758 +f 6157 6185 14749 +f 14752 6195 14759 +f 14759 6195 6197 +f 14759 6197 14760 +f 14760 6197 6199 +f 14760 6199 14761 +f 14761 14762 14742 +f 14742 14762 14740 +f 6199 6201 14762 +f 14762 6201 14763 +f 14762 14763 14740 +f 14740 14763 14738 +f 14763 6203 6204 +f 14763 6204 14738 +f 14738 6204 6146 +f 14742 14744 14761 +f 14761 14744 14760 +f 14744 14746 14760 +f 14760 14746 14759 +f 14750 14751 14752 +f 14746 14748 14759 +f 14759 14748 14752 +f 14748 14750 14752 +f 6161 14764 6162 +f 6162 14764 14765 +f 6162 14765 14766 +f 14766 14765 14767 +f 14766 14767 14768 +f 14768 14767 14769 +f 14768 14769 14770 +f 14770 14769 14771 +f 14770 14771 14772 +f 14772 14771 14773 +f 14772 14773 14774 +f 14774 14773 14775 +f 14774 14775 14776 +f 14776 14775 14777 +f 14776 14777 14778 +f 14778 14777 14779 +f 14778 14779 14780 +f 14781 6286 6310 +f 14781 6310 14782 +f 14782 14783 14784 +f 14784 14783 14785 +f 14784 14785 14786 +f 14786 14785 14787 +f 14786 14787 14788 +f 14788 14787 6244 +f 6161 6163 14764 +f 14764 6163 14789 +f 14764 14789 14765 +f 14765 14789 14767 +f 14789 14790 14767 +f 14767 14790 14769 +f 6165 6288 14790 +f 14790 6288 14791 +f 14790 14791 14769 +f 14769 14791 14771 +f 6288 6287 14791 +f 14791 6287 14792 +f 14791 14792 14771 +f 14771 14792 14773 +f 14792 6177 14793 +f 14792 14793 14773 +f 14773 14793 14775 +f 14793 14794 14775 +f 14775 14794 14777 +f 14794 6176 14795 +f 14795 6176 6286 +f 14795 6286 14779 +f 14783 14797 14785 +f 14796 14798 14797 +f 14799 6243 6242 +f 14801 6247 6249 +f 14801 6249 6190 +f 14801 6190 14802 +f 14803 14804 14805 +f 14805 14804 14806 +f 14805 14806 14807 +f 14807 14806 14808 +f 14807 14808 14809 +f 14809 14808 14772 +f 14809 14772 14774 +f 14810 6189 6162 +f 14810 6162 14811 +f 14811 6162 14766 +f 14811 14766 14768 +f 14777 14794 14795 +f 14779 14777 14795 +f 14801 14802 14812 +f 14812 14802 14803 +f 14812 14803 14805 +f 14800 14801 14813 +f 14813 14801 14812 +f 14813 14812 14814 +f 14814 14812 14805 +f 14814 14805 14807 +f 14799 14800 14815 +f 14815 14800 14813 +f 14815 14813 14816 +f 14816 14813 14814 +f 14816 14814 14817 +f 14817 14814 14807 +f 14817 14807 14809 +f 14788 14799 14818 +f 14818 14799 14815 +f 14818 14815 14819 +f 14819 14815 14816 +f 14819 14816 14820 +f 14820 14816 14817 +f 14820 14817 14821 +f 14821 14817 14809 +f 14821 14809 14774 +f 14797 14798 14785 +f 14785 14798 14787 +f 14788 14818 14786 +f 14786 14818 14822 +f 14786 14822 14784 +f 14784 14822 14823 +f 14784 14823 14782 +f 14782 14823 14781 +f 14822 14818 14819 +f 14822 14819 14824 +f 14824 14819 14820 +f 14824 14820 14825 +f 14825 14820 14821 +f 14825 14821 14776 +f 14776 14821 14774 +f 14804 14810 14806 +f 14806 14810 14826 +f 14806 14826 14808 +f 14808 14826 14770 +f 14808 14770 14772 +f 14822 14824 14823 +f 14823 14824 14827 +f 14823 14827 14781 +f 14781 14827 14780 +f 14827 14824 14825 +f 14810 14811 14826 +f 14826 14811 14768 +f 14826 14768 14770 +f 14776 14778 14825 +f 14825 14778 14827 +f 14778 14780 14827 +f 4399 6385 4398 +f 4400 14828 4399 +f 4399 14828 14829 +f 14830 14829 14831 +f 14830 14831 14832 +f 14832 14831 14833 +f 14832 14833 14834 +f 14834 14833 14835 +f 14834 14835 14836 +f 14836 14835 14837 +f 14836 14837 14838 +f 14838 14837 14839 +f 14838 14839 14840 +f 14840 14839 14841 +f 14840 14841 14842 +f 14842 14841 14843 +f 14842 14843 14844 +f 14844 4412 6228 +f 14828 4400 14845 +f 14845 4400 4402 +f 14845 4402 14846 +f 14846 4403 14847 +f 14847 4403 4404 +f 14847 4404 14848 +f 14848 4404 4405 +f 14850 4406 4408 +f 14850 4408 14851 +f 14851 4408 4410 +f 6400 14852 6228 +f 14844 14853 14854 +f 14844 14854 14842 +f 14842 14854 14855 +f 14842 14855 14840 +f 14840 14855 14856 +f 14840 14856 14838 +f 14838 14856 14857 +f 14838 14857 14836 +f 14836 14857 14858 +f 14836 14858 14834 +f 14834 14858 14859 +f 14834 14859 14832 +f 14832 14859 14860 +f 14832 14860 14830 +f 14830 6385 4399 +f 14852 6397 14861 +f 14852 14861 14853 +f 14853 14861 14854 +f 14861 6395 14862 +f 14861 14862 14854 +f 14854 14862 14855 +f 6395 6390 14862 +f 14862 6390 14863 +f 14862 14863 14855 +f 14855 14863 14856 +f 14863 14864 14856 +f 14856 14864 14857 +f 14864 6388 14865 +f 14864 14865 14857 +f 14857 14865 14858 +f 6388 6387 14865 +f 14865 6387 14866 +f 14865 14866 14858 +f 14858 14866 14859 +f 14866 6386 14867 +f 14866 14867 14859 +f 14859 14867 14860 +f 6386 6385 14867 +f 14851 4412 14843 +f 14843 14841 14851 +f 14851 14841 14850 +f 14841 14839 14850 +f 14850 14839 14849 +f 14839 14837 14849 +f 14849 14837 14848 +f 14837 14835 14848 +f 14848 14835 14847 +f 14835 14833 14847 +f 14847 14833 14846 +f 14829 14828 14845 +f 14833 14831 14846 +f 14846 14831 14845 +f 14831 14829 14845 +f 6376 6226 4412 +f 4412 6226 6228 +f 6375 14868 6376 +f 6376 14868 14869 +f 6376 14869 14870 +f 14870 14869 14871 +f 14870 14871 14872 +f 14872 14871 14873 +f 14872 14873 14874 +f 14874 14873 14875 +f 14874 14875 14876 +f 14876 14875 14877 +f 14876 14877 14878 +f 14878 14877 14879 +f 14878 14879 14880 +f 14880 14879 14881 +f 14880 14881 14882 +f 14882 14881 14883 +f 14882 14883 14884 +f 14884 14883 6361 +f 14884 6361 6208 +f 14868 6375 14885 +f 14885 6375 6373 +f 14885 6373 14886 +f 14886 6373 6371 +f 14886 6371 14887 +f 14887 6371 6369 +f 14887 6369 14888 +f 14889 6367 6365 +f 14890 6363 14891 +f 14891 6359 6361 +f 6210 14892 6208 +f 6208 14892 14893 +f 6208 14893 14894 +f 14894 14893 14895 +f 14894 14895 14896 +f 14896 14895 14897 +f 14896 14897 14898 +f 14898 14897 14899 +f 14898 14899 14900 +f 14900 14899 14901 +f 14900 14901 14902 +f 14902 14901 14903 +f 14902 14903 14904 +f 14904 14903 14905 +f 14904 14905 14906 +f 14906 14905 14907 +f 14906 14907 14908 +f 14908 14907 6226 +f 14908 6226 6376 +f 6210 6212 14892 +f 14892 6212 14909 +f 14892 14909 14893 +f 14893 14909 14895 +f 6212 6214 14909 +f 14909 6214 14910 +f 14909 14910 14895 +f 14895 14910 14897 +f 6214 6216 14910 +f 14910 6216 14911 +f 14910 14911 14897 +f 14897 14911 14899 +f 14911 6218 14912 +f 14911 14912 14899 +f 14899 14912 14901 +f 14912 6220 14913 +f 14912 14913 14901 +f 14901 14913 14903 +f 6220 6222 14913 +f 14913 6222 14914 +f 14913 14914 14903 +f 14903 14914 14905 +f 6222 6224 14914 +f 14914 14915 14905 +f 14905 14915 14907 +f 14883 14881 14891 +f 14891 14881 14890 +f 14881 14879 14890 +f 14890 14879 14889 +f 14879 14877 14889 +f 14889 14877 14888 +f 14877 14875 14888 +f 14888 14875 14887 +f 14875 14873 14887 +f 14887 14873 14886 +f 14869 14868 14885 +f 14873 14871 14886 +f 14886 14871 14885 +f 14908 6376 14870 +f 14871 14869 14885 +f 14884 6208 14894 +f 14894 14896 14884 +f 14884 14896 14882 +f 14896 14898 14882 +f 14882 14898 14880 +f 14898 14900 14880 +f 14880 14900 14878 +f 14900 14902 14878 +f 14878 14902 14876 +f 14902 14904 14876 +f 14876 14904 14874 +f 14908 14870 14872 +f 14904 14906 14874 +f 14874 14906 14872 +f 14906 14908 14872 +f 6253 6207 6361 +f 6361 6207 6208 +f 6255 14916 6253 +f 6253 14916 14917 +f 6253 14917 14918 +f 14918 14917 14919 +f 14918 14919 14920 +f 14920 14919 14921 +f 14920 14921 14922 +f 14922 14921 14923 +f 14922 14923 14924 +f 14924 14923 14925 +f 14924 14925 14926 +f 14926 14925 14927 +f 14926 14927 14928 +f 14928 14927 14929 +f 14928 14929 14930 +f 14930 14929 6290 +f 14930 6290 14931 +f 14931 6290 6296 +f 14931 6296 14932 +f 14932 6296 6298 +f 14932 6298 6300 +f 6255 6257 14916 +f 14916 14933 14917 +f 14917 14933 14919 +f 14933 14934 14919 +f 14919 14934 14921 +f 14934 14935 14921 +f 14921 14935 14923 +f 14935 6263 14936 +f 14935 14936 14923 +f 14923 14936 14925 +f 14936 14937 14925 +f 14925 14937 14927 +f 6265 6267 14937 +f 14937 14938 14927 +f 14927 14938 14929 +f 6267 6269 14938 +f 14938 6269 14929 +f 6269 6290 14929 +f 14932 6300 14939 +f 14939 6300 6302 +f 14939 6302 14940 +f 14940 6302 6304 +f 14940 6304 14941 +f 14941 6304 14942 +f 14941 14942 14922 +f 14922 14942 14920 +f 6304 6306 14942 +f 14942 6306 14943 +f 14942 14943 14920 +f 14920 14943 14918 +f 6306 6308 14943 +f 14943 6308 6207 +f 14918 6207 6253 +f 14922 14924 14941 +f 14941 14924 14940 +f 14924 14926 14940 +f 14940 14926 14939 +f 14930 14931 14932 +f 14926 14928 14939 +f 14939 14928 14932 +f 14928 14930 14932 +f 14946 14945 14947 +f 14946 14947 14948 +f 14948 14947 14949 +f 14948 14949 14950 +f 14950 14949 14951 +f 14950 14951 14952 +f 14952 14951 14953 +f 14952 14953 14954 +f 14954 14953 14955 +f 14954 14955 14956 +f 14956 14955 14957 +f 14956 14957 14958 +f 14958 14957 14959 +f 14958 14959 14960 +f 14961 4398 6383 +f 14961 6383 14962 +f 14962 14963 14964 +f 14964 14963 14965 +f 14964 14965 14966 +f 14966 14965 14967 +f 14966 14967 14968 +f 14944 14969 14945 +f 14945 14969 14947 +f 14969 14970 14947 +f 14947 14970 14949 +f 14970 6380 14971 +f 14970 14971 14949 +f 14949 14971 14951 +f 6380 6379 14971 +f 14971 6379 14972 +f 14971 14972 14951 +f 14951 14972 14953 +f 6379 6378 14972 +f 14972 6378 14973 +f 14972 14973 14953 +f 14953 14973 14955 +f 6378 6377 14973 +f 14973 14974 14955 +f 14955 14974 14957 +f 14975 6377 4398 +f 14975 4398 14959 +f 6382 14976 6383 +f 6383 14976 14977 +f 6383 14977 14963 +f 14963 14977 14965 +f 6382 14967 14978 +f 14976 14978 14977 +f 14979 6350 6351 +f 14979 6351 14980 +f 14981 6354 6356 +f 14981 6356 6295 +f 14981 6295 14982 +f 14983 6294 14984 +f 14983 14984 14985 +f 14985 14984 14986 +f 14985 14986 14987 +f 14987 14986 14988 +f 14987 14988 14989 +f 14989 14988 14952 +f 14989 14952 14954 +f 14984 6294 14990 +f 14990 6294 6274 +f 14990 6274 14991 +f 14991 6274 14946 +f 14991 14946 14948 +f 14957 14974 14975 +f 14959 14957 14975 +f 14981 14982 14992 +f 14992 14982 14983 +f 14992 14983 14985 +f 14980 14981 14993 +f 14993 14981 14992 +f 14993 14992 14994 +f 14994 14992 14985 +f 14994 14985 14987 +f 14979 14980 14995 +f 14995 14980 14993 +f 14995 14993 14996 +f 14996 14993 14994 +f 14996 14994 14997 +f 14997 14994 14987 +f 14997 14987 14989 +f 14968 14979 14998 +f 14998 14979 14995 +f 14998 14995 14999 +f 14999 14995 14996 +f 14999 14996 15000 +f 15000 14996 14997 +f 15000 14997 15001 +f 15001 14997 14989 +f 15001 14989 14954 +f 14977 14978 14965 +f 14965 14978 14967 +f 14968 14998 14966 +f 14966 14998 15002 +f 14966 15002 14964 +f 14964 15002 15003 +f 14964 15003 14962 +f 14962 15003 14961 +f 15002 14998 14999 +f 15002 14999 15004 +f 15004 14999 15000 +f 15004 15000 15005 +f 15005 15000 15001 +f 15005 15001 14956 +f 14956 15001 14954 +f 14984 14990 14986 +f 14986 14990 15006 +f 14986 15006 14988 +f 14988 15006 14950 +f 14988 14950 14952 +f 15002 15004 15003 +f 15003 15004 15007 +f 15003 15007 14961 +f 14961 15007 14960 +f 15007 15004 15005 +f 14990 14991 15006 +f 15006 14991 14948 +f 15006 14948 14950 +f 14956 14958 15005 +f 15005 14958 15007 +f 14958 14960 15007 +f 4449 4450 6447 +f 6447 4450 6478 +f 4451 15008 4450 +f 4450 15008 15009 +f 4450 15009 15010 +f 15010 15009 15011 +f 15010 15011 15012 +f 15012 15011 15013 +f 15012 15013 15014 +f 15014 15013 15015 +f 15014 15015 15016 +f 15016 15015 15017 +f 15016 15017 15018 +f 15018 15017 15019 +f 15018 15019 15020 +f 15020 15019 15021 +f 15020 15021 15022 +f 15022 15021 15023 +f 15022 15023 15024 +f 15008 4451 15025 +f 15025 4451 4453 +f 15025 4453 15026 +f 15026 4453 4454 +f 15027 4454 4455 +f 15028 4456 15029 +f 15029 4456 4457 +f 15029 4457 15030 +f 15030 4459 15031 +f 15031 4461 4463 +f 15024 15033 15034 +f 15024 15034 15022 +f 15022 15034 15035 +f 15022 15035 15020 +f 15020 15035 15036 +f 15020 15036 15018 +f 15018 15036 15037 +f 15018 15037 15016 +f 15016 15037 15038 +f 15016 15038 15014 +f 15014 15038 15039 +f 15014 15039 15012 +f 15012 15039 15040 +f 15012 15040 15010 +f 15010 6478 4450 +f 15032 6488 15041 +f 15032 15041 15033 +f 15033 15041 15034 +f 15041 6486 15042 +f 15041 15042 15034 +f 15034 15042 15035 +f 6486 6485 15042 +f 15042 6485 15043 +f 15042 15043 15035 +f 15035 15043 15036 +f 6485 6482 15043 +f 15043 6482 15044 +f 15043 15044 15036 +f 15036 15044 15037 +f 15044 15045 15037 +f 15037 15045 15038 +f 15045 6480 15046 +f 15045 15046 15038 +f 15038 15046 15039 +f 15046 15047 15039 +f 15039 15047 15040 +f 6479 6478 15047 +f 15047 6478 15040 +f 15023 15021 15031 +f 15031 15021 15030 +f 15021 15019 15030 +f 15030 15019 15029 +f 15019 15017 15029 +f 15029 15017 15028 +f 15017 15015 15028 +f 15028 15015 15027 +f 15015 15013 15027 +f 15027 15013 15026 +f 15009 15008 15025 +f 15013 15011 15026 +f 15026 15011 15025 +f 15011 15009 15025 +f 6418 15048 6419 +f 15050 15049 15051 +f 15050 15051 15052 +f 15052 15051 15053 +f 15052 15053 15054 +f 15054 15053 15055 +f 15054 15055 15056 +f 15056 15055 15057 +f 15056 15057 15058 +f 15058 15057 15059 +f 15058 15059 15060 +f 15060 15059 15061 +f 15060 15061 15062 +f 15062 15061 15063 +f 15062 15063 15064 +f 15064 15063 6403 +f 15064 6403 6446 +f 15048 6418 15065 +f 15065 6418 6416 +f 15065 6416 15066 +f 15066 6416 6414 +f 15067 6414 6412 +f 15067 6412 15068 +f 15071 6401 6403 +f 15074 15073 15075 +f 15074 15075 15076 +f 15076 15075 15077 +f 15076 15077 15078 +f 15078 15077 15079 +f 15078 15079 15080 +f 15080 15079 15081 +f 15080 15081 15082 +f 15082 15081 15083 +f 15082 15083 15084 +f 15084 15083 15085 +f 15084 15085 15086 +f 15086 15085 15087 +f 15086 15087 15088 +f 15088 15087 6426 +f 15088 6426 6419 +f 15072 6442 15089 +f 15072 15089 15073 +f 15073 15089 15075 +f 6442 6440 15089 +f 15089 6440 15090 +f 15089 15090 15075 +f 15075 15090 15077 +f 6440 6438 15090 +f 15090 6438 15091 +f 15090 15091 15077 +f 15077 15091 15079 +f 6438 6436 15091 +f 15091 6436 15092 +f 15091 15092 15079 +f 15079 15092 15081 +f 6436 6434 15092 +f 15092 6434 15093 +f 15092 15093 15081 +f 15081 15093 15083 +f 6434 6432 15093 +f 15093 6432 15094 +f 15093 15094 15083 +f 15083 15094 15085 +f 6432 6424 15094 +f 15094 15095 15085 +f 15085 15095 15087 +f 6424 6426 15095 +f 15095 6426 15087 +f 15071 6403 15063 +f 15063 15061 15071 +f 15071 15061 15070 +f 15061 15059 15070 +f 15070 15059 15069 +f 15059 15057 15069 +f 15069 15057 15068 +f 15057 15055 15068 +f 15068 15055 15067 +f 15055 15053 15067 +f 15067 15053 15066 +f 15049 15048 15065 +f 15053 15051 15066 +f 15066 15051 15065 +f 15088 6419 15050 +f 15051 15049 15065 +f 15064 6446 15074 +f 15074 15076 15064 +f 15064 15076 15062 +f 15076 15078 15062 +f 15062 15078 15060 +f 15078 15080 15060 +f 15060 15080 15058 +f 15080 15082 15058 +f 15058 15082 15056 +f 15082 15084 15056 +f 15056 15084 15054 +f 15088 15050 15052 +f 15084 15086 15054 +f 15054 15086 15052 +f 15086 15088 15052 +f 6403 6360 6446 +f 6446 6360 6209 +f 6360 15097 15098 +f 15098 15097 15099 +f 15098 15099 15100 +f 15100 15099 15101 +f 15100 15101 15102 +f 15102 15101 15103 +f 15102 15103 15104 +f 15104 15103 15105 +f 15104 15105 15106 +f 15106 15105 15107 +f 15106 15107 15108 +f 15108 15107 15109 +f 15108 15109 15110 +f 15110 15109 6225 +f 15112 6221 6219 +f 6362 6364 15096 +f 15096 6364 15113 +f 15096 15113 15097 +f 15097 15113 15099 +f 15113 15114 15099 +f 15099 15114 15101 +f 6366 6368 15114 +f 15114 6368 15115 +f 15114 15115 15101 +f 15101 15115 15103 +f 6368 6370 15115 +f 15115 15116 15103 +f 15103 15116 15105 +f 6370 6372 15116 +f 15116 15117 15105 +f 15105 15117 15107 +f 15117 15118 15107 +f 15107 15118 15109 +f 6374 4414 15118 +f 15118 4414 15109 +f 4414 6225 15109 +f 15112 6219 15119 +f 15119 6219 6217 +f 15119 6217 15120 +f 15120 6217 6215 +f 15120 6215 15121 +f 15121 6215 15122 +f 15121 15122 15102 +f 15102 15122 15100 +f 6215 6213 15122 +f 15122 6213 15123 +f 15122 15123 15100 +f 15100 15123 15098 +f 6213 6211 15123 +f 15123 6211 6209 +f 15123 6209 15098 +f 15098 6209 6360 +f 15102 15104 15121 +f 15121 15104 15120 +f 15104 15106 15120 +f 15120 15106 15119 +f 15110 15111 15112 +f 15106 15108 15119 +f 15119 15108 15112 +f 15108 15110 15112 +f 4414 4413 6225 +f 4413 15124 15125 +f 4413 15125 15126 +f 15126 15125 15127 +f 15126 15127 15128 +f 15128 15127 15129 +f 15128 15129 15130 +f 15130 15129 15131 +f 15130 15131 15132 +f 15132 15131 15133 +f 15132 15133 15134 +f 15134 15133 15135 +f 15134 15135 15136 +f 15136 15135 15137 +f 15136 15137 15138 +f 15138 15137 15139 +f 15138 15139 15140 +f 15140 15139 4449 +f 15140 4449 15141 +f 15141 4449 6447 +f 15141 6447 15142 +f 15142 15143 15144 +f 15144 15143 15145 +f 15144 15145 15146 +f 15146 15145 15147 +f 15146 15147 15148 +f 15148 6393 6392 +f 15124 15149 15125 +f 15125 15149 15127 +f 4409 4407 15149 +f 15149 4407 15150 +f 15149 15150 15127 +f 15127 15150 15129 +f 4407 6423 15150 +f 15150 6423 15151 +f 15150 15151 15129 +f 15129 15151 15131 +f 6423 6422 15151 +f 15151 6422 15152 +f 15151 15152 15131 +f 15131 15152 15133 +f 6422 6421 15152 +f 15152 15153 15133 +f 15133 15153 15135 +f 15153 15154 15135 +f 15135 15154 15137 +f 15155 4449 15139 +f 6394 15156 6447 +f 6447 15156 15157 +f 15143 15157 15145 +f 15156 15158 15157 +f 15148 6392 15159 +f 15159 6392 6391 +f 15160 6391 6396 +f 15161 6396 6398 +f 15161 6398 6230 +f 15161 6230 15162 +f 15162 6230 6229 +f 15162 6229 15163 +f 15163 6229 15164 +f 15163 15164 15165 +f 15165 15164 15166 +f 15165 15166 15167 +f 15167 15166 15168 +f 15167 15168 15169 +f 15169 15168 15132 +f 15169 15132 15134 +f 15164 6229 15170 +f 15170 6229 4413 +f 15170 4413 15171 +f 15171 4413 15126 +f 15171 15126 15128 +f 15137 15154 15155 +f 15139 15137 15155 +f 15161 15162 15172 +f 15172 15162 15163 +f 15172 15163 15165 +f 15160 15161 15173 +f 15173 15161 15172 +f 15173 15172 15174 +f 15174 15172 15165 +f 15174 15165 15167 +f 15159 15160 15175 +f 15175 15160 15173 +f 15175 15173 15176 +f 15176 15173 15174 +f 15176 15174 15177 +f 15177 15174 15167 +f 15177 15167 15169 +f 15148 15159 15178 +f 15178 15159 15175 +f 15178 15175 15179 +f 15179 15175 15176 +f 15179 15176 15180 +f 15180 15176 15177 +f 15180 15177 15181 +f 15181 15177 15169 +f 15181 15169 15134 +f 15157 15158 15145 +f 15145 15158 15147 +f 15148 15178 15146 +f 15146 15178 15182 +f 15146 15182 15144 +f 15144 15182 15183 +f 15144 15183 15142 +f 15142 15183 15141 +f 15182 15178 15179 +f 15182 15179 15184 +f 15184 15179 15180 +f 15184 15180 15185 +f 15185 15180 15181 +f 15185 15181 15136 +f 15136 15181 15134 +f 15164 15170 15166 +f 15166 15170 15186 +f 15166 15186 15168 +f 15168 15186 15130 +f 15168 15130 15132 +f 15182 15184 15183 +f 15183 15184 15187 +f 15183 15187 15141 +f 15141 15187 15140 +f 15187 15184 15185 +f 15170 15171 15186 +f 15186 15171 15128 +f 15186 15128 15130 +f 15136 15138 15185 +f 15185 15138 15187 +f 15138 15140 15187 +f 4499 4500 6539 +f 6539 4500 6541 +f 4501 15188 4500 +f 4500 15188 15189 +f 15190 15189 15191 +f 15190 15191 15192 +f 15192 15191 15193 +f 15192 15193 15194 +f 15194 15193 15195 +f 15194 15195 15196 +f 15196 15195 15197 +f 15196 15197 15198 +f 15198 15197 15199 +f 15198 15199 15200 +f 15200 15199 15201 +f 15200 15201 15202 +f 15202 15201 15203 +f 15202 15203 15204 +f 15204 4513 6518 +f 15188 4501 15205 +f 15205 4501 4503 +f 15205 4503 15206 +f 15206 4503 4504 +f 15206 4504 15207 +f 15207 4504 4505 +f 15207 4505 15208 +f 15209 4506 4507 +f 15209 4507 15210 +f 15210 4509 15211 +f 15211 4511 4513 +f 6556 15212 6518 +f 6518 15212 15213 +f 6518 15213 15204 +f 15204 15213 15214 +f 15204 15214 15202 +f 15202 15214 15215 +f 15202 15215 15200 +f 15200 15215 15216 +f 15200 15216 15198 +f 15198 15216 15217 +f 15198 15217 15196 +f 15196 15217 15218 +f 15196 15218 15194 +f 15194 15218 15219 +f 15194 15219 15192 +f 15192 15219 15220 +f 15192 15220 15190 +f 15190 6541 4500 +f 6556 6553 15212 +f 15212 6553 15221 +f 15212 15221 15213 +f 15213 15221 15214 +f 6553 6551 15221 +f 15221 6551 15222 +f 15221 15222 15214 +f 15214 15222 15215 +f 15222 15223 15215 +f 15215 15223 15216 +f 15223 15224 15216 +f 15216 15224 15217 +f 15224 6544 15225 +f 15224 15225 15217 +f 15217 15225 15218 +f 15225 15226 15218 +f 15218 15226 15219 +f 15226 15227 15219 +f 15219 15227 15220 +f 6542 6541 15227 +f 15227 6541 15220 +f 15211 4513 15203 +f 15203 15201 15211 +f 15211 15201 15210 +f 15201 15199 15210 +f 15210 15199 15209 +f 15199 15197 15209 +f 15209 15197 15208 +f 15197 15195 15208 +f 15208 15195 15207 +f 15195 15193 15207 +f 15207 15193 15206 +f 15189 15188 15205 +f 15193 15191 15206 +f 15206 15191 15205 +f 15191 15189 15205 +f 6509 15228 15229 +f 15230 15229 15231 +f 15230 15231 15232 +f 15232 15231 15233 +f 15232 15233 15234 +f 15234 15233 15235 +f 15234 15235 15236 +f 15236 15235 15237 +f 15236 15237 15238 +f 15238 15237 15239 +f 15238 15239 15240 +f 15240 15239 15241 +f 15240 15241 15242 +f 15242 15241 15243 +f 15242 15243 15244 +f 15244 6494 6536 +f 15228 6508 15245 +f 15245 6508 6506 +f 15245 6506 15246 +f 15246 6506 6504 +f 15246 6504 15247 +f 15247 6504 6502 +f 15247 6502 15248 +f 15249 6498 15250 +f 15250 6498 6496 +f 15250 6496 15251 +f 6534 15252 6536 +f 6536 15252 15253 +f 6536 15253 15254 +f 15254 15253 15255 +f 15254 15255 15256 +f 15256 15255 15257 +f 15256 15257 15258 +f 15258 15257 15259 +f 15258 15259 15260 +f 15260 15259 15261 +f 15260 15261 15262 +f 15262 15261 15263 +f 15262 15263 15264 +f 15264 15263 15265 +f 15264 15265 15266 +f 15266 15265 15267 +f 15266 15267 15268 +f 15268 15267 6516 +f 15268 6516 6509 +f 15252 6532 15269 +f 15252 15269 15253 +f 15253 15269 15255 +f 6532 6530 15269 +f 15269 6530 15270 +f 15269 15270 15255 +f 15255 15270 15257 +f 6530 6528 15270 +f 15270 6528 15271 +f 15270 15271 15257 +f 15257 15271 15259 +f 15271 6526 15272 +f 15271 15272 15259 +f 15259 15272 15261 +f 6526 6524 15272 +f 15272 6524 15273 +f 15272 15273 15261 +f 15261 15273 15263 +f 6524 6522 15273 +f 15273 6522 15274 +f 15273 15274 15263 +f 15263 15274 15265 +f 6522 6514 15274 +f 15274 6514 15275 +f 15274 15275 15265 +f 15265 15275 15267 +f 15275 6516 15267 +f 15243 15241 15251 +f 15251 15241 15250 +f 15241 15239 15250 +f 15250 15239 15249 +f 15239 15237 15249 +f 15249 15237 15248 +f 15237 15235 15248 +f 15248 15235 15247 +f 15235 15233 15247 +f 15247 15233 15246 +f 15229 15228 15245 +f 15233 15231 15246 +f 15246 15231 15245 +f 15268 6509 15230 +f 15231 15229 15245 +f 15244 6536 15254 +f 15254 15256 15244 +f 15244 15256 15242 +f 15256 15258 15242 +f 15242 15258 15240 +f 15258 15260 15240 +f 15240 15260 15238 +f 15260 15262 15238 +f 15238 15262 15236 +f 15262 15264 15236 +f 15236 15264 15234 +f 15268 15230 15232 +f 15264 15266 15234 +f 15234 15266 15232 +f 15266 15268 15232 +f 6494 6402 6536 +f 6536 6402 6445 +f 6405 15276 6402 +f 6402 15277 15278 +f 15278 15277 15279 +f 15278 15279 15280 +f 15280 15279 15281 +f 15280 15281 15282 +f 15282 15281 15283 +f 15282 15283 15284 +f 15284 15283 15285 +f 15284 15285 15286 +f 15286 15285 15287 +f 15286 15287 15288 +f 15288 15287 15289 +f 15288 15289 15290 +f 15290 15289 6425 +f 15292 6433 6435 +f 6405 6407 15276 +f 15276 15293 15277 +f 15277 15293 15279 +f 15293 15294 15279 +f 15279 15294 15281 +f 15294 15295 15281 +f 15281 15295 15283 +f 6411 6413 15295 +f 15295 6413 15296 +f 15295 15296 15283 +f 15283 15296 15285 +f 6413 6415 15296 +f 15296 15297 15285 +f 15285 15297 15287 +f 15297 15298 15287 +f 15287 15298 15289 +f 6417 4465 15298 +f 15298 4465 15289 +f 4465 6425 15289 +f 15292 6435 15299 +f 15299 6435 6437 +f 15299 6437 15300 +f 15300 6437 6439 +f 15300 6439 15301 +f 15301 6439 15302 +f 15301 15302 15282 +f 15282 15302 15280 +f 15302 15303 15280 +f 15280 15303 15278 +f 6441 6443 15303 +f 15278 6445 6402 +f 15282 15284 15301 +f 15301 15284 15300 +f 15284 15286 15300 +f 15300 15286 15299 +f 15290 15291 15292 +f 15286 15288 15299 +f 15299 15288 15292 +f 15288 15290 15292 +f 4464 15304 15305 +f 4464 15305 15306 +f 15306 15305 15307 +f 15306 15307 15308 +f 15308 15307 15309 +f 15308 15309 15310 +f 15310 15309 15311 +f 15310 15311 15312 +f 15312 15311 15313 +f 15312 15313 15314 +f 15314 15313 15315 +f 15314 15315 15316 +f 15316 15315 15317 +f 15316 15317 15318 +f 15318 15317 15319 +f 15318 15319 15320 +f 15320 15319 4499 +f 15320 4499 15321 +f 15321 4499 6539 +f 15321 6539 15322 +f 15322 15323 15324 +f 15324 15323 15325 +f 15324 15325 15326 +f 15326 15325 15327 +f 15326 15327 15328 +f 15328 15327 6537 +f 15328 6537 6483 +f 15304 4460 15329 +f 15304 15329 15305 +f 15305 15329 15307 +f 4460 4458 15329 +f 15329 15330 15307 +f 15307 15330 15309 +f 4458 6513 15330 +f 15330 15331 15309 +f 15309 15331 15311 +f 6513 6512 15331 +f 15331 15332 15311 +f 15311 15332 15313 +f 6512 6511 15332 +f 15332 15333 15313 +f 15313 15333 15315 +f 15333 6510 15334 +f 15333 15334 15315 +f 15315 15334 15317 +f 15334 6510 15335 +f 6539 15336 15337 +f 15323 15337 15325 +f 6538 15327 15338 +f 6538 15338 15336 +f 15336 15338 15337 +f 15341 6489 6430 +f 15341 6430 15342 +f 15343 15344 15345 +f 15345 15344 15346 +f 15345 15346 15347 +f 15347 15346 15348 +f 15347 15348 15349 +f 15349 15348 15312 +f 15349 15312 15314 +f 15350 6429 4464 +f 15350 4464 15351 +f 15351 4464 15306 +f 15351 15306 15308 +f 15317 15334 15335 +f 15319 15317 15335 +f 15341 15342 15352 +f 15352 15342 15343 +f 15352 15343 15345 +f 15340 15341 15353 +f 15353 15341 15352 +f 15353 15352 15354 +f 15354 15352 15345 +f 15354 15345 15347 +f 15339 15340 15355 +f 15355 15340 15353 +f 15355 15353 15356 +f 15356 15353 15354 +f 15356 15354 15357 +f 15357 15354 15347 +f 15357 15347 15349 +f 15328 15339 15358 +f 15358 15339 15355 +f 15358 15355 15359 +f 15359 15355 15356 +f 15359 15356 15360 +f 15360 15356 15357 +f 15360 15357 15361 +f 15361 15357 15349 +f 15361 15349 15314 +f 15337 15338 15325 +f 15325 15338 15327 +f 15328 15358 15326 +f 15326 15358 15362 +f 15326 15362 15324 +f 15324 15362 15363 +f 15324 15363 15322 +f 15322 15363 15321 +f 15362 15358 15359 +f 15362 15359 15364 +f 15364 15359 15360 +f 15364 15360 15365 +f 15365 15360 15361 +f 15365 15361 15316 +f 15316 15361 15314 +f 15344 15350 15346 +f 15346 15350 15366 +f 15346 15366 15348 +f 15348 15366 15310 +f 15348 15310 15312 +f 15362 15364 15363 +f 15363 15364 15367 +f 15363 15367 15321 +f 15321 15367 15320 +f 15367 15364 15365 +f 15350 15351 15366 +f 15366 15351 15308 +f 15366 15308 15310 +f 15316 15318 15365 +f 15365 15318 15367 +f 15318 15320 15367 +f 6591 6590 6617 +f 6617 6590 6643 +f 6588 15368 6590 +f 6590 15368 15369 +f 6590 15369 15370 +f 15370 15369 15371 +f 15370 15371 15372 +f 15372 15371 15373 +f 15372 15373 15374 +f 15374 15373 15375 +f 15374 15375 15376 +f 15376 15375 15377 +f 15376 15377 15378 +f 15378 15377 15379 +f 15378 15379 15380 +f 15380 15379 15381 +f 15380 15381 15382 +f 15382 15381 15383 +f 15382 15383 15384 +f 15387 6586 6585 +f 15388 6585 6584 +f 15388 6584 15389 +f 15389 6582 15390 +f 15390 6580 15391 +f 15391 6576 6575 +f 6656 15392 6600 +f 6600 15392 15393 +f 6600 15393 15384 +f 15384 15393 15394 +f 15384 15394 15382 +f 15382 15394 15395 +f 15382 15395 15380 +f 15380 15395 15396 +f 15380 15396 15378 +f 15378 15396 15397 +f 15378 15397 15376 +f 15376 15397 15398 +f 15376 15398 15374 +f 15374 15398 15399 +f 15374 15399 15372 +f 15372 15399 15400 +f 15372 15400 15370 +f 15370 15400 6643 +f 15370 6643 6590 +f 6656 6653 15392 +f 15392 15401 15393 +f 15393 15401 15394 +f 15401 6651 15402 +f 15401 15402 15394 +f 15394 15402 15395 +f 15402 6650 15403 +f 15402 15403 15395 +f 15395 15403 15396 +f 6650 6647 15403 +f 15403 6647 15404 +f 15403 15404 15396 +f 15396 15404 15397 +f 15404 15405 15397 +f 15397 15405 15398 +f 6646 6645 15405 +f 15405 15406 15398 +f 15398 15406 15399 +f 6645 6644 15406 +f 15406 6644 15407 +f 15406 15407 15399 +f 15399 15407 15400 +f 15391 6575 15383 +f 15383 15381 15391 +f 15391 15381 15390 +f 15381 15379 15390 +f 15390 15379 15389 +f 15379 15377 15389 +f 15389 15377 15388 +f 15377 15375 15388 +f 15388 15375 15387 +f 15375 15373 15387 +f 15387 15373 15386 +f 15369 15368 15385 +f 15373 15371 15386 +f 15386 15371 15385 +f 15371 15369 15385 +f 6574 6598 6575 +f 6575 6598 6600 +f 6572 15408 6574 +f 15410 15409 15411 +f 15410 15411 15412 +f 15412 15411 15413 +f 15412 15413 15414 +f 15414 15413 15415 +f 15414 15415 15416 +f 15416 15415 15417 +f 15416 15417 15418 +f 15418 15417 15419 +f 15418 15419 15420 +f 15420 15419 15421 +f 15420 15421 15422 +f 15422 15421 15423 +f 15422 15423 15424 +f 15424 15423 6557 +f 15424 6557 6616 +f 15426 6570 6568 +f 15426 6568 15427 +f 15427 6568 6566 +f 15428 6564 15429 +f 15429 6564 6560 +f 15429 6560 15430 +f 15430 6560 6559 +f 6615 15432 6616 +f 6616 15432 15433 +f 15434 15433 15435 +f 15434 15435 15436 +f 15436 15435 15437 +f 15436 15437 15438 +f 15438 15437 15439 +f 15438 15439 15440 +f 15440 15439 15441 +f 15440 15441 15442 +f 15442 15441 15443 +f 15442 15443 15444 +f 15444 15443 15445 +f 15444 15445 15446 +f 15446 15445 15447 +f 15446 15447 15448 +f 15448 6598 6574 +f 15432 15449 15433 +f 15433 15449 15435 +f 6614 6612 15449 +f 15449 6612 15450 +f 15449 15450 15435 +f 15435 15450 15437 +f 6612 6610 15450 +f 15450 6610 15451 +f 15450 15451 15437 +f 15437 15451 15439 +f 15451 6608 15452 +f 15451 15452 15439 +f 15439 15452 15441 +f 6608 6606 15452 +f 15452 6606 15453 +f 15452 15453 15441 +f 15441 15453 15443 +f 15453 6604 15454 +f 15453 15454 15443 +f 15443 15454 15445 +f 6604 6596 15454 +f 15454 6596 15455 +f 15454 15455 15445 +f 15445 15455 15447 +f 6596 6598 15455 +f 15455 6598 15447 +f 15431 6557 15423 +f 15423 15421 15431 +f 15431 15421 15430 +f 15421 15419 15430 +f 15430 15419 15429 +f 15419 15417 15429 +f 15429 15417 15428 +f 15417 15415 15428 +f 15428 15415 15427 +f 15415 15413 15427 +f 15427 15413 15426 +f 15409 15408 15425 +f 15413 15411 15426 +f 15426 15411 15425 +f 15448 6574 15410 +f 15411 15409 15425 +f 15424 6616 15434 +f 15434 15436 15424 +f 15424 15436 15422 +f 15436 15438 15422 +f 15422 15438 15420 +f 15438 15440 15420 +f 15420 15440 15418 +f 15440 15442 15418 +f 15418 15442 15416 +f 15442 15444 15416 +f 15416 15444 15414 +f 15448 15410 15412 +f 15444 15446 15414 +f 15414 15446 15412 +f 15446 15448 15412 +f 6557 6493 6616 +f 6616 6493 6535 +f 6495 15456 6493 +f 6493 15456 15457 +f 6493 15457 15458 +f 15458 15457 15459 +f 15458 15459 15460 +f 15460 15459 15461 +f 15460 15461 15462 +f 15462 15461 15463 +f 15462 15463 15464 +f 15464 15463 15465 +f 15464 15465 15466 +f 15466 15465 15467 +f 15466 15467 15468 +f 15468 15467 15469 +f 15468 15469 15470 +f 15470 15469 6515 +f 15470 6515 15471 +f 15471 6515 6521 +f 15471 6521 15472 +f 15472 6521 6523 +f 15472 6523 6525 +f 15456 6497 15473 +f 15456 15473 15457 +f 15457 15473 15459 +f 15473 6499 15474 +f 15473 15474 15459 +f 15459 15474 15461 +f 6499 6501 15474 +f 15474 6501 15475 +f 15474 15475 15461 +f 15461 15475 15463 +f 6501 6503 15475 +f 15475 6503 15476 +f 15475 15476 15463 +f 15463 15476 15465 +f 6503 6505 15476 +f 15476 6505 15477 +f 15476 15477 15465 +f 15465 15477 15467 +f 6505 6507 15477 +f 15477 6507 15478 +f 15477 15478 15467 +f 15467 15478 15469 +f 6507 4515 15478 +f 15478 4515 15469 +f 4515 6515 15469 +f 15472 6525 15479 +f 15479 6525 6527 +f 15479 6527 15480 +f 15480 6527 6529 +f 15480 6529 15481 +f 15481 6529 15482 +f 15481 15482 15462 +f 15462 15482 15460 +f 6529 6531 15482 +f 15482 15483 15460 +f 15460 15483 15458 +f 15458 6535 6493 +f 15462 15464 15481 +f 15481 15464 15480 +f 15464 15466 15480 +f 15480 15466 15479 +f 15470 15471 15472 +f 15466 15468 15479 +f 15479 15468 15472 +f 15468 15470 15472 +f 4515 4514 6515 +f 4512 15484 4514 +f 4514 15484 15485 +f 4514 15485 15486 +f 15486 15485 15487 +f 15486 15487 15488 +f 15488 15487 15489 +f 15488 15489 15490 +f 15490 15489 15491 +f 15490 15491 15492 +f 15492 15491 15493 +f 15492 15493 15494 +f 15494 15493 15495 +f 15494 15495 15496 +f 15496 15495 15497 +f 15496 15497 15498 +f 15498 15497 15499 +f 15498 15499 15500 +f 15500 15499 6591 +f 15501 6591 6617 +f 15501 6617 15502 +f 15502 6617 15503 +f 15502 15503 15504 +f 15504 15503 15505 +f 15504 15505 15506 +f 15506 15505 15507 +f 15506 15507 15508 +f 15508 15507 6549 +f 4512 4510 15484 +f 15484 15509 15485 +f 15485 15509 15487 +f 4510 4508 15509 +f 15509 4508 15510 +f 15509 15510 15487 +f 15487 15510 15489 +f 15510 15511 15489 +f 15489 15511 15491 +f 6595 6594 15511 +f 15511 15512 15491 +f 15491 15512 15493 +f 6594 6593 15512 +f 15512 6593 15513 +f 15512 15513 15493 +f 15493 15513 15495 +f 15513 15514 15495 +f 15495 15514 15497 +f 15503 15517 15505 +f 15516 15518 15517 +f 15521 6554 6520 +f 15521 6520 15522 +f 15523 15524 15525 +f 15525 15524 15526 +f 15525 15526 15527 +f 15527 15526 15528 +f 15527 15528 15529 +f 15529 15528 15492 +f 15529 15492 15494 +f 15530 6519 4514 +f 15530 4514 15531 +f 15531 4514 15486 +f 15531 15486 15488 +f 15497 15514 15515 +f 15499 15497 15515 +f 15521 15522 15532 +f 15532 15522 15523 +f 15532 15523 15525 +f 15520 15521 15533 +f 15533 15521 15532 +f 15533 15532 15534 +f 15534 15532 15525 +f 15534 15525 15527 +f 15519 15520 15535 +f 15535 15520 15533 +f 15535 15533 15536 +f 15536 15533 15534 +f 15536 15534 15537 +f 15537 15534 15527 +f 15537 15527 15529 +f 15508 15519 15538 +f 15538 15519 15535 +f 15538 15535 15539 +f 15539 15535 15536 +f 15539 15536 15540 +f 15540 15536 15537 +f 15540 15537 15541 +f 15541 15537 15529 +f 15541 15529 15494 +f 15517 15518 15505 +f 15505 15518 15507 +f 15508 15538 15506 +f 15506 15538 15542 +f 15506 15542 15504 +f 15504 15542 15543 +f 15504 15543 15502 +f 15502 15543 15501 +f 15542 15538 15539 +f 15542 15539 15544 +f 15544 15539 15540 +f 15544 15540 15545 +f 15545 15540 15541 +f 15545 15541 15496 +f 15496 15541 15494 +f 15524 15530 15526 +f 15526 15530 15546 +f 15526 15546 15528 +f 15528 15546 15490 +f 15528 15490 15492 +f 15542 15544 15543 +f 15543 15544 15547 +f 15543 15547 15501 +f 15501 15547 15500 +f 15547 15544 15545 +f 15530 15531 15546 +f 15546 15531 15488 +f 15546 15488 15490 +f 15496 15498 15545 +f 15545 15498 15547 +f 15498 15500 15547 +f 6692 6690 6733 +f 6733 6690 6734 +f 6689 15548 6690 +f 6690 15548 15549 +f 6690 15549 15550 +f 15550 15549 15551 +f 15550 15551 15552 +f 15552 15551 15553 +f 15552 15553 15554 +f 15554 15553 15555 +f 15554 15555 15556 +f 15556 15555 15557 +f 15556 15557 15558 +f 15558 15557 15559 +f 15558 15559 15560 +f 15560 15559 15561 +f 15560 15561 15562 +f 15562 15561 15563 +f 15562 15563 15564 +f 15564 15563 6676 +f 15564 6676 6702 +f 15548 6689 15565 +f 15565 6689 6688 +f 15565 6688 15566 +f 15566 6688 6687 +f 15566 6687 15567 +f 15567 6687 6686 +f 15568 6686 6685 +f 15571 6681 6677 +f 15571 6677 6676 +f 6748 15572 6702 +f 6702 15572 15573 +f 15564 15573 15574 +f 15564 15574 15562 +f 15562 15574 15575 +f 15562 15575 15560 +f 15560 15575 15576 +f 15560 15576 15558 +f 15558 15576 15577 +f 15558 15577 15556 +f 15556 15577 15578 +f 15556 15578 15554 +f 15554 15578 15579 +f 15554 15579 15552 +f 15552 15579 15580 +f 15552 15580 15550 +f 15550 15580 6734 +f 15550 6734 6690 +f 6748 6745 15572 +f 15572 6745 15581 +f 15572 15581 15573 +f 15573 15581 15574 +f 15581 15582 15574 +f 15574 15582 15575 +f 15582 15583 15575 +f 15575 15583 15576 +f 6742 6739 15583 +f 15583 15584 15576 +f 15576 15584 15577 +f 6739 6738 15584 +f 15584 6738 15585 +f 15584 15585 15577 +f 15577 15585 15578 +f 6738 6737 15585 +f 15585 15586 15578 +f 15578 15586 15579 +f 6737 6736 15586 +f 15586 6736 15587 +f 15586 15587 15579 +f 15579 15587 15580 +f 6736 6734 15587 +f 15587 6734 15580 +f 15563 15561 15571 +f 15571 15561 15570 +f 15561 15559 15570 +f 15570 15559 15569 +f 15559 15557 15569 +f 15569 15557 15568 +f 15557 15555 15568 +f 15568 15555 15567 +f 15555 15553 15567 +f 15567 15553 15566 +f 15549 15548 15565 +f 15553 15551 15566 +f 15566 15551 15565 +f 15551 15549 15565 +f 6675 15588 15589 +f 15590 15589 15591 +f 15590 15591 15592 +f 15592 15591 15593 +f 15592 15593 15594 +f 15594 15593 15595 +f 15594 15595 15596 +f 15596 15595 15597 +f 15596 15597 15598 +f 15598 15597 15599 +f 15598 15599 15600 +f 15600 15599 15601 +f 15600 15601 15602 +f 15602 15601 15603 +f 15602 15603 15604 +f 15604 6658 6720 +f 15588 6673 15605 +f 15605 6671 15606 +f 15606 6671 6669 +f 15606 6669 15607 +f 15607 6669 6667 +f 15607 6667 15608 +f 15608 6667 6665 +f 15608 6665 15609 +f 15610 6661 15611 +f 15611 6659 6658 +f 6718 15612 6720 +f 6720 15612 15613 +f 6720 15613 15614 +f 15614 15613 15615 +f 15614 15615 15616 +f 15616 15615 15617 +f 15616 15617 15618 +f 15618 15617 15619 +f 15618 15619 15620 +f 15620 15619 15621 +f 15620 15621 15622 +f 15622 15621 15623 +f 15622 15623 15624 +f 15624 15623 15625 +f 15624 15625 15626 +f 15626 15625 15627 +f 15626 15627 15628 +f 15628 15627 6700 +f 15628 6700 6675 +f 6718 6716 15612 +f 15612 15629 15613 +f 15613 15629 15615 +f 6716 6714 15629 +f 15629 6714 15630 +f 15629 15630 15615 +f 15615 15630 15617 +f 6714 6712 15630 +f 15630 6712 15631 +f 15630 15631 15617 +f 15617 15631 15619 +f 15631 15632 15619 +f 15619 15632 15621 +f 6710 6708 15632 +f 15632 6708 15633 +f 15632 15633 15621 +f 15621 15633 15623 +f 15633 6706 15634 +f 15633 15634 15623 +f 15623 15634 15625 +f 15634 6698 15635 +f 15634 15635 15625 +f 15625 15635 15627 +f 6698 6700 15635 +f 15611 6658 15603 +f 15603 15601 15611 +f 15611 15601 15610 +f 15601 15599 15610 +f 15610 15599 15609 +f 15599 15597 15609 +f 15609 15597 15608 +f 15597 15595 15608 +f 15608 15595 15607 +f 15595 15593 15607 +f 15607 15593 15606 +f 15589 15588 15605 +f 15593 15591 15606 +f 15606 15591 15605 +f 15628 6675 15590 +f 15591 15589 15605 +f 15604 6720 15614 +f 15614 15616 15604 +f 15604 15616 15602 +f 15616 15618 15602 +f 15602 15618 15600 +f 15618 15620 15600 +f 15600 15620 15598 +f 15620 15622 15598 +f 15598 15622 15596 +f 15622 15624 15596 +f 15596 15624 15594 +f 15628 15590 15592 +f 15624 15626 15594 +f 15594 15626 15592 +f 15626 15628 15592 +f 6658 6657 6720 +f 6720 6657 6727 +f 6657 15637 15638 +f 15638 15637 15639 +f 15638 15639 15640 +f 15640 15639 15641 +f 15640 15641 15642 +f 15642 15641 15643 +f 15642 15643 15644 +f 15644 15643 15645 +f 15644 15645 15646 +f 15646 15645 15647 +f 15646 15647 15648 +f 15648 15647 15649 +f 15648 15649 15650 +f 15650 15649 6597 +f 15650 6597 15651 +f 15651 6597 6603 +f 15651 6603 15652 +f 15652 6605 6607 +f 6562 6561 15636 +f 15636 15653 15637 +f 15637 15653 15639 +f 6561 6563 15653 +f 15653 6563 15654 +f 15653 15654 15639 +f 15639 15654 15641 +f 6563 6565 15654 +f 15654 6565 15655 +f 15654 15655 15641 +f 15641 15655 15643 +f 6565 6567 15655 +f 15655 6567 15656 +f 15655 15656 15643 +f 15643 15656 15645 +f 6567 6569 15656 +f 15656 6569 15657 +f 15656 15657 15645 +f 15645 15657 15647 +f 6569 6571 15657 +f 15657 15658 15647 +f 15647 15658 15649 +f 6573 6597 15649 +f 15652 6607 15659 +f 15659 6607 6609 +f 15659 6609 15660 +f 15660 6609 6611 +f 15660 6611 15661 +f 15661 6611 15662 +f 15661 15662 15642 +f 15642 15662 15640 +f 15662 15663 15640 +f 15640 15663 15638 +f 15663 6728 6727 +f 15663 6727 15638 +f 15638 6727 6657 +f 15642 15644 15661 +f 15661 15644 15660 +f 15644 15646 15660 +f 15660 15646 15659 +f 15650 15651 15652 +f 15646 15648 15659 +f 15659 15648 15652 +f 15648 15650 15652 +f 6597 6578 6601 +f 6578 15665 15666 +f 15666 15665 15667 +f 15666 15667 15668 +f 15668 15667 15669 +f 15668 15669 15670 +f 15670 15669 15671 +f 15670 15671 15672 +f 15672 15671 15673 +f 15672 15673 15674 +f 15674 15673 15675 +f 15674 15675 15676 +f 15676 15675 15677 +f 15676 15677 15678 +f 15678 15677 15679 +f 15678 15679 15680 +f 15681 6692 6733 +f 15681 6733 15682 +f 15682 15683 15684 +f 15684 15683 15685 +f 15684 15685 15686 +f 15686 15685 15687 +f 15686 15687 15688 +f 15688 6729 6648 +f 6577 6579 15664 +f 15664 6579 15689 +f 15664 15689 15665 +f 15665 15689 15667 +f 15689 15690 15667 +f 15667 15690 15669 +f 6581 6697 15690 +f 15690 15691 15669 +f 15669 15691 15671 +f 6697 6696 15691 +f 15691 6696 15692 +f 15691 15692 15671 +f 15671 15692 15673 +f 15692 15693 15673 +f 15673 15693 15675 +f 15693 15694 15675 +f 15675 15694 15677 +f 15695 6693 6692 +f 6732 15696 6733 +f 6733 15696 15697 +f 6733 15697 15683 +f 15683 15697 15685 +f 6729 15687 6732 +f 15696 15698 15697 +f 15699 6648 6649 +f 15699 6649 15700 +f 15700 6652 15701 +f 15701 6652 6654 +f 15701 6654 6602 +f 15701 6602 15702 +f 15702 6602 6601 +f 15702 6601 15703 +f 15703 6601 15704 +f 15703 15704 15705 +f 15705 15704 15706 +f 15705 15706 15707 +f 15707 15706 15708 +f 15707 15708 15709 +f 15709 15708 15672 +f 15709 15672 15674 +f 15704 6601 15710 +f 15710 6601 6578 +f 15710 6578 15711 +f 15711 6578 15666 +f 15711 15666 15668 +f 15677 15694 15695 +f 15679 15677 15695 +f 15701 15702 15712 +f 15712 15702 15703 +f 15712 15703 15705 +f 15700 15701 15713 +f 15713 15701 15712 +f 15713 15712 15714 +f 15714 15712 15705 +f 15714 15705 15707 +f 15699 15700 15715 +f 15715 15700 15713 +f 15715 15713 15716 +f 15716 15713 15714 +f 15716 15714 15717 +f 15717 15714 15707 +f 15717 15707 15709 +f 15688 15699 15718 +f 15718 15699 15715 +f 15718 15715 15719 +f 15719 15715 15716 +f 15719 15716 15720 +f 15720 15716 15717 +f 15720 15717 15721 +f 15721 15717 15709 +f 15721 15709 15674 +f 15697 15698 15685 +f 15685 15698 15687 +f 15688 15718 15686 +f 15686 15718 15722 +f 15686 15722 15684 +f 15684 15722 15723 +f 15684 15723 15682 +f 15682 15723 15681 +f 15722 15718 15719 +f 15722 15719 15724 +f 15724 15719 15720 +f 15724 15720 15725 +f 15725 15720 15721 +f 15725 15721 15676 +f 15676 15721 15674 +f 15704 15710 15706 +f 15706 15710 15726 +f 15706 15726 15708 +f 15708 15726 15670 +f 15708 15670 15672 +f 15722 15724 15723 +f 15723 15724 15727 +f 15723 15727 15681 +f 15681 15727 15680 +f 15727 15724 15725 +f 15710 15711 15726 +f 15726 15711 15668 +f 15726 15668 15670 +f 15676 15678 15725 +f 15725 15678 15727 +f 15678 15680 15727 +f 6771 6770 6795 +f 6795 6770 6797 +f 15730 15729 15731 +f 15730 15731 15732 +f 15732 15731 15733 +f 15732 15733 15734 +f 15734 15733 15735 +f 15734 15735 15736 +f 15736 15735 15737 +f 15736 15737 15738 +f 15738 15737 15739 +f 15738 15739 15740 +f 15740 15739 15741 +f 15740 15741 15742 +f 15742 15741 15743 +f 15742 15743 15744 +f 15744 6760 6780 +f 15745 6769 6768 +f 15745 6768 15746 +f 15748 6766 6764 +f 15748 6764 15749 +f 15750 6763 6762 +f 15750 6762 15751 +f 15751 6761 6760 +f 6780 15752 15753 +f 6780 15753 15744 +f 15744 15753 15754 +f 15744 15754 15742 +f 15742 15754 15755 +f 15742 15755 15740 +f 15740 15755 15756 +f 15740 15756 15738 +f 15738 15756 15757 +f 15738 15757 15736 +f 15736 15757 15758 +f 15736 15758 15734 +f 15734 15758 15759 +f 15734 15759 15732 +f 15732 15759 15760 +f 15732 15760 15730 +f 15730 15760 6797 +f 6782 6784 15752 +f 15752 6784 15761 +f 15752 15761 15753 +f 15753 15761 15754 +f 15761 6804 15762 +f 15761 15762 15754 +f 15754 15762 15755 +f 6804 6803 15762 +f 15762 15763 15755 +f 15755 15763 15756 +f 15763 15764 15756 +f 15756 15764 15757 +f 6802 6800 15764 +f 15764 6800 15765 +f 15764 15765 15757 +f 15757 15765 15758 +f 15765 6799 15766 +f 15765 15766 15758 +f 15758 15766 15759 +f 15766 15767 15759 +f 15759 15767 15760 +f 15743 15741 15751 +f 15751 15741 15750 +f 15741 15739 15750 +f 15750 15739 15749 +f 15739 15737 15749 +f 15749 15737 15748 +f 15737 15735 15748 +f 15748 15735 15747 +f 15735 15733 15747 +f 15747 15733 15746 +f 15729 15728 15745 +f 15733 15731 15746 +f 15746 15731 15745 +f 15731 15729 15745 +f 6759 6778 6760 +f 6760 6778 6780 +f 6758 15768 6759 +f 6759 15768 15769 +f 6759 15769 15770 +f 15770 15769 15771 +f 15770 15771 15772 +f 15772 15771 15773 +f 15772 15773 15774 +f 15774 15773 15775 +f 15774 15775 15776 +f 15776 15775 15777 +f 15776 15777 15778 +f 15778 15777 15779 +f 15778 15779 15780 +f 15780 15779 15781 +f 15780 15781 15782 +f 15782 15781 15783 +f 15782 15783 15784 +f 15784 6750 6792 +f 15786 6757 6756 +f 15786 6756 15787 +f 15787 6756 6755 +f 15788 6755 6754 +f 15788 6754 15789 +f 15791 6751 6750 +f 6792 15793 15794 +f 15794 15793 15795 +f 15794 15795 15796 +f 15796 15795 15797 +f 15796 15797 15798 +f 15798 15797 15799 +f 15798 15799 15800 +f 15800 15799 15801 +f 15800 15801 15802 +f 15802 15801 15803 +f 15802 15803 15804 +f 15804 15803 15805 +f 15804 15805 15806 +f 15806 15805 15807 +f 15806 15807 15808 +f 15808 6778 6759 +f 15792 15809 15793 +f 15793 15809 15795 +f 6790 6789 15809 +f 15809 6789 15810 +f 15809 15810 15795 +f 15795 15810 15797 +f 6789 6788 15810 +f 15810 6788 15811 +f 15810 15811 15797 +f 15797 15811 15799 +f 15811 15812 15799 +f 15799 15812 15801 +f 6787 6786 15812 +f 15812 15813 15801 +f 15801 15813 15803 +f 15813 15814 15803 +f 15803 15814 15805 +f 15814 15815 15805 +f 15805 15815 15807 +f 15815 6778 15807 +f 15791 6750 15783 +f 15783 15781 15791 +f 15791 15781 15790 +f 15781 15779 15790 +f 15790 15779 15789 +f 15779 15777 15789 +f 15789 15777 15788 +f 15777 15775 15788 +f 15788 15775 15787 +f 15775 15773 15787 +f 15787 15773 15786 +f 15769 15768 15785 +f 15773 15771 15786 +f 15786 15771 15785 +f 15808 6759 15770 +f 15771 15769 15785 +f 15784 6792 15794 +f 15794 15796 15784 +f 15784 15796 15782 +f 15796 15798 15782 +f 15782 15798 15780 +f 15798 15800 15780 +f 15780 15800 15778 +f 15800 15802 15778 +f 15778 15802 15776 +f 15802 15804 15776 +f 15776 15804 15774 +f 15808 15770 15772 +f 15804 15806 15774 +f 15774 15806 15772 +f 15806 15808 15772 +f 6750 6749 6792 +f 6792 6749 6719 +f 6660 15816 6749 +f 6749 15816 15817 +f 6749 15817 15818 +f 15818 15817 15819 +f 15818 15819 15820 +f 15820 15819 15821 +f 15820 15821 15822 +f 15822 15821 15823 +f 15822 15823 15824 +f 15824 15823 15825 +f 15824 15825 15826 +f 15826 15825 15827 +f 15826 15827 15828 +f 15828 15827 15829 +f 15828 15829 15830 +f 15830 15829 6699 +f 15830 6699 15831 +f 15831 6699 6705 +f 15831 6705 15832 +f 15832 6705 6707 +f 15832 6707 6709 +f 15816 15833 15817 +f 15817 15833 15819 +f 6662 6664 15833 +f 15833 6664 15834 +f 15833 15834 15819 +f 15819 15834 15821 +f 15834 6666 15835 +f 15834 15835 15821 +f 15821 15835 15823 +f 6666 6668 15835 +f 15835 6668 15836 +f 15835 15836 15823 +f 15823 15836 15825 +f 6668 6670 15836 +f 15836 15837 15825 +f 15825 15837 15827 +f 15837 6672 15838 +f 15837 15838 15827 +f 15827 15838 15829 +f 6674 6699 15829 +f 15832 6709 15839 +f 15839 6709 6711 +f 15839 6711 15840 +f 15840 6711 6713 +f 15840 6713 15841 +f 15841 6713 15842 +f 15841 15842 15822 +f 15822 15842 15820 +f 6713 6715 15842 +f 15842 6715 15843 +f 15842 15843 15820 +f 15820 15843 15818 +f 6715 6717 15843 +f 15843 6717 6719 +f 15843 6719 15818 +f 15818 6719 6749 +f 15822 15824 15841 +f 15841 15824 15840 +f 15824 15826 15840 +f 15840 15826 15839 +f 15830 15831 15832 +f 15826 15828 15839 +f 15839 15828 15832 +f 15828 15830 15832 +f 6674 6679 6699 +f 6699 6679 6703 +f 6678 15844 6679 +f 6679 15845 15846 +f 15846 15845 15847 +f 15846 15847 15848 +f 15848 15847 15849 +f 15848 15849 15850 +f 15850 15849 15851 +f 15850 15851 15852 +f 15852 15851 15853 +f 15852 15853 15854 +f 15854 15853 15855 +f 15854 15855 15856 +f 15856 15855 15857 +f 15856 15857 15858 +f 15858 15857 15859 +f 15858 15859 15860 +f 15860 6771 15861 +f 15861 6771 6795 +f 15861 6795 15862 +f 15862 6795 15863 +f 15862 15863 15864 +f 15864 15863 15865 +f 15864 15865 15866 +f 15866 15865 15867 +f 15866 15867 15868 +f 15844 15869 15845 +f 15845 15869 15847 +f 6680 6682 15869 +f 15869 15870 15847 +f 15847 15870 15849 +f 15870 15871 15849 +f 15849 15871 15851 +f 15871 15872 15851 +f 15851 15872 15853 +f 15872 6774 15873 +f 15872 15873 15853 +f 15853 15873 15855 +f 15873 6772 15874 +f 15873 15874 15855 +f 15855 15874 15857 +f 15874 6772 15875 +f 15875 6772 6771 +f 15875 6771 15859 +f 6794 15876 6795 +f 6795 15876 15877 +f 15863 15877 15865 +f 6794 15878 15876 +f 15876 15878 15877 +f 15879 6741 15880 +f 15881 6746 6704 +f 15881 6704 15882 +f 15882 6704 6703 +f 15883 15884 15885 +f 15885 15884 15886 +f 15885 15886 15887 +f 15887 15886 15888 +f 15887 15888 15889 +f 15889 15888 15852 +f 15889 15852 15854 +f 15890 6703 6679 +f 15890 6679 15891 +f 15891 15846 15848 +f 15857 15874 15875 +f 15859 15857 15875 +f 15881 15882 15892 +f 15892 15882 15883 +f 15892 15883 15885 +f 15880 15881 15893 +f 15893 15881 15892 +f 15893 15892 15894 +f 15894 15892 15885 +f 15894 15885 15887 +f 15879 15880 15895 +f 15895 15880 15893 +f 15895 15893 15896 +f 15896 15893 15894 +f 15896 15894 15897 +f 15897 15894 15887 +f 15897 15887 15889 +f 15868 15879 15898 +f 15898 15879 15895 +f 15898 15895 15899 +f 15899 15895 15896 +f 15899 15896 15900 +f 15900 15896 15897 +f 15900 15897 15901 +f 15901 15897 15889 +f 15901 15889 15854 +f 15877 15878 15865 +f 15865 15878 15867 +f 15868 15898 15866 +f 15866 15898 15902 +f 15866 15902 15864 +f 15864 15902 15903 +f 15864 15903 15862 +f 15862 15903 15861 +f 15902 15898 15899 +f 15902 15899 15904 +f 15904 15899 15900 +f 15904 15900 15905 +f 15905 15900 15901 +f 15905 15901 15856 +f 15856 15901 15854 +f 15884 15890 15886 +f 15886 15890 15906 +f 15886 15906 15888 +f 15888 15906 15850 +f 15888 15850 15852 +f 15902 15904 15903 +f 15903 15904 15907 +f 15903 15907 15861 +f 15861 15907 15860 +f 15907 15904 15905 +f 15890 15891 15906 +f 15906 15891 15848 +f 15906 15848 15850 +f 15856 15858 15905 +f 15905 15858 15907 +f 15858 15860 15907 +f 6838 6885 6840 +f 6836 15908 6838 +f 6838 15908 15909 +f 6838 15909 15910 +f 15910 15909 15911 +f 15910 15911 15912 +f 15912 15911 15913 +f 15912 15913 6894 +f 6896 15913 6898 +f 6898 15913 15914 +f 6898 15914 6900 +f 6900 15914 15915 +f 6900 15915 6901 +f 6901 15915 6867 +f 6867 15915 15916 +f 6867 15916 15917 +f 15917 15916 15918 +f 15917 15918 15919 +f 15919 15918 15920 +f 15919 15920 6828 +f 6828 15920 6831 +f 6831 15920 6832 +f 6832 15921 6834 +f 6834 15921 15908 +f 6828 6826 15919 +f 15919 6826 15922 +f 15919 15922 15917 +f 15917 15922 6824 +f 15917 6824 6867 +f 6867 6824 6823 +f 6826 6824 15922 +f 15912 6892 15923 +f 15912 15923 15910 +f 15910 15923 6889 +f 15910 6889 6838 +f 6838 6889 6885 +f 15909 15908 15924 +f 15924 15908 15921 +f 15924 15921 15925 +f 15925 15921 15920 +f 15925 15920 15918 +f 15909 15924 15911 +f 15911 15924 15926 +f 15911 15926 15913 +f 15913 15926 15914 +f 15926 15924 15925 +f 15926 15925 15927 +f 15927 15925 15918 +f 15927 15918 15916 +f 15915 15914 15927 +f 15927 15914 15926 +f 15915 15927 15916 +f 6820 6868 6823 +f 6819 15928 6820 +f 6820 15928 15929 +f 6820 15929 15930 +f 15930 15929 15931 +f 15930 15931 15932 +f 15932 15931 15933 +f 15932 15933 3291 +f 3291 15933 3290 +f 3290 15933 3289 +f 3287 15935 3286 +f 3286 15935 15936 +f 3286 15936 15937 +f 15937 15936 15938 +f 15937 15938 15939 +f 15939 15938 15940 +f 6816 15940 6817 +f 6817 15941 6818 +f 6818 15941 15928 +f 6815 6814 15939 +f 15939 6814 15942 +f 15939 15942 15937 +f 15937 15942 6805 +f 15937 6805 3286 +f 3286 6805 6806 +f 6814 6805 15942 +f 15932 15943 15930 +f 15930 15943 3293 +f 15930 3293 6820 +f 6820 3293 6868 +f 15929 15928 15944 +f 15944 15928 15941 +f 15944 15941 15945 +f 15945 15941 15940 +f 15945 15940 15938 +f 15929 15944 15931 +f 15931 15944 15946 +f 15931 15946 15933 +f 15933 15946 15934 +f 15946 15944 15945 +f 15946 15945 15947 +f 15947 15945 15938 +f 15947 15938 15936 +f 15935 15934 15947 +f 15947 15934 15946 +f 15935 15947 15936 +f 6806 6807 3286 +f 3286 6807 3285 +f 6808 15948 6807 +f 6807 15948 15949 +f 6807 15949 15950 +f 15950 15949 15951 +f 15950 15951 15952 +f 15952 15951 15953 +f 3280 15953 15954 +f 3280 15954 3279 +f 3279 15955 3278 +f 3278 15955 6869 +f 6869 15955 15956 +f 6869 15956 15957 +f 15957 15956 15958 +f 15957 15958 15959 +f 15959 15958 15960 +f 15959 15960 6812 +f 6812 15960 6811 +f 6811 15960 6810 +f 6810 15961 6809 +f 6809 15948 6808 +f 6812 6813 15959 +f 15959 6813 15962 +f 15959 15962 15957 +f 15957 15962 5414 +f 15957 5414 6869 +f 6869 5414 5413 +f 3282 3283 15952 +f 15952 3283 15963 +f 15952 15963 15950 +f 15950 15963 3284 +f 15950 3284 6807 +f 6807 3284 3285 +f 3283 3284 15963 +f 15949 15948 15964 +f 15964 15948 15961 +f 15964 15961 15965 +f 15965 15961 15960 +f 15965 15960 15958 +f 15949 15964 15951 +f 15951 15964 15966 +f 15951 15966 15953 +f 15953 15966 15954 +f 15966 15964 15965 +f 15966 15965 15967 +f 15967 15965 15958 +f 15967 15958 15956 +f 15955 15954 15967 +f 15967 15954 15966 +f 15955 15967 15956 +f 6869 6866 6870 +f 6865 15968 6866 +f 6866 15968 15969 +f 6866 15969 15970 +f 15970 15969 15971 +f 15970 15971 15972 +f 15972 15971 15973 +f 6873 15973 6876 +f 6876 15973 6878 +f 6878 15973 15974 +f 6878 15974 6880 +f 6880 15975 6883 +f 6883 15975 6884 +f 6884 15975 15976 +f 6884 15976 15977 +f 15977 15976 15978 +f 15977 15978 15979 +f 15979 15978 15980 +f 6846 15980 6848 +f 6848 15980 6863 +f 6863 15980 15981 +f 6863 15981 6864 +f 6864 15981 15968 +f 6864 15968 6865 +f 6846 6845 15979 +f 15979 15982 15977 +f 15977 15982 6843 +f 15977 6843 6884 +f 6884 6843 6840 +f 6845 6843 15982 +f 15972 6872 15983 +f 15972 15983 15970 +f 15970 15983 6871 +f 15970 6871 6866 +f 6866 6871 6870 +f 6872 6871 15983 +f 15969 15968 15984 +f 15984 15968 15981 +f 15984 15981 15985 +f 15985 15981 15980 +f 15985 15980 15978 +f 15969 15984 15971 +f 15971 15984 15986 +f 15971 15986 15973 +f 15973 15986 15974 +f 15986 15984 15985 +f 15986 15985 15987 +f 15987 15985 15978 +f 15987 15978 15976 +f 15975 15974 15987 +f 15987 15974 15986 +f 15975 15987 15976 +f 6915 15988 6917 +f 6917 15988 15989 +f 6917 15989 15990 +f 15990 15989 15991 +f 15990 15991 15992 +f 15992 15991 15993 +f 7017 15993 7019 +f 7019 15993 15994 +f 7021 15994 15995 +f 7022 15995 6926 +f 6926 15995 15996 +f 6926 15996 15997 +f 15997 15996 15998 +f 15997 15998 15999 +f 15999 15998 16000 +f 6907 16000 6910 +f 6910 16000 6911 +f 6911 16000 16001 +f 6911 16001 6913 +f 6913 16001 15988 +f 6907 6906 15999 +f 15999 6906 16002 +f 15999 16002 15997 +f 15997 16002 6905 +f 15997 6905 6926 +f 6926 6905 6904 +f 7015 7013 15992 +f 15992 16003 15990 +f 15990 16003 7010 +f 15990 7010 6917 +f 6917 7010 7006 +f 15989 15988 16004 +f 16004 15988 16001 +f 16004 16001 16005 +f 16005 16001 16000 +f 16005 16000 15998 +f 15989 16004 15991 +f 15991 16004 16006 +f 15991 16006 15993 +f 15993 16006 15994 +f 16006 16004 16005 +f 16006 16005 16007 +f 16007 16005 15998 +f 16007 15998 15996 +f 15995 15994 16007 +f 16007 15994 16006 +f 15995 16007 15996 +f 6903 6927 6904 +f 6904 6927 6926 +f 6825 16008 6903 +f 6903 16008 16009 +f 6903 16009 16010 +f 16010 16009 16011 +f 16010 16011 16012 +f 16012 16011 16013 +f 6893 16013 16014 +f 6893 16014 6891 +f 6891 16015 6890 +f 6890 16015 6888 +f 6888 16015 16016 +f 6888 16016 16017 +f 16017 16016 16018 +f 16017 16018 16019 +f 16019 16018 16020 +f 16019 16020 6833 +f 6833 16020 6830 +f 6830 16020 6829 +f 6829 16020 16021 +f 6829 16021 6827 +f 6827 16021 16008 +f 6827 16008 6825 +f 6833 6835 16019 +f 16019 16022 16017 +f 16017 16022 6837 +f 16017 6837 6888 +f 6888 6837 6839 +f 6835 6837 16022 +f 16012 16023 16010 +f 16010 16023 6902 +f 16010 6902 6903 +f 6903 6902 6927 +f 16009 16008 16024 +f 16024 16008 16021 +f 16024 16021 16025 +f 16025 16021 16020 +f 16025 16020 16018 +f 16009 16024 16011 +f 16011 16024 16026 +f 16011 16026 16013 +f 16013 16026 16014 +f 16026 16024 16025 +f 16026 16025 16027 +f 16027 16025 16018 +f 16027 16018 16016 +f 16015 16014 16027 +f 16027 16014 16026 +f 16015 16027 16016 +f 6888 6841 6887 +f 6842 16028 6841 +f 6841 16028 16029 +f 6841 16029 16030 +f 16030 16029 16031 +f 16030 16031 16032 +f 16032 16031 16033 +f 16032 16033 6877 +f 6877 16033 6875 +f 6874 16033 16034 +f 6928 16034 16035 +f 6928 16035 6929 +f 6929 16035 6931 +f 6931 16035 16036 +f 6931 16036 16037 +f 16037 16036 16038 +f 16037 16038 16039 +f 16039 16038 16040 +f 16039 16040 6851 +f 6851 16040 6849 +f 6849 16040 6847 +f 6847 16040 16041 +f 6847 16041 6844 +f 6844 16041 16028 +f 6851 6852 16039 +f 16039 16042 16037 +f 16037 16042 6853 +f 16037 6853 6931 +f 6931 6853 6854 +f 16032 6881 16043 +f 16032 16043 16030 +f 16030 16043 6882 +f 16030 6882 6841 +f 6841 6882 6887 +f 6881 6882 16043 +f 16029 16028 16044 +f 16044 16028 16041 +f 16044 16041 16045 +f 16045 16041 16040 +f 16045 16040 16038 +f 16029 16044 16031 +f 16031 16044 16046 +f 16031 16046 16033 +f 16033 16046 16034 +f 16046 16044 16045 +f 16046 16045 16047 +f 16047 16045 16038 +f 16047 16038 16036 +f 16035 16034 16047 +f 16047 16034 16046 +f 16035 16047 16036 +f 6857 16048 6855 +f 6855 16048 16049 +f 6855 16049 16050 +f 16050 16049 16051 +f 16050 16051 16052 +f 16052 16051 16053 +f 16052 16053 6994 +f 6994 16053 6996 +f 6996 16053 6998 +f 6998 16053 16054 +f 7002 16054 16055 +f 7002 16055 7004 +f 7004 16055 7005 +f 7005 16055 16056 +f 7005 16056 16057 +f 16057 16056 16058 +f 16057 16058 16059 +f 16059 16058 16060 +f 16059 16060 6925 +f 6925 16060 6860 +f 6860 16060 6859 +f 6859 16060 16061 +f 6859 16061 6858 +f 6858 16048 6857 +f 6925 6924 16059 +f 16059 16062 16057 +f 16057 16062 6922 +f 16057 6922 7005 +f 7005 6922 6919 +f 6994 6993 16052 +f 16052 6993 16063 +f 16052 16063 16050 +f 16050 16063 6933 +f 16050 6933 6855 +f 6855 6933 6932 +f 6993 6933 16063 +f 16049 16048 16064 +f 16064 16048 16061 +f 16064 16061 16065 +f 16065 16061 16060 +f 16065 16060 16058 +f 16049 16064 16051 +f 16051 16064 16066 +f 16051 16066 16053 +f 16053 16066 16054 +f 16066 16064 16065 +f 16066 16065 16067 +f 16067 16065 16058 +f 16067 16058 16056 +f 16055 16054 16067 +f 16067 16054 16066 +f 16055 16067 16056 +f 7045 7086 7048 +f 7048 7086 7083 +f 7044 16068 7045 +f 7045 16068 16069 +f 7045 16069 16070 +f 16070 16069 16071 +f 16070 16071 16072 +f 16072 16071 16073 +f 16072 16073 7095 +f 7095 16073 7097 +f 7097 16073 7098 +f 7098 16073 16074 +f 7098 16074 7099 +f 7102 16075 7060 +f 7060 16075 16076 +f 7060 16076 16077 +f 16077 16076 16078 +f 16077 16078 16079 +f 16079 16078 16080 +f 16079 16080 7036 +f 7036 16080 7038 +f 7043 16081 16068 +f 7036 7035 16079 +f 16079 16082 16077 +f 16077 16082 7034 +f 16077 7034 7060 +f 7060 7034 7033 +f 7035 7034 16082 +f 7095 7093 16072 +f 16072 16083 16070 +f 16070 16083 7090 +f 16070 7090 7045 +f 7045 7090 7086 +f 16069 16068 16084 +f 16084 16068 16081 +f 16084 16081 16085 +f 16085 16081 16080 +f 16085 16080 16078 +f 16069 16084 16071 +f 16071 16084 16086 +f 16071 16086 16073 +f 16073 16086 16074 +f 16086 16084 16085 +f 16086 16085 16087 +f 16087 16085 16078 +f 16087 16078 16076 +f 16075 16074 16087 +f 16087 16074 16086 +f 16075 16087 16076 +f 7031 16088 7032 +f 7032 16088 16089 +f 7032 16089 16090 +f 16090 16089 16091 +f 16090 16091 16092 +f 16092 16091 16093 +f 7011 16095 7009 +f 7009 16095 16096 +f 7009 16096 16097 +f 16097 16096 16098 +f 16097 16098 16099 +f 16099 16098 16100 +f 16099 16100 6912 +f 6912 16100 6909 +f 6909 16100 6908 +f 6908 16100 16101 +f 6908 16101 7023 +f 7023 16101 16088 +f 16099 16102 16097 +f 16097 16102 6916 +f 16097 6916 7009 +f 7009 6916 6918 +f 6914 6916 16102 +f 16092 16103 16090 +f 16090 16103 7062 +f 16090 7062 7032 +f 7032 7062 7061 +f 16089 16088 16104 +f 16104 16088 16101 +f 16104 16101 16105 +f 16105 16101 16100 +f 16105 16100 16098 +f 16089 16104 16091 +f 16091 16104 16106 +f 16091 16106 16093 +f 16093 16106 16094 +f 16106 16104 16105 +f 16106 16105 16107 +f 16107 16105 16098 +f 16107 16098 16096 +f 16095 16094 16107 +f 16107 16094 16106 +f 16095 16107 16096 +f 6918 6920 7009 +f 7009 6920 7008 +f 6921 16108 6920 +f 6920 16108 16109 +f 6920 16109 16110 +f 16110 16109 16111 +f 16110 16111 16112 +f 16112 16111 16113 +f 7064 16115 7065 +f 7065 16115 7067 +f 7067 16115 16116 +f 7067 16116 16117 +f 16117 16116 16118 +f 16117 16118 16119 +f 16119 16118 16120 +f 16119 16120 7059 +f 6923 16121 16108 +f 6923 16108 6921 +f 16119 16122 16117 +f 16117 16122 5497 +f 16117 5497 7067 +f 7067 5497 7058 +f 16112 16123 16110 +f 16110 16123 7003 +f 16110 7003 6920 +f 6920 7003 7008 +f 7001 7003 16123 +f 16109 16108 16124 +f 16124 16108 16121 +f 16124 16121 16125 +f 16125 16121 16120 +f 16125 16120 16118 +f 16109 16124 16111 +f 16111 16124 16126 +f 16111 16126 16113 +f 16113 16126 16114 +f 16126 16124 16125 +f 16126 16125 16127 +f 16127 16125 16118 +f 16127 16118 16116 +f 16115 16114 16127 +f 16127 16114 16126 +f 16115 16127 16116 +f 7058 5646 7067 +f 7067 5646 7068 +f 5648 16128 5646 +f 5646 16128 16129 +f 5646 16129 16130 +f 16130 16129 16131 +f 16130 16131 16132 +f 16132 16131 16133 +f 16132 16133 7073 +f 7077 16134 7085 +f 7085 16134 16135 +f 7085 16135 7082 +f 7082 16135 7083 +f 7083 16135 16136 +f 7083 16136 16137 +f 16137 16136 16138 +f 16137 16138 16139 +f 16139 16138 16140 +f 5649 16141 16128 +f 5649 16128 5648 +f 16139 7055 16142 +f 16139 16142 16137 +f 16137 16142 7051 +f 16137 7051 7083 +f 7083 7051 7048 +f 16132 16143 16130 +f 16130 16143 7070 +f 16130 7070 5646 +f 5646 7070 7068 +f 7071 7070 16143 +f 16129 16128 16144 +f 16144 16128 16141 +f 16144 16141 16145 +f 16145 16141 16140 +f 16145 16140 16138 +f 16129 16144 16131 +f 16131 16144 16146 +f 16131 16146 16133 +f 16133 16146 16134 +f 16146 16144 16145 +f 16146 16145 16147 +f 16147 16145 16138 +f 16147 16138 16136 +f 16135 16134 16147 +f 16147 16134 16146 +f 16135 16147 16136 +f 7146 7199 7195 +f 7142 16148 7143 +f 7143 16148 16149 +f 7143 16149 16150 +f 16150 16149 16151 +f 16150 16151 16152 +f 16152 16151 16153 +f 16152 16153 7204 +f 7205 16153 7206 +f 7206 16153 16154 +f 7207 16155 7106 +f 7106 16155 7105 +f 7105 16155 16156 +f 7105 16156 16157 +f 16157 16156 16158 +f 16157 16158 16159 +f 16159 16158 16160 +f 16159 16160 7115 +f 7115 16160 7137 +f 7140 16161 7141 +f 7141 16161 16148 +f 7141 16148 7142 +f 16159 16162 16157 +f 16157 16162 7113 +f 16157 7113 7105 +f 7105 7113 7111 +f 16152 16163 16150 +f 16150 16163 7200 +f 16150 7200 7143 +f 7143 7200 7199 +f 16149 16148 16164 +f 16164 16148 16161 +f 16164 16161 16165 +f 16165 16161 16160 +f 16165 16160 16158 +f 16149 16164 16151 +f 16151 16164 16166 +f 16151 16166 16153 +f 16153 16166 16154 +f 16166 16164 16165 +f 16166 16165 16167 +f 16167 16165 16158 +f 16167 16158 16156 +f 16155 16154 16167 +f 16167 16154 16166 +f 16155 16167 16156 +f 7110 7104 7111 +f 7111 7104 7105 +f 7030 16168 7110 +f 7110 16168 16169 +f 7110 16169 16170 +f 16170 16169 16171 +f 16170 16171 16172 +f 16172 16171 16173 +f 16172 16173 7101 +f 7101 16173 7096 +f 7096 16173 7094 +f 7094 16173 16174 +f 7094 16174 7092 +f 7091 16175 7089 +f 7089 16175 16176 +f 7089 16176 16177 +f 16177 16176 16178 +f 16177 16178 16179 +f 16179 16178 16180 +f 16179 16180 7041 +f 7029 16181 16168 +f 7041 7042 16179 +f 16179 7042 16182 +f 16179 16182 16177 +f 16177 16182 7047 +f 16177 7047 7089 +f 7089 7047 7050 +f 7042 7047 16182 +f 16172 16183 16170 +f 16170 16183 7103 +f 16170 7103 7110 +f 7110 7103 7104 +f 16169 16168 16184 +f 16184 16168 16181 +f 16184 16181 16185 +f 16185 16181 16180 +f 16185 16180 16178 +f 16169 16184 16171 +f 16171 16184 16186 +f 16171 16186 16173 +f 16173 16186 16174 +f 16186 16184 16185 +f 16186 16185 16187 +f 16187 16185 16178 +f 16187 16178 16176 +f 16175 16174 16187 +f 16187 16174 16186 +f 16175 16187 16176 +f 7050 7053 7089 +f 7089 7053 7088 +f 7052 16188 7053 +f 7053 16188 16189 +f 7053 16189 16190 +f 16190 16189 16191 +f 16190 16191 16192 +f 16192 16191 16193 +f 7074 16193 16194 +f 7169 16194 16195 +f 7175 16195 7176 +f 7176 16195 16196 +f 7176 16196 16197 +f 16197 16196 16198 +f 16197 16198 16199 +f 16199 16198 16200 +f 16199 16200 5654 +f 7057 16200 16201 +f 7054 16201 16188 +f 5654 5656 16199 +f 16199 16202 16197 +f 16197 16202 5657 +f 16197 5657 7176 +f 7176 5657 5658 +f 7078 7080 16192 +f 16192 7080 16203 +f 16192 16203 16190 +f 16190 16203 7081 +f 16190 7081 7053 +f 7053 7081 7088 +f 7080 7081 16203 +f 16189 16188 16204 +f 16204 16188 16201 +f 16204 16201 16205 +f 16205 16201 16200 +f 16205 16200 16198 +f 16189 16204 16191 +f 16191 16204 16206 +f 16191 16206 16193 +f 16193 16206 16194 +f 16206 16204 16205 +f 16206 16205 16207 +f 16207 16205 16198 +f 16207 16198 16196 +f 16195 16194 16207 +f 16207 16194 16206 +f 16195 16207 16196 +f 7176 7167 7177 +f 7166 16208 7167 +f 7167 16208 16209 +f 7167 16209 16210 +f 16210 16209 16211 +f 16210 16211 16212 +f 16212 16211 16213 +f 16212 16213 7182 +f 7186 16213 16214 +f 7193 16215 7195 +f 7195 16215 16216 +f 7195 16216 16217 +f 16217 16216 16218 +f 16217 16218 16219 +f 16219 16218 16220 +f 16219 16220 7154 +f 7154 16220 7155 +f 7155 16220 7164 +f 7164 16220 16221 +f 7164 16221 7165 +f 7165 16221 16208 +f 7165 16208 7166 +f 7154 7153 16219 +f 16219 7153 16222 +f 16219 16222 16217 +f 16217 16222 7149 +f 16217 7149 7195 +f 7195 7149 7146 +f 7182 7180 16212 +f 16212 16223 16210 +f 16210 16223 7179 +f 16210 7179 7167 +f 7167 7179 7177 +f 16209 16208 16224 +f 16224 16208 16221 +f 16224 16221 16225 +f 16225 16221 16220 +f 16225 16220 16218 +f 16209 16224 16211 +f 16211 16224 16226 +f 16211 16226 16213 +f 16213 16226 16214 +f 16226 16224 16225 +f 16226 16225 16227 +f 16227 16225 16218 +f 16227 16218 16216 +f 16215 16214 16227 +f 16227 16214 16226 +f 16215 16227 16216 +f 7129 16228 7133 +f 7133 16228 16229 +f 7133 16229 16230 +f 16230 16229 16231 +f 16230 16231 16232 +f 16232 16231 16233 +f 7334 16235 3424 +f 3424 16235 16236 +f 3424 16236 16237 +f 16237 16236 16238 +f 16237 16238 16239 +f 16239 16238 16240 +f 7123 16240 7125 +f 7125 16240 16241 +f 7127 16228 7129 +f 16239 16242 16237 +f 16237 16242 7214 +f 16237 7214 3424 +f 3424 7214 7213 +f 7215 7214 16242 +f 16232 7311 16243 +f 16232 16243 16230 +f 16230 16243 7309 +f 16230 7309 7133 +f 7133 7309 7303 +f 7311 7309 16243 +f 16229 16228 16244 +f 16244 16228 16241 +f 16244 16241 16245 +f 16245 16241 16240 +f 16245 16240 16238 +f 16229 16244 16231 +f 16231 16244 16246 +f 16231 16246 16233 +f 16233 16246 16234 +f 16246 16244 16245 +f 16246 16245 16247 +f 16247 16245 16238 +f 16247 16238 16236 +f 16235 16234 16247 +f 16247 16234 16246 +f 16235 16247 16236 +f 7211 16248 7212 +f 7212 16248 16249 +f 7212 16249 16250 +f 16250 16249 16251 +f 16250 16251 16252 +f 16252 16251 16253 +f 16252 16253 7229 +f 7230 16253 7231 +f 7231 16253 16254 +f 7231 16254 7203 +f 7203 16255 7201 +f 7201 16255 7198 +f 7198 16255 16256 +f 7198 16256 16257 +f 16257 16256 16258 +f 16257 16258 16259 +f 16259 16258 16260 +f 7208 16260 7209 +f 16259 16262 16257 +f 16257 16262 7145 +f 16257 7145 7198 +f 7198 7145 7148 +f 7138 7145 16262 +f 16252 7109 16263 +f 16252 16263 16250 +f 16250 16263 7108 +f 16250 7108 7212 +f 7212 7108 3425 +f 7109 7108 16263 +f 16249 16248 16264 +f 16264 16248 16261 +f 16264 16261 16265 +f 16265 16261 16260 +f 16265 16260 16258 +f 16249 16264 16251 +f 16251 16264 16266 +f 16251 16266 16253 +f 16253 16266 16254 +f 16266 16264 16265 +f 16266 16265 16267 +f 16267 16265 16258 +f 16267 16258 16256 +f 16255 16254 16267 +f 16267 16254 16266 +f 16255 16267 16256 +f 7150 16268 7151 +f 7151 16268 16269 +f 7151 16269 16270 +f 16270 16269 16271 +f 7183 16272 16273 +f 7242 16274 7243 +f 7243 16274 16275 +f 7243 16275 16276 +f 16276 16275 16277 +f 7226 16277 16278 +f 7227 16278 7228 +f 7228 16278 16279 +f 7228 16279 7152 +f 7152 16268 7150 +f 7225 7224 16276 +f 16276 7224 7243 +f 7224 7159 7243 +f 16270 7194 7151 +f 7194 7196 7151 +f 16269 16268 16280 +f 16280 16268 16279 +f 16280 16279 16281 +f 16281 16279 16278 +f 16281 16278 16282 +f 16282 16278 16277 +f 16282 16277 16275 +f 16272 16271 16280 +f 16280 16271 16269 +f 16272 16280 16281 +f 16273 16272 16281 +f 16273 16281 16282 +f 16274 16273 16282 +f 16274 16282 16275 +f 7161 16283 7160 +f 7160 16283 16284 +f 7160 16284 16285 +f 16285 16284 16286 +f 7293 16288 7300 +f 7298 16289 7299 +f 7299 16289 16290 +f 7299 16290 16291 +f 16291 16290 16292 +f 16291 16292 7221 +f 7221 16292 7222 +f 7222 16293 3102 +f 3102 16293 3101 +f 7162 16294 16283 +f 16291 7217 7299 +f 7217 7136 7299 +f 16285 7246 7160 +f 7246 7245 7160 +f 16284 16283 16295 +f 16295 16283 16294 +f 16295 16294 16296 +f 16296 16294 16293 +f 16296 16293 16297 +f 16297 16293 16292 +f 16297 16292 16290 +f 16287 16286 16295 +f 16295 16286 16284 +f 16287 16295 16296 +f 16288 16287 16296 +f 16288 16296 16297 +f 16289 16288 16297 +f 16289 16297 16290 +f 7356 7436 7359 +f 7359 7436 7432 +f 7352 16298 7356 +f 7356 16298 16299 +f 7356 16299 16300 +f 16300 16299 16301 +f 16300 16301 16302 +f 16302 16301 16303 +f 7326 16303 16304 +f 7325 16304 16305 +f 7325 16305 7323 +f 7323 16305 7322 +f 7322 16305 16306 +f 7322 16306 16307 +f 16307 16306 16308 +f 16307 16308 16309 +f 16309 16308 16310 +f 7342 16310 7346 +f 7346 16310 7348 +f 7348 16310 16311 +f 7348 16311 7350 +f 7350 16298 7352 +f 7342 7341 16309 +f 16309 7341 16312 +f 16309 16312 16307 +f 16307 16312 7340 +f 16307 7340 7322 +f 7322 7340 7339 +f 7329 7444 16302 +f 16302 16313 16300 +f 16300 16313 7442 +f 16300 7442 7356 +f 7356 7442 7436 +f 16299 16298 16314 +f 16314 16298 16311 +f 16314 16311 16315 +f 16315 16311 16310 +f 16315 16310 16308 +f 16299 16314 16301 +f 16301 16314 16316 +f 16301 16316 16303 +f 16303 16316 16304 +f 16316 16314 16315 +f 16316 16315 16317 +f 16317 16315 16308 +f 16317 16308 16306 +f 16305 16304 16317 +f 16317 16304 16316 +f 16305 16317 16306 +f 7337 7321 7339 +f 7339 7321 7322 +f 7336 16318 7337 +f 7337 16318 16319 +f 7337 16319 16320 +f 16320 16319 16321 +f 16320 16321 16322 +f 16322 16321 16323 +f 7318 16323 7316 +f 7316 16323 7314 +f 7314 16324 7312 +f 7310 16325 7307 +f 7307 16325 16326 +f 7307 16326 16327 +f 16327 16326 16328 +f 16327 16328 16329 +f 16329 16328 16330 +f 7126 16330 7124 +f 7335 16331 16318 +f 7126 7128 16329 +f 16329 16332 16327 +f 16327 16332 7130 +f 16327 7130 7307 +f 7307 7130 7132 +f 7318 7319 16322 +f 16322 16333 16320 +f 16320 16333 7320 +f 16320 7320 7337 +f 7337 7320 7321 +f 16319 16318 16334 +f 16334 16318 16331 +f 16334 16331 16335 +f 16335 16331 16330 +f 16335 16330 16328 +f 16319 16334 16321 +f 16321 16334 16336 +f 16321 16336 16323 +f 16323 16336 16324 +f 16336 16334 16335 +f 16336 16335 16337 +f 16337 16335 16328 +f 16337 16328 16326 +f 16325 16324 16337 +f 16337 16324 16336 +f 16325 16337 16326 +f 7218 16338 7219 +f 7219 16338 16339 +f 7219 16339 16340 +f 16340 16339 16341 +f 7294 16342 7292 +f 7290 16342 16343 +f 7371 16343 16344 +f 7372 16344 7373 +f 7373 16344 16345 +f 7373 16345 16346 +f 16346 16345 16347 +f 16346 16347 3106 +f 3105 16347 16348 +f 3105 16348 3104 +f 3104 16348 7223 +f 7223 16348 16349 +f 7223 16349 7220 +f 7220 16349 16338 +f 16346 3107 7373 +f 3107 3109 7373 +f 16340 7297 7219 +f 7297 7306 7219 +f 16339 16338 16350 +f 16350 16338 16349 +f 16350 16349 16351 +f 16351 16349 16348 +f 16351 16348 16352 +f 16352 16348 16347 +f 16352 16347 16345 +f 16342 16341 16350 +f 16350 16341 16339 +f 16342 16350 16351 +f 16343 16342 16351 +f 16343 16351 16352 +f 16344 16343 16352 +f 16344 16352 16345 +f 3113 16353 3111 +f 3111 16353 16354 +f 3111 16354 16355 +f 16355 16354 16356 +f 16355 16356 7377 +f 7377 16356 7422 +f 7422 16356 16357 +f 7422 16357 7424 +f 7424 16357 7426 +f 7426 16357 16358 +f 7426 16358 7433 +f 7433 16358 16359 +f 7431 16359 7432 +f 7432 16359 16360 +f 7432 16360 16361 +f 16361 16360 16362 +f 16361 16362 7365 +f 7365 16362 7366 +f 7366 16362 16363 +f 7366 16363 3116 +f 3116 16363 3115 +f 16361 7361 7432 +f 7361 7359 7432 +f 7377 7376 16355 +f 16355 7376 3111 +f 7376 7375 3111 +f 16354 16353 16365 +f 16365 16353 16364 +f 16365 16364 16366 +f 16366 16364 16363 +f 16366 16363 16367 +f 16367 16363 16362 +f 16367 16362 16360 +f 16357 16356 16365 +f 16365 16356 16354 +f 16357 16365 16366 +f 16358 16357 16366 +f 16358 16366 16367 +f 16359 16358 16367 +f 16359 16367 16360 +f 7487 7543 7490 +f 7490 7543 7539 +f 7483 16368 7487 +f 7487 16368 16369 +f 7487 16369 16370 +f 16370 16369 16371 +f 16370 16371 16372 +f 16372 16371 16373 +f 16372 16373 7512 +f 7512 16373 7510 +f 7510 16373 7509 +f 7509 16373 16374 +f 7509 16374 7508 +f 7508 16374 16375 +f 7506 16375 7505 +f 7505 16375 16376 +f 7505 16376 16377 +f 16377 16376 16378 +f 16377 16378 16379 +f 16379 16378 16380 +f 16379 16380 7474 +f 7474 16380 7477 +f 7477 16380 7479 +f 7479 16380 16381 +f 7481 16381 16368 +f 7481 16368 7483 +f 7474 7450 16379 +f 16379 7450 16382 +f 16379 16382 16377 +f 16377 16382 7449 +f 16377 7449 7505 +f 7505 7449 7448 +f 7450 7449 16382 +f 16372 16383 16370 +f 16370 16383 7549 +f 16370 7549 7487 +f 7487 7549 7543 +f 16369 16368 16384 +f 16384 16368 16381 +f 16384 16381 16385 +f 16385 16381 16380 +f 16385 16380 16378 +f 16369 16384 16371 +f 16371 16384 16386 +f 16371 16386 16373 +f 16373 16386 16374 +f 16386 16384 16385 +f 16386 16385 16387 +f 16387 16385 16378 +f 16387 16378 16376 +f 16375 16374 16387 +f 16387 16374 16386 +f 16375 16387 16376 +f 7446 7504 7448 +f 7445 16388 7446 +f 7446 16388 16389 +f 7446 16389 16390 +f 16390 16389 16391 +f 16390 16391 16392 +f 16392 16391 16393 +f 7516 16393 7328 +f 7328 16393 7330 +f 7330 16394 7331 +f 7331 16394 16395 +f 7331 16395 7443 +f 7443 16395 7440 +f 7440 16395 16396 +f 7440 16396 16397 +f 16397 16396 16398 +f 16397 16398 16399 +f 16399 16398 16400 +f 16399 16400 7349 +f 7349 16400 7347 +f 7347 16400 7344 +f 7345 16401 16388 +f 7345 16388 7445 +f 7349 7351 16399 +f 16399 16402 16397 +f 16397 16402 7353 +f 16397 7353 7440 +f 7440 7353 7355 +f 7351 7353 16402 +f 16392 16403 16390 +f 16390 16403 7503 +f 16390 7503 7446 +f 7446 7503 7504 +f 7515 7503 16403 +f 16389 16388 16404 +f 16404 16388 16401 +f 16404 16401 16405 +f 16405 16401 16400 +f 16405 16400 16398 +f 16389 16404 16391 +f 16391 16404 16406 +f 16391 16406 16393 +f 16393 16406 16394 +f 16406 16404 16405 +f 16406 16405 16407 +f 16407 16405 16398 +f 16407 16398 16396 +f 16395 16394 16407 +f 16407 16394 16406 +f 16395 16407 16396 +f 7355 7363 7440 +f 7362 16408 7363 +f 7363 16408 16409 +f 7363 16409 16410 +f 16410 16409 16411 +f 7429 16411 7427 +f 7427 16411 16412 +f 7427 16412 7425 +f 7425 16412 7423 +f 7423 16412 16413 +f 7423 16413 7517 +f 7517 16413 16414 +f 7518 16414 7520 +f 7520 16414 16415 +f 7520 16415 16416 +f 16416 16415 16417 +f 7369 16417 16418 +f 7367 16419 7364 +f 7364 16419 16408 +f 7370 3120 16416 +f 16416 3120 7520 +f 3120 3122 7520 +f 7429 7430 16410 +f 16410 7430 7363 +f 7430 7439 7363 +f 16409 16408 16420 +f 16420 16408 16419 +f 16420 16419 16421 +f 16421 16419 16418 +f 16421 16418 16422 +f 16422 16418 16417 +f 16422 16417 16415 +f 16412 16411 16420 +f 16420 16411 16409 +f 16412 16420 16421 +f 16413 16412 16421 +f 16413 16421 16422 +f 16414 16413 16422 +f 16414 16422 16415 +f 3122 3123 7520 +f 3124 16423 3123 +f 3123 16423 16424 +f 3123 16424 16425 +f 16425 16424 16426 +f 7533 16427 16428 +f 7533 16428 7540 +f 7540 16429 7538 +f 7538 16429 7539 +f 7539 16429 16430 +f 7539 16430 16431 +f 16431 16430 16432 +f 7496 16432 7497 +f 7497 16433 7499 +f 7499 16433 3127 +f 3127 16433 16434 +f 3127 16434 3126 +f 3126 16434 16423 +f 7496 7492 16431 +f 16431 7492 7539 +f 7492 7490 7539 +f 7523 7522 16425 +f 16425 7522 3123 +f 7522 7521 3123 +f 16424 16423 16435 +f 16435 16423 16434 +f 16435 16434 16436 +f 16436 16434 16433 +f 16436 16433 16437 +f 16437 16433 16432 +f 16437 16432 16430 +f 16427 16426 16435 +f 16435 16426 16424 +f 16427 16435 16436 +f 16428 16427 16436 +f 16428 16436 16437 +f 16429 16428 16437 +f 16429 16437 16430 +f 7470 7658 7473 +f 7473 7658 7654 +f 7466 16438 7470 +f 7470 16438 16439 +f 7470 16439 16440 +f 16440 16439 16441 +f 16440 16441 16442 +f 16442 16441 16443 +f 16442 16443 7583 +f 7581 16443 7580 +f 7580 16443 16444 +f 7579 16445 7577 +f 7577 16445 7576 +f 7576 16445 16446 +f 7576 16446 16447 +f 16447 16446 16448 +f 16447 16448 16449 +f 16449 16448 16450 +f 7460 16450 7462 +f 7464 16438 7466 +f 16449 16452 16447 +f 16447 16452 7555 +f 16447 7555 7576 +f 7576 7555 7554 +f 7456 7555 16452 +f 7583 7666 16442 +f 16442 16453 16440 +f 16440 16453 7664 +f 16440 7664 7470 +f 7470 7664 7658 +f 16439 16438 16454 +f 16454 16438 16451 +f 16454 16451 16455 +f 16455 16451 16450 +f 16455 16450 16448 +f 16439 16454 16441 +f 16441 16454 16456 +f 16441 16456 16443 +f 16443 16456 16444 +f 16456 16454 16455 +f 16456 16455 16457 +f 16457 16455 16448 +f 16457 16448 16446 +f 16445 16444 16457 +f 16457 16444 16456 +f 16445 16457 16446 +f 7552 16458 7553 +f 7553 16458 16459 +f 7553 16459 16460 +f 16460 16459 16461 +f 16460 16461 16462 +f 16462 16461 16463 +f 7587 16463 7511 +f 7513 16464 7514 +f 7514 16464 16465 +f 7514 16465 7550 +f 7550 16465 7547 +f 7547 16465 16466 +f 7547 16466 16467 +f 16467 16466 16468 +f 16467 16468 16469 +f 16469 16468 16470 +f 16469 16470 7480 +f 7480 16470 7478 +f 7476 16458 7552 +f 16469 16472 16467 +f 16467 16472 7484 +f 16467 7484 7547 +f 7547 7484 7486 +f 7482 7484 16472 +f 16462 7586 16473 +f 16462 16473 16460 +f 16460 16473 7574 +f 16460 7574 7553 +f 7553 7574 7575 +f 7586 7574 16473 +f 16459 16458 16474 +f 16474 16458 16471 +f 16474 16471 16475 +f 16475 16471 16470 +f 16475 16470 16468 +f 16459 16474 16461 +f 16461 16474 16476 +f 16461 16476 16463 +f 16463 16476 16464 +f 16476 16474 16475 +f 16476 16475 16477 +f 16477 16475 16468 +f 16477 16468 16466 +f 16465 16464 16477 +f 16477 16464 16476 +f 16465 16477 16466 +f 7547 7494 7546 +f 7493 16478 7494 +f 7494 16478 16479 +f 7494 16479 16480 +f 16480 16479 16481 +f 7534 16481 16482 +f 7534 16482 7532 +f 7532 16482 7529 +f 7529 16483 7530 +f 7530 16484 7588 +f 7588 16484 7624 +f 7624 16484 16485 +f 7624 16485 16486 +f 16486 16485 16487 +f 7502 3131 16486 +f 16486 3131 7624 +f 3131 3133 7624 +f 16480 7537 7494 +f 7537 7546 7494 +f 16479 16478 16490 +f 16490 16478 16489 +f 16490 16489 16491 +f 16491 16489 16488 +f 16491 16488 16492 +f 16492 16488 16487 +f 16492 16487 16485 +f 16482 16481 16490 +f 16490 16481 16479 +f 16482 16490 16491 +f 16483 16482 16491 +f 16483 16491 16492 +f 16484 16483 16492 +f 16484 16492 16485 +f 3135 16493 3134 +f 3134 16493 16494 +f 3134 16494 16495 +f 16495 16494 16496 +f 7648 16497 16498 +f 7648 16498 7655 +f 7655 16498 16499 +f 7655 16499 7653 +f 7653 16499 7654 +f 7654 16499 16500 +f 7654 16500 16501 +f 16501 16500 16502 +f 16501 16502 7561 +f 7562 16503 7564 +f 7573 16504 16493 +f 7573 16493 3135 +f 7561 7557 16501 +f 16501 7557 7654 +f 7557 7473 7654 +f 7627 7626 16495 +f 16495 7626 3134 +f 7626 7625 3134 +f 16494 16493 16505 +f 16505 16493 16504 +f 16505 16504 16506 +f 16506 16504 16503 +f 16506 16503 16507 +f 16507 16503 16502 +f 16507 16502 16500 +f 16497 16496 16505 +f 16505 16496 16494 +f 16497 16505 16506 +f 16498 16497 16506 +f 16498 16506 16507 +f 16499 16498 16507 +f 16499 16507 16500 +f 7693 7765 7696 +f 7696 7765 7761 +f 7689 16508 7693 +f 7693 16508 16509 +f 7693 16509 16510 +f 16510 16509 16511 +f 16510 16511 16512 +f 16512 16511 16513 +f 7730 16513 7729 +f 7729 16513 16514 +f 7727 16515 7725 +f 7725 16515 16516 +f 7725 16516 16517 +f 16517 16516 16518 +f 16517 16518 16519 +f 16519 16518 16520 +f 7683 16520 7685 +f 7687 16521 16508 +f 7687 16508 7689 +f 16519 7679 16522 +f 16519 16522 16517 +f 16517 16522 7678 +f 16517 7678 7725 +f 7725 7678 7677 +f 7679 7678 16522 +f 16512 7773 16523 +f 16512 16523 16510 +f 16510 16523 7771 +f 16510 7771 7693 +f 7693 7771 7765 +f 16509 16508 16524 +f 16524 16508 16521 +f 16524 16521 16525 +f 16525 16521 16520 +f 16525 16520 16518 +f 16509 16524 16511 +f 16511 16524 16526 +f 16511 16526 16513 +f 16513 16526 16514 +f 16526 16524 16525 +f 16526 16525 16527 +f 16527 16525 16518 +f 16527 16518 16516 +f 16515 16514 16527 +f 16527 16514 16526 +f 16515 16527 16516 +f 7667 16528 7676 +f 7676 16528 16529 +f 7676 16529 16530 +f 16530 16529 16531 +f 16530 16531 16532 +f 16532 16531 16533 +f 7582 16533 7584 +f 7584 16533 16534 +f 7585 16535 7665 +f 7665 16535 7662 +f 7662 16535 16536 +f 7662 16536 16537 +f 16537 16536 16538 +f 16537 16538 16539 +f 16539 16538 16540 +f 7463 7465 16539 +f 16539 7465 16542 +f 16539 16542 16537 +f 16537 16542 7467 +f 16537 7467 7662 +f 7662 7467 7469 +f 7465 7467 16542 +f 16532 7733 16543 +f 16532 16543 16530 +f 16530 16543 7723 +f 16530 7723 7676 +f 7676 7723 7724 +f 16529 16528 16544 +f 16544 16528 16541 +f 16544 16541 16545 +f 16545 16541 16540 +f 16545 16540 16538 +f 16529 16544 16531 +f 16531 16544 16546 +f 16531 16546 16533 +f 16533 16546 16534 +f 16546 16544 16545 +f 16546 16545 16547 +f 16547 16545 16538 +f 16547 16538 16536 +f 16535 16534 16547 +f 16547 16534 16546 +f 16535 16547 16536 +f 7469 7559 7662 +f 7662 7559 7661 +f 7558 16548 7559 +f 7559 16548 16549 +f 7559 16549 16550 +f 16550 16549 16551 +f 7649 16551 16552 +f 7647 16552 7645 +f 7736 16554 7738 +f 7738 16554 16555 +f 7738 16555 16556 +f 16556 16555 16557 +f 16556 16557 7568 +f 7568 16557 7567 +f 7567 16558 7565 +f 7565 16558 7563 +f 7563 16559 7560 +f 7560 16548 7558 +f 16556 7569 7738 +f 7569 7722 7738 +f 16550 7652 7559 +f 7652 7661 7559 +f 16549 16548 16560 +f 16560 16548 16559 +f 16560 16559 16561 +f 16561 16559 16558 +f 16561 16558 16562 +f 16562 16558 16557 +f 16562 16557 16555 +f 16552 16551 16560 +f 16560 16551 16549 +f 16552 16560 16561 +f 16553 16552 16561 +f 16553 16561 16562 +f 16554 16553 16562 +f 16554 16562 16555 +f 7722 7720 7738 +f 7738 7720 7739 +f 7717 16563 7720 +f 7720 16563 16564 +f 7720 16564 16565 +f 16565 16564 16566 +f 7741 16566 7746 +f 7746 16566 16567 +f 7762 16568 16569 +f 7760 16569 7761 +f 7761 16569 16570 +f 7761 16570 16571 +f 16571 16570 16572 +f 16571 16572 7702 +f 7715 16573 16574 +f 7719 16563 7717 +f 16571 7698 7761 +f 7698 7696 7761 +f 7741 7740 16565 +f 16565 7740 7720 +f 7740 7739 7720 +f 16564 16563 16575 +f 16575 16563 16574 +f 16575 16574 16576 +f 16576 16574 16573 +f 16576 16573 16577 +f 16577 16573 16572 +f 16577 16572 16570 +f 16567 16566 16575 +f 16575 16566 16564 +f 16567 16575 16576 +f 16568 16567 16576 +f 16568 16576 16577 +f 16569 16568 16577 +f 16569 16577 16570 +f 7789 16578 7794 +f 7794 16578 16579 +f 7794 16579 16580 +f 16580 16579 16581 +f 16580 16581 16582 +f 16582 16581 16583 +f 16582 16583 7826 +f 7823 16583 16584 +f 7822 16585 7821 +f 7821 16585 7819 +f 7819 16585 16586 +f 7819 16586 16587 +f 16587 16586 16588 +f 16587 16588 16589 +f 16589 16588 16590 +f 7781 16590 7783 +f 7783 16590 7785 +f 7785 16590 16591 +f 7787 16591 16578 +f 7787 16578 7789 +f 16589 16592 16587 +f 16587 16592 7779 +f 16587 7779 7819 +f 7819 7779 7778 +f 16582 7828 16593 +f 16582 16593 16580 +f 16580 16593 7830 +f 16580 7830 7794 +f 7794 7830 7834 +f 7828 7830 16593 +f 16579 16578 16594 +f 16594 16578 16591 +f 16594 16591 16595 +f 16595 16591 16590 +f 16595 16590 16588 +f 16579 16594 16581 +f 16581 16594 16596 +f 16581 16596 16583 +f 16583 16596 16584 +f 16596 16594 16595 +f 16596 16595 16597 +f 16597 16595 16588 +f 16597 16588 16586 +f 16585 16584 16597 +f 16597 16584 16596 +f 16585 16597 16586 +f 7776 16598 7777 +f 7777 16598 16599 +f 7777 16599 16600 +f 16600 16599 16601 +f 16600 16601 16602 +f 16602 16601 16603 +f 7732 16603 16604 +f 7732 16604 7774 +f 7774 16604 16605 +f 7774 16605 7772 +f 7772 16605 7769 +f 7769 16605 16606 +f 7769 16606 16607 +f 16607 16606 16608 +f 16607 16608 16609 +f 16609 16608 16610 +f 16609 16610 7686 +f 7686 16610 7684 +f 7684 16610 7682 +f 7682 16610 16611 +f 7680 16611 16598 +f 7686 7688 16609 +f 16609 7688 16612 +f 16609 16612 16607 +f 16607 16612 7690 +f 16607 7690 7769 +f 7769 7690 7692 +f 7688 7690 16612 +f 7839 7838 16602 +f 16602 7838 16613 +f 16602 16613 16600 +f 16600 16613 7817 +f 16600 7817 7777 +f 7777 7817 7818 +f 7838 7817 16613 +f 16599 16598 16614 +f 16614 16598 16611 +f 16614 16611 16615 +f 16615 16611 16610 +f 16615 16610 16608 +f 16599 16614 16601 +f 16601 16614 16616 +f 16601 16616 16603 +f 16603 16616 16604 +f 16616 16614 16615 +f 16616 16615 16617 +f 16617 16615 16608 +f 16617 16608 16606 +f 16605 16604 16617 +f 16617 16604 16616 +f 16605 16617 16606 +f 7692 7700 7769 +f 7769 7700 7768 +f 7699 16618 7700 +f 7700 16618 16619 +f 7700 16619 16620 +f 16620 16619 16621 +f 7756 16622 7754 +f 7747 16623 7748 +f 7749 16624 7751 +f 7751 16624 16625 +f 7751 16625 16626 +f 16626 16625 16627 +f 16626 16627 7709 +f 7708 16628 7706 +f 7706 16628 7704 +f 7704 16628 16629 +f 7704 16629 7701 +f 16626 7710 7751 +f 7710 7816 7751 +f 7758 7759 16620 +f 16620 7759 7700 +f 7759 7768 7700 +f 16619 16618 16630 +f 16630 16618 16629 +f 16630 16629 16631 +f 16631 16629 16628 +f 16631 16628 16632 +f 16632 16628 16627 +f 16632 16627 16625 +f 16622 16621 16630 +f 16630 16621 16619 +f 16622 16630 16631 +f 16623 16622 16631 +f 16623 16631 16632 +f 16624 16623 16632 +f 16624 16632 16625 +f 7751 7814 7752 +f 7813 16633 7814 +f 7814 16633 16634 +f 7814 16634 16635 +f 16635 16634 16636 +f 16635 16636 7841 +f 7850 16636 16637 +f 7850 16637 7853 +f 7853 16637 7855 +f 7855 16638 7861 +f 7861 16638 16639 +f 7860 16639 7837 +f 7837 16639 16640 +f 7837 16640 16641 +f 16641 16640 16642 +f 7804 16643 7811 +f 16641 7799 7837 +f 7799 7796 7837 +f 16635 7840 7814 +f 7840 7752 7814 +f 16634 16633 16645 +f 16645 16633 16644 +f 16645 16644 16646 +f 16646 16644 16643 +f 16646 16643 16647 +f 16647 16643 16642 +f 16647 16642 16640 +f 16637 16636 16645 +f 16645 16636 16634 +f 16637 16645 16646 +f 16638 16637 16646 +f 16638 16646 16647 +f 16639 16638 16647 +f 16639 16647 16640 +f 7888 7972 7890 +f 7884 16648 7888 +f 7888 16648 16649 +f 7888 16649 16650 +f 16650 16649 16651 +f 16650 16651 16652 +f 16652 16651 16653 +f 7978 16653 7979 +f 7979 16653 7981 +f 7981 16653 16654 +f 7983 16655 7984 +f 7984 16655 16656 +f 7984 16656 16657 +f 16657 16656 16658 +f 16657 16658 16659 +f 16659 16658 16660 +f 16659 16660 7878 +f 7878 16660 7880 +f 7880 16660 7881 +f 7881 16660 16661 +f 7881 16661 7882 +f 7882 16661 16648 +f 16659 16662 16657 +f 16657 16662 7876 +f 16657 7876 7984 +f 7984 7876 7875 +f 16652 7976 16663 +f 16652 16663 16650 +f 16650 16663 7974 +f 16650 7974 7888 +f 7888 7974 7972 +f 7976 7974 16663 +f 16649 16648 16664 +f 16664 16648 16661 +f 16664 16661 16665 +f 16665 16661 16660 +f 16665 16660 16658 +f 16649 16664 16651 +f 16651 16664 16666 +f 16651 16666 16653 +f 16653 16666 16654 +f 16666 16664 16665 +f 16666 16665 16667 +f 16667 16665 16658 +f 16667 16658 16656 +f 16655 16654 16667 +f 16667 16654 16666 +f 16655 16667 16656 +f 7864 7927 7875 +f 7675 16668 7864 +f 7864 16668 16669 +f 7864 16669 16670 +f 16670 16669 16671 +f 16670 16671 16672 +f 16672 16671 16673 +f 7929 16673 7825 +f 7827 16673 16674 +f 7827 16674 7829 +f 7829 16674 16675 +f 7829 16675 7831 +f 7831 16675 7833 +f 7833 16675 16676 +f 7833 16676 16677 +f 16677 16676 16678 +f 16677 16678 16679 +f 16679 16678 16680 +f 16679 16680 7786 +f 7786 16680 7784 +f 7782 16680 16681 +f 7782 16681 7674 +f 7674 16681 16668 +f 7786 7788 16679 +f 16679 7788 16682 +f 16679 16682 16677 +f 16677 16682 7790 +f 16677 7790 7833 +f 7833 7790 7793 +f 7788 7790 16682 +f 7929 7928 16672 +f 16672 16683 16670 +f 16670 16683 7926 +f 16670 7926 7864 +f 7864 7926 7927 +f 7928 7926 16683 +f 16669 16668 16684 +f 16684 16668 16681 +f 16684 16681 16685 +f 16685 16681 16680 +f 16685 16680 16678 +f 16669 16684 16671 +f 16671 16684 16686 +f 16671 16686 16673 +f 16673 16686 16674 +f 16686 16684 16685 +f 16686 16685 16687 +f 16687 16685 16678 +f 16687 16678 16676 +f 16675 16674 16687 +f 16687 16674 16686 +f 16675 16687 16676 +f 7798 16688 7797 +f 7797 16688 16689 +f 7797 16689 16690 +f 16690 16689 16691 +f 7856 16691 16692 +f 7856 16692 7854 +f 7854 16692 7851 +f 7851 16692 16693 +f 7851 16693 7852 +f 7852 16693 16694 +f 7852 16694 7931 +f 7931 16694 7948 +f 7948 16694 16695 +f 7948 16695 16696 +f 16696 16695 16697 +f 16696 16697 7809 +f 7924 16697 16698 +f 7924 16698 7805 +f 7805 16698 7803 +f 7803 16698 16699 +f 16696 7808 7948 +f 7808 7917 7948 +f 16690 7859 7797 +f 7859 7930 7797 +f 16689 16688 16700 +f 16700 16688 16699 +f 16700 16699 16701 +f 16701 16699 16698 +f 16701 16698 16702 +f 16702 16698 16697 +f 16702 16697 16695 +f 16692 16691 16700 +f 16700 16691 16689 +f 16692 16700 16701 +f 16693 16692 16701 +f 16693 16701 16702 +f 16694 16693 16702 +f 16694 16702 16695 +f 7901 16703 7904 +f 7904 16703 16704 +f 7904 16704 16705 +f 16705 16704 16706 +f 16705 16706 7951 +f 7966 16709 7968 +f 7968 16709 16710 +f 7968 16710 16711 +f 16711 16710 16712 +f 7896 16712 16713 +f 7896 16713 7898 +f 7898 16713 7903 +f 7903 16713 16714 +f 7903 16714 7902 +f 7902 16714 16703 +f 7902 16703 7901 +f 16711 7893 7968 +f 7893 7890 7968 +f 16705 7950 7904 +f 7950 7949 7904 +f 16704 16703 16715 +f 16715 16703 16714 +f 16715 16714 16716 +f 16716 16714 16713 +f 16716 16713 16717 +f 16717 16713 16712 +f 16717 16712 16710 +f 16707 16706 16715 +f 16715 16706 16704 +f 16707 16715 16716 +f 16708 16707 16716 +f 16708 16716 16717 +f 16709 16708 16717 +f 16709 16717 16710 +f 8006 3444 8008 +f 8008 3444 3448 +f 8004 16718 8006 +f 8006 16718 16719 +f 8006 16719 16720 +f 16720 16719 16721 +f 16720 16721 3440 +f 3440 16721 3438 +f 3434 16722 16723 +f 3434 16723 3432 +f 3432 16724 3430 +f 3430 16724 3428 +f 3428 16724 16725 +f 3428 16725 16726 +f 16726 16725 16727 +f 16726 16727 7994 +f 7994 16727 7996 +f 7996 16727 16728 +f 7996 16728 7998 +f 8000 16729 8002 +f 8002 16729 16718 +f 8002 16718 8004 +f 16726 7991 3428 +f 7991 7990 3428 +f 3440 3442 16720 +f 16720 3442 8006 +f 3442 3444 8006 +f 16719 16718 16730 +f 16730 16718 16729 +f 16730 16729 16731 +f 16731 16729 16728 +f 16731 16728 16732 +f 16732 16728 16727 +f 16732 16727 16725 +f 16722 16721 16730 +f 16730 16721 16719 +f 16722 16730 16731 +f 16723 16722 16731 +f 16723 16731 16732 +f 16724 16723 16732 +f 16724 16732 16725 +f 7988 16733 7989 +f 7989 16733 16734 +f 7989 16734 16735 +f 16735 16734 16736 +f 8027 16736 16737 +f 8028 16737 7977 +f 7975 16738 16739 +f 7973 16739 7971 +f 7971 16739 16740 +f 7971 16740 16741 +f 16741 16740 16742 +f 16741 16742 7883 +f 7883 16742 7879 +f 7879 16742 16743 +f 7879 16743 7985 +f 7985 16743 7986 +f 7987 16744 16733 +f 7883 7885 16741 +f 16741 7885 7971 +f 7885 7887 7971 +f 8026 8025 16735 +f 16735 8025 7989 +f 8025 8024 7989 +f 16734 16733 16745 +f 16745 16733 16744 +f 16745 16744 16746 +f 16746 16744 16743 +f 16746 16743 16747 +f 16747 16743 16742 +f 16747 16742 16740 +f 16737 16736 16745 +f 16745 16736 16734 +f 16737 16745 16746 +f 16738 16737 16746 +f 16738 16746 16747 +f 16739 16738 16747 +f 16739 16747 16740 +f 7892 16748 7891 +f 7891 16748 16749 +f 7891 16749 16750 +f 16750 16749 16751 +f 16750 16751 7962 +f 7962 16751 7959 +f 7959 16751 16752 +f 7959 16752 8029 +f 8030 16752 16753 +f 8031 16754 8032 +f 8032 16754 8033 +f 8033 16754 16755 +f 8033 16755 16756 +f 16756 16755 16757 +f 8020 16757 8022 +f 7897 16759 7894 +f 7894 16759 16748 +f 7894 16748 7892 +f 16756 7907 8033 +f 7907 7909 8033 +f 16750 7967 7891 +f 7967 7969 7891 +f 16749 16748 16760 +f 16760 16748 16759 +f 16760 16759 16761 +f 16761 16759 16758 +f 16761 16758 16762 +f 16762 16758 16757 +f 16762 16757 16755 +f 16752 16751 16760 +f 16760 16751 16749 +f 16752 16760 16761 +f 16753 16752 16761 +f 16753 16761 16762 +f 16754 16753 16762 +f 16754 16762 16755 +f 8033 7911 8034 +f 7912 16763 7911 +f 7911 16763 16764 +f 7911 16764 16765 +f 16765 16764 16766 +f 16765 16766 8036 +f 8036 16766 3458 +f 3458 16766 16767 +f 3458 16767 3456 +f 3456 16767 3454 +f 3454 16767 16768 +f 3454 16768 3453 +f 3453 16768 16769 +f 3449 16769 3448 +f 3448 16769 16770 +f 3448 16770 16771 +f 16771 16770 16772 +f 8012 16772 8014 +f 8014 16773 8016 +f 8018 16773 16774 +f 8018 16774 8019 +f 8019 16763 7912 +f 8012 8010 16771 +f 16771 8010 3448 +f 8010 8008 3448 +f 8036 8035 16765 +f 16765 8035 7911 +f 8035 8034 7911 +f 16764 16763 16775 +f 16775 16763 16774 +f 16775 16774 16776 +f 16776 16774 16773 +f 16776 16773 16777 +f 16777 16773 16772 +f 16777 16772 16770 +f 16767 16766 16775 +f 16775 16766 16764 +f 16767 16775 16776 +f 16768 16767 16776 +f 16768 16776 16777 +f 16769 16768 16777 +f 16769 16777 16770 +f 8052 8100 8054 +f 8050 16778 8052 +f 8052 16778 16779 +f 8052 16779 16780 +f 16780 16779 16781 +f 16780 16781 8105 +f 8107 16781 16782 +f 8107 16782 8109 +f 8109 16782 8111 +f 8111 16782 16783 +f 8113 16783 16784 +f 8115 16784 8116 +f 8116 16784 16785 +f 8116 16785 16786 +f 16786 16785 16787 +f 16786 16787 8040 +f 8046 16788 16789 +f 8046 16789 8048 +f 8048 16789 16778 +f 8040 8038 16786 +f 16786 8038 8116 +f 8038 8037 8116 +f 8105 8103 16780 +f 16780 8103 8052 +f 8103 8100 8052 +f 16779 16778 16790 +f 16790 16778 16789 +f 16790 16789 16791 +f 16791 16789 16788 +f 16791 16788 16792 +f 16792 16788 16787 +f 16792 16787 16785 +f 16782 16781 16790 +f 16790 16781 16779 +f 16782 16790 16791 +f 16783 16782 16791 +f 16783 16791 16792 +f 16784 16783 16792 +f 16784 16792 16785 +f 7993 3429 8037 +f 7992 16793 7993 +f 7993 16793 16794 +f 7993 16794 16795 +f 16795 16794 16796 +f 16795 16796 3433 +f 3433 16796 3435 +f 3435 16796 16797 +f 3435 16797 3437 +f 3437 16797 3439 +f 3439 16797 16798 +f 3439 16798 3441 +f 3441 16799 3443 +f 3443 16799 3445 +f 3445 16799 16800 +f 3445 16800 16801 +f 16801 16800 16802 +f 16801 16802 8003 +f 8003 16802 8001 +f 8001 16802 16803 +f 8001 16803 7999 +f 7997 16803 16804 +f 7997 16804 7995 +f 8003 8005 16801 +f 16801 8005 3445 +f 8005 8007 3445 +f 16795 3431 7993 +f 3431 3429 7993 +f 16794 16793 16805 +f 16805 16793 16804 +f 16805 16804 16806 +f 16806 16804 16803 +f 16806 16803 16807 +f 16807 16803 16802 +f 16807 16802 16800 +f 16797 16796 16805 +f 16805 16796 16794 +f 16797 16805 16806 +f 16798 16797 16806 +f 16798 16806 16807 +f 16799 16798 16807 +f 16799 16807 16800 +f 8007 8009 3445 +f 3445 8009 3447 +f 8011 16808 8009 +f 8009 16808 16809 +f 8009 16809 16810 +f 16810 16809 16811 +f 3459 16812 16813 +f 3459 16813 3461 +f 3461 16813 16814 +f 3462 16814 8077 +f 8077 16814 16815 +f 8077 16815 16816 +f 16816 16815 16817 +f 7916 16817 16818 +f 8013 16819 16808 +f 7915 7913 16816 +f 16816 7913 8077 +f 7913 8069 8077 +f 16810 3450 8009 +f 3450 3447 8009 +f 16809 16808 16820 +f 16820 16808 16819 +f 16820 16819 16821 +f 16821 16819 16818 +f 16821 16818 16822 +f 16822 16818 16817 +f 16822 16817 16815 +f 16812 16811 16820 +f 16820 16811 16809 +f 16812 16820 16821 +f 16813 16812 16821 +f 16813 16821 16822 +f 16814 16813 16822 +f 16814 16822 16815 +f 8069 8068 8077 +f 8066 16823 8068 +f 8068 16823 16824 +f 8068 16824 16825 +f 16825 16824 16826 +f 16825 16826 8084 +f 8085 16826 16827 +f 8093 16828 16829 +f 8093 16829 8095 +f 8095 16829 8098 +f 8098 16829 16830 +f 8098 16830 16831 +f 16831 16830 16832 +f 16831 16832 8058 +f 8058 16832 8060 +f 8060 16833 8070 +f 8072 16834 16823 +f 16831 8056 8098 +f 8056 8054 8098 +f 16825 8083 8068 +f 8083 8082 8068 +f 16824 16823 16835 +f 16835 16823 16834 +f 16835 16834 16836 +f 16836 16834 16833 +f 16836 16833 16837 +f 16837 16833 16832 +f 16837 16832 16830 +f 16827 16826 16835 +f 16835 16826 16824 +f 16827 16835 16836 +f 16828 16827 16836 +f 16828 16836 16837 +f 16829 16828 16837 +f 16829 16837 16830 +f 8132 8189 8134 +f 8134 8189 8187 +f 8130 16838 8132 +f 8132 16838 16839 +f 8132 16839 16840 +f 16840 16839 16841 +f 16840 16841 8194 +f 8194 16841 8196 +f 8198 16842 8200 +f 8200 16842 16843 +f 8200 16843 8204 +f 8205 16844 8161 +f 8161 16844 16845 +f 8161 16845 16846 +f 16846 16845 16847 +f 16846 8119 8161 +f 8119 8118 8161 +f 8194 8192 16840 +f 16840 8192 8132 +f 8192 8189 8132 +f 16839 16838 16850 +f 16850 16838 16849 +f 16850 16849 16851 +f 16851 16849 16848 +f 16851 16848 16852 +f 16852 16848 16847 +f 16852 16847 16845 +f 16842 16841 16850 +f 16850 16841 16839 +f 16842 16850 16851 +f 16843 16842 16851 +f 16843 16851 16852 +f 16844 16843 16852 +f 16844 16852 16845 +f 8118 8162 8161 +f 8039 16853 8117 +f 8117 16853 16854 +f 8117 16854 16855 +f 16855 16854 16856 +f 8112 16856 8110 +f 8110 16856 16857 +f 8110 16857 8108 +f 8108 16857 8106 +f 8106 16857 16858 +f 8104 16858 16859 +f 8104 16859 8102 +f 8102 16859 8101 +f 8101 16859 16860 +f 8101 16860 16861 +f 16861 16860 16862 +f 16861 16862 8049 +f 8049 16862 8047 +f 8043 16863 16864 +f 8049 8051 16861 +f 16861 8051 8101 +f 8051 8053 8101 +f 8112 8114 16855 +f 16855 8114 8117 +f 8114 8162 8117 +f 16854 16853 16865 +f 16865 16853 16864 +f 16865 16864 16866 +f 16866 16864 16863 +f 16866 16863 16867 +f 16867 16863 16862 +f 16867 16862 16860 +f 16857 16856 16865 +f 16865 16856 16854 +f 16857 16865 16866 +f 16858 16857 16866 +f 16858 16866 16867 +f 16859 16858 16867 +f 16859 16867 16860 +f 8053 8055 8101 +f 8101 8055 8097 +f 8057 16868 8055 +f 8055 16868 16869 +f 8055 16869 16870 +f 16870 16869 16871 +f 8086 16873 8087 +f 8087 16873 16874 +f 8163 16874 8164 +f 8164 16874 16875 +f 8164 16875 16876 +f 16876 16875 16877 +f 16876 16877 8065 +f 8064 16877 16878 +f 8064 16878 8063 +f 8063 16878 8061 +f 8061 16878 16879 +f 8061 16879 8059 +f 8059 16879 16868 +f 8059 16868 8057 +f 8065 8155 16876 +f 16876 8155 8164 +f 8155 8154 8164 +f 16870 8096 8055 +f 8096 8097 8055 +f 16869 16868 16880 +f 16880 16868 16879 +f 16880 16879 16881 +f 16881 16879 16878 +f 16881 16878 16882 +f 16882 16878 16877 +f 16882 16877 16875 +f 16872 16871 16880 +f 16880 16871 16869 +f 16872 16880 16881 +f 16873 16872 16881 +f 16873 16881 16882 +f 16874 16873 16882 +f 16874 16882 16875 +f 8154 8150 8164 +f 8147 16883 8150 +f 8150 16883 16884 +f 8150 16884 16885 +f 16885 16884 16886 +f 16885 16886 8168 +f 8168 16886 8175 +f 8175 16886 16887 +f 8181 16887 16888 +f 8181 16888 8183 +f 8203 16889 8187 +f 8187 16889 16890 +f 8187 16890 16891 +f 16891 16890 16892 +f 8138 16892 8140 +f 8146 16883 8147 +f 8138 8136 16891 +f 16891 8136 8187 +f 8136 8134 8187 +f 8168 8167 16885 +f 16885 8167 8150 +f 8167 8166 8150 +f 16884 16883 16895 +f 16895 16883 16894 +f 16895 16894 16896 +f 16896 16894 16893 +f 16896 16893 16897 +f 16897 16893 16892 +f 16897 16892 16890 +f 16887 16886 16895 +f 16895 16886 16884 +f 16887 16895 16896 +f 16888 16887 16896 +f 16888 16896 16897 +f 16889 16888 16897 +f 16889 16897 16890 +f 8215 16898 8216 +f 8216 16898 16899 +f 8216 16899 16900 +f 16900 16899 16901 +f 3467 16902 3463 +f 3464 16903 8273 +f 8273 16903 16904 +f 8274 16904 8260 +f 8260 16904 16905 +f 8260 16905 16906 +f 16906 16905 16907 +f 16906 16907 7873 +f 8213 16909 16898 +f 16906 8209 8260 +f 8209 8208 8260 +f 3468 3469 16900 +f 16900 3469 8216 +f 3469 3465 8216 +f 16899 16898 16910 +f 16910 16898 16909 +f 16910 16909 16911 +f 16911 16909 16908 +f 16911 16908 16912 +f 16912 16908 16907 +f 16912 16907 16905 +f 16902 16901 16910 +f 16910 16901 16899 +f 16902 16910 16911 +f 16903 16902 16911 +f 16903 16911 16912 +f 16904 16903 16912 +f 16904 16912 16905 +f 8208 8261 8260 +f 8206 16913 8207 +f 8207 16913 16914 +f 8207 16914 16915 +f 16915 16914 16916 +f 8201 16916 8199 +f 8199 16916 16917 +f 8199 16917 8197 +f 8197 16917 8195 +f 8195 16917 16918 +f 8195 16918 8193 +f 8193 16919 8191 +f 8191 16919 8190 +f 8190 16919 16920 +f 8190 16920 16921 +f 16921 16920 16922 +f 8123 16924 8120 +f 8120 16924 16913 +f 8129 8131 16921 +f 16921 8131 8190 +f 8131 8133 8190 +f 8201 8202 16915 +f 16915 8202 8207 +f 8202 8261 8207 +f 16914 16913 16925 +f 16925 16913 16924 +f 16925 16924 16926 +f 16926 16924 16923 +f 16926 16923 16927 +f 16927 16923 16922 +f 16927 16922 16920 +f 16917 16916 16925 +f 16925 16916 16914 +f 16917 16925 16926 +f 16918 16917 16926 +f 16918 16926 16927 +f 16919 16918 16927 +f 16919 16927 16920 +f 8137 16928 8135 +f 8135 16928 16929 +f 8135 16929 16930 +f 16930 16929 16931 +f 16930 16931 8182 +f 8182 16931 8180 +f 8180 16931 16932 +f 8180 16932 8178 +f 8178 16932 8176 +f 8176 16932 16933 +f 8176 16933 8177 +f 8171 16934 8173 +f 8173 16934 16935 +f 8173 16935 16936 +f 16936 16935 16937 +f 8139 16928 8137 +f 16936 8152 8173 +f 8152 8247 8173 +f 8182 8184 16930 +f 16930 8184 8135 +f 8184 8186 8135 +f 16929 16928 16940 +f 16940 16928 16939 +f 16940 16939 16941 +f 16941 16939 16938 +f 16941 16938 16942 +f 16942 16938 16937 +f 16942 16937 16935 +f 16932 16931 16940 +f 16940 16931 16929 +f 16932 16940 16941 +f 16933 16932 16941 +f 16933 16941 16942 +f 16934 16933 16942 +f 16934 16942 16935 +f 8247 8246 8173 +f 8173 8246 8174 +f 8229 16943 8246 +f 8246 16943 16944 +f 8246 16944 16945 +f 16945 16944 16946 +f 16945 16946 8268 +f 8268 16946 8266 +f 3475 16948 16949 +f 8270 16949 3470 +f 3470 16949 16950 +f 3470 16950 16951 +f 16951 16950 16952 +f 8222 16952 8223 +f 8224 16953 8227 +f 8227 16953 16954 +f 8228 16954 16943 +f 8228 16943 8229 +f 8222 8219 16951 +f 16951 8219 3470 +f 8219 8218 3470 +f 8268 8262 16945 +f 16945 8262 8246 +f 8262 8174 8246 +f 16944 16943 16955 +f 16955 16943 16954 +f 16955 16954 16956 +f 16956 16954 16953 +f 16956 16953 16957 +f 16957 16953 16952 +f 16957 16952 16950 +f 16947 16946 16955 +f 16955 16946 16944 +f 16947 16955 16956 +f 16948 16947 16956 +f 16948 16956 16957 +f 16949 16948 16957 +f 16949 16957 16950 +f 16958 16959 16960 +f 16960 16959 16961 +f 16960 16961 16962 +f 16962 16961 16963 +f 16962 16963 2967 +f 16959 16958 16964 +f 16964 16958 16965 +f 16964 16965 16966 +f 16966 16965 16967 +f 16966 16967 16968 +f 16968 16967 16969 +f 16968 16969 16970 +f 16970 16969 16971 +f 16970 16971 16972 +f 16972 16971 16973 +f 16972 16973 16974 +f 16974 16973 16975 +f 16974 16975 16976 +f 16976 16975 16977 +f 16976 16977 16978 +f 16978 16977 16979 +f 16978 16979 16980 +f 16980 16979 16981 +f 16980 16981 16982 +f 16982 16981 16983 +f 16982 16983 16984 +f 16984 16983 16985 +f 16984 16985 16986 +f 16986 16985 16987 +f 16986 16987 16988 +f 16988 16987 16989 +f 16988 16989 16990 +f 16990 16989 16991 +f 16990 16991 16992 +f 16992 16991 16993 +f 16992 16993 16994 +f 16994 16993 16995 +f 16994 16995 16996 +f 16996 16995 16997 +f 16996 16997 16998 +f 16998 16997 16999 +f 16998 16999 17000 +f 17000 16999 17001 +f 17000 17001 17002 +f 17002 17001 17003 +f 17002 17003 17004 +f 17004 17003 17005 +f 17004 17005 17006 +f 17006 17005 17007 +f 17006 17007 17008 +f 17008 17007 17009 +f 17008 17009 17010 +f 17010 17009 17011 +f 17010 17011 2937 +f 2937 17011 2917 +f 2917 17011 17012 +f 2917 17012 17013 +f 17013 17012 17014 +f 17013 17014 17015 +f 17015 17014 17016 +f 17015 17016 17017 +f 17017 17016 17018 +f 17017 17018 17019 +f 17019 17018 17020 +f 17019 17020 17021 +f 17021 17020 17022 +f 17021 17022 17023 +f 17023 17022 17024 +f 17023 17024 17025 +f 17025 17024 17026 +f 17025 17026 17027 +f 17027 17026 17028 +f 17027 17028 17029 +f 17029 17028 17030 +f 17029 17030 17031 +f 17031 17030 17032 +f 17031 17032 17033 +f 17033 17032 17034 +f 17033 17034 2747 +f 16971 17035 16973 +f 16973 17035 17036 +f 16973 17036 16975 +f 16975 17036 17037 +f 16975 17037 16977 +f 16977 17037 17038 +f 16977 17038 16979 +f 16979 17038 17039 +f 16979 17039 16981 +f 16981 17039 17040 +f 16981 17040 16983 +f 16983 17040 17041 +f 16983 17041 16985 +f 16985 17041 17042 +f 16985 17042 16987 +f 16987 17042 17043 +f 16987 17043 16989 +f 16989 17043 17044 +f 16989 17044 16991 +f 16991 17044 17045 +f 16991 17045 16993 +f 16993 17045 17046 +f 16993 17046 16995 +f 16995 17046 17047 +f 16995 17047 16997 +f 16997 17047 17048 +f 16997 17048 16999 +f 16999 17048 17049 +f 16999 17049 17001 +f 17001 17049 17050 +f 17001 17050 17003 +f 17003 17050 17051 +f 17003 17051 17005 +f 17005 17051 17052 +f 17005 17052 17007 +f 17007 17052 17053 +f 17007 17053 17009 +f 17009 17053 17054 +f 17009 17054 17011 +f 17011 17054 17012 +f 17036 17035 17055 +f 17055 17035 17056 +f 17055 17056 17057 +f 17057 17056 17058 +f 17057 17058 17059 +f 17059 17058 17060 +f 17059 17060 17061 +f 17061 17060 17062 +f 17061 17062 17063 +f 17063 17062 17064 +f 17063 17064 17065 +f 17065 17064 17066 +f 17065 17066 17067 +f 17067 17066 17068 +f 17067 17068 17069 +f 17069 17068 17070 +f 17069 17070 17071 +f 17071 17070 17072 +f 17071 17072 17073 +f 17073 17072 17074 +f 17073 17074 17075 +f 17075 17074 17076 +f 17075 17076 17077 +f 17077 17076 17078 +f 17077 17078 17079 +f 17079 17078 17080 +f 17079 17080 17081 +f 17081 17080 17082 +f 17081 17082 17083 +f 17083 17082 17084 +f 17083 17084 17085 +f 17085 17084 17086 +f 17085 17086 17087 +f 17087 17086 17088 +f 17087 17088 17089 +f 17089 17088 17020 +f 17089 17020 17018 +f 17058 17090 17060 +f 17060 17090 17091 +f 17060 17091 17062 +f 17062 17091 17092 +f 17062 17092 17064 +f 17064 17092 17093 +f 17064 17093 17066 +f 17066 17093 17094 +f 17066 17094 17068 +f 17068 17094 17095 +f 17068 17095 17070 +f 17070 17095 17096 +f 17070 17096 17072 +f 17072 17096 17097 +f 17072 17097 17074 +f 17074 17097 17098 +f 17074 17098 17076 +f 17076 17098 17099 +f 17076 17099 17078 +f 17078 17099 17100 +f 17078 17100 17080 +f 17080 17100 17101 +f 17080 17101 17082 +f 17082 17101 17102 +f 17082 17102 17084 +f 17084 17102 17103 +f 17084 17103 17086 +f 17086 17103 17104 +f 17086 17104 17088 +f 17088 17104 17022 +f 17088 17022 17020 +f 17091 17090 17105 +f 17105 17090 17106 +f 17105 17106 17107 +f 17107 17106 17108 +f 17107 17108 17109 +f 17109 17108 17110 +f 17109 17110 17111 +f 17111 17110 17112 +f 17111 17112 17113 +f 17113 17112 17114 +f 17113 17114 17115 +f 17115 17114 17116 +f 17115 17116 17117 +f 17117 17116 17118 +f 17117 17118 17119 +f 17119 17118 17120 +f 17119 17120 17121 +f 17121 17120 17122 +f 17121 17122 17123 +f 17123 17122 17124 +f 17123 17124 17125 +f 17125 17124 17126 +f 17125 17126 17127 +f 17127 17126 17128 +f 17127 17128 17129 +f 17129 17128 17028 +f 17129 17028 17026 +f 2747 17130 17106 +f 17106 17130 17131 +f 17106 17131 17132 +f 17132 17131 17133 +f 17132 17133 17110 +f 17110 17133 17112 +f 2749 17134 2748 +f 2748 17134 17135 +f 2748 17135 17136 +f 17136 17135 17137 +f 17136 17137 17138 +f 17138 17137 17139 +f 17138 17139 17140 +f 17140 17139 17141 +f 17140 17141 17142 +f 17142 17141 17143 +f 17142 17143 2747 +f 2750 17144 2749 +f 2749 17144 17145 +f 2749 17145 17134 +f 17134 17145 17146 +f 17134 17146 17147 +f 17147 17146 17148 +f 17147 17148 17149 +f 17149 17148 17150 +f 17149 17150 17151 +f 17151 17150 17152 +f 17151 17152 17153 +f 17153 17152 17154 +f 17153 17154 17155 +f 17155 17154 17156 +f 17155 17156 2747 +f 2752 17157 2750 +f 2750 17157 17158 +f 2750 17158 17144 +f 17144 17158 17159 +f 17144 17159 17160 +f 17160 17159 17161 +f 17160 17161 17162 +f 17162 17161 17163 +f 17162 17163 17164 +f 17164 17163 17165 +f 17164 17165 17166 +f 17166 17165 17167 +f 17166 17167 17168 +f 17168 17167 17169 +f 17168 17169 17170 +f 17170 17169 17171 +f 17170 17171 17172 +f 17172 17171 17173 +f 17172 17173 2747 +f 17157 2752 17013 +f 17013 2752 2917 +f 17010 2937 17174 +f 17174 2937 2947 +f 17174 2947 17175 +f 17175 2947 2955 +f 17175 2955 17176 +f 17176 2955 2972 +f 17176 2972 17177 +f 17177 2972 2968 +f 17177 2968 17178 +f 17178 2968 2966 +f 17178 2966 17179 +f 17179 2966 17180 +f 17179 17180 17181 +f 17181 17180 17182 +f 17181 17182 17183 +f 17183 17182 17184 +f 17183 17184 17185 +f 17185 17184 17186 +f 17185 17186 17187 +f 17187 17186 17188 +f 17187 17188 17189 +f 17189 17188 17190 +f 17189 17190 17191 +f 17191 17190 17192 +f 17191 17192 17193 +f 17193 17192 17194 +f 17193 17194 17195 +f 17195 17194 17196 +f 17195 17196 17197 +f 17197 17196 17198 +f 17197 17198 17199 +f 17199 17198 17200 +f 17199 17200 17201 +f 17201 17200 17202 +f 17201 17202 17203 +f 17203 17202 17204 +f 17203 17204 17205 +f 17205 17204 17206 +f 17205 17206 17207 +f 17207 17206 17208 +f 17207 17208 17209 +f 17209 17208 17210 +f 17209 17210 17211 +f 17211 17210 17212 +f 17211 17212 17213 +f 17213 17212 17214 +f 17213 17214 17215 +f 17215 17214 16963 +f 17215 16963 16961 +f 2966 2967 17180 +f 17130 2747 17216 +f 17216 2747 17217 +f 17217 2747 17218 +f 17218 2747 17219 +f 17219 2747 17220 +f 17220 2747 17221 +f 17221 2747 17222 +f 17222 2747 17034 +f 17033 2747 17223 +f 17223 2747 17173 +f 17172 2747 17156 +f 17155 2747 17143 +f 17142 2747 17224 +f 17224 2747 17225 +f 17225 2747 17226 +f 17180 2967 17182 +f 17182 2967 17184 +f 17184 2967 17186 +f 17186 2967 17188 +f 17188 2967 17190 +f 17190 2967 17192 +f 17192 2967 17194 +f 17194 2967 17196 +f 17196 2967 17198 +f 17198 2967 17200 +f 17200 2967 17202 +f 17202 2967 17204 +f 17204 2967 17206 +f 17206 2967 17208 +f 17208 2967 17210 +f 17210 2967 17212 +f 17212 2967 17214 +f 17214 2967 16963 +f 17108 17106 17132 +f 17131 17130 17227 +f 17227 17130 17216 +f 17227 17216 17228 +f 17228 17216 17217 +f 17228 17217 17229 +f 17229 17217 17218 +f 17229 17218 17230 +f 17230 17218 17219 +f 17230 17219 17231 +f 17231 17219 17220 +f 17231 17220 17232 +f 17232 17220 17221 +f 17232 17221 17233 +f 17233 17221 17222 +f 17233 17222 17234 +f 17234 17222 17034 +f 17234 17034 17032 +f 17110 17108 17132 +f 17092 17091 17105 +f 17105 17107 17235 +f 17235 17107 17109 +f 17235 17109 17236 +f 17236 17109 17111 +f 17236 17111 17237 +f 17237 17111 17113 +f 17237 17113 17238 +f 17238 17113 17115 +f 17238 17115 17239 +f 17239 17115 17117 +f 17239 17117 17240 +f 17240 17117 17119 +f 17240 17119 17241 +f 17241 17119 17121 +f 17241 17121 17242 +f 17242 17121 17123 +f 17242 17123 17243 +f 17243 17123 17125 +f 17243 17125 17244 +f 17244 17125 17127 +f 17244 17127 17245 +f 17245 17127 17129 +f 17245 17129 17246 +f 17246 17129 17026 +f 17246 17026 17024 +f 17057 17059 17247 +f 17247 17059 17061 +f 17247 17061 17248 +f 17248 17061 17063 +f 17248 17063 17249 +f 17249 17063 17065 +f 17249 17065 17250 +f 17250 17065 17067 +f 17250 17067 17251 +f 17251 17067 17069 +f 17251 17069 17252 +f 17252 17069 17071 +f 17252 17071 17253 +f 17253 17071 17073 +f 17253 17073 17254 +f 17254 17073 17075 +f 17254 17075 17255 +f 17255 17075 17077 +f 17255 17077 17256 +f 17256 17077 17079 +f 17256 17079 17257 +f 17257 17079 17081 +f 17257 17081 17258 +f 17258 17081 17083 +f 17258 17083 17259 +f 17259 17083 17085 +f 17259 17085 17260 +f 17260 17085 17087 +f 17260 17087 17261 +f 17261 17087 17089 +f 17261 17089 17262 +f 17262 17089 17018 +f 17262 17018 17016 +f 17037 17036 17055 +f 17055 17057 17263 +f 17263 17057 17247 +f 17263 17247 17264 +f 17264 17247 17248 +f 17264 17248 17265 +f 17265 17248 17249 +f 17265 17249 17266 +f 17266 17249 17250 +f 17266 17250 17267 +f 17267 17250 17251 +f 17267 17251 17268 +f 17268 17251 17252 +f 17268 17252 17269 +f 17269 17252 17253 +f 17269 17253 17270 +f 17270 17253 17254 +f 17270 17254 17271 +f 17271 17254 17255 +f 17271 17255 17272 +f 17272 17255 17256 +f 17272 17256 17273 +f 17273 17256 17257 +f 17273 17257 17274 +f 17274 17257 17258 +f 17274 17258 17275 +f 17275 17258 17259 +f 17275 17259 17276 +f 17276 17259 17260 +f 17276 17260 17277 +f 17277 17260 17261 +f 17277 17261 17278 +f 17278 17261 17262 +f 17278 17262 17279 +f 17279 17262 17016 +f 17279 17016 17014 +f 16970 16972 17280 +f 17280 16972 16974 +f 17280 16974 17281 +f 17281 16974 16976 +f 17281 16976 17282 +f 17282 16976 16978 +f 17282 16978 17283 +f 17283 16978 16980 +f 17283 16980 17284 +f 17284 16980 16982 +f 17284 16982 17285 +f 17285 16982 16984 +f 17285 16984 17286 +f 17286 16984 16986 +f 17286 16986 17287 +f 17287 16986 16988 +f 17287 16988 17288 +f 17288 16988 16990 +f 17288 16990 17289 +f 17289 16990 16992 +f 17289 16992 17290 +f 17290 16992 16994 +f 17290 16994 17291 +f 17291 16994 16996 +f 17291 16996 17292 +f 17292 16996 16998 +f 17292 16998 17293 +f 17293 16998 17000 +f 17293 17000 17294 +f 17294 17000 17002 +f 17294 17002 17295 +f 17295 17002 17004 +f 17295 17004 17296 +f 17296 17004 17006 +f 17296 17006 17297 +f 17297 17006 17008 +f 17297 17008 17174 +f 17174 17008 17010 +f 16968 16970 17298 +f 17298 16970 17280 +f 17298 17280 17299 +f 17299 17280 17281 +f 17299 17281 17300 +f 17300 17281 17282 +f 17300 17282 17301 +f 17301 17282 17283 +f 17301 17283 17302 +f 17302 17283 17284 +f 17302 17284 17303 +f 17303 17284 17285 +f 17303 17285 17304 +f 17304 17285 17286 +f 17304 17286 17305 +f 17305 17286 17287 +f 17305 17287 17306 +f 17306 17287 17288 +f 17306 17288 17307 +f 17307 17288 17289 +f 17307 17289 17308 +f 17308 17289 17290 +f 17308 17290 17309 +f 17309 17290 17291 +f 17309 17291 17310 +f 17310 17291 17292 +f 17310 17292 17311 +f 17311 17292 17293 +f 17311 17293 17312 +f 17312 17293 17294 +f 17312 17294 17313 +f 17313 17294 17295 +f 17313 17295 17314 +f 17314 17295 17296 +f 17314 17296 17315 +f 17315 17296 17297 +f 17315 17297 17175 +f 17175 17297 17174 +f 16966 16968 17316 +f 17316 16968 17298 +f 17316 17298 17317 +f 17317 17298 17299 +f 17317 17299 17318 +f 17318 17299 17300 +f 17318 17300 17319 +f 17319 17300 17301 +f 17319 17301 17320 +f 17320 17301 17302 +f 17320 17302 17321 +f 17321 17302 17303 +f 17321 17303 17322 +f 17322 17303 17304 +f 17322 17304 17323 +f 17323 17304 17305 +f 17323 17305 17324 +f 17324 17305 17306 +f 17324 17306 17325 +f 17325 17306 17307 +f 17325 17307 17326 +f 17326 17307 17308 +f 17326 17308 17327 +f 17327 17308 17309 +f 17327 17309 17328 +f 17328 17309 17310 +f 17328 17310 17329 +f 17329 17310 17311 +f 17329 17311 17330 +f 17330 17311 17312 +f 17330 17312 17331 +f 17331 17312 17313 +f 17331 17313 17332 +f 17332 17313 17314 +f 17332 17314 17333 +f 17333 17314 17315 +f 17333 17315 17176 +f 17176 17315 17175 +f 16964 16966 17334 +f 17334 16966 17316 +f 17334 17316 17335 +f 17335 17316 17317 +f 17335 17317 17336 +f 17336 17317 17318 +f 17336 17318 17337 +f 17337 17318 17319 +f 17337 17319 17338 +f 17338 17319 17320 +f 17338 17320 17339 +f 17339 17320 17321 +f 17339 17321 17340 +f 17340 17321 17322 +f 17340 17322 17341 +f 17341 17322 17323 +f 17341 17323 17342 +f 17342 17323 17324 +f 17342 17324 17343 +f 17343 17324 17325 +f 17343 17325 17344 +f 17344 17325 17326 +f 17344 17326 17345 +f 17345 17326 17327 +f 17345 17327 17346 +f 17346 17327 17328 +f 17346 17328 17347 +f 17347 17328 17329 +f 17347 17329 17348 +f 17348 17329 17330 +f 17348 17330 17349 +f 17349 17330 17331 +f 17349 17331 17350 +f 17350 17331 17332 +f 17350 17332 17351 +f 17351 17332 17333 +f 17351 17333 17177 +f 17177 17333 17176 +f 17215 16961 16959 +f 16959 16964 17352 +f 17352 16964 17334 +f 17352 17334 17353 +f 17353 17334 17335 +f 17353 17335 17354 +f 17354 17335 17336 +f 17354 17336 17355 +f 17355 17336 17337 +f 17355 17337 17356 +f 17356 17337 17338 +f 17356 17338 17357 +f 17357 17338 17339 +f 17357 17339 17358 +f 17358 17339 17340 +f 17358 17340 17359 +f 17359 17340 17341 +f 17359 17341 17360 +f 17360 17341 17342 +f 17360 17342 17361 +f 17361 17342 17343 +f 17361 17343 17362 +f 17362 17343 17344 +f 17362 17344 17363 +f 17363 17344 17345 +f 17363 17345 17364 +f 17364 17345 17346 +f 17364 17346 17365 +f 17365 17346 17347 +f 17365 17347 17366 +f 17366 17347 17348 +f 17366 17348 17367 +f 17367 17348 17349 +f 17367 17349 17368 +f 17368 17349 17350 +f 17368 17350 17369 +f 17369 17350 17351 +f 17369 17351 17178 +f 17178 17351 17177 +f 2967 16960 16962 +f 17369 17178 17179 +f 17369 17179 17181 +f 17014 17012 17054 +f 17013 17015 17157 +f 17157 17015 17370 +f 17157 17370 17158 +f 17158 17370 17159 +f 17146 17145 17160 +f 17160 17145 17144 +f 17137 17135 17147 +f 17147 17135 17134 +f 17136 17371 2748 +f 2748 17371 17372 +f 2748 17372 17226 +f 17226 17372 17225 +f 17136 17138 17371 +f 17371 17138 17373 +f 17371 17373 17372 +f 17372 17373 17225 +f 2747 2748 17226 +f 17131 17227 17133 +f 17133 17227 17374 +f 17133 17374 17112 +f 17112 17374 17114 +f 17374 17227 17228 +f 17093 17092 17235 +f 17235 17092 17105 +f 17093 17235 17236 +f 17038 17037 17263 +f 17263 17037 17055 +f 17038 17263 17264 +f 17213 17215 17352 +f 17352 17215 16959 +f 17213 17352 17353 +f 17374 17228 17375 +f 17375 17228 17229 +f 17375 17229 17376 +f 17376 17229 17230 +f 17376 17230 17377 +f 17377 17230 17231 +f 17377 17231 17378 +f 17378 17231 17232 +f 17378 17232 17379 +f 17379 17232 17233 +f 17379 17233 17380 +f 17380 17233 17234 +f 17380 17234 17381 +f 17381 17234 17032 +f 17381 17032 17030 +f 17094 17093 17236 +f 17094 17236 17237 +f 17039 17038 17264 +f 17039 17264 17265 +f 17211 17213 17353 +f 17211 17353 17354 +f 17116 17114 17375 +f 17375 17114 17374 +f 17116 17375 17376 +f 17095 17094 17237 +f 17095 17237 17238 +f 17040 17039 17265 +f 17040 17265 17266 +f 17209 17211 17354 +f 17209 17354 17355 +f 17118 17116 17376 +f 17118 17376 17377 +f 17096 17095 17238 +f 17096 17238 17239 +f 17041 17040 17266 +f 17041 17266 17267 +f 17207 17209 17355 +f 17207 17355 17356 +f 17120 17118 17377 +f 17120 17377 17378 +f 17097 17096 17239 +f 17097 17239 17240 +f 17042 17041 17267 +f 17042 17267 17268 +f 17205 17207 17356 +f 17205 17356 17357 +f 17122 17120 17378 +f 17122 17378 17379 +f 17098 17097 17240 +f 17098 17240 17241 +f 17043 17042 17268 +f 17043 17268 17269 +f 17203 17205 17357 +f 17203 17357 17358 +f 17124 17122 17379 +f 17124 17379 17380 +f 17099 17098 17241 +f 17099 17241 17242 +f 17044 17043 17269 +f 17044 17269 17270 +f 17201 17203 17358 +f 17201 17358 17359 +f 17126 17124 17380 +f 17126 17380 17381 +f 17100 17099 17242 +f 17100 17242 17243 +f 17045 17044 17270 +f 17045 17270 17271 +f 17199 17201 17359 +f 17199 17359 17360 +f 17031 17033 17223 +f 17128 17126 17381 +f 17128 17381 17030 +f 17101 17100 17243 +f 17101 17243 17244 +f 17046 17045 17271 +f 17046 17271 17272 +f 17197 17199 17360 +f 17197 17360 17361 +f 17031 17223 17382 +f 17382 17223 17173 +f 17382 17173 17171 +f 17028 17128 17030 +f 17102 17101 17244 +f 17102 17244 17245 +f 17047 17046 17272 +f 17047 17272 17273 +f 17195 17197 17361 +f 17195 17361 17362 +f 17031 17382 17029 +f 17029 17382 17383 +f 17029 17383 17027 +f 17027 17383 17384 +f 17027 17384 17025 +f 17025 17384 17385 +f 17025 17385 17023 +f 17023 17385 17386 +f 17023 17386 17021 +f 17021 17386 17387 +f 17021 17387 17019 +f 17019 17387 17388 +f 17019 17388 17017 +f 17017 17388 17370 +f 17017 17370 17015 +f 17383 17382 17171 +f 17103 17102 17245 +f 17103 17245 17246 +f 17048 17047 17273 +f 17048 17273 17274 +f 17193 17195 17362 +f 17193 17362 17363 +f 17170 17172 17156 +f 17384 17383 17169 +f 17169 17383 17171 +f 17104 17103 17246 +f 17104 17246 17024 +f 17049 17048 17274 +f 17049 17274 17275 +f 17191 17193 17363 +f 17191 17363 17364 +f 17168 17170 17154 +f 17154 17170 17156 +f 17385 17384 17167 +f 17167 17384 17169 +f 17022 17104 17024 +f 17050 17049 17275 +f 17050 17275 17276 +f 17189 17191 17364 +f 17189 17364 17365 +f 17153 17155 17143 +f 17166 17168 17152 +f 17152 17168 17154 +f 17386 17385 17165 +f 17165 17385 17167 +f 17051 17050 17276 +f 17051 17276 17277 +f 17187 17189 17365 +f 17187 17365 17366 +f 17151 17153 17141 +f 17141 17153 17143 +f 17164 17166 17150 +f 17150 17166 17152 +f 17387 17386 17163 +f 17163 17386 17165 +f 17052 17051 17277 +f 17052 17277 17278 +f 17185 17187 17366 +f 17185 17366 17367 +f 17140 17142 17224 +f 17149 17151 17139 +f 17139 17151 17141 +f 17162 17164 17148 +f 17148 17164 17150 +f 17388 17387 17161 +f 17161 17387 17163 +f 17053 17052 17278 +f 17053 17278 17279 +f 17183 17185 17367 +f 17183 17367 17368 +f 17225 17373 17224 +f 17224 17373 17140 +f 17373 17138 17140 +f 17147 17149 17137 +f 17137 17149 17139 +f 17160 17162 17146 +f 17146 17162 17148 +f 17370 17388 17159 +f 17159 17388 17161 +f 17054 17053 17279 +f 17054 17279 17014 +f 17181 17183 17368 +f 17181 17368 17369 +f 5084 5085 8369 +f 8369 5085 8370 +f 8370 5085 8916 +f 8370 8916 8360 +f 8360 8916 8881 +f 8360 8881 8317 +f 8317 8881 8316 +f 8316 8881 8375 +f 8375 8881 8846 +f 8375 8846 8811 +f 8811 8776 8375 +f 8375 8776 8410 +f 8410 8776 8745 +f 8410 8745 8428 +f 8428 8745 8431 +f 8431 8745 8711 +f 8431 8711 8689 +f 8431 8689 8440 +f 8440 8689 8667 +f 8440 8667 8443 +f 8443 8667 8448 +f 8448 8667 8468 +f 8468 8667 8646 +f 8468 8646 8624 +f 8624 8603 8468 +f 8468 8603 8478 +f 8478 8603 8582 +f 8478 8582 8496 +f 8496 8582 8560 +f 8496 8560 8527 +f 9415 9416 17389 +f 17389 9416 9541 +f 17389 9541 17390 +f 17390 9541 9537 +f 17390 9537 17391 +f 17391 9537 9533 +f 17391 9533 17392 +f 17392 9533 9529 +f 17392 9529 9525 +f 17392 9525 17393 +f 17393 9525 9521 +f 17393 9521 17394 +f 17394 9521 9517 +f 17394 9517 17395 +f 17395 9517 9513 +f 17395 9513 17396 +f 17396 9513 3830 +f 17396 3830 17397 +f 17397 3830 3831 +f 17397 3831 17398 +f 17398 3831 3833 +f 17398 3833 17399 +f 17399 3833 3835 +f 17399 3835 17400 +f 17400 3835 3837 +f 17400 3837 17401 +f 17401 3837 3839 +f 17401 3839 17402 +f 17402 3839 3841 +f 17402 3841 17403 +f 17403 3841 17404 +f 17403 17404 17405 +f 17405 17404 17406 +f 17405 17406 17407 +f 17407 17406 17408 +f 17407 17408 17409 +f 17409 17408 17410 +f 17409 17410 17411 +f 17411 17410 17412 +f 17411 17412 17413 +f 17413 17412 17414 +f 17413 17414 17415 +f 17415 17414 17416 +f 17415 17416 17417 +f 17417 17416 17418 +f 17417 17418 17419 +f 17419 17418 17420 +f 17419 17420 17421 +f 17421 17420 17422 +f 17421 17422 17423 +f 17423 17422 17424 +f 17423 17424 17425 +f 17425 17424 17426 +f 17425 17426 17427 +f 17427 17426 17428 +f 17427 17428 17429 +f 17429 17428 17430 +f 17429 17430 17431 +f 17431 17430 17432 +f 17431 17432 17433 +f 17433 17432 17434 +f 17433 17434 17435 +f 17435 17434 17436 +f 17435 17436 17437 +f 17437 17436 17438 +f 17437 17438 17439 +f 17439 17438 17440 +f 17439 17440 3845 +f 3845 17440 17441 +f 3845 17441 17442 +f 17442 17441 17443 +f 17442 17443 3843 +f 3843 17444 3841 +f 3841 17444 17445 +f 3841 17445 17404 +f 17404 17445 17406 +f 3845 3847 17439 +f 17439 3847 17446 +f 17439 17446 17437 +f 17437 17446 17447 +f 17437 17447 17435 +f 17435 17447 17448 +f 17435 17448 17433 +f 17433 17448 17449 +f 17433 17449 17431 +f 17431 17449 17450 +f 17431 17450 17429 +f 17429 17450 17451 +f 17429 17451 17427 +f 17427 17451 17452 +f 17427 17452 17425 +f 17425 17452 17453 +f 17425 17453 17423 +f 17423 17453 17454 +f 17423 17454 17421 +f 17421 17454 17455 +f 17421 17455 17419 +f 17419 17455 17456 +f 17419 17456 17417 +f 17417 17456 17457 +f 17417 17457 17415 +f 17415 17457 17458 +f 17415 17458 17413 +f 17413 17458 17459 +f 17413 17459 17411 +f 17411 17459 17460 +f 17411 17460 17409 +f 17409 17460 17461 +f 17409 17461 17407 +f 17407 17461 17462 +f 17407 17462 17405 +f 17405 17462 17463 +f 17405 17463 17403 +f 17403 17463 17402 +f 3847 3849 17446 +f 17446 3849 17464 +f 17446 17464 17447 +f 17447 17464 17465 +f 17447 17465 17448 +f 17448 17465 17466 +f 17448 17466 17449 +f 17449 17466 17467 +f 17449 17467 17450 +f 17450 17467 17468 +f 17450 17468 17451 +f 17451 17468 17469 +f 17451 17469 17452 +f 17452 17469 17470 +f 17452 17470 17453 +f 17453 17470 17471 +f 17453 17471 17454 +f 17454 17471 17472 +f 17454 17472 17455 +f 17455 17472 17473 +f 17455 17473 17456 +f 17456 17473 17474 +f 17456 17474 17457 +f 17457 17474 17475 +f 17457 17475 17458 +f 17458 17475 17476 +f 17458 17476 17459 +f 17459 17476 17477 +f 17459 17477 17460 +f 17460 17477 17478 +f 17460 17478 17461 +f 17461 17478 17479 +f 17461 17479 17462 +f 17462 17479 17480 +f 17462 17480 17463 +f 17463 17480 17481 +f 17463 17481 17402 +f 17402 17481 17401 +f 3849 3851 17464 +f 17464 3851 17482 +f 17464 17482 17465 +f 17465 17482 17483 +f 17465 17483 17466 +f 17466 17483 17484 +f 17466 17484 17467 +f 17467 17484 17485 +f 17467 17485 17468 +f 17468 17485 17486 +f 17468 17486 17469 +f 17469 17486 17487 +f 17469 17487 17470 +f 17470 17487 17488 +f 17470 17488 17471 +f 17471 17488 17489 +f 17471 17489 17472 +f 17472 17489 17490 +f 17472 17490 17473 +f 17473 17490 17491 +f 17473 17491 17474 +f 17474 17491 17492 +f 17474 17492 17475 +f 17475 17492 17493 +f 17475 17493 17476 +f 17476 17493 17494 +f 17476 17494 17477 +f 17477 17494 17495 +f 17477 17495 17478 +f 17478 17495 17496 +f 17478 17496 17479 +f 17479 17496 17497 +f 17479 17497 17480 +f 17480 17497 17498 +f 17480 17498 17481 +f 17481 17498 17499 +f 17481 17499 17401 +f 17401 17499 17400 +f 3851 3853 17482 +f 17482 3853 17500 +f 17482 17500 17483 +f 17483 17500 17501 +f 17483 17501 17484 +f 17484 17501 17502 +f 17484 17502 17485 +f 17485 17502 17503 +f 17485 17503 17486 +f 17486 17503 17504 +f 17486 17504 17487 +f 17487 17504 17505 +f 17487 17505 17488 +f 17488 17505 17506 +f 17488 17506 17489 +f 17489 17506 17507 +f 17489 17507 17490 +f 17490 17507 17508 +f 17490 17508 17491 +f 17491 17508 17509 +f 17491 17509 17492 +f 17492 17509 17510 +f 17492 17510 17493 +f 17493 17510 17511 +f 17493 17511 17494 +f 17494 17511 17512 +f 17494 17512 17495 +f 17495 17512 17513 +f 17495 17513 17496 +f 17496 17513 17514 +f 17496 17514 17497 +f 17497 17514 17515 +f 17497 17515 17498 +f 17498 17515 17516 +f 17498 17516 17499 +f 17499 17516 17517 +f 17499 17517 17400 +f 17400 17517 17399 +f 3853 3855 17500 +f 17500 3855 17518 +f 17500 17518 17501 +f 17501 17518 17519 +f 17501 17519 17502 +f 17502 17519 17520 +f 17502 17520 17503 +f 17503 17520 17521 +f 17503 17521 17504 +f 17504 17521 17522 +f 17504 17522 17505 +f 17505 17522 17523 +f 17505 17523 17506 +f 17506 17523 17524 +f 17506 17524 17507 +f 17507 17524 17525 +f 17507 17525 17508 +f 17508 17525 17526 +f 17508 17526 17509 +f 17509 17526 17527 +f 17509 17527 17510 +f 17510 17527 17528 +f 17510 17528 17511 +f 17511 17528 17529 +f 17511 17529 17512 +f 17512 17529 17530 +f 17512 17530 17513 +f 17513 17530 17531 +f 17513 17531 17514 +f 17514 17531 17532 +f 17514 17532 17515 +f 17515 17532 17533 +f 17515 17533 17516 +f 17516 17533 17534 +f 17516 17534 17517 +f 17517 17534 17535 +f 17517 17535 17399 +f 17399 17535 17398 +f 3855 3857 17518 +f 17518 3857 17536 +f 17518 17536 17519 +f 17519 17536 17537 +f 17519 17537 17520 +f 17520 17537 17538 +f 17520 17538 17521 +f 17521 17538 17539 +f 17521 17539 17522 +f 17522 17539 17540 +f 17522 17540 17523 +f 17523 17540 17541 +f 17523 17541 17524 +f 17524 17541 17542 +f 17524 17542 17525 +f 17525 17542 17543 +f 17525 17543 17526 +f 17526 17543 17544 +f 17526 17544 17527 +f 17527 17544 17545 +f 17527 17545 17528 +f 17528 17545 17546 +f 17528 17546 17529 +f 17529 17546 17547 +f 17529 17547 17530 +f 17530 17547 17548 +f 17530 17548 17531 +f 17531 17548 17549 +f 17531 17549 17532 +f 17532 17549 17550 +f 17532 17550 17533 +f 17533 17550 17551 +f 17533 17551 17534 +f 17534 17551 17552 +f 17534 17552 17535 +f 17535 17552 17553 +f 17535 17553 17398 +f 17398 17553 17397 +f 17536 3857 17554 +f 17554 3857 3859 +f 17554 3859 17555 +f 17555 3859 3861 +f 17555 3861 17556 +f 17556 3861 3863 +f 17556 3863 17557 +f 17557 3863 3865 +f 17557 3865 17558 +f 17558 3865 9512 +f 17558 9512 9510 +f 17558 9510 17559 +f 17559 9510 9505 +f 17559 9505 17560 +f 17560 9505 9500 +f 17560 9500 17561 +f 17561 9500 9494 +f 17561 9494 9483 +f 17561 9483 17562 +f 17562 9483 9481 +f 17562 9481 17563 +f 17563 9481 3625 +f 17563 3625 17564 +f 17564 3625 3626 +f 17564 3626 17565 +f 17565 3626 3628 +f 17565 3628 3630 +f 17565 3630 17566 +f 17566 3630 9479 +f 17566 9479 17567 +f 17567 9479 9477 +f 17567 9477 17568 +f 17568 9477 9471 +f 17568 9471 17569 +f 17569 9471 9469 +f 17569 9469 17570 +f 17570 9469 9444 +f 17570 9444 17571 +f 17571 9444 9285 +f 17571 9285 17572 +f 17572 9285 17573 +f 17572 17573 17574 +f 17574 17573 17575 +f 17574 17575 17576 +f 17576 17575 17577 +f 17576 17577 17578 +f 17578 17577 17579 +f 17578 17579 17580 +f 17580 17579 17581 +f 17580 17581 17582 +f 17582 17581 17583 +f 17582 17583 17584 +f 17584 17583 17585 +f 17584 17585 17586 +f 17586 17585 17587 +f 17586 17587 17588 +f 17588 17587 17589 +f 17588 17589 17590 +f 17590 17589 17591 +f 17590 17591 17592 +f 17592 17591 17593 +f 17592 17593 17594 +f 17594 17593 17595 +f 17594 17595 17596 +f 17596 17595 17597 +f 17596 17597 17598 +f 17598 17597 17599 +f 17598 17599 17600 +f 17600 17599 17601 +f 17600 17601 17602 +f 17602 17601 17603 +f 17602 17603 17604 +f 17604 17603 17605 +f 17604 17605 17606 +f 17606 17605 17607 +f 17606 17607 17608 +f 17608 17607 17609 +f 17608 17609 9437 +f 9437 17609 9439 +f 9439 17609 17610 +f 9439 17610 9441 +f 9441 17610 17611 +f 9441 17611 9443 +f 9443 17611 17612 +f 9443 17612 9365 +f 9365 17612 17613 +f 9365 17613 17614 +f 17614 17613 17615 +f 17614 17615 17616 +f 17616 17615 17617 +f 17616 17617 9345 +f 9285 9284 17573 +f 17573 9284 17618 +f 17573 17618 17575 +f 17575 17618 17619 +f 17575 17619 17577 +f 17577 17619 17620 +f 17577 17620 17579 +f 17579 17620 17621 +f 17579 17621 17581 +f 17581 17621 17622 +f 17581 17622 17583 +f 17583 17622 17623 +f 17583 17623 17585 +f 17585 17623 17624 +f 17585 17624 17587 +f 17587 17624 17625 +f 17587 17625 17589 +f 17589 17625 17626 +f 17589 17626 17591 +f 17591 17626 17627 +f 17591 17627 17593 +f 17593 17627 17628 +f 17593 17628 17595 +f 17595 17628 17629 +f 17595 17629 17597 +f 17597 17629 17630 +f 17597 17630 17599 +f 17599 17630 17631 +f 17599 17631 17601 +f 17601 17631 17632 +f 17601 17632 17603 +f 17603 17632 17633 +f 17603 17633 17605 +f 17605 17633 17634 +f 17605 17634 17607 +f 17607 17634 17635 +f 17607 17635 17609 +f 17609 17635 17610 +f 9284 9306 17618 +f 17618 9306 17636 +f 17618 17636 17619 +f 17619 17636 17637 +f 17619 17637 17620 +f 17620 17637 17638 +f 17620 17638 17621 +f 17621 17638 17639 +f 17621 17639 17622 +f 17622 17639 17640 +f 17622 17640 17623 +f 17623 17640 17641 +f 17623 17641 17624 +f 17624 17641 17642 +f 17624 17642 17625 +f 17625 17642 17643 +f 17625 17643 17626 +f 17626 17643 17644 +f 17626 17644 17627 +f 17627 17644 17645 +f 17627 17645 17628 +f 17628 17645 17646 +f 17628 17646 17629 +f 17629 17646 17647 +f 17629 17647 17630 +f 17630 17647 17648 +f 17630 17648 17631 +f 17631 17648 17649 +f 17631 17649 17632 +f 17632 17649 17650 +f 17632 17650 17633 +f 17633 17650 17651 +f 17633 17651 17634 +f 17634 17651 17652 +f 17634 17652 17635 +f 17635 17652 17653 +f 17635 17653 17610 +f 17610 17653 17611 +f 9306 9326 17636 +f 17636 9326 17654 +f 17636 17654 17637 +f 17637 17654 17655 +f 17637 17655 17638 +f 17638 17655 17656 +f 17638 17656 17639 +f 17639 17656 17657 +f 17639 17657 17640 +f 17640 17657 17658 +f 17640 17658 17641 +f 17641 17658 17659 +f 17641 17659 17642 +f 17642 17659 17660 +f 17642 17660 17643 +f 17643 17660 17661 +f 17643 17661 17644 +f 17644 17661 17662 +f 17644 17662 17645 +f 17645 17662 17663 +f 17645 17663 17646 +f 17646 17663 17664 +f 17646 17664 17647 +f 17647 17664 17665 +f 17647 17665 17648 +f 17648 17665 17666 +f 17648 17666 17649 +f 17649 17666 17667 +f 17649 17667 17650 +f 17650 17667 17668 +f 17650 17668 17651 +f 17651 17668 17669 +f 17651 17669 17652 +f 17652 17669 17670 +f 17652 17670 17653 +f 17653 17670 17671 +f 17653 17671 17611 +f 17611 17671 17612 +f 9345 17672 9326 +f 9326 17672 17673 +f 9326 17673 17674 +f 17674 17673 17675 +f 17674 17675 17655 +f 17655 17675 17656 +f 17608 9437 17676 +f 17676 9437 9435 +f 17676 9435 17677 +f 17677 9435 9433 +f 17677 9433 17678 +f 17678 9433 9396 +f 17678 9396 17679 +f 17679 9396 9395 +f 17679 9395 17680 +f 17680 9395 9405 +f 17680 9405 17681 +f 17681 9405 9431 +f 17681 9431 17682 +f 17682 9431 9429 +f 17682 9429 17683 +f 17683 9429 9426 +f 17683 9426 9422 +f 17683 9422 17684 +f 17684 9422 9417 +f 17684 9417 17685 +f 17685 9417 9415 +f 17685 9415 17389 +f 17444 3843 17686 +f 17686 3843 17687 +f 17687 3843 17688 +f 17688 3843 17689 +f 17689 3843 17690 +f 17690 3843 17691 +f 17691 3843 17692 +f 17692 3843 17693 +f 17693 3843 17694 +f 17694 3843 17695 +f 17695 3843 17696 +f 17696 3843 17697 +f 17697 3843 17698 +f 17698 3843 17699 +f 17699 3843 17700 +f 17700 3843 17701 +f 17701 3843 17443 +f 17672 9345 17702 +f 17702 9345 17703 +f 17703 9345 17704 +f 17704 9345 17705 +f 17705 9345 17706 +f 17706 9345 17707 +f 17707 9345 17708 +f 17708 9345 17709 +f 17709 9345 17710 +f 17710 9345 17711 +f 17711 9345 17712 +f 17712 9345 17713 +f 17713 9345 17714 +f 17714 9345 17715 +f 17715 9345 17716 +f 17716 9345 17617 +f 17616 9345 17717 +f 17445 17444 17718 +f 17718 17444 17686 +f 17718 17686 17719 +f 17719 17686 17687 +f 17719 17687 17720 +f 17720 17687 17688 +f 17720 17688 17721 +f 17721 17688 17689 +f 17721 17689 17722 +f 17722 17689 17690 +f 17722 17690 17723 +f 17723 17690 17691 +f 17723 17691 17724 +f 17724 17691 17692 +f 17724 17692 17725 +f 17725 17692 17693 +f 17725 17693 17726 +f 17726 17693 17694 +f 17726 17694 17727 +f 17727 17694 17695 +f 17727 17695 17728 +f 17728 17695 17696 +f 17728 17696 17729 +f 17729 17696 17697 +f 17729 17697 17730 +f 17730 17697 17698 +f 17730 17698 17731 +f 17731 17698 17699 +f 17731 17699 17732 +f 17732 17699 17700 +f 17732 17700 17733 +f 17733 17700 17701 +f 17733 17701 17734 +f 17734 17701 17443 +f 17734 17443 17441 +f 17396 17397 17735 +f 17735 17397 17553 +f 17735 17553 17736 +f 17736 17553 17552 +f 17736 17552 17737 +f 17737 17552 17551 +f 17737 17551 17738 +f 17738 17551 17550 +f 17738 17550 17739 +f 17739 17550 17549 +f 17739 17549 17740 +f 17740 17549 17548 +f 17740 17548 17741 +f 17741 17548 17547 +f 17741 17547 17742 +f 17742 17547 17546 +f 17742 17546 17743 +f 17743 17546 17545 +f 17743 17545 17744 +f 17744 17545 17544 +f 17744 17544 17745 +f 17745 17544 17543 +f 17745 17543 17746 +f 17746 17543 17542 +f 17746 17542 17747 +f 17747 17542 17541 +f 17747 17541 17748 +f 17748 17541 17540 +f 17748 17540 17749 +f 17749 17540 17539 +f 17749 17539 17750 +f 17750 17539 17538 +f 17750 17538 17751 +f 17751 17538 17537 +f 17751 17537 17554 +f 17554 17537 17536 +f 17395 17396 17752 +f 17752 17396 17735 +f 17752 17735 17753 +f 17753 17735 17736 +f 17753 17736 17754 +f 17754 17736 17737 +f 17754 17737 17755 +f 17755 17737 17738 +f 17755 17738 17756 +f 17756 17738 17739 +f 17756 17739 17757 +f 17757 17739 17740 +f 17757 17740 17758 +f 17758 17740 17741 +f 17758 17741 17759 +f 17759 17741 17742 +f 17759 17742 17760 +f 17760 17742 17743 +f 17760 17743 17761 +f 17761 17743 17744 +f 17761 17744 17762 +f 17762 17744 17745 +f 17762 17745 17763 +f 17763 17745 17746 +f 17763 17746 17764 +f 17764 17746 17747 +f 17764 17747 17765 +f 17765 17747 17748 +f 17765 17748 17766 +f 17766 17748 17749 +f 17766 17749 17767 +f 17767 17749 17750 +f 17767 17750 17768 +f 17768 17750 17751 +f 17768 17751 17555 +f 17555 17751 17554 +f 17394 17395 17769 +f 17769 17395 17752 +f 17769 17752 17770 +f 17770 17752 17753 +f 17770 17753 17771 +f 17771 17753 17754 +f 17771 17754 17772 +f 17772 17754 17755 +f 17772 17755 17773 +f 17773 17755 17756 +f 17773 17756 17774 +f 17774 17756 17757 +f 17774 17757 17775 +f 17775 17757 17758 +f 17775 17758 17776 +f 17776 17758 17759 +f 17776 17759 17777 +f 17777 17759 17760 +f 17777 17760 17778 +f 17778 17760 17761 +f 17778 17761 17779 +f 17779 17761 17762 +f 17779 17762 17780 +f 17780 17762 17763 +f 17780 17763 17781 +f 17781 17763 17764 +f 17781 17764 17782 +f 17782 17764 17765 +f 17782 17765 17783 +f 17783 17765 17766 +f 17783 17766 17784 +f 17784 17766 17767 +f 17784 17767 17785 +f 17785 17767 17768 +f 17785 17768 17556 +f 17556 17768 17555 +f 17393 17394 17786 +f 17786 17394 17769 +f 17786 17769 17787 +f 17787 17769 17770 +f 17787 17770 17788 +f 17788 17770 17771 +f 17788 17771 17789 +f 17789 17771 17772 +f 17789 17772 17790 +f 17790 17772 17773 +f 17790 17773 17791 +f 17791 17773 17774 +f 17791 17774 17792 +f 17792 17774 17775 +f 17792 17775 17793 +f 17793 17775 17776 +f 17793 17776 17794 +f 17794 17776 17777 +f 17794 17777 17795 +f 17795 17777 17778 +f 17795 17778 17796 +f 17796 17778 17779 +f 17796 17779 17797 +f 17797 17779 17780 +f 17797 17780 17798 +f 17798 17780 17781 +f 17798 17781 17799 +f 17799 17781 17782 +f 17799 17782 17800 +f 17800 17782 17783 +f 17800 17783 17801 +f 17801 17783 17784 +f 17801 17784 17802 +f 17802 17784 17785 +f 17802 17785 17557 +f 17557 17785 17556 +f 17392 17393 17803 +f 17803 17393 17786 +f 17803 17786 17804 +f 17804 17786 17787 +f 17804 17787 17805 +f 17805 17787 17788 +f 17805 17788 17806 +f 17806 17788 17789 +f 17806 17789 17807 +f 17807 17789 17790 +f 17807 17790 17808 +f 17808 17790 17791 +f 17808 17791 17809 +f 17809 17791 17792 +f 17809 17792 17810 +f 17810 17792 17793 +f 17810 17793 17811 +f 17811 17793 17794 +f 17811 17794 17812 +f 17812 17794 17795 +f 17812 17795 17813 +f 17813 17795 17796 +f 17813 17796 17814 +f 17814 17796 17797 +f 17814 17797 17815 +f 17815 17797 17798 +f 17815 17798 17816 +f 17816 17798 17799 +f 17816 17799 17817 +f 17817 17799 17800 +f 17817 17800 17818 +f 17818 17800 17801 +f 17818 17801 17819 +f 17819 17801 17802 +f 17819 17802 17558 +f 17558 17802 17557 +f 17391 17392 17820 +f 17820 17392 17803 +f 17820 17803 17821 +f 17821 17803 17804 +f 17821 17804 17822 +f 17822 17804 17805 +f 17822 17805 17823 +f 17823 17805 17806 +f 17823 17806 17824 +f 17824 17806 17807 +f 17824 17807 17825 +f 17825 17807 17808 +f 17825 17808 17826 +f 17826 17808 17809 +f 17826 17809 17827 +f 17827 17809 17810 +f 17827 17810 17828 +f 17828 17810 17811 +f 17828 17811 17829 +f 17829 17811 17812 +f 17829 17812 17830 +f 17830 17812 17813 +f 17830 17813 17831 +f 17831 17813 17814 +f 17831 17814 17832 +f 17832 17814 17815 +f 17832 17815 17833 +f 17833 17815 17816 +f 17833 17816 17834 +f 17834 17816 17817 +f 17834 17817 17835 +f 17835 17817 17818 +f 17835 17818 17836 +f 17836 17818 17819 +f 17836 17819 17559 +f 17559 17819 17558 +f 17390 17391 17837 +f 17837 17391 17820 +f 17837 17820 17838 +f 17838 17820 17821 +f 17838 17821 17839 +f 17839 17821 17822 +f 17839 17822 17840 +f 17840 17822 17823 +f 17840 17823 17841 +f 17841 17823 17824 +f 17841 17824 17842 +f 17842 17824 17825 +f 17842 17825 17843 +f 17843 17825 17826 +f 17843 17826 17844 +f 17844 17826 17827 +f 17844 17827 17845 +f 17845 17827 17828 +f 17845 17828 17846 +f 17846 17828 17829 +f 17846 17829 17847 +f 17847 17829 17830 +f 17847 17830 17848 +f 17848 17830 17831 +f 17848 17831 17849 +f 17849 17831 17832 +f 17849 17832 17850 +f 17850 17832 17833 +f 17850 17833 17851 +f 17851 17833 17834 +f 17851 17834 17852 +f 17852 17834 17835 +f 17852 17835 17853 +f 17853 17835 17836 +f 17853 17836 17560 +f 17560 17836 17559 +f 17389 17390 17854 +f 17854 17390 17837 +f 17854 17837 17855 +f 17855 17837 17838 +f 17855 17838 17856 +f 17856 17838 17839 +f 17856 17839 17857 +f 17857 17839 17840 +f 17857 17840 17858 +f 17858 17840 17841 +f 17858 17841 17859 +f 17859 17841 17842 +f 17859 17842 17860 +f 17860 17842 17843 +f 17860 17843 17861 +f 17861 17843 17844 +f 17861 17844 17862 +f 17862 17844 17845 +f 17862 17845 17863 +f 17863 17845 17846 +f 17863 17846 17864 +f 17864 17846 17847 +f 17864 17847 17865 +f 17865 17847 17848 +f 17865 17848 17866 +f 17866 17848 17849 +f 17866 17849 17867 +f 17867 17849 17850 +f 17867 17850 17868 +f 17868 17850 17851 +f 17868 17851 17869 +f 17869 17851 17852 +f 17869 17852 17870 +f 17870 17852 17853 +f 17870 17853 17561 +f 17561 17853 17560 +f 17685 17389 17871 +f 17871 17389 17854 +f 17871 17854 17872 +f 17872 17854 17855 +f 17872 17855 17873 +f 17873 17855 17856 +f 17873 17856 17874 +f 17874 17856 17857 +f 17874 17857 17875 +f 17875 17857 17858 +f 17875 17858 17876 +f 17876 17858 17859 +f 17876 17859 17877 +f 17877 17859 17860 +f 17877 17860 17878 +f 17878 17860 17861 +f 17878 17861 17879 +f 17879 17861 17862 +f 17879 17862 17880 +f 17880 17862 17863 +f 17880 17863 17881 +f 17881 17863 17864 +f 17881 17864 17882 +f 17882 17864 17865 +f 17882 17865 17883 +f 17883 17865 17866 +f 17883 17866 17884 +f 17884 17866 17867 +f 17884 17867 17885 +f 17885 17867 17868 +f 17885 17868 17886 +f 17886 17868 17869 +f 17886 17869 17887 +f 17887 17869 17870 +f 17887 17870 17562 +f 17562 17870 17561 +f 17684 17685 17888 +f 17888 17685 17871 +f 17888 17871 17889 +f 17889 17871 17872 +f 17889 17872 17890 +f 17890 17872 17873 +f 17890 17873 17891 +f 17891 17873 17874 +f 17891 17874 17892 +f 17892 17874 17875 +f 17892 17875 17893 +f 17893 17875 17876 +f 17893 17876 17894 +f 17894 17876 17877 +f 17894 17877 17895 +f 17895 17877 17878 +f 17895 17878 17896 +f 17896 17878 17879 +f 17896 17879 17897 +f 17897 17879 17880 +f 17897 17880 17898 +f 17898 17880 17881 +f 17898 17881 17899 +f 17899 17881 17882 +f 17899 17882 17900 +f 17900 17882 17883 +f 17900 17883 17901 +f 17901 17883 17884 +f 17901 17884 17902 +f 17902 17884 17885 +f 17902 17885 17903 +f 17903 17885 17886 +f 17903 17886 17904 +f 17904 17886 17887 +f 17904 17887 17563 +f 17563 17887 17562 +f 17683 17684 17905 +f 17905 17684 17888 +f 17905 17888 17906 +f 17906 17888 17889 +f 17906 17889 17907 +f 17907 17889 17890 +f 17907 17890 17908 +f 17908 17890 17891 +f 17908 17891 17909 +f 17909 17891 17892 +f 17909 17892 17910 +f 17910 17892 17893 +f 17910 17893 17911 +f 17911 17893 17894 +f 17911 17894 17912 +f 17912 17894 17895 +f 17912 17895 17913 +f 17913 17895 17896 +f 17913 17896 17914 +f 17914 17896 17897 +f 17914 17897 17915 +f 17915 17897 17898 +f 17915 17898 17916 +f 17916 17898 17899 +f 17916 17899 17917 +f 17917 17899 17900 +f 17917 17900 17918 +f 17918 17900 17901 +f 17918 17901 17919 +f 17919 17901 17902 +f 17919 17902 17920 +f 17920 17902 17903 +f 17920 17903 17921 +f 17921 17903 17904 +f 17921 17904 17564 +f 17564 17904 17563 +f 17682 17683 17922 +f 17922 17683 17905 +f 17922 17905 17923 +f 17923 17905 17906 +f 17923 17906 17924 +f 17924 17906 17907 +f 17924 17907 17925 +f 17925 17907 17908 +f 17925 17908 17926 +f 17926 17908 17909 +f 17926 17909 17927 +f 17927 17909 17910 +f 17927 17910 17928 +f 17928 17910 17911 +f 17928 17911 17929 +f 17929 17911 17912 +f 17929 17912 17930 +f 17930 17912 17913 +f 17930 17913 17931 +f 17931 17913 17914 +f 17931 17914 17932 +f 17932 17914 17915 +f 17932 17915 17933 +f 17933 17915 17916 +f 17933 17916 17934 +f 17934 17916 17917 +f 17934 17917 17935 +f 17935 17917 17918 +f 17935 17918 17936 +f 17936 17918 17919 +f 17936 17919 17937 +f 17937 17919 17920 +f 17937 17920 17938 +f 17938 17920 17921 +f 17938 17921 17565 +f 17565 17921 17564 +f 17681 17682 17939 +f 17939 17682 17922 +f 17939 17922 17940 +f 17940 17922 17923 +f 17940 17923 17941 +f 17941 17923 17924 +f 17941 17924 17942 +f 17942 17924 17925 +f 17942 17925 17943 +f 17943 17925 17926 +f 17943 17926 17944 +f 17944 17926 17927 +f 17944 17927 17945 +f 17945 17927 17928 +f 17945 17928 17946 +f 17946 17928 17929 +f 17946 17929 17947 +f 17947 17929 17930 +f 17947 17930 17948 +f 17948 17930 17931 +f 17948 17931 17949 +f 17949 17931 17932 +f 17949 17932 17950 +f 17950 17932 17933 +f 17950 17933 17951 +f 17951 17933 17934 +f 17951 17934 17952 +f 17952 17934 17935 +f 17952 17935 17953 +f 17953 17935 17936 +f 17953 17936 17954 +f 17954 17936 17937 +f 17954 17937 17955 +f 17955 17937 17938 +f 17955 17938 17566 +f 17566 17938 17565 +f 17680 17681 17956 +f 17956 17681 17939 +f 17956 17939 17957 +f 17957 17939 17940 +f 17957 17940 17958 +f 17958 17940 17941 +f 17958 17941 17959 +f 17959 17941 17942 +f 17959 17942 17960 +f 17960 17942 17943 +f 17960 17943 17961 +f 17961 17943 17944 +f 17961 17944 17962 +f 17962 17944 17945 +f 17962 17945 17963 +f 17963 17945 17946 +f 17963 17946 17964 +f 17964 17946 17947 +f 17964 17947 17965 +f 17965 17947 17948 +f 17965 17948 17966 +f 17966 17948 17949 +f 17966 17949 17967 +f 17967 17949 17950 +f 17967 17950 17968 +f 17968 17950 17951 +f 17968 17951 17969 +f 17969 17951 17952 +f 17969 17952 17970 +f 17970 17952 17953 +f 17970 17953 17971 +f 17971 17953 17954 +f 17971 17954 17972 +f 17972 17954 17955 +f 17972 17955 17567 +f 17567 17955 17566 +f 17679 17680 17973 +f 17973 17680 17956 +f 17973 17956 17974 +f 17974 17956 17957 +f 17974 17957 17975 +f 17975 17957 17958 +f 17975 17958 17976 +f 17976 17958 17959 +f 17976 17959 17977 +f 17977 17959 17960 +f 17977 17960 17978 +f 17978 17960 17961 +f 17978 17961 17979 +f 17979 17961 17962 +f 17979 17962 17980 +f 17980 17962 17963 +f 17980 17963 17981 +f 17981 17963 17964 +f 17981 17964 17982 +f 17982 17964 17965 +f 17982 17965 17983 +f 17983 17965 17966 +f 17983 17966 17984 +f 17984 17966 17967 +f 17984 17967 17985 +f 17985 17967 17968 +f 17985 17968 17986 +f 17986 17968 17969 +f 17986 17969 17987 +f 17987 17969 17970 +f 17987 17970 17988 +f 17988 17970 17971 +f 17988 17971 17989 +f 17989 17971 17972 +f 17989 17972 17568 +f 17568 17972 17567 +f 17678 17679 17990 +f 17990 17679 17973 +f 17990 17973 17991 +f 17991 17973 17974 +f 17991 17974 17992 +f 17992 17974 17975 +f 17992 17975 17993 +f 17993 17975 17976 +f 17993 17976 17994 +f 17994 17976 17977 +f 17994 17977 17995 +f 17995 17977 17978 +f 17995 17978 17996 +f 17996 17978 17979 +f 17996 17979 17997 +f 17997 17979 17980 +f 17997 17980 17998 +f 17998 17980 17981 +f 17998 17981 17999 +f 17999 17981 17982 +f 17999 17982 18000 +f 18000 17982 17983 +f 18000 17983 18001 +f 18001 17983 17984 +f 18001 17984 18002 +f 18002 17984 17985 +f 18002 17985 18003 +f 18003 17985 17986 +f 18003 17986 18004 +f 18004 17986 17987 +f 18004 17987 18005 +f 18005 17987 17988 +f 18005 17988 18006 +f 18006 17988 17989 +f 18006 17989 17569 +f 17569 17989 17568 +f 17677 17678 18007 +f 18007 17678 17990 +f 18007 17990 18008 +f 18008 17990 17991 +f 18008 17991 18009 +f 18009 17991 17992 +f 18009 17992 18010 +f 18010 17992 17993 +f 18010 17993 18011 +f 18011 17993 17994 +f 18011 17994 18012 +f 18012 17994 17995 +f 18012 17995 18013 +f 18013 17995 17996 +f 18013 17996 18014 +f 18014 17996 17997 +f 18014 17997 18015 +f 18015 17997 17998 +f 18015 17998 18016 +f 18016 17998 17999 +f 18016 17999 18017 +f 18017 17999 18000 +f 18017 18000 18018 +f 18018 18000 18001 +f 18018 18001 18019 +f 18019 18001 18002 +f 18019 18002 18020 +f 18020 18002 18003 +f 18020 18003 18021 +f 18021 18003 18004 +f 18021 18004 18022 +f 18022 18004 18005 +f 18022 18005 18023 +f 18023 18005 18006 +f 18023 18006 17570 +f 17570 18006 17569 +f 17606 17608 17676 +f 17676 17677 18024 +f 18024 17677 18007 +f 18024 18007 18025 +f 18025 18007 18008 +f 18025 18008 18026 +f 18026 18008 18009 +f 18026 18009 18027 +f 18027 18009 18010 +f 18027 18010 18028 +f 18028 18010 18011 +f 18028 18011 18029 +f 18029 18011 18012 +f 18029 18012 18030 +f 18030 18012 18013 +f 18030 18013 18031 +f 18031 18013 18014 +f 18031 18014 18032 +f 18032 18014 18015 +f 18032 18015 18033 +f 18033 18015 18016 +f 18033 18016 18034 +f 18034 18016 18017 +f 18034 18017 18035 +f 18035 18017 18018 +f 18035 18018 18036 +f 18036 18018 18019 +f 18036 18019 18037 +f 18037 18019 18020 +f 18037 18020 18038 +f 18038 18020 18021 +f 18038 18021 18039 +f 18039 18021 18022 +f 18039 18022 18040 +f 18040 18022 18023 +f 18040 18023 17571 +f 17571 18023 17570 +f 17613 17612 18041 +f 18041 17612 17671 +f 18041 17671 18042 +f 18042 17671 17670 +f 18042 17670 18043 +f 18043 17670 17669 +f 18043 17669 18044 +f 18044 17669 17668 +f 18044 17668 18045 +f 18045 17668 17667 +f 18045 17667 18046 +f 18046 17667 17666 +f 18046 17666 18047 +f 18047 17666 17665 +f 18047 17665 18048 +f 18048 17665 17664 +f 18048 17664 18049 +f 18049 17664 17663 +f 18049 17663 18050 +f 18050 17663 17662 +f 18050 17662 18051 +f 18051 17662 17661 +f 18051 17661 18052 +f 18052 17661 17660 +f 18052 17660 18053 +f 18053 17660 17659 +f 18053 17659 18054 +f 18054 17659 17658 +f 18054 17658 18055 +f 18055 17658 17657 +f 18055 17657 18056 +f 18056 17657 17656 +f 18056 17656 17675 +f 9345 9365 17717 +f 17717 9365 17614 +f 17717 17614 17616 +f 17654 9326 17674 +f 17673 17672 18057 +f 18057 17672 17702 +f 18057 17702 18058 +f 18058 17702 17703 +f 18058 17703 18059 +f 18059 17703 17704 +f 18059 17704 18060 +f 18060 17704 17705 +f 18060 17705 18061 +f 18061 17705 17706 +f 18061 17706 18062 +f 18062 17706 17707 +f 18062 17707 18063 +f 18063 17707 17708 +f 18063 17708 18064 +f 18064 17708 17709 +f 18064 17709 18065 +f 18065 17709 17710 +f 18065 17710 18066 +f 18066 17710 17711 +f 18066 17711 18067 +f 18067 17711 17712 +f 18067 17712 18068 +f 18068 17712 17713 +f 18068 17713 18069 +f 18069 17713 17714 +f 18069 17714 18070 +f 18070 17714 17715 +f 18070 17715 18071 +f 18071 17715 17716 +f 18071 17716 18072 +f 18072 17716 17617 +f 18072 17617 17615 +f 17655 17654 17674 +f 18040 17571 17572 +f 18040 17572 17574 +f 17734 17441 17440 +f 17734 17440 17438 +f 3843 3845 17442 +f 17408 17406 17718 +f 17718 17406 17445 +f 17408 17718 17719 +f 17604 17606 18024 +f 18024 17606 17676 +f 17604 18024 18025 +f 18072 17615 18041 +f 18041 17615 17613 +f 18072 18041 18042 +f 17410 17408 17719 +f 17410 17719 17720 +f 17602 17604 18025 +f 17602 18025 18026 +f 18071 18072 18042 +f 18071 18042 18043 +f 17412 17410 17720 +f 17412 17720 17721 +f 17600 17602 18026 +f 17600 18026 18027 +f 18070 18071 18043 +f 18070 18043 18044 +f 17414 17412 17721 +f 17414 17721 17722 +f 17598 17600 18027 +f 17598 18027 18028 +f 18069 18070 18044 +f 18069 18044 18045 +f 17416 17414 17722 +f 17416 17722 17723 +f 17596 17598 18028 +f 17596 18028 18029 +f 18068 18069 18045 +f 18068 18045 18046 +f 17418 17416 17723 +f 17418 17723 17724 +f 17594 17596 18029 +f 17594 18029 18030 +f 18067 18068 18046 +f 18067 18046 18047 +f 17420 17418 17724 +f 17420 17724 17725 +f 17592 17594 18030 +f 17592 18030 18031 +f 18066 18067 18047 +f 18066 18047 18048 +f 17422 17420 17725 +f 17422 17725 17726 +f 17590 17592 18031 +f 17590 18031 18032 +f 18065 18066 18048 +f 18065 18048 18049 +f 17424 17422 17726 +f 17424 17726 17727 +f 17588 17590 18032 +f 17588 18032 18033 +f 18064 18065 18049 +f 18064 18049 18050 +f 17426 17424 17727 +f 17426 17727 17728 +f 17586 17588 18033 +f 17586 18033 18034 +f 18063 18064 18050 +f 18063 18050 18051 +f 17428 17426 17728 +f 17428 17728 17729 +f 17584 17586 18034 +f 17584 18034 18035 +f 18062 18063 18051 +f 18062 18051 18052 +f 17430 17428 17729 +f 17430 17729 17730 +f 17582 17584 18035 +f 17582 18035 18036 +f 18061 18062 18052 +f 18061 18052 18053 +f 17432 17430 17730 +f 17432 17730 17731 +f 17580 17582 18036 +f 17580 18036 18037 +f 18060 18061 18053 +f 18060 18053 18054 +f 17434 17432 17731 +f 17434 17731 17732 +f 17578 17580 18037 +f 17578 18037 18038 +f 18059 18060 18054 +f 18059 18054 18055 +f 17436 17434 17732 +f 17436 17732 17733 +f 17576 17578 18038 +f 17576 18038 18039 +f 18058 18059 18055 +f 18058 18055 18056 +f 17438 17436 17733 +f 17438 17733 17734 +f 17574 17576 18039 +f 17574 18039 18040 +f 18057 18058 18056 +f 18057 18056 17675 +f 17673 18057 17675 +f 2683 2684 17058 +f 17058 2684 2686 +f 17058 2686 17090 +f 17090 2686 2638 +f 17090 2638 17106 +f 17106 2638 2636 +f 17106 2636 2747 +f 2747 2636 2551 +f 2683 17058 18073 +f 18073 17058 17056 +f 18073 17056 18074 +f 18074 17056 18075 +f 18074 18075 18076 +f 18076 18075 18077 +f 18076 18077 18078 +f 18078 18077 18079 +f 18078 18079 18080 +f 18080 18079 18081 +f 18080 18081 18082 +f 18082 18081 18083 +f 18082 18083 18084 +f 18084 18083 18085 +f 18084 18085 18086 +f 18086 18085 18087 +f 18086 18087 18088 +f 18088 18087 18089 +f 18088 18089 18090 +f 18090 18089 18091 +f 18090 18091 18092 +f 18092 18091 18093 +f 18092 18093 18094 +f 18094 18093 18095 +f 18094 18095 18096 +f 18096 18095 18097 +f 18096 18097 18098 +f 18098 18097 18099 +f 18098 18099 18100 +f 18100 18099 18101 +f 18100 18101 18102 +f 18102 18101 18103 +f 18102 18103 18104 +f 18104 18103 18105 +f 18104 18105 18106 +f 18106 18105 18107 +f 18106 18107 18108 +f 18108 18107 18109 +f 18108 18109 18110 +f 18110 18109 18111 +f 18110 18111 9606 +f 9606 18111 9607 +f 9607 18111 18112 +f 9607 18112 9608 +f 9608 18112 18113 +f 9608 18113 9610 +f 9610 18113 18114 +f 9610 18114 9612 +f 9612 18114 18115 +f 9612 18115 9614 +f 9614 18115 18116 +f 9614 18116 9615 +f 9615 18116 18117 +f 9615 18117 18118 +f 18118 18117 18119 +f 18118 18119 9616 +f 9616 18119 18120 +f 9616 18120 18121 +f 18121 18120 2901 +f 18121 2901 9616 +f 17056 17035 18075 +f 18075 17035 18122 +f 18075 18122 18077 +f 18077 18122 18123 +f 18077 18123 18079 +f 18079 18123 18124 +f 18079 18124 18081 +f 18081 18124 18125 +f 18081 18125 18083 +f 18083 18125 18126 +f 18083 18126 18085 +f 18085 18126 18127 +f 18085 18127 18087 +f 18087 18127 18128 +f 18087 18128 18089 +f 18089 18128 18129 +f 18089 18129 18091 +f 18091 18129 18130 +f 18091 18130 18093 +f 18093 18130 18131 +f 18093 18131 18095 +f 18095 18131 18132 +f 18095 18132 18097 +f 18097 18132 18133 +f 18097 18133 18099 +f 18099 18133 18134 +f 18099 18134 18101 +f 18101 18134 18135 +f 18101 18135 18103 +f 18103 18135 18136 +f 18103 18136 18105 +f 18105 18136 18137 +f 18105 18137 18107 +f 18107 18137 18138 +f 18107 18138 18109 +f 18109 18138 18139 +f 18109 18139 18111 +f 18111 18139 18112 +f 17035 16971 18122 +f 18122 16971 18140 +f 18122 18140 18123 +f 18123 18140 18141 +f 18123 18141 18124 +f 18124 18141 18142 +f 18124 18142 18125 +f 18125 18142 18143 +f 18125 18143 18126 +f 18126 18143 18144 +f 18126 18144 18127 +f 18127 18144 18145 +f 18127 18145 18128 +f 18128 18145 18146 +f 18128 18146 18129 +f 18129 18146 18147 +f 18129 18147 18130 +f 18130 18147 18148 +f 18130 18148 18131 +f 18131 18148 18149 +f 18131 18149 18132 +f 18132 18149 18150 +f 18132 18150 18133 +f 18133 18150 18151 +f 18133 18151 18134 +f 18134 18151 18152 +f 18134 18152 18135 +f 18135 18152 18153 +f 18135 18153 18136 +f 18136 18153 18154 +f 18136 18154 18137 +f 18137 18154 18155 +f 18137 18155 18138 +f 18138 18155 18156 +f 18138 18156 18139 +f 18139 18156 18157 +f 18139 18157 18112 +f 18112 18157 18113 +f 16971 16969 18140 +f 18140 16969 18158 +f 18140 18158 18141 +f 18141 18158 18159 +f 18141 18159 18160 +f 18160 18159 18161 +f 18160 18161 18162 +f 18162 18161 18163 +f 18162 18163 18164 +f 18164 18163 18165 +f 18164 18165 18166 +f 18166 18165 18167 +f 18166 18167 18168 +f 18168 18167 18169 +f 18168 18169 18170 +f 18170 18169 18171 +f 18170 18171 18172 +f 18172 18171 18173 +f 18172 18173 18174 +f 18174 18173 18175 +f 18174 18175 18176 +f 18176 18175 18177 +f 18176 18177 18178 +f 18178 18177 18179 +f 18178 18179 18180 +f 18180 18179 18181 +f 18180 18181 18182 +f 18182 18181 18183 +f 18182 18183 18184 +f 18184 18183 18185 +f 18184 18185 18186 +f 18186 18185 18187 +f 18186 18187 18188 +f 18188 18187 18189 +f 18188 18189 18190 +f 18190 18189 18191 +f 18190 18191 18114 +f 18114 18191 18115 +f 18158 16969 18192 +f 18192 16969 16967 +f 18192 16967 18193 +f 18193 16967 16965 +f 18193 16965 18194 +f 18194 16965 18195 +f 18194 18195 18196 +f 18196 18195 18197 +f 18196 18197 18198 +f 18198 18197 18199 +f 18198 18199 18200 +f 18200 18199 18201 +f 18200 18201 18202 +f 18202 18201 18203 +f 18202 18203 18204 +f 18204 18203 18205 +f 18204 18205 18206 +f 18206 18205 18207 +f 18206 18207 18208 +f 18208 18207 18209 +f 18208 18209 18210 +f 18210 18209 18211 +f 18210 18211 18212 +f 18212 18211 18213 +f 18212 18213 18214 +f 18214 18213 18215 +f 18214 18215 18216 +f 18216 18215 18217 +f 18216 18217 18218 +f 18218 18217 18219 +f 18218 18219 18220 +f 18220 18219 18221 +f 18220 18221 18222 +f 18222 18221 18223 +f 18222 18223 18224 +f 18224 18223 18225 +f 18224 18225 18226 +f 18226 18225 18227 +f 18226 18227 18119 +f 18119 18227 18120 +f 16965 16958 18195 +f 18195 16958 18228 +f 18195 18228 18197 +f 18197 18228 18229 +f 18197 18229 18199 +f 18199 18229 18230 +f 18199 18230 18201 +f 18201 18230 2959 +f 18201 2959 18203 +f 18203 2959 2957 +f 18203 2957 18205 +f 18205 2957 18207 +f 16958 16960 18228 +f 18228 16960 18231 +f 18228 18231 18229 +f 18229 18231 18232 +f 18229 18232 18230 +f 18230 18232 2961 +f 18230 2961 2959 +f 16960 2967 18231 +f 18231 2967 2965 +f 18231 2965 2963 +f 18231 2963 18232 +f 18232 2963 2961 +f 2957 2948 18207 +f 18207 2948 18209 +f 2948 2939 18209 +f 18209 2939 18211 +f 18211 2939 18213 +f 18213 2939 2919 +f 18213 2919 18215 +f 18215 2919 18217 +f 2919 2905 18217 +f 18217 2905 18219 +f 2905 2778 18219 +f 18219 2778 18221 +f 18221 2778 18223 +f 18223 2778 2780 +f 18223 2780 18225 +f 18225 2780 2903 +f 18225 2903 18227 +f 18227 2903 2901 +f 18227 2901 18120 +f 9616 9615 18118 +f 9606 8439 18110 +f 18110 8439 18233 +f 18110 18233 18108 +f 18108 18233 18234 +f 18108 18234 18106 +f 18106 18234 18235 +f 18106 18235 18104 +f 18104 18235 18236 +f 18104 18236 18102 +f 18102 18236 18237 +f 18102 18237 18100 +f 18100 18237 18238 +f 18100 18238 18098 +f 18098 18238 18239 +f 18098 18239 18096 +f 18096 18239 18240 +f 18096 18240 18094 +f 18094 18240 18241 +f 18094 18241 18092 +f 18092 18241 18242 +f 18092 18242 18090 +f 18090 18242 18243 +f 18090 18243 18088 +f 18088 18243 18244 +f 18088 18244 18086 +f 18086 18244 18245 +f 18086 18245 18084 +f 18084 18245 18246 +f 18084 18246 18082 +f 18082 18246 18247 +f 18082 18247 18080 +f 18080 18247 18248 +f 18080 18248 18078 +f 18078 18248 2681 +f 18078 2681 18249 +f 18249 2681 2682 +f 18249 2682 18250 +f 18250 2682 18073 +f 18250 18073 18074 +f 8439 8438 18233 +f 18233 8438 2703 +f 18233 2703 18234 +f 18234 2703 2694 +f 18234 2694 18235 +f 18235 2694 18236 +f 8438 8437 2703 +f 2703 8437 2700 +f 2700 8437 8436 +f 2700 8436 2701 +f 2701 8436 8435 +f 2701 8435 2658 +f 2658 8435 2657 +f 2657 8435 9605 +f 2657 9605 2707 +f 2707 9605 8433 +f 2707 8433 2716 +f 2716 8433 2871 +f 2716 2871 2592 +f 2694 2670 18236 +f 18236 2670 18237 +f 2670 2671 18237 +f 18237 2671 18238 +f 2671 2673 18238 +f 18238 2673 18239 +f 2673 2674 18239 +f 18239 2674 18240 +f 2676 18242 2674 +f 2674 18242 18241 +f 2674 18241 18240 +f 2677 18245 2676 +f 2676 18245 18244 +f 2676 18244 18243 +f 18245 2677 18246 +f 18246 2677 2679 +f 18246 2679 18247 +f 18247 2679 18248 +f 2679 2681 18248 +f 2682 2683 18073 +f 18242 2676 18243 +f 18193 18194 18251 +f 18251 18194 18196 +f 18251 18196 18252 +f 18252 18196 18198 +f 18252 18198 18253 +f 18253 18198 18200 +f 18253 18200 18254 +f 18254 18200 18202 +f 18254 18202 18255 +f 18255 18202 18204 +f 18255 18204 18256 +f 18256 18204 18206 +f 18256 18206 18257 +f 18257 18206 18208 +f 18257 18208 18258 +f 18258 18208 18210 +f 18258 18210 18259 +f 18259 18210 18212 +f 18259 18212 18260 +f 18260 18212 18214 +f 18260 18214 18261 +f 18261 18214 18216 +f 18261 18216 18262 +f 18262 18216 18218 +f 18262 18218 18263 +f 18263 18218 18220 +f 18263 18220 18264 +f 18264 18220 18222 +f 18264 18222 18265 +f 18265 18222 18224 +f 18265 18224 18266 +f 18266 18224 18226 +f 18266 18226 18267 +f 18267 18226 18119 +f 18267 18119 18117 +f 18159 18158 18192 +f 18192 18193 18268 +f 18268 18193 18251 +f 18268 18251 18269 +f 18269 18251 18252 +f 18269 18252 18270 +f 18270 18252 18253 +f 18270 18253 18271 +f 18271 18253 18254 +f 18271 18254 18272 +f 18272 18254 18255 +f 18272 18255 18273 +f 18273 18255 18256 +f 18273 18256 18274 +f 18274 18256 18257 +f 18274 18257 18275 +f 18275 18257 18258 +f 18275 18258 18276 +f 18276 18258 18259 +f 18276 18259 18277 +f 18277 18259 18260 +f 18277 18260 18278 +f 18278 18260 18261 +f 18278 18261 18279 +f 18279 18261 18262 +f 18279 18262 18280 +f 18280 18262 18263 +f 18280 18263 18281 +f 18281 18263 18264 +f 18281 18264 18282 +f 18282 18264 18265 +f 18282 18265 18283 +f 18283 18265 18266 +f 18283 18266 18284 +f 18284 18266 18267 +f 18284 18267 18116 +f 18116 18267 18117 +f 18250 18074 18076 +f 18161 18159 18268 +f 18268 18159 18192 +f 18161 18268 18269 +f 18142 18141 18160 +f 18249 18250 18076 +f 18249 18076 18078 +f 18161 18269 18163 +f 18163 18269 18270 +f 18163 18270 18165 +f 18165 18270 18271 +f 18165 18271 18167 +f 18167 18271 18272 +f 18167 18272 18169 +f 18169 18272 18273 +f 18169 18273 18171 +f 18171 18273 18274 +f 18171 18274 18173 +f 18173 18274 18275 +f 18173 18275 18175 +f 18175 18275 18276 +f 18175 18276 18177 +f 18177 18276 18277 +f 18177 18277 18179 +f 18179 18277 18278 +f 18179 18278 18181 +f 18181 18278 18279 +f 18181 18279 18183 +f 18183 18279 18280 +f 18183 18280 18185 +f 18185 18280 18281 +f 18185 18281 18187 +f 18187 18281 18282 +f 18187 18282 18189 +f 18189 18282 18283 +f 18189 18283 18191 +f 18191 18283 18284 +f 18191 18284 18115 +f 18115 18284 18116 +f 18142 18160 18143 +f 18143 18160 18162 +f 18143 18162 18144 +f 18144 18162 18164 +f 18144 18164 18145 +f 18145 18164 18166 +f 18145 18166 18146 +f 18146 18166 18168 +f 18146 18168 18147 +f 18147 18168 18170 +f 18147 18170 18148 +f 18148 18170 18172 +f 18148 18172 18149 +f 18149 18172 18174 +f 18149 18174 18150 +f 18150 18174 18176 +f 18150 18176 18151 +f 18151 18176 18178 +f 18151 18178 18152 +f 18152 18178 18180 +f 18152 18180 18153 +f 18153 18180 18182 +f 18153 18182 18154 +f 18154 18182 18184 +f 18154 18184 18155 +f 18155 18184 18186 +f 18155 18186 18156 +f 18156 18186 18188 +f 18156 18188 18157 +f 18157 18188 18190 +f 18157 18190 18113 +f 18113 18190 18114 +f 18285 18286 18287 +f 18287 18286 18288 +f 18287 18288 18289 +f 18289 18288 18290 +f 18291 18292 18285 +f 18285 18292 18286 +f 18293 18294 18289 +f 18289 18294 18295 +f 18289 18295 18296 +f 18296 18297 18289 +f 18289 18297 18298 +f 18289 18298 18299 +f 18299 18287 18289 +f 18300 18301 18302 +f 18302 18301 18303 +f 18302 18303 18304 +f 18305 18306 18307 +f 18307 18306 18308 +f 18308 18306 18309 +f 18308 18309 18310 +f 18310 18309 18311 +f 18304 18312 18302 +f 18309 18313 18311 +f 18314 18315 18316 +f 18316 18315 18317 +f 18316 18317 18318 +f 18319 18320 18318 +f 18318 18320 18321 +f 18318 18321 18322 +f 18322 18321 18314 +f 18322 18314 18323 +f 18323 18314 18316 +f 18323 18316 18318 +f 18324 18325 18319 +f 18319 18325 18326 +f 18319 18326 18327 +f 18327 18326 18328 +f 18327 18328 18329 +f 18329 18328 18330 +f 18329 18330 18320 +f 18320 18330 18321 +f 18331 18332 18324 +f 18324 18332 18333 +f 18324 18333 18334 +f 18334 18333 18335 +f 18334 18335 18325 +f 18325 18335 18328 +f 18325 18328 18326 +f 18336 18337 18331 +f 18331 18337 18338 +f 18331 18338 18339 +f 18339 18338 18340 +f 18339 18340 18332 +f 18332 18340 18333 +f 18336 18341 18337 +f 18337 18341 18342 +f 18337 18342 18343 +f 18343 18342 18344 +f 18344 18342 18345 +f 18344 18345 18346 +f 18346 18345 18347 +f 18346 18347 18348 +f 18348 18347 18349 +f 18348 18349 18350 +f 18341 18351 18342 +f 18342 18351 18345 +f 18345 18351 18347 +f 18347 18351 18349 +f 18348 18350 18352 +f 18352 18350 18353 +f 18352 18353 18354 +f 18354 18353 18355 +f 18354 18355 18356 +f 18356 18355 18357 +f 18356 18357 18358 +f 18358 18357 18359 +f 18358 18359 18360 +f 18360 18359 18361 +f 18360 18361 18362 +f 18362 18361 18363 +f 18362 18363 18364 +f 18364 18363 18365 +f 18365 18363 18366 +f 18365 18366 18367 +f 18367 18366 18368 +f 18367 18368 18369 +f 18369 18368 18370 +f 18369 18370 18371 +f 18371 18370 18372 +f 18371 18372 18373 +f 18373 18372 18374 +f 18374 18372 18375 +f 18374 18375 18376 +f 18376 18375 18377 +f 18376 18377 18378 +f 18361 18379 18363 +f 18363 18379 18366 +f 18379 18368 18366 +f 18370 18377 18372 +f 18372 18377 18375 +f 18380 18381 18378 +f 18378 18381 18382 +f 18378 18382 18376 +f 18376 18382 18383 +f 18376 18383 18374 +f 18380 18384 18381 +f 18381 18383 18382 +f 18371 18373 18369 +f 18369 18373 18385 +f 18369 18385 18367 +f 18367 18385 18365 +f 18362 18364 18360 +f 18360 18364 18386 +f 18360 18386 18387 +f 18360 18387 18358 +f 18358 18387 18388 +f 18358 18388 18356 +f 18356 18388 18354 +f 18388 18389 18354 +f 18354 18389 18390 +f 18354 18390 18352 +f 18352 18390 18391 +f 18352 18391 18348 +f 18348 18391 18346 +f 18337 18343 18338 +f 18338 18343 18340 +f 18340 18335 18333 +f 18330 18314 18321 +f 18318 18322 18323 +f 18319 18327 18329 +f 18329 18320 18319 +f 18324 18334 18325 +f 18331 18339 18332 +f 18392 18393 18291 +f 18291 18393 18394 +f 18291 18394 18395 +f 18392 18396 18393 +f 18395 18397 18291 +f 18291 18397 18292 +f 18292 18397 18398 +f 18292 18398 18399 +f 18292 18399 18286 +f 18286 18399 18400 +f 18286 18400 18401 +f 18286 18401 18288 +f 18288 18401 18312 +f 18288 18312 18290 +f 18290 18312 18304 +f 18290 18304 18289 +f 18289 18304 18293 +f 18293 18304 18402 +f 18293 18402 18294 +f 18294 18402 18403 +f 18294 18403 18295 +f 18295 18403 18404 +f 18295 18404 18296 +f 18296 18404 18405 +f 18296 18405 18406 +f 18406 18405 18407 +f 18406 18407 18408 +f 18408 18407 18409 +f 18408 18409 18410 +f 18410 18409 18411 +f 18410 18411 18412 +f 18412 18411 18413 +f 18412 18413 18414 +f 18414 18413 18415 +f 18414 18415 18416 +f 18416 18415 18417 +f 18416 18417 18418 +f 18418 18417 18419 +f 18418 18419 18420 +f 18420 18419 18421 +f 18420 18421 18422 +f 18422 18421 18423 +f 18422 18423 18424 +f 18424 18423 18425 +f 18424 18425 18426 +f 18426 18425 18427 +f 18426 18427 18428 +f 18428 18427 18429 +f 18428 18429 18430 +f 18430 18429 18431 +f 18431 18429 18432 +f 18431 18432 18433 +f 18433 18432 18434 +f 18433 18434 18435 +f 18435 18434 18436 +f 18435 18436 18437 +f 18437 18436 18438 +f 18437 18438 18439 +f 18439 18438 18440 +f 18439 18440 18441 +f 18441 18440 18442 +f 18441 18442 18443 +f 18443 18442 18444 +f 18443 18444 18445 +f 18445 18444 18446 +f 18445 18446 18447 +f 18447 18446 18448 +f 18447 18448 18449 +f 18449 18448 18450 +f 18449 18450 18451 +f 18451 18450 18452 +f 18451 18452 18453 +f 18453 18452 18454 +f 18453 18454 18455 +f 18455 18454 18456 +f 18455 18456 18457 +f 18457 18456 18458 +f 18457 18458 18459 +f 18459 18458 18460 +f 18459 18460 18461 +f 18461 18460 18462 +f 18461 18462 18463 +f 18463 18462 18464 +f 18463 18464 18465 +f 18465 18464 18466 +f 18465 18466 18467 +f 18467 18466 18468 +f 18467 18468 18469 +f 18469 18468 18470 +f 18469 18470 18471 +f 18471 18470 18472 +f 18471 18472 18473 +f 18473 18472 18474 +f 18473 18474 18475 +f 18475 18474 18476 +f 18475 18476 18477 +f 18477 18476 18478 +f 18477 18478 18479 +f 18479 18478 18480 +f 18479 18480 18481 +f 18481 18480 18482 +f 18481 18482 18483 +f 18483 18482 18484 +f 18483 18484 18485 +f 18485 18484 18486 +f 18485 18486 18487 +f 18487 18486 18488 +f 18487 18488 18489 +f 18489 18488 18490 +f 18489 18490 18491 +f 18491 18490 18492 +f 18491 18492 18493 +f 18493 18492 18494 +f 18493 18494 18495 +f 18495 18494 18496 +f 18495 18496 18497 +f 18497 18496 18498 +f 18497 18498 18499 +f 18499 18498 18500 +f 18499 18500 18501 +f 18501 18500 18502 +f 18501 18502 18503 +f 18503 18502 18504 +f 18503 18504 18505 +f 18505 18504 18506 +f 18505 18506 18507 +f 18303 18508 18304 +f 18304 18508 18509 +f 18304 18509 18402 +f 18402 18509 18510 +f 18402 18510 18511 +f 18511 18510 18512 +f 18511 18512 18513 +f 18513 18512 18514 +f 18513 18514 18515 +f 18515 18514 18516 +f 18515 18516 18517 +f 18517 18516 18518 +f 18517 18518 18519 +f 18519 18518 18520 +f 18519 18520 18521 +f 18521 18520 18522 +f 18521 18522 18523 +f 18523 18522 18524 +f 18523 18524 18525 +f 18525 18524 18526 +f 18525 18526 18527 +f 18527 18526 18528 +f 18527 18528 18529 +f 18529 18528 18530 +f 18529 18530 18531 +f 18531 18530 18532 +f 18531 18532 18533 +f 18533 18532 18534 +f 18533 18534 18535 +f 18535 18534 18438 +f 18535 18438 18436 +f 18508 18303 18536 +f 18536 18303 18301 +f 18536 18301 18537 +f 18537 18301 18538 +f 18537 18538 18539 +f 18539 18538 18540 +f 18539 18540 18541 +f 18541 18540 18542 +f 18541 18542 18543 +f 18543 18542 18544 +f 18543 18544 18545 +f 18545 18544 18546 +f 18545 18546 18547 +f 18547 18546 18548 +f 18547 18548 18549 +f 18549 18548 18550 +f 18549 18550 18551 +f 18551 18550 18552 +f 18551 18552 18553 +f 18553 18552 18554 +f 18553 18554 18555 +f 18555 18554 18556 +f 18555 18556 18557 +f 18557 18556 18558 +f 18557 18558 18559 +f 18559 18558 18560 +f 18559 18560 18561 +f 18561 18560 18562 +f 18561 18562 18563 +f 18563 18562 18564 +f 18563 18564 18472 +f 18472 18564 18474 +f 18301 18300 18538 +f 18538 18300 18565 +f 18538 18565 18540 +f 18540 18565 18566 +f 18540 18566 18542 +f 18542 18566 18567 +f 18542 18567 18544 +f 18544 18567 18568 +f 18544 18568 18546 +f 18546 18568 18569 +f 18546 18569 18548 +f 18548 18569 18570 +f 18548 18570 18550 +f 18550 18570 18571 +f 18550 18571 18552 +f 18552 18571 18572 +f 18552 18572 18554 +f 18554 18572 18573 +f 18554 18573 18556 +f 18556 18573 18574 +f 18556 18574 18558 +f 18558 18574 18575 +f 18558 18575 18560 +f 18560 18575 18576 +f 18560 18576 18562 +f 18562 18576 18577 +f 18562 18577 18564 +f 18564 18577 18578 +f 18564 18578 18474 +f 18474 18578 18476 +f 18565 18300 18579 +f 18579 18300 18580 +f 18579 18580 18581 +f 18581 18580 18582 +f 18581 18582 18583 +f 18583 18582 18584 +f 18583 18584 18585 +f 18585 18584 18586 +f 18585 18586 18587 +f 18587 18586 18588 +f 18587 18588 18589 +f 18589 18588 18590 +f 18589 18590 18591 +f 18591 18590 18592 +f 18591 18592 18593 +f 18593 18592 18594 +f 18593 18594 18595 +f 18595 18594 18596 +f 18595 18596 18597 +f 18597 18596 18598 +f 18597 18598 18599 +f 18599 18598 18600 +f 18599 18600 18601 +f 18601 18600 18602 +f 18601 18602 18603 +f 18603 18602 18604 +f 18603 18604 18605 +f 18605 18604 18606 +f 18605 18606 18607 +f 18607 18606 18608 +f 18607 18608 18609 +f 18609 18608 18610 +f 18609 18610 18482 +f 18482 18610 18484 +f 18584 18582 18611 +f 18611 18582 18612 +f 18611 18612 18613 +f 18613 18612 18614 +f 18613 18614 18615 +f 18615 18614 18616 +f 18615 18616 18617 +f 18617 18616 18618 +f 18617 18618 18619 +f 18619 18618 18620 +f 18619 18620 18621 +f 18621 18620 18622 +f 18621 18622 18623 +f 18623 18622 18624 +f 18623 18624 18625 +f 18625 18624 18626 +f 18625 18626 18627 +f 18627 18626 18628 +f 18627 18628 18629 +f 18629 18628 18630 +f 18629 18630 18631 +f 18631 18630 18632 +f 18631 18632 18633 +f 18633 18632 18634 +f 18633 18634 18635 +f 18635 18634 18636 +f 18635 18636 18637 +f 18637 18636 18638 +f 18637 18638 18639 +f 18639 18638 18640 +f 18639 18640 18641 +f 18641 18640 18642 +f 18641 18642 18490 +f 18490 18642 18492 +f 18616 18614 18643 +f 18643 18614 18644 +f 18643 18644 18645 +f 18645 18644 18646 +f 18645 18646 18647 +f 18647 18646 18648 +f 18647 18648 18649 +f 18649 18648 18650 +f 18649 18650 18651 +f 18651 18650 18652 +f 18651 18652 18653 +f 18653 18652 18654 +f 18653 18654 18655 +f 18655 18654 18656 +f 18655 18656 18657 +f 18657 18656 18658 +f 18657 18658 18659 +f 18659 18658 18660 +f 18659 18660 18661 +f 18661 18660 18662 +f 18661 18662 18663 +f 18663 18662 18664 +f 18663 18664 18665 +f 18665 18664 18666 +f 18665 18666 18667 +f 18667 18666 18668 +f 18667 18668 18669 +f 18669 18668 18670 +f 18669 18670 18671 +f 18671 18670 18672 +f 18671 18672 18496 +f 18496 18672 18498 +f 18644 18673 18646 +f 18646 18673 18674 +f 18646 18674 18648 +f 18648 18674 18675 +f 18648 18675 18650 +f 18650 18675 18676 +f 18650 18676 18652 +f 18652 18676 18677 +f 18652 18677 18654 +f 18654 18677 18678 +f 18654 18678 18656 +f 18656 18678 18679 +f 18656 18679 18658 +f 18658 18679 18680 +f 18658 18680 18660 +f 18660 18680 18681 +f 18660 18681 18662 +f 18662 18681 18682 +f 18662 18682 18664 +f 18664 18682 18683 +f 18664 18683 18666 +f 18666 18683 18684 +f 18666 18684 18668 +f 18668 18684 18685 +f 18668 18685 18670 +f 18670 18685 18686 +f 18670 18686 18672 +f 18672 18686 18687 +f 18672 18687 18498 +f 18498 18687 18500 +f 18688 18689 18673 +f 18673 18689 18690 +f 18673 18690 18674 +f 18674 18690 18675 +f 18689 18688 18691 +f 18691 18688 18692 +f 18691 18692 18693 +f 18691 18693 18694 +f 18694 18693 18695 +f 18694 18695 18696 +f 18696 18695 18697 +f 18696 18697 18698 +f 18698 18697 18699 +f 18698 18699 18700 +f 18700 18699 18701 +f 18700 18701 18679 +f 18679 18701 18680 +f 18695 18702 18697 +f 18697 18702 18703 +f 18697 18703 18699 +f 18699 18703 18704 +f 18699 18704 18701 +f 18701 18704 18705 +f 18701 18705 18680 +f 18680 18705 18681 +f 18702 18706 18703 +f 18703 18706 18707 +f 18703 18707 18704 +f 18704 18707 18708 +f 18704 18708 18705 +f 18705 18708 18709 +f 18705 18709 18681 +f 18681 18709 18682 +f 18707 18706 18710 +f 18710 18706 18711 +f 18710 18711 18712 +f 18712 18711 18713 +f 18712 18713 18714 +f 18714 18713 18715 +f 18714 18715 18716 +f 18716 18715 18717 +f 18716 18717 18684 +f 18684 18717 18685 +f 18713 18711 18718 +f 18718 18711 18719 +f 18718 18719 18720 +f 18720 18719 18721 +f 18720 18721 18722 +f 18722 18721 18723 +f 18722 18723 18686 +f 18686 18723 18687 +f 18721 18719 18724 +f 18724 18719 18725 +f 18724 18725 18726 +f 18726 18725 18506 +f 18726 18506 18504 +f 18727 18728 18507 +f 18507 18728 18729 +f 18507 18729 18730 +f 18730 18729 18731 +f 18730 18731 18732 +f 18732 18731 18733 +f 18732 18733 18734 +f 18734 18733 18735 +f 18734 18735 18736 +f 18736 18735 18737 +f 18736 18737 18738 +f 18738 18737 18739 +f 18738 18739 18740 +f 18740 18739 18741 +f 18740 18741 18742 +f 18742 18741 18743 +f 18742 18743 18744 +f 18744 18743 18745 +f 18744 18745 18746 +f 18746 18745 18747 +f 18746 18747 18748 +f 18748 18747 18749 +f 18748 18749 18750 +f 18750 18749 18751 +f 18750 18751 18752 +f 18752 18751 18753 +f 18752 18753 18754 +f 18754 18753 18755 +f 18754 18755 18756 +f 18756 18755 18757 +f 18756 18757 18758 +f 18758 18757 18759 +f 18758 18759 18760 +f 18760 18759 18761 +f 18760 18761 18762 +f 18762 18761 18763 +f 18762 18763 18764 +f 18764 18763 18765 +f 18764 18765 18766 +f 18766 18765 18767 +f 18766 18767 18768 +f 18768 18767 18769 +f 18768 18769 18770 +f 18770 18769 18771 +f 18770 18771 18772 +f 18772 18771 18773 +f 18772 18773 18774 +f 18774 18773 18775 +f 18774 18775 18776 +f 18776 18775 18777 +f 18776 18777 18778 +f 18778 18777 18779 +f 18778 18779 18780 +f 18780 18779 18781 +f 18780 18781 18782 +f 18782 18781 18783 +f 18782 18783 18784 +f 18784 18783 18785 +f 18784 18785 18786 +f 18786 18785 18787 +f 18786 18787 18788 +f 18788 18787 18789 +f 18788 18789 18790 +f 18790 18789 18791 +f 18790 18791 18792 +f 18792 18791 18793 +f 18792 18793 18794 +f 18794 18793 18795 +f 18794 18795 18796 +f 18796 18795 18797 +f 18796 18797 18798 +f 18798 18797 18799 +f 18798 18799 18800 +f 18800 18799 18801 +f 18800 18801 18433 +f 18315 18802 18727 +f 18727 18802 18803 +f 18727 18803 18804 +f 18804 18803 18805 +f 18804 18805 18806 +f 18806 18805 18807 +f 18806 18807 18808 +f 18808 18807 18809 +f 18808 18809 18810 +f 18810 18809 18811 +f 18810 18811 18812 +f 18812 18811 18813 +f 18812 18813 18814 +f 18814 18813 18815 +f 18814 18815 18816 +f 18816 18815 18817 +f 18816 18817 18818 +f 18818 18817 18819 +f 18818 18819 18820 +f 18820 18819 18821 +f 18820 18821 18822 +f 18822 18821 18823 +f 18822 18823 18824 +f 18824 18823 18825 +f 18824 18825 18826 +f 18826 18825 18827 +f 18826 18827 18828 +f 18828 18827 18829 +f 18828 18829 18830 +f 18830 18829 18831 +f 18830 18831 18832 +f 18832 18831 18833 +f 18832 18833 18834 +f 18834 18833 18835 +f 18834 18835 18836 +f 18836 18835 18837 +f 18836 18837 18838 +f 18838 18837 18839 +f 18838 18839 18840 +f 18840 18839 18841 +f 18840 18841 18842 +f 18842 18841 18843 +f 18842 18843 18844 +f 18844 18843 18845 +f 18844 18845 18846 +f 18846 18845 18847 +f 18846 18847 18848 +f 18848 18847 18849 +f 18848 18849 18850 +f 18850 18849 18851 +f 18850 18851 18852 +f 18852 18851 18853 +f 18852 18853 18854 +f 18854 18853 18855 +f 18854 18855 18856 +f 18856 18855 18857 +f 18856 18857 18858 +f 18858 18857 18859 +f 18858 18859 18860 +f 18860 18859 18861 +f 18860 18861 18862 +f 18862 18861 18863 +f 18862 18863 18864 +f 18864 18863 18865 +f 18864 18865 18866 +f 18866 18865 18867 +f 18866 18867 18868 +f 18868 18867 18869 +f 18868 18869 18870 +f 18870 18869 18871 +f 18870 18871 18872 +f 18872 18871 18873 +f 18872 18873 18874 +f 18874 18873 18875 +f 18874 18875 18876 +f 18876 18875 18801 +f 18876 18801 18877 +f 18877 18801 18799 +f 18877 18799 18797 +f 18314 18878 18315 +f 18315 18878 18879 +f 18315 18879 18880 +f 18880 18879 18878 +f 18880 18878 18881 +f 18881 18878 18882 +f 18881 18882 18883 +f 18883 18882 18884 +f 18883 18884 18885 +f 18885 18884 18886 +f 18885 18886 18887 +f 18887 18886 18888 +f 18887 18888 18889 +f 18889 18888 18890 +f 18889 18890 18891 +f 18891 18890 18892 +f 18891 18892 18893 +f 18893 18892 18894 +f 18893 18894 18895 +f 18895 18894 18896 +f 18895 18896 18897 +f 18897 18896 18898 +f 18897 18898 18899 +f 18899 18898 18900 +f 18899 18900 18901 +f 18901 18900 18902 +f 18901 18902 18903 +f 18903 18902 18904 +f 18903 18904 18905 +f 18905 18904 18906 +f 18905 18906 18907 +f 18907 18906 18908 +f 18907 18908 18909 +f 18909 18908 18910 +f 18909 18910 18911 +f 18911 18910 18912 +f 18911 18912 18913 +f 18913 18912 18914 +f 18913 18914 18915 +f 18915 18914 18916 +f 18915 18916 18917 +f 18917 18916 18918 +f 18917 18918 18919 +f 18919 18918 18920 +f 18919 18920 18921 +f 18921 18920 18922 +f 18921 18922 18923 +f 18923 18922 18924 +f 18923 18924 18925 +f 18925 18924 18926 +f 18925 18926 18927 +f 18927 18926 18928 +f 18927 18928 18929 +f 18929 18928 18930 +f 18929 18930 18931 +f 18931 18930 18932 +f 18931 18932 18933 +f 18933 18932 18934 +f 18933 18934 18935 +f 18935 18934 18936 +f 18935 18936 18937 +f 18937 18936 18938 +f 18937 18938 18939 +f 18939 18938 18940 +f 18939 18940 18941 +f 18941 18940 18942 +f 18941 18942 18943 +f 18943 18942 18944 +f 18943 18944 18945 +f 18945 18944 18946 +f 18945 18946 18947 +f 18947 18946 18381 +f 18947 18381 18948 +f 18948 18381 18949 +f 18948 18949 18950 +f 18950 18949 18384 +f 18384 18949 18381 +f 18330 18884 18314 +f 18314 18884 18882 +f 18314 18882 18878 +f 18328 18888 18330 +f 18330 18888 18886 +f 18330 18886 18884 +f 18335 18892 18328 +f 18328 18892 18890 +f 18328 18890 18888 +f 18340 18896 18335 +f 18335 18896 18894 +f 18335 18894 18892 +f 18343 18902 18340 +f 18340 18902 18900 +f 18340 18900 18898 +f 18902 18343 18904 +f 18904 18343 18344 +f 18904 18344 18906 +f 18906 18344 18908 +f 18344 18346 18908 +f 18908 18346 18910 +f 18910 18346 18912 +f 18912 18346 18391 +f 18912 18391 18390 +f 18912 18390 18914 +f 18914 18390 18389 +f 18914 18389 18916 +f 18916 18389 18918 +f 18389 18388 18918 +f 18918 18388 18920 +f 18388 18387 18920 +f 18920 18387 18922 +f 18387 18386 18922 +f 18922 18386 18364 +f 18922 18364 18924 +f 18924 18364 18926 +f 18364 18365 18926 +f 18926 18365 18928 +f 18365 18385 18928 +f 18928 18385 18930 +f 18385 18373 18930 +f 18930 18373 18932 +f 18932 18373 18934 +f 18934 18373 18374 +f 18934 18374 18936 +f 18936 18374 18938 +f 18938 18374 18940 +f 18940 18374 18383 +f 18940 18383 18942 +f 18942 18383 18944 +f 18944 18383 18946 +f 18946 18383 18381 +f 18948 18950 18951 +f 18951 18950 18875 +f 18951 18875 18873 +f 18952 18953 18430 +f 18430 18953 18954 +f 18430 18954 18955 +f 18955 18954 18956 +f 18955 18956 18426 +f 18426 18956 18424 +f 18957 18958 18952 +f 18952 18958 18959 +f 18952 18959 18960 +f 18960 18959 18961 +f 18960 18961 18962 +f 18962 18961 18963 +f 18962 18963 18964 +f 18964 18963 18965 +f 18964 18965 18966 +f 18966 18965 18967 +f 18966 18967 18968 +f 18968 18967 18969 +f 18968 18969 18418 +f 18418 18969 18416 +f 18970 18305 18957 +f 18957 18305 18971 +f 18957 18971 18972 +f 18972 18971 18973 +f 18972 18973 18974 +f 18974 18973 18975 +f 18974 18975 18976 +f 18976 18975 18977 +f 18976 18977 18978 +f 18978 18977 18979 +f 18978 18979 18980 +f 18980 18979 18981 +f 18980 18981 18982 +f 18982 18981 18983 +f 18982 18983 18984 +f 18984 18983 18985 +f 18984 18985 18986 +f 18986 18985 18987 +f 18986 18987 18988 +f 18988 18987 18989 +f 18988 18989 18410 +f 18410 18989 18408 +f 18971 18305 18990 +f 18990 18305 18307 +f 18990 18307 18971 +f 18971 18307 18973 +f 18973 18307 18991 +f 18991 18307 18308 +f 18991 18308 18310 +f 18311 18992 18310 +f 18310 18992 18993 +f 18310 18993 18994 +f 18994 18993 18975 +f 18994 18975 18973 +f 18313 18287 18311 +f 18311 18287 18995 +f 18311 18995 18996 +f 18996 18995 18981 +f 18996 18981 18979 +f 18299 18997 18287 +f 18287 18997 18998 +f 18287 18998 18995 +f 18995 18998 18983 +f 18995 18983 18981 +f 18298 18999 18299 +f 18299 18999 19000 +f 18299 19000 18997 +f 18997 19000 18987 +f 18997 18987 18985 +f 18298 18297 18999 +f 18999 18297 18406 +f 18999 18406 18408 +f 18297 18296 18406 +f 18802 18315 18880 +f 18505 18507 18730 +f 18433 18435 18800 +f 18800 18435 18437 +f 18800 18437 18798 +f 18798 18437 18439 +f 18798 18439 18796 +f 18796 18439 18441 +f 18796 18441 18794 +f 18794 18441 18443 +f 18794 18443 18792 +f 18792 18443 18445 +f 18792 18445 18790 +f 18790 18445 18447 +f 18790 18447 18788 +f 18788 18447 18449 +f 18788 18449 18786 +f 18786 18449 18451 +f 18786 18451 18784 +f 18784 18451 18453 +f 18784 18453 18782 +f 18782 18453 18455 +f 18782 18455 18780 +f 18780 18455 18457 +f 18780 18457 18778 +f 18778 18457 18459 +f 18778 18459 18776 +f 18776 18459 18461 +f 18776 18461 18774 +f 18774 18461 18463 +f 18774 18463 18772 +f 18772 18463 18465 +f 18772 18465 18770 +f 18770 18465 18467 +f 18770 18467 18768 +f 18768 18467 18469 +f 18768 18469 18766 +f 18766 18469 18471 +f 18766 18471 18764 +f 18764 18471 18473 +f 18764 18473 18762 +f 18762 18473 18475 +f 18762 18475 18760 +f 18760 18475 18477 +f 18760 18477 18758 +f 18758 18477 18479 +f 18758 18479 18756 +f 18756 18479 18481 +f 18756 18481 18754 +f 18754 18481 18483 +f 18754 18483 18752 +f 18752 18483 18485 +f 18752 18485 18750 +f 18750 18485 18487 +f 18750 18487 18748 +f 18748 18487 18489 +f 18748 18489 18746 +f 18746 18489 18491 +f 18746 18491 18744 +f 18744 18491 18493 +f 18744 18493 18742 +f 18742 18493 18495 +f 18742 18495 18740 +f 18740 18495 18497 +f 18740 18497 18738 +f 18738 18497 18499 +f 18738 18499 18736 +f 18736 18499 18501 +f 18736 18501 18734 +f 18734 18501 18503 +f 18734 18503 18732 +f 18732 18503 18505 +f 18732 18505 18730 +f 18428 18430 18955 +f 18952 18960 19001 +f 19001 18960 18962 +f 19001 18962 19002 +f 19002 18962 18964 +f 19002 18964 19003 +f 19003 18964 18966 +f 19003 18966 19004 +f 19004 18966 18968 +f 19004 18968 18420 +f 18420 18968 18418 +f 18958 18957 19005 +f 19005 18957 18972 +f 19005 18972 18974 +f 18689 18691 19006 +f 19006 18691 18694 +f 19006 18694 19007 +f 19007 18694 18696 +f 19007 18696 18698 +f 18690 18689 19008 +f 19008 18689 19006 +f 19008 19006 19009 +f 19009 19006 19007 +f 19009 19007 19010 +f 19010 19007 18698 +f 19010 18698 18700 +f 18618 18616 18643 +f 18643 18645 19011 +f 19011 18645 18647 +f 19011 18647 19012 +f 19012 18647 18649 +f 19012 18649 19013 +f 19013 18649 18651 +f 19013 18651 19014 +f 19014 18651 18653 +f 19014 18653 19015 +f 19015 18653 18655 +f 19015 18655 19016 +f 19016 18655 18657 +f 19016 18657 19017 +f 19017 18657 18659 +f 19017 18659 19018 +f 19018 18659 18661 +f 19018 18661 19019 +f 19019 18661 18663 +f 19019 18663 19020 +f 19020 18663 18665 +f 19020 18665 19021 +f 19021 18665 18667 +f 19021 18667 19022 +f 19022 18667 18669 +f 19022 18669 19023 +f 19023 18669 18671 +f 19023 18671 18494 +f 18494 18671 18496 +f 18613 18615 19024 +f 19024 18615 18617 +f 19024 18617 19025 +f 19025 18617 18619 +f 19025 18619 19026 +f 19026 18619 18621 +f 19026 18621 19027 +f 19027 18621 18623 +f 19027 18623 19028 +f 19028 18623 18625 +f 19028 18625 19029 +f 19029 18625 18627 +f 19029 18627 19030 +f 19030 18627 18629 +f 19030 18629 19031 +f 19031 18629 18631 +f 19031 18631 19032 +f 19032 18631 18633 +f 19032 18633 19033 +f 19033 18633 18635 +f 19033 18635 19034 +f 19034 18635 18637 +f 19034 18637 19035 +f 19035 18637 18639 +f 19035 18639 19036 +f 19036 18639 18641 +f 19036 18641 18488 +f 18488 18641 18490 +f 18586 18584 18611 +f 18611 18613 19037 +f 19037 18613 19024 +f 19037 19024 19038 +f 19038 19024 19025 +f 19038 19025 19039 +f 19039 19025 19026 +f 19039 19026 19040 +f 19040 19026 19027 +f 19040 19027 19041 +f 19041 19027 19028 +f 19041 19028 19042 +f 19042 19028 19029 +f 19042 19029 19043 +f 19043 19029 19030 +f 19043 19030 19044 +f 19044 19030 19031 +f 19044 19031 19045 +f 19045 19031 19032 +f 19045 19032 19046 +f 19046 19032 19033 +f 19046 19033 19047 +f 19047 19033 19034 +f 19047 19034 19048 +f 19048 19034 19035 +f 19048 19035 19049 +f 19049 19035 19036 +f 19049 19036 18486 +f 18486 19036 18488 +f 18581 18583 19050 +f 19050 18583 18585 +f 19050 18585 19051 +f 19051 18585 18587 +f 19051 18587 19052 +f 19052 18587 18589 +f 19052 18589 19053 +f 19053 18589 18591 +f 19053 18591 19054 +f 19054 18591 18593 +f 19054 18593 19055 +f 19055 18593 18595 +f 19055 18595 19056 +f 19056 18595 18597 +f 19056 18597 19057 +f 19057 18597 18599 +f 19057 18599 19058 +f 19058 18599 18601 +f 19058 18601 19059 +f 19059 18601 18603 +f 19059 18603 19060 +f 19060 18603 18605 +f 19060 18605 19061 +f 19061 18605 18607 +f 19061 18607 19062 +f 19062 18607 18609 +f 19062 18609 18480 +f 18480 18609 18482 +f 18566 18565 18579 +f 18579 18581 19063 +f 19063 18581 19050 +f 19063 19050 19064 +f 19064 19050 19051 +f 19064 19051 19065 +f 19065 19051 19052 +f 19065 19052 19066 +f 19066 19052 19053 +f 19066 19053 19067 +f 19067 19053 19054 +f 19067 19054 19068 +f 19068 19054 19055 +f 19068 19055 19069 +f 19069 19055 19056 +f 19069 19056 19070 +f 19070 19056 19057 +f 19070 19057 19071 +f 19071 19057 19058 +f 19071 19058 19072 +f 19072 19058 19059 +f 19072 19059 19073 +f 19073 19059 19060 +f 19073 19060 19074 +f 19074 19060 19061 +f 19074 19061 19075 +f 19075 19061 19062 +f 19075 19062 18478 +f 18478 19062 18480 +f 18536 18537 19076 +f 19076 18537 18539 +f 19076 18539 19077 +f 19077 18539 18541 +f 19077 18541 19078 +f 19078 18541 18543 +f 19078 18543 19079 +f 19079 18543 18545 +f 19079 18545 19080 +f 19080 18545 18547 +f 19080 18547 19081 +f 19081 18547 18549 +f 19081 18549 19082 +f 19082 18549 18551 +f 19082 18551 19083 +f 19083 18551 18553 +f 19083 18553 19084 +f 19084 18553 18555 +f 19084 18555 19085 +f 19085 18555 18557 +f 19085 18557 19086 +f 19086 18557 18559 +f 19086 18559 19087 +f 19087 18559 18561 +f 19087 18561 19088 +f 19088 18561 18563 +f 19088 18563 18470 +f 18470 18563 18472 +f 18508 18536 19089 +f 19089 18536 19076 +f 19089 19076 19090 +f 19090 19076 19077 +f 19090 19077 19091 +f 19091 19077 19078 +f 19091 19078 19092 +f 19092 19078 19079 +f 19092 19079 19093 +f 19093 19079 19080 +f 19093 19080 19094 +f 19094 19080 19081 +f 19094 19081 19095 +f 19095 19081 19082 +f 19095 19082 19096 +f 19096 19082 19083 +f 19096 19083 19097 +f 19097 19083 19084 +f 19097 19084 19098 +f 19098 19084 19085 +f 19098 19085 19099 +f 19099 19085 19086 +f 19099 19086 19100 +f 19100 19086 19087 +f 19100 19087 19101 +f 19101 19087 19088 +f 19101 19088 18468 +f 18468 19088 18470 +f 18509 18508 19102 +f 19102 18508 19089 +f 19102 19089 19103 +f 19103 19089 19090 +f 19103 19090 19104 +f 19104 19090 19091 +f 19104 19091 19105 +f 19105 19091 19092 +f 19105 19092 19106 +f 19106 19092 19093 +f 19106 19093 19107 +f 19107 19093 19094 +f 19107 19094 19108 +f 19108 19094 19095 +f 19108 19095 19109 +f 19109 19095 19096 +f 19109 19096 19110 +f 19110 19096 19097 +f 19110 19097 19111 +f 19111 19097 19098 +f 19111 19098 19112 +f 19112 19098 19099 +f 19112 19099 19113 +f 19113 19099 19100 +f 19113 19100 19114 +f 19114 19100 19101 +f 19114 19101 18466 +f 18466 19101 18468 +f 18402 18511 18403 +f 18403 18511 19115 +f 18403 19115 18404 +f 18404 19115 19116 +f 18404 19116 18405 +f 18405 19116 18407 +f 18408 18989 18999 +f 18999 18989 19000 +f 18989 18987 19000 +f 18983 18998 18985 +f 18985 18998 18997 +f 18992 18311 18996 +f 18996 18979 18992 +f 18992 18979 18977 +f 18992 18977 18993 +f 18993 18977 18975 +f 18991 18310 18994 +f 18973 18991 18994 +f 18676 18675 19008 +f 19008 18675 18690 +f 18676 19008 19009 +f 18620 18618 19011 +f 19011 18618 18643 +f 18620 19011 19012 +f 18588 18586 19037 +f 19037 18586 18611 +f 18588 19037 19038 +f 18567 18566 19063 +f 19063 18566 18579 +f 18567 19063 19064 +f 18509 19102 18510 +f 18510 19102 19117 +f 18510 19117 18512 +f 18512 19117 19118 +f 18512 19118 18514 +f 18514 19118 19119 +f 18514 19119 18516 +f 18516 19119 19120 +f 18516 19120 18518 +f 18518 19120 19121 +f 18518 19121 18520 +f 18520 19121 19122 +f 18520 19122 18522 +f 18522 19122 19123 +f 18522 19123 18524 +f 18524 19123 19124 +f 18524 19124 18526 +f 18526 19124 19125 +f 18526 19125 18528 +f 18528 19125 19126 +f 18528 19126 18530 +f 18530 19126 19127 +f 18530 19127 18532 +f 18532 19127 19128 +f 18532 19128 18534 +f 18534 19128 18440 +f 18534 18440 18438 +f 19117 19102 19103 +f 18511 18513 19115 +f 19115 18513 19129 +f 19115 19129 19116 +f 19116 19129 19130 +f 19116 19130 18407 +f 18407 19130 18409 +f 18974 18976 19131 +f 19131 18976 19132 +f 19131 19132 19133 +f 19133 19132 19134 +f 19133 19134 18961 +f 18961 19134 18963 +f 18976 18978 19132 +f 19132 18978 19135 +f 19132 19135 19134 +f 19134 19135 19136 +f 19134 19136 18963 +f 18963 19136 18965 +f 18978 18980 19135 +f 19135 18980 19137 +f 19135 19137 19136 +f 19136 19137 19138 +f 19136 19138 18965 +f 18965 19138 18967 +f 18980 18982 19137 +f 19137 18982 19139 +f 19137 19139 19138 +f 19138 19139 19140 +f 19138 19140 18967 +f 18967 19140 18969 +f 18982 18984 19139 +f 19139 18984 19141 +f 19139 19141 19140 +f 19140 19141 19142 +f 19140 19142 18969 +f 18969 19142 18416 +f 18984 18986 19141 +f 19141 18986 19143 +f 19141 19143 19142 +f 19142 19143 18414 +f 19142 18414 18416 +f 18986 18988 19143 +f 19143 18988 18412 +f 19143 18412 18414 +f 18988 18410 18412 +f 18409 19130 19144 +f 19144 19130 19145 +f 19144 19145 19146 +f 19146 19145 18517 +f 19146 18517 18519 +f 19130 19129 19145 +f 19145 19129 18515 +f 19145 18515 18517 +f 19129 18513 18515 +f 19117 19103 19147 +f 19147 19103 19104 +f 19147 19104 19148 +f 19148 19104 19105 +f 19148 19105 19149 +f 19149 19105 19106 +f 19149 19106 19150 +f 19150 19106 19107 +f 19150 19107 19151 +f 19151 19107 19108 +f 19151 19108 19152 +f 19152 19108 19109 +f 19152 19109 19153 +f 19153 19109 19110 +f 19153 19110 19154 +f 19154 19110 19111 +f 19154 19111 19155 +f 19155 19111 19112 +f 19155 19112 19156 +f 19156 19112 19113 +f 19156 19113 19157 +f 19157 19113 19114 +f 19157 19114 18464 +f 18464 19114 18466 +f 18567 19064 18568 +f 18568 19064 19065 +f 18568 19065 18569 +f 18569 19065 19066 +f 18569 19066 18570 +f 18570 19066 19067 +f 18570 19067 18571 +f 18571 19067 19068 +f 18571 19068 18572 +f 18572 19068 19069 +f 18572 19069 18573 +f 18573 19069 19070 +f 18573 19070 18574 +f 18574 19070 19071 +f 18574 19071 18575 +f 18575 19071 19072 +f 18575 19072 18576 +f 18576 19072 19073 +f 18576 19073 18577 +f 18577 19073 19074 +f 18577 19074 18578 +f 18578 19074 19075 +f 18578 19075 18476 +f 18476 19075 18478 +f 18588 19038 18590 +f 18590 19038 19039 +f 18590 19039 18592 +f 18592 19039 19040 +f 18592 19040 18594 +f 18594 19040 19041 +f 18594 19041 18596 +f 18596 19041 19042 +f 18596 19042 18598 +f 18598 19042 19043 +f 18598 19043 18600 +f 18600 19043 19044 +f 18600 19044 18602 +f 18602 19044 19045 +f 18602 19045 18604 +f 18604 19045 19046 +f 18604 19046 18606 +f 18606 19046 19047 +f 18606 19047 18608 +f 18608 19047 19048 +f 18608 19048 18610 +f 18610 19048 19049 +f 18610 19049 18484 +f 18484 19049 18486 +f 18620 19012 18622 +f 18622 19012 19013 +f 18622 19013 18624 +f 18624 19013 19014 +f 18624 19014 18626 +f 18626 19014 19015 +f 18626 19015 18628 +f 18628 19015 19016 +f 18628 19016 18630 +f 18630 19016 19017 +f 18630 19017 18632 +f 18632 19017 19018 +f 18632 19018 18634 +f 18634 19018 19019 +f 18634 19019 18636 +f 18636 19019 19020 +f 18636 19020 18638 +f 18638 19020 19021 +f 18638 19021 18640 +f 18640 19021 19022 +f 18640 19022 18642 +f 18642 19022 19023 +f 18642 19023 18492 +f 18492 19023 18494 +f 18676 19009 18677 +f 18677 19009 19010 +f 18677 19010 18678 +f 18678 19010 18700 +f 18678 18700 18679 +f 19117 19147 19118 +f 19118 19147 19158 +f 19118 19158 19119 +f 19119 19158 19159 +f 19119 19159 19120 +f 19120 19159 19160 +f 19120 19160 19121 +f 19121 19160 19161 +f 19121 19161 19122 +f 19122 19161 19162 +f 19122 19162 19123 +f 19123 19162 19163 +f 19123 19163 19124 +f 19124 19163 19164 +f 19124 19164 19125 +f 19125 19164 19165 +f 19125 19165 19126 +f 19126 19165 19166 +f 19126 19166 19127 +f 19127 19166 19167 +f 19127 19167 19128 +f 19128 19167 18442 +f 19128 18442 18440 +f 19158 19147 19148 +f 18409 19144 18411 +f 18411 19144 19168 +f 18411 19168 18413 +f 18413 19168 19169 +f 18413 19169 18415 +f 18415 19169 19170 +f 18415 19170 18417 +f 18417 19170 19171 +f 18417 19171 18419 +f 18419 19171 19172 +f 18419 19172 18421 +f 18421 19172 19173 +f 18421 19173 18423 +f 18423 19173 19174 +f 18423 19174 18425 +f 18425 19174 19175 +f 18425 19175 18427 +f 18427 19175 19176 +f 18427 19176 18429 +f 18429 19176 18432 +f 19168 19144 19146 +f 18958 19005 19131 +f 19131 19005 18974 +f 18958 19131 19133 +f 19158 19148 19177 +f 19177 19148 19149 +f 19177 19149 19178 +f 19178 19149 19150 +f 19178 19150 19179 +f 19179 19150 19151 +f 19179 19151 19180 +f 19180 19151 19152 +f 19180 19152 19181 +f 19181 19152 19153 +f 19181 19153 19182 +f 19182 19153 19154 +f 19182 19154 19183 +f 19183 19154 19155 +f 19183 19155 19184 +f 19184 19155 19156 +f 19184 19156 19185 +f 19185 19156 19157 +f 19185 19157 18462 +f 18462 19157 18464 +f 19168 19146 19186 +f 19186 19146 18519 +f 19186 18519 18521 +f 18959 18958 19133 +f 18959 19133 18961 +f 19169 19186 19187 +f 19187 19186 18521 +f 19187 18521 18523 +f 19186 19169 19168 +f 19159 19177 19188 +f 19188 19177 19178 +f 19188 19178 19189 +f 19189 19178 19179 +f 19189 19179 19190 +f 19190 19179 19180 +f 19190 19180 19191 +f 19191 19180 19181 +f 19191 19181 19192 +f 19192 19181 19182 +f 19192 19182 19193 +f 19193 19182 19183 +f 19193 19183 19194 +f 19194 19183 19184 +f 19194 19184 19195 +f 19195 19184 19185 +f 19195 19185 18460 +f 18460 19185 18462 +f 19177 19159 19158 +f 18707 18710 18708 +f 18708 18710 19196 +f 18708 19196 18709 +f 18709 19196 19197 +f 18709 19197 18682 +f 18682 19197 18683 +f 19159 19188 19160 +f 19160 19188 19198 +f 19160 19198 19161 +f 19161 19198 19199 +f 19161 19199 19162 +f 19162 19199 19200 +f 19162 19200 19163 +f 19163 19200 19201 +f 19163 19201 19164 +f 19164 19201 19202 +f 19164 19202 19165 +f 19165 19202 19203 +f 19165 19203 19166 +f 19166 19203 19204 +f 19166 19204 19167 +f 19167 19204 18444 +f 19167 18444 18442 +f 19198 19188 19189 +f 19169 19187 19170 +f 19170 19187 19205 +f 19170 19205 19171 +f 19171 19205 19206 +f 19171 19206 19172 +f 19172 19206 19207 +f 19172 19207 19173 +f 19173 19207 19208 +f 19173 19208 19174 +f 19174 19208 19209 +f 19174 19209 19175 +f 19175 19209 19210 +f 19175 19210 19176 +f 19176 19210 19211 +f 19176 19211 18432 +f 18432 19211 18434 +f 19205 19187 18523 +f 18952 19001 18953 +f 18953 19001 19002 +f 18953 19002 19212 +f 19212 19002 19003 +f 19212 19003 19213 +f 19213 19003 19004 +f 19213 19004 18422 +f 18422 19004 18420 +f 18956 18954 19212 +f 19212 18954 18953 +f 18426 18428 18955 +f 18424 18956 19213 +f 19213 18956 19212 +f 19213 18422 18424 +f 19207 19206 18527 +f 18527 19206 18525 +f 18523 18525 19205 +f 19205 18525 19206 +f 19199 19214 19215 +f 19215 19214 19216 +f 19215 19216 19217 +f 19217 19216 19218 +f 19217 19218 19219 +f 19219 19218 19220 +f 19219 19220 19221 +f 19221 19220 19222 +f 19221 19222 19223 +f 19223 19222 19224 +f 19223 19224 18456 +f 18456 19224 18458 +f 19214 19190 19216 +f 19216 19190 19191 +f 19216 19191 19218 +f 19218 19191 19192 +f 19218 19192 19220 +f 19220 19192 19193 +f 19220 19193 19222 +f 19222 19193 19194 +f 19222 19194 19224 +f 19224 19194 19195 +f 19224 19195 18458 +f 18458 19195 18460 +f 19199 19198 19214 +f 19214 19198 19189 +f 19214 19189 19190 +f 18683 19197 18716 +f 18716 19197 18714 +f 18712 18714 19196 +f 19196 18714 19197 +f 19196 18710 18712 +f 18713 18718 18715 +f 18715 18718 18720 +f 18715 18720 18717 +f 18717 18720 18722 +f 18717 18722 18685 +f 18685 18722 18686 +f 18684 18683 18716 +f 19199 19215 19200 +f 19200 19215 19225 +f 19200 19225 19201 +f 19201 19225 19226 +f 19201 19226 19202 +f 19202 19226 19227 +f 19202 19227 19203 +f 19203 19227 19228 +f 19203 19228 19204 +f 19204 19228 18446 +f 19204 18446 18444 +f 19225 19215 19217 +f 19208 19207 18529 +f 18529 19207 18527 +f 19210 19209 18533 +f 18533 19209 18531 +f 18529 18531 19208 +f 19208 18531 19209 +f 19226 19229 19230 +f 19230 19229 19231 +f 19230 19231 19232 +f 19232 19231 19233 +f 19232 19233 18452 +f 18452 19233 18454 +f 19229 19219 19231 +f 19231 19219 19221 +f 19231 19221 19233 +f 19233 19221 19223 +f 19233 19223 18454 +f 18454 19223 18456 +f 19226 19225 19229 +f 19229 19225 19217 +f 19229 19217 19219 +f 18721 18724 18723 +f 18723 18724 19234 +f 18723 19234 18687 +f 18687 19234 18500 +f 19226 19230 19227 +f 19227 19230 19235 +f 19227 19235 19228 +f 19228 19235 18448 +f 19228 18448 18446 +f 19235 19230 19232 +f 19211 19210 18535 +f 18535 19210 18533 +f 18724 18726 19234 +f 19234 18726 18502 +f 19234 18502 18500 +f 18504 18502 18726 +f 18452 18450 19232 +f 19232 18450 19235 +f 18450 18448 19235 +f 18434 19211 18436 +f 18436 19211 18535 +f 18797 18795 19236 +f 19236 18795 19237 +f 19236 19237 19238 +f 19238 19237 19239 +f 19238 19239 18872 +f 18872 19239 18870 +f 18795 18793 19237 +f 19237 18793 19240 +f 19237 19240 19239 +f 19239 19240 19241 +f 19239 19241 18870 +f 18870 19241 18868 +f 18793 18791 19240 +f 19240 18791 19242 +f 19240 19242 19241 +f 19241 19242 19243 +f 19241 19243 18868 +f 18868 19243 18866 +f 18791 18789 19242 +f 19242 18789 19244 +f 19242 19244 19243 +f 19243 19244 19245 +f 19243 19245 18866 +f 18866 19245 18864 +f 18789 18787 19244 +f 19244 18787 19246 +f 19244 19246 19245 +f 19245 19246 19247 +f 19245 19247 18864 +f 18864 19247 18862 +f 18787 18785 19246 +f 19246 18785 19248 +f 19246 19248 19247 +f 19247 19248 19249 +f 19247 19249 18862 +f 18862 19249 18860 +f 18785 18783 19248 +f 19248 18783 19250 +f 19248 19250 19249 +f 19249 19250 19251 +f 19249 19251 18860 +f 18860 19251 18858 +f 18783 18781 19250 +f 19250 18781 19252 +f 19250 19252 19251 +f 19251 19252 19253 +f 19251 19253 18858 +f 18858 19253 18856 +f 18781 18779 19252 +f 19252 18779 19254 +f 19252 19254 19253 +f 19253 19254 19255 +f 19253 19255 18856 +f 18856 19255 18854 +f 18779 18777 19254 +f 19254 18777 19256 +f 19254 19256 19255 +f 19255 19256 19257 +f 19255 19257 18854 +f 18854 19257 18852 +f 18777 18775 19256 +f 19256 18775 19258 +f 19256 19258 19257 +f 19257 19258 19259 +f 19257 19259 18852 +f 18852 19259 18850 +f 18775 18773 19258 +f 19258 18773 19260 +f 19258 19260 19259 +f 19259 19260 19261 +f 19259 19261 18850 +f 18850 19261 18848 +f 18773 18771 19260 +f 19260 18771 19262 +f 19260 19262 19261 +f 19261 19262 19263 +f 19261 19263 18848 +f 18848 19263 18846 +f 18771 18769 19262 +f 19262 18769 19264 +f 19262 19264 19263 +f 19263 19264 19265 +f 19263 19265 18846 +f 18846 19265 18844 +f 18769 18767 19264 +f 19264 18767 19266 +f 19264 19266 19265 +f 19265 19266 19267 +f 19265 19267 18844 +f 18844 19267 18842 +f 18767 18765 19266 +f 19266 18765 19268 +f 19266 19268 19267 +f 19267 19268 19269 +f 19267 19269 18842 +f 18842 19269 18840 +f 18765 18763 19268 +f 19268 18763 19270 +f 19268 19270 19269 +f 19269 19270 19271 +f 19269 19271 18840 +f 18840 19271 18838 +f 18763 18761 19270 +f 19270 18761 19272 +f 19270 19272 19271 +f 19271 19272 19273 +f 19271 19273 18838 +f 18838 19273 18836 +f 18761 18759 19272 +f 19272 18759 19274 +f 19272 19274 19273 +f 19273 19274 19275 +f 19273 19275 18836 +f 18836 19275 18834 +f 18759 18757 19274 +f 19274 18757 19276 +f 19274 19276 19275 +f 19275 19276 19277 +f 19275 19277 18834 +f 18834 19277 18832 +f 18757 18755 19276 +f 19276 18755 19278 +f 19276 19278 19277 +f 19277 19278 19279 +f 19277 19279 18832 +f 18832 19279 18830 +f 18755 18753 19278 +f 19278 18753 19280 +f 19278 19280 19279 +f 19279 19280 19281 +f 19279 19281 18830 +f 18830 19281 18828 +f 18753 18751 19280 +f 19280 18751 19282 +f 19280 19282 19281 +f 19281 19282 19283 +f 19281 19283 18828 +f 18828 19283 18826 +f 18751 18749 19282 +f 19282 18749 19284 +f 19282 19284 19283 +f 19283 19284 19285 +f 19283 19285 18826 +f 18826 19285 18824 +f 18749 18747 19284 +f 19284 18747 19286 +f 19284 19286 19285 +f 19285 19286 19287 +f 19285 19287 18824 +f 18824 19287 18822 +f 18747 18745 19286 +f 19286 18745 19288 +f 19286 19288 19287 +f 19287 19288 19289 +f 19287 19289 18822 +f 18822 19289 18820 +f 18745 18743 19288 +f 19288 18743 19290 +f 19288 19290 19289 +f 19289 19290 19291 +f 19289 19291 18820 +f 18820 19291 18818 +f 18743 18741 19290 +f 19290 18741 19292 +f 19290 19292 19291 +f 19291 19292 19293 +f 19291 19293 18818 +f 18818 19293 18816 +f 18741 18739 19292 +f 19292 18739 19294 +f 19292 19294 19293 +f 19293 19294 19295 +f 19293 19295 18816 +f 18816 19295 18814 +f 18739 18737 19294 +f 19294 18737 19296 +f 19294 19296 19295 +f 19295 19296 19297 +f 19295 19297 18814 +f 18814 19297 18812 +f 18737 18735 19296 +f 19296 18735 19298 +f 19296 19298 19297 +f 19297 19298 19299 +f 19297 19299 18812 +f 18812 19299 18810 +f 18735 18733 19298 +f 19298 18733 19300 +f 19298 19300 19299 +f 19299 19300 19301 +f 19299 19301 18810 +f 18810 19301 18808 +f 18733 18731 19300 +f 19300 18731 19302 +f 19300 19302 19301 +f 19301 19302 19303 +f 19301 19303 18808 +f 18808 19303 18806 +f 18731 18729 19302 +f 19302 18729 18728 +f 19302 18728 19303 +f 19303 18728 19304 +f 19303 19304 18806 +f 18806 19304 18804 +f 18876 18877 19236 +f 19236 18877 18797 +f 18876 19236 19238 +f 18873 18871 18951 +f 18951 18871 19305 +f 18951 19305 18948 +f 18948 19305 18947 +f 18871 18869 19305 +f 19305 18869 19306 +f 19305 19306 18947 +f 18947 19306 18945 +f 18869 18867 19306 +f 19306 18867 19307 +f 19306 19307 18945 +f 18945 19307 18943 +f 18867 18865 19307 +f 19307 18865 19308 +f 19307 19308 18943 +f 18943 19308 18941 +f 18865 18863 19308 +f 19308 18863 19309 +f 19308 19309 18941 +f 18941 19309 18939 +f 18863 18861 19309 +f 19309 18861 19310 +f 19309 19310 18939 +f 18939 19310 18937 +f 18861 18859 19310 +f 19310 18859 19311 +f 19310 19311 18937 +f 18937 19311 18935 +f 18859 18857 19311 +f 19311 18857 19312 +f 19311 19312 18935 +f 18935 19312 18933 +f 18857 18855 19312 +f 19312 18855 19313 +f 19312 19313 18933 +f 18933 19313 18931 +f 18855 18853 19313 +f 19313 18853 19314 +f 19313 19314 18931 +f 18931 19314 18929 +f 18853 18851 19314 +f 19314 18851 19315 +f 19314 19315 18929 +f 18929 19315 18927 +f 18851 18849 19315 +f 19315 18849 19316 +f 19315 19316 18927 +f 18927 19316 18925 +f 18849 18847 19316 +f 19316 18847 19317 +f 19316 19317 18925 +f 18925 19317 18923 +f 18847 18845 19317 +f 19317 18845 19318 +f 19317 19318 18923 +f 18923 19318 18921 +f 18845 18843 19318 +f 19318 18843 19319 +f 19318 19319 18921 +f 18921 19319 18919 +f 18843 18841 19319 +f 19319 18841 19320 +f 19319 19320 18919 +f 18919 19320 18917 +f 18841 18839 19320 +f 19320 18839 19321 +f 19320 19321 18917 +f 18917 19321 18915 +f 18839 18837 19321 +f 19321 18837 19322 +f 19321 19322 18915 +f 18915 19322 18913 +f 18837 18835 19322 +f 19322 18835 19323 +f 19322 19323 18913 +f 18913 19323 18911 +f 18835 18833 19323 +f 19323 18833 19324 +f 19323 19324 18911 +f 18911 19324 18909 +f 18833 18831 19324 +f 19324 18831 19325 +f 19324 19325 18909 +f 18909 19325 18907 +f 18831 18829 19325 +f 19325 18829 19326 +f 19325 19326 18907 +f 18907 19326 18905 +f 18829 18827 19326 +f 19326 18827 19327 +f 19326 19327 18905 +f 18905 19327 18903 +f 18827 18825 19327 +f 19327 18825 19328 +f 19327 19328 18903 +f 18903 19328 18901 +f 18825 18823 19328 +f 19328 18823 19329 +f 19328 19329 18901 +f 18901 19329 18899 +f 18823 18821 19329 +f 19329 18821 19330 +f 19329 19330 18899 +f 18899 19330 18897 +f 18821 18819 19330 +f 19330 18819 19331 +f 19330 19331 18897 +f 18897 19331 18895 +f 18819 18817 19331 +f 19331 18817 19332 +f 19331 19332 18895 +f 18895 19332 18893 +f 18817 18815 19332 +f 19332 18815 19333 +f 19332 19333 18893 +f 18893 19333 18891 +f 18815 18813 19333 +f 19333 18813 19334 +f 19333 19334 18891 +f 18891 19334 18889 +f 18813 18811 19334 +f 19334 18811 19335 +f 19334 19335 18889 +f 18889 19335 18887 +f 18811 18809 19335 +f 19335 18809 19336 +f 19335 19336 18887 +f 18887 19336 18885 +f 18809 18807 19336 +f 19336 18807 19337 +f 19336 19337 18885 +f 18885 19337 18883 +f 18807 18805 19337 +f 19337 18805 19338 +f 19337 19338 18883 +f 18883 19338 18881 +f 18805 18803 19338 +f 19338 18803 18802 +f 19338 18802 18881 +f 18881 18802 18880 +f 18728 18727 19304 +f 19304 18727 18804 +f 18896 18340 18898 +f 18874 18876 19238 +f 18874 19238 18872 +f 18688 18673 19339 +f 19339 18673 18644 +f 19339 18644 18614 +f 18614 18612 19339 +f 19339 18612 18302 +f 18302 18612 18582 +f 18302 18582 18580 +f 18580 18300 18302 +f 18396 19339 18393 +f 18393 19339 18394 +f 18394 19339 18395 +f 18395 19339 18302 +f 18395 18302 18397 +f 18397 18302 18398 +f 18398 18302 18399 +f 18399 18302 18400 +f 18400 18302 18401 +f 18401 18302 18312 +f 18317 18315 18875 +f 18875 18315 18727 +f 18801 18507 18433 +f 18431 18507 18506 +f 18430 18719 18952 +f 18952 18719 18711 +f 18952 18706 18957 +f 18957 18706 18702 +f 18317 18384 18380 +f 18378 18319 18380 +f 18380 18319 18318 +f 18324 18378 18377 +f 18324 18377 18370 +f 18324 18370 18331 +f 18331 18370 18368 +f 18336 18368 18379 +f 18341 18379 18361 +f 18341 18361 18359 +f 18359 18357 18341 +f 18351 18353 18350 +f 18357 18355 18353 +f 18970 18692 18305 +f 18305 18692 18688 +f 18305 18688 18306 +f 18306 18688 18396 +f 18313 18396 18392 +f 18313 18392 18285 +f 18285 18392 18291 +f 18688 19339 18396 +f 18285 18287 18313 +f 19340 19341 19342 +f 19342 19341 19343 +f 19343 19341 19344 +f 19344 19341 19345 +f 19342 19343 19346 +f 19346 19343 19344 +f 19346 19344 19345 +f 19345 19341 19346 +f 19346 19341 19340 +f 19342 19346 19340 +f 19347 19348 19349 +f 19349 19348 19350 +f 19350 19348 19351 +f 19351 19348 19352 +f 19351 19352 19353 +f 19353 19354 19355 +f 19354 19356 19355 +f 19355 19356 19357 +f 19357 19356 19358 +f 19357 19358 19359 +f 19359 19358 19360 +f 19359 19360 19361 +f 19361 19362 19363 +f 19371 19372 19373 +f 19373 19372 19374 +f 19374 19372 19375 +f 19374 19375 19376 +f 19377 19378 19372 +f 19382 19380 19383 +f 19383 19384 19385 +f 19385 19384 19386 +f 19385 19386 19387 +f 19387 19388 19385 +f 19385 19388 19389 +f 19389 19388 19390 +f 19353 19355 19396 +f 19396 19355 19357 +f 19396 19357 19397 +f 19397 19357 19359 +f 19397 19359 19398 +f 19398 19359 19361 +f 19398 19361 19399 +f 19399 19361 19400 +f 19399 19400 19401 +f 19401 19400 19402 +f 19401 19402 19403 +f 19403 19402 19404 +f 19403 19404 19405 +f 19405 19404 19406 +f 19405 19406 19407 +f 19407 19406 19408 +f 19407 19408 19409 +f 19409 19408 19410 +f 19409 19410 19380 +f 19380 19410 19411 +f 19380 19411 19384 +f 19384 19411 19412 +f 19384 19412 19413 +f 19413 19412 19414 +f 19413 19414 19415 +f 19415 19414 19416 +f 19415 19416 19417 +f 19417 19416 19418 +f 19417 19418 19419 +f 19419 19418 19420 +f 19419 19420 19421 +f 19421 19420 19422 +f 19421 19422 19423 +f 19423 19422 19370 +f 19423 19370 19371 +f 19400 19361 19424 +f 19424 19361 19363 +f 19424 19363 19425 +f 19425 19363 19364 +f 19425 19364 19426 +f 19426 19364 19366 +f 19426 19366 19427 +f 19427 19366 19367 +f 19427 19367 19428 +f 19428 19367 19368 +f 19428 19368 19429 +f 19429 19368 19370 +f 19429 19370 19422 +f 19423 19371 19430 +f 19430 19371 19373 +f 19430 19373 19431 +f 19431 19373 19374 +f 19431 19374 19432 +f 19432 19374 19376 +f 19432 19376 19433 +f 19433 19376 19375 +f 19433 19375 19434 +f 19434 19375 19378 +f 19434 19378 19435 +f 19435 19378 19377 +f 19435 19377 19436 +f 19436 19377 19372 +f 19436 19372 19437 +f 19437 19372 19438 +f 19437 19438 19439 +f 19439 19438 19440 +f 19439 19440 19441 +f 19441 19440 19442 +f 19441 19442 19443 +f 19443 19442 19444 +f 19443 19444 19445 +f 19445 19444 19446 +f 19445 19446 19447 +f 19447 19446 19448 +f 19447 19448 19394 +f 19394 19448 19389 +f 19389 19448 19449 +f 19389 19449 19385 +f 19385 19449 19450 +f 19385 19450 19451 +f 19451 19450 19452 +f 19451 19452 19453 +f 19453 19452 19454 +f 19453 19454 19455 +f 19455 19454 19456 +f 19455 19456 19457 +f 19457 19456 19458 +f 19457 19458 19459 +f 19459 19458 19460 +f 19459 19460 19461 +f 19461 19460 19358 +f 19461 19358 19462 +f 19462 19358 19463 +f 19462 19463 19464 +f 19464 19463 19465 +f 19464 19465 19466 +f 19466 19465 19467 +f 19466 19467 19468 +f 19468 19467 19469 +f 19468 19469 19470 +f 19470 19469 19471 +f 19470 19471 19472 +f 19472 19471 19473 +f 19472 19473 19381 +f 19381 19473 19474 +f 19381 19474 19379 +f 19379 19474 19475 +f 19379 19475 19476 +f 19476 19475 19477 +f 19476 19477 19478 +f 19478 19477 19479 +f 19478 19479 19480 +f 19480 19479 19481 +f 19480 19481 19348 +f 19348 19481 19482 +f 19348 19482 19352 +f 19352 19482 19483 +f 19352 19483 19354 +f 19354 19483 19484 +f 19354 19484 19356 +f 19356 19484 19485 +f 19356 19485 19486 +f 19486 19485 19487 +f 19486 19487 19488 +f 19488 19487 19489 +f 19488 19489 19467 +f 19467 19489 19469 +f 19372 19369 19438 +f 19438 19369 19490 +f 19438 19490 19440 +f 19440 19490 19491 +f 19440 19491 19442 +f 19442 19491 19492 +f 19442 19492 19444 +f 19444 19492 19493 +f 19444 19493 19446 +f 19446 19493 19494 +f 19446 19494 19448 +f 19448 19494 19449 +f 19369 19365 19490 +f 19490 19365 19495 +f 19490 19495 19491 +f 19491 19495 19496 +f 19491 19496 19492 +f 19492 19496 19497 +f 19492 19497 19493 +f 19493 19497 19498 +f 19493 19498 19494 +f 19494 19498 19499 +f 19494 19499 19449 +f 19449 19499 19450 +f 19495 19365 19500 +f 19500 19365 19362 +f 19500 19362 19501 +f 19501 19362 19502 +f 19501 19502 19503 +f 19503 19502 19504 +f 19503 19504 19505 +f 19505 19504 19456 +f 19505 19456 19454 +f 19502 19362 19506 +f 19506 19362 19360 +f 19506 19360 19460 +f 19460 19360 19358 +f 19358 19356 19463 +f 19463 19356 19507 +f 19463 19507 19465 +f 19465 19507 19488 +f 19465 19488 19467 +f 19480 19348 19508 +f 19508 19348 19347 +f 19508 19347 19509 +f 19509 19347 19379 +f 19509 19379 19510 +f 19510 19379 19476 +f 19510 19476 19478 +f 19382 19511 19381 +f 19381 19511 19512 +f 19381 19512 19472 +f 19472 19512 19470 +f 19383 19513 19382 +f 19382 19513 19514 +f 19382 19514 19511 +f 19511 19514 19515 +f 19511 19515 19512 +f 19512 19515 19470 +f 19385 19451 19383 +f 19383 19451 19516 +f 19383 19516 19517 +f 19517 19516 19518 +f 19517 19518 19519 +f 19519 19518 19520 +f 19519 19520 19521 +f 19521 19520 19522 +f 19521 19522 19523 +f 19523 19522 19524 +f 19523 19524 19464 +f 19464 19524 19462 +f 19395 19525 19394 +f 19394 19525 19526 +f 19394 19526 19447 +f 19447 19526 19445 +f 19525 19395 19527 +f 19527 19395 19393 +f 19527 19393 19528 +f 19528 19393 19392 +f 19528 19392 19529 +f 19529 19392 19391 +f 19529 19391 19530 +f 19530 19391 19531 +f 19530 19531 19532 +f 19532 19531 19533 +f 19532 19533 19534 +f 19534 19533 19535 +f 19534 19535 19536 +f 19536 19535 19537 +f 19536 19537 19538 +f 19538 19537 19539 +f 19538 19539 19431 +f 19431 19539 19430 +f 19391 19390 19531 +f 19531 19390 19540 +f 19531 19540 19533 +f 19533 19540 19541 +f 19533 19541 19535 +f 19535 19541 19542 +f 19535 19542 19537 +f 19537 19542 19543 +f 19537 19543 19539 +f 19539 19543 19544 +f 19539 19544 19430 +f 19430 19544 19423 +f 19540 19390 19545 +f 19545 19390 19388 +f 19545 19388 19546 +f 19546 19388 19547 +f 19546 19547 19548 +f 19548 19547 19549 +f 19548 19549 19550 +f 19550 19549 19417 +f 19550 19417 19419 +f 19388 19387 19547 +f 19547 19387 19551 +f 19547 19551 19549 +f 19549 19551 19415 +f 19549 19415 19417 +f 19387 19386 19551 +f 19551 19386 19384 +f 19551 19384 19413 +f 19349 19552 19380 +f 19380 19552 19553 +f 19380 19553 19409 +f 19409 19553 19407 +f 19552 19349 19554 +f 19554 19349 19350 +f 19554 19350 19555 +f 19555 19350 19556 +f 19555 19556 19557 +f 19557 19556 19558 +f 19557 19558 19559 +f 19559 19558 19560 +f 19559 19560 19401 +f 19401 19560 19399 +f 19350 19351 19556 +f 19556 19351 19561 +f 19556 19561 19558 +f 19558 19561 19562 +f 19558 19562 19560 +f 19560 19562 19398 +f 19560 19398 19399 +f 19351 19353 19561 +f 19561 19353 19563 +f 19561 19563 19562 +f 19562 19563 19397 +f 19562 19397 19398 +f 19563 19353 19396 +f 19484 19483 19564 +f 19564 19483 19482 +f 19564 19482 19565 +f 19565 19482 19481 +f 19565 19481 19479 +f 19507 19356 19486 +f 19485 19484 19566 +f 19566 19484 19564 +f 19566 19564 19567 +f 19567 19564 19565 +f 19567 19565 19568 +f 19568 19565 19479 +f 19568 19479 19477 +f 19488 19507 19486 +f 19459 19461 19524 +f 19524 19461 19462 +f 19504 19502 19506 +f 19504 19506 19458 +f 19458 19506 19460 +f 19496 19495 19500 +f 19500 19501 19569 +f 19569 19501 19503 +f 19569 19503 19570 +f 19570 19503 19505 +f 19570 19505 19571 +f 19571 19505 19454 +f 19571 19454 19452 +f 19436 19437 19572 +f 19572 19437 19439 +f 19572 19439 19573 +f 19573 19439 19441 +f 19573 19441 19574 +f 19574 19441 19443 +f 19574 19443 19575 +f 19575 19443 19445 +f 19575 19445 19526 +f 19435 19436 19576 +f 19576 19436 19572 +f 19576 19572 19577 +f 19577 19572 19573 +f 19577 19573 19578 +f 19578 19573 19574 +f 19578 19574 19579 +f 19579 19574 19575 +f 19579 19575 19525 +f 19525 19575 19526 +f 19434 19435 19580 +f 19580 19435 19576 +f 19580 19576 19581 +f 19581 19576 19577 +f 19581 19577 19582 +f 19582 19577 19578 +f 19582 19578 19583 +f 19583 19578 19579 +f 19583 19579 19527 +f 19527 19579 19525 +f 19433 19434 19584 +f 19584 19434 19580 +f 19584 19580 19585 +f 19585 19580 19581 +f 19585 19581 19586 +f 19586 19581 19582 +f 19586 19582 19587 +f 19587 19582 19583 +f 19587 19583 19528 +f 19528 19583 19527 +f 19538 19431 19432 +f 19432 19433 19588 +f 19588 19433 19584 +f 19588 19584 19589 +f 19589 19584 19585 +f 19589 19585 19590 +f 19590 19585 19586 +f 19590 19586 19591 +f 19591 19586 19587 +f 19591 19587 19529 +f 19529 19587 19528 +f 19421 19423 19544 +f 19422 19420 19429 +f 19429 19420 19592 +f 19429 19592 19428 +f 19428 19592 19593 +f 19428 19593 19427 +f 19427 19593 19594 +f 19427 19594 19426 +f 19426 19594 19595 +f 19426 19595 19425 +f 19425 19595 19596 +f 19425 19596 19424 +f 19424 19596 19402 +f 19424 19402 19400 +f 19563 19396 19397 +f 19485 19566 19487 +f 19487 19566 19597 +f 19487 19597 19489 +f 19489 19597 19598 +f 19489 19598 19469 +f 19469 19598 19471 +f 19597 19566 19567 +f 19523 19464 19466 +f 19457 19459 19522 +f 19522 19459 19524 +f 19456 19504 19458 +f 19497 19496 19569 +f 19569 19496 19500 +f 19497 19569 19570 +f 19536 19538 19588 +f 19588 19538 19432 +f 19536 19588 19589 +f 19421 19544 19599 +f 19599 19544 19543 +f 19599 19543 19600 +f 19600 19543 19542 +f 19600 19542 19601 +f 19601 19542 19541 +f 19601 19541 19545 +f 19545 19541 19540 +f 19420 19418 19592 +f 19592 19418 19602 +f 19592 19602 19593 +f 19593 19602 19603 +f 19593 19603 19594 +f 19594 19603 19604 +f 19594 19604 19595 +f 19595 19604 19605 +f 19595 19605 19596 +f 19596 19605 19404 +f 19596 19404 19402 +f 19559 19401 19403 +f 19597 19567 19606 +f 19606 19567 19568 +f 19606 19568 19607 +f 19607 19568 19477 +f 19607 19477 19475 +f 19597 19606 19598 +f 19598 19606 19608 +f 19598 19608 19471 +f 19471 19608 19473 +f 19608 19606 19607 +f 19523 19466 19609 +f 19609 19466 19468 +f 19609 19468 19515 +f 19515 19468 19470 +f 19523 19609 19521 +f 19521 19609 19514 +f 19521 19514 19519 +f 19519 19514 19513 +f 19519 19513 19517 +f 19517 19513 19383 +f 19514 19609 19515 +f 19457 19522 19520 +f 19457 19520 19455 +f 19455 19520 19518 +f 19455 19518 19453 +f 19453 19518 19516 +f 19453 19516 19451 +f 19497 19570 19498 +f 19498 19570 19571 +f 19498 19571 19499 +f 19499 19571 19452 +f 19499 19452 19450 +f 19536 19589 19534 +f 19534 19589 19590 +f 19534 19590 19532 +f 19532 19590 19591 +f 19532 19591 19530 +f 19530 19591 19529 +f 19600 19550 19599 +f 19599 19550 19419 +f 19599 19419 19421 +f 19550 19600 19548 +f 19548 19600 19601 +f 19548 19601 19546 +f 19546 19601 19545 +f 19602 19418 19416 +f 19603 19602 19610 +f 19610 19602 19416 +f 19610 19416 19414 +f 19604 19603 19611 +f 19611 19603 19610 +f 19611 19610 19612 +f 19612 19610 19414 +f 19612 19414 19412 +f 19605 19604 19613 +f 19613 19604 19611 +f 19613 19611 19614 +f 19614 19611 19612 +f 19614 19612 19411 +f 19411 19612 19412 +f 19404 19605 19406 +f 19406 19605 19613 +f 19406 19613 19408 +f 19408 19613 19614 +f 19408 19614 19410 +f 19410 19614 19411 +f 19559 19403 19615 +f 19615 19403 19405 +f 19615 19405 19616 +f 19616 19405 19407 +f 19616 19407 19553 +f 19559 19615 19557 +f 19557 19615 19617 +f 19557 19617 19555 +f 19555 19617 19554 +f 19617 19615 19616 +f 19616 19553 19552 +f 19616 19552 19617 +f 19617 19552 19554 +f 19415 19551 19413 +f 19607 19475 19474 +f 19607 19474 19608 +f 19608 19474 19473 +f 19508 19509 19510 +f 19508 19510 19478 +f 19508 19478 19480 +f 19618 19619 19620 +f 19620 19619 19621 +f 19621 19619 19622 +f 19621 19622 19623 +f 19623 19622 19624 +f 19623 19624 19625 +f 19625 19624 19626 +f 19625 19626 19627 +f 19622 19628 19624 +f 19624 19629 19626 +f 19623 19630 19621 +f 19637 19636 19639 +f 19639 19640 19641 +f 19639 19641 19642 +f 19642 19641 19643 +f 19642 19643 19644 +f 19645 19643 19646 +f 19633 19653 19631 +f 19631 19653 19654 +f 19655 19654 19656 +f 19655 19656 19657 +f 19658 19656 19659 +f 19670 19669 19671 +f 19632 19631 19672 +f 19672 19631 19655 +f 19672 19655 19673 +f 19673 19655 19674 +f 19673 19674 19675 +f 19675 19674 19676 +f 19676 19674 19677 +f 19676 19677 19678 +f 19678 19677 19657 +f 19678 19657 19658 +f 19655 19657 19674 +f 19674 19657 19677 +f 19660 19679 19658 +f 19658 19679 19680 +f 19658 19680 19678 +f 19678 19680 19681 +f 19678 19681 19676 +f 19662 19682 19660 +f 19660 19682 19683 +f 19660 19683 19679 +f 19679 19683 19684 +f 19679 19684 19681 +f 19682 19662 19685 +f 19685 19662 19664 +f 19685 19664 19686 +f 19686 19664 19687 +f 19686 19687 19688 +f 19688 19687 19689 +f 19689 19687 19690 +f 19690 19687 19691 +f 19690 19691 19692 +f 19692 19691 19693 +f 19692 19693 19694 +f 19694 19693 19668 +f 19694 19668 19667 +f 19664 19665 19687 +f 19687 19665 19691 +f 19665 19666 19691 +f 19691 19666 19693 +f 19666 19668 19693 +f 19694 19667 19695 +f 19695 19667 19670 +f 19695 19670 19696 +f 19696 19670 19671 +f 19696 19671 19697 +f 19697 19671 19669 +f 19697 19669 19698 +f 19698 19669 19699 +f 19698 19699 19700 +f 19700 19699 19701 +f 19701 19699 19702 +f 19701 19702 19703 +f 19703 19702 19659 +f 19703 19659 19704 +f 19704 19659 19705 +f 19704 19705 19706 +f 19706 19705 19707 +f 19706 19707 19708 +f 19708 19707 19709 +f 19708 19709 19710 +f 19710 19709 19656 +f 19710 19656 19654 +f 19669 19663 19699 +f 19699 19663 19702 +f 19663 19661 19702 +f 19702 19661 19659 +f 19659 19656 19705 +f 19705 19656 19707 +f 19653 19711 19654 +f 19654 19711 19712 +f 19654 19712 19713 +f 19713 19712 19714 +f 19713 19714 19715 +f 19715 19714 19710 +f 19715 19710 19654 +f 19633 19716 19653 +f 19653 19716 19717 +f 19653 19717 19718 +f 19718 19717 19719 +f 19718 19719 19720 +f 19720 19719 19721 +f 19720 19721 19711 +f 19711 19721 19712 +f 19633 19638 19716 +f 19716 19638 19719 +f 19716 19719 19717 +f 19721 19714 19712 +f 19714 19708 19710 +f 19704 19706 19703 +f 19703 19706 19701 +f 19700 19722 19698 +f 19698 19722 19697 +f 19697 19722 19696 +f 19696 19722 19723 +f 19696 19723 19695 +f 19695 19723 19724 +f 19695 19724 19694 +f 19694 19724 19725 +f 19694 19725 19692 +f 19686 19688 19685 +f 19685 19688 19726 +f 19685 19726 19682 +f 19682 19726 19683 +f 19726 19684 19683 +f 19675 19672 19673 +f 19679 19681 19680 +f 19656 19709 19707 +f 19654 19713 19715 +f 19653 19718 19720 +f 19720 19711 19653 +f 19621 19630 19727 +f 19727 19630 19728 +f 19728 19630 19729 +f 19729 19630 19730 +f 19730 19630 19731 +f 19730 19731 19732 +f 19732 19731 19733 +f 19733 19731 19734 +f 19623 19735 19630 +f 19630 19735 19736 +f 19630 19736 19737 +f 19630 19737 19731 +f 19731 19737 19738 +f 19731 19738 19739 +f 19739 19740 19731 +f 19731 19740 19741 +f 19731 19741 19742 +f 19742 19743 19731 +f 19618 19649 19619 +f 19619 19649 19744 +f 19619 19744 19745 +f 19745 19744 19746 +f 19745 19746 19619 +f 19646 19747 19649 +f 19649 19747 19748 +f 19649 19748 19744 +f 19744 19748 19749 +f 19744 19749 19750 +f 19750 19749 19751 +f 19750 19751 19752 +f 19752 19751 19753 +f 19752 19753 19754 +f 19754 19753 19755 +f 19754 19755 19756 +f 19756 19755 19757 +f 19756 19757 19758 +f 19758 19757 19759 +f 19758 19759 19760 +f 19760 19759 19761 +f 19760 19761 19762 +f 19762 19761 19763 +f 19762 19763 19764 +f 19764 19763 19765 +f 19764 19765 19766 +f 19766 19765 19767 +f 19766 19767 19768 +f 19768 19767 19769 +f 19768 19769 19770 +f 19770 19769 19771 +f 19770 19771 19772 +f 19772 19771 19773 +f 19772 19773 19774 +f 19774 19773 19775 +f 19774 19775 19776 +f 19776 19775 19777 +f 19776 19777 19778 +f 19778 19777 19779 +f 19778 19779 19780 +f 19780 19779 19781 +f 19780 19781 19782 +f 19782 19781 19783 +f 19782 19783 19784 +f 19784 19783 19785 +f 19784 19785 19786 +f 19786 19785 19787 +f 19786 19787 19788 +f 19788 19787 19789 +f 19788 19789 19790 +f 19790 19789 19791 +f 19790 19791 19792 +f 19792 19791 19793 +f 19792 19793 19794 +f 19794 19793 19795 +f 19794 19795 19796 +f 19796 19795 19797 +f 19796 19797 19798 +f 19798 19797 19799 +f 19798 19799 19800 +f 19800 19799 19801 +f 19800 19801 19802 +f 19802 19801 19803 +f 19802 19803 19804 +f 19804 19803 19805 +f 19804 19805 19806 +f 19806 19805 19807 +f 19806 19807 19808 +f 19808 19807 19809 +f 19808 19809 19810 +f 19810 19809 19811 +f 19810 19811 19812 +f 19812 19811 19813 +f 19812 19813 19814 +f 19814 19813 19815 +f 19814 19815 19816 +f 19816 19815 19817 +f 19816 19817 19818 +f 19818 19817 19819 +f 19818 19819 19820 +f 19820 19819 19651 +f 19820 19651 19652 +f 19643 19821 19646 +f 19646 19821 19822 +f 19646 19822 19823 +f 19823 19822 19824 +f 19823 19824 19825 +f 19825 19824 19826 +f 19825 19826 19827 +f 19827 19826 19828 +f 19827 19828 19829 +f 19829 19828 19830 +f 19829 19830 19831 +f 19831 19830 19832 +f 19831 19832 19833 +f 19833 19832 19834 +f 19833 19834 19835 +f 19835 19834 19836 +f 19835 19836 19837 +f 19837 19836 19838 +f 19837 19838 19839 +f 19839 19838 19840 +f 19839 19840 19841 +f 19841 19840 19842 +f 19841 19842 19843 +f 19843 19842 19844 +f 19843 19844 19845 +f 19845 19844 19846 +f 19845 19846 19847 +f 19847 19846 19848 +f 19847 19848 19849 +f 19849 19848 19850 +f 19849 19850 19851 +f 19851 19850 19852 +f 19851 19852 19853 +f 19853 19852 19854 +f 19853 19854 19855 +f 19855 19854 19856 +f 19855 19856 19857 +f 19857 19856 19858 +f 19857 19858 19859 +f 19859 19858 19860 +f 19859 19860 19861 +f 19861 19860 19862 +f 19861 19862 19863 +f 19863 19862 19864 +f 19863 19864 19865 +f 19865 19864 19866 +f 19865 19866 19867 +f 19867 19866 19868 +f 19867 19868 19869 +f 19869 19868 19870 +f 19869 19870 19871 +f 19871 19870 19872 +f 19871 19872 19873 +f 19873 19872 19874 +f 19873 19874 19875 +f 19875 19874 19876 +f 19875 19876 19877 +f 19877 19876 19878 +f 19877 19878 19879 +f 19879 19878 19880 +f 19879 19880 19881 +f 19881 19880 19882 +f 19881 19882 19883 +f 19883 19882 19884 +f 19883 19884 19885 +f 19885 19884 19886 +f 19885 19886 19887 +f 19887 19886 19888 +f 19887 19888 19889 +f 19889 19888 19890 +f 19889 19890 19891 +f 19891 19890 19892 +f 19891 19892 19893 +f 19893 19892 19894 +f 19893 19894 19895 +f 19895 19894 19650 +f 19895 19650 19896 +f 19896 19650 19651 +f 19896 19651 19819 +f 19641 19897 19643 +f 19643 19897 19898 +f 19643 19898 19899 +f 19899 19898 19900 +f 19899 19900 19901 +f 19901 19900 19902 +f 19901 19902 19903 +f 19903 19902 19904 +f 19903 19904 19905 +f 19905 19904 19906 +f 19905 19906 19907 +f 19907 19906 19908 +f 19907 19908 19909 +f 19909 19908 19910 +f 19909 19910 19911 +f 19911 19910 19912 +f 19911 19912 19913 +f 19913 19912 19914 +f 19913 19914 19915 +f 19915 19914 19916 +f 19915 19916 19917 +f 19917 19916 19918 +f 19917 19918 19919 +f 19919 19918 19920 +f 19919 19920 19921 +f 19921 19920 19922 +f 19921 19922 19923 +f 19923 19922 19924 +f 19923 19924 19925 +f 19925 19924 19926 +f 19925 19926 19927 +f 19927 19926 19928 +f 19927 19928 19929 +f 19929 19928 19930 +f 19929 19930 19931 +f 19931 19930 19932 +f 19931 19932 19933 +f 19933 19932 19934 +f 19933 19934 19935 +f 19935 19934 19936 +f 19935 19936 19937 +f 19937 19936 19938 +f 19937 19938 19939 +f 19939 19938 19940 +f 19939 19940 19941 +f 19941 19940 19942 +f 19941 19942 19943 +f 19943 19942 19944 +f 19943 19944 19945 +f 19945 19944 19946 +f 19945 19946 19947 +f 19947 19946 19948 +f 19947 19948 19949 +f 19949 19948 19950 +f 19949 19950 19951 +f 19951 19950 19952 +f 19951 19952 19953 +f 19953 19952 19954 +f 19953 19954 19955 +f 19955 19954 19956 +f 19955 19956 19957 +f 19957 19956 19958 +f 19957 19958 19959 +f 19959 19958 19960 +f 19959 19960 19961 +f 19961 19960 19962 +f 19961 19962 19963 +f 19963 19962 19964 +f 19963 19964 19965 +f 19965 19964 19966 +f 19965 19966 19967 +f 19967 19966 19968 +f 19967 19968 19969 +f 19969 19968 19645 +f 19969 19645 19970 +f 19970 19645 19647 +f 19970 19647 19971 +f 19971 19647 19972 +f 19971 19972 19973 +f 19973 19972 19974 +f 19973 19974 19975 +f 19975 19974 19890 +f 19975 19890 19888 +f 19897 19641 19976 +f 19976 19641 19640 +f 19976 19640 19977 +f 19977 19640 19978 +f 19977 19978 19979 +f 19979 19978 19980 +f 19979 19980 19981 +f 19981 19980 19982 +f 19981 19982 19983 +f 19983 19982 19984 +f 19983 19984 19985 +f 19985 19984 19986 +f 19985 19986 19987 +f 19987 19986 19988 +f 19987 19988 19989 +f 19989 19988 19990 +f 19989 19990 19991 +f 19991 19990 19992 +f 19991 19992 19993 +f 19993 19992 19994 +f 19993 19994 19995 +f 19995 19994 19996 +f 19995 19996 19997 +f 19997 19996 19684 +f 19997 19684 19726 +f 19640 19636 19978 +f 19978 19636 19998 +f 19978 19998 19980 +f 19980 19998 19999 +f 19980 19999 19982 +f 19982 19999 20000 +f 19982 20000 19984 +f 19984 20000 20001 +f 19984 20001 19986 +f 19986 20001 20002 +f 19986 20002 19988 +f 19988 20002 20003 +f 19988 20003 19990 +f 19990 20003 20004 +f 19990 20004 19992 +f 19992 20004 20005 +f 19992 20005 19994 +f 19994 20005 20006 +f 19994 20006 19996 +f 19996 20006 19681 +f 19996 19681 19684 +f 19635 20007 19636 +f 19636 20007 20008 +f 19636 20008 19998 +f 19998 20008 19999 +f 19634 20009 19635 +f 19635 20009 20010 +f 19635 20010 20011 +f 20011 20010 20012 +f 20011 20012 20013 +f 20013 20012 20014 +f 20013 20014 20015 +f 20015 20014 20016 +f 20015 20016 20017 +f 20017 20016 20018 +f 20017 20018 20002 +f 20002 20018 20003 +f 19632 20019 19634 +f 19634 20019 20020 +f 19634 20020 20009 +f 20009 20020 20021 +f 20009 20021 20022 +f 20022 20021 20023 +f 20022 20023 20024 +f 20024 20023 20025 +f 20024 20025 20026 +f 20026 20025 20027 +f 20026 20027 20028 +f 20028 20027 20029 +f 20028 20029 20030 +f 20030 20029 20031 +f 20030 20031 20004 +f 20004 20031 20005 +f 19632 19672 20019 +f 20019 19672 20020 +f 19675 20032 19672 +f 19672 20032 20021 +f 19672 20021 20020 +f 19676 20033 19675 +f 19675 20033 20034 +f 19675 20034 20035 +f 20035 20034 20023 +f 20035 20023 20021 +f 19681 20036 19676 +f 19676 20036 20037 +f 19676 20037 20033 +f 20033 20037 20027 +f 20033 20027 20025 +f 19997 19726 20038 +f 20038 19726 19688 +f 20038 19688 20039 +f 20039 19688 20040 +f 20039 20040 20041 +f 20041 20040 20042 +f 20041 20042 20043 +f 20043 20042 20044 +f 20043 20044 20045 +f 20045 20044 20046 +f 20045 20046 20047 +f 20047 20046 20048 +f 20047 20048 20049 +f 20049 20048 20050 +f 20049 20050 20051 +f 20051 20050 20052 +f 20051 20052 20053 +f 20053 20052 20054 +f 20053 20054 20055 +f 20055 20054 20056 +f 20055 20056 20057 +f 20057 20056 20058 +f 20057 20058 20059 +f 20059 20058 20060 +f 20059 20060 20061 +f 20061 20060 20062 +f 20061 20062 20063 +f 20063 20062 20064 +f 20063 20064 19922 +f 19922 20064 19924 +f 19688 19689 20040 +f 20040 19689 19690 +f 20040 19690 20065 +f 20065 19690 19692 +f 20065 19692 20066 +f 20066 19692 19725 +f 20066 19725 20067 +f 20067 19725 20068 +f 20067 20068 20069 +f 20069 20068 20070 +f 20069 20070 20071 +f 20071 20070 20072 +f 20071 20072 20073 +f 20073 20072 20074 +f 20073 20074 20075 +f 20075 20074 20076 +f 20075 20076 20077 +f 20077 20076 20078 +f 20077 20078 20079 +f 20079 20078 20080 +f 20079 20080 20081 +f 20081 20080 20082 +f 20081 20082 20083 +f 20083 20082 20084 +f 20083 20084 20085 +f 20085 20084 20086 +f 20085 20086 20087 +f 20087 20086 20088 +f 20087 20088 20089 +f 20089 20088 20090 +f 20089 20090 20091 +f 20091 20090 20092 +f 20091 20092 19930 +f 19930 20092 19932 +f 19725 19724 20068 +f 20068 19724 20093 +f 20068 20093 20070 +f 20070 20093 20094 +f 20070 20094 20072 +f 20072 20094 20095 +f 20072 20095 20074 +f 20074 20095 20096 +f 20074 20096 20076 +f 20076 20096 20097 +f 20076 20097 20078 +f 20078 20097 20098 +f 20078 20098 20080 +f 20080 20098 20099 +f 20080 20099 20082 +f 20082 20099 20100 +f 20082 20100 20084 +f 20084 20100 20101 +f 20084 20101 20086 +f 20086 20101 20102 +f 20086 20102 20088 +f 20088 20102 20103 +f 20088 20103 20090 +f 20090 20103 20104 +f 20090 20104 20092 +f 20092 20104 20105 +f 20092 20105 19932 +f 19932 20105 19934 +f 19724 19723 20093 +f 20093 19723 19722 +f 20093 19722 20106 +f 20106 19722 20107 +f 20106 20107 20108 +f 20108 20107 20109 +f 20108 20109 20110 +f 20110 20109 20111 +f 20110 20111 20112 +f 20112 20111 20113 +f 20112 20113 20114 +f 20114 20113 20115 +f 20114 20115 20116 +f 20116 20115 20117 +f 20116 20117 20118 +f 20118 20117 20119 +f 20118 20119 20120 +f 20120 20119 20121 +f 20120 20121 20122 +f 20122 20121 20123 +f 20122 20123 20124 +f 20124 20123 20125 +f 20124 20125 20126 +f 20126 20125 20127 +f 20126 20127 20128 +f 20128 20127 20129 +f 20128 20129 20130 +f 20130 20129 20131 +f 20130 20131 19936 +f 19936 20131 19938 +f 19722 19700 20107 +f 20107 19700 20132 +f 20107 20132 20109 +f 20109 20132 20133 +f 20109 20133 20111 +f 20111 20133 20134 +f 20111 20134 20113 +f 20113 20134 20135 +f 20113 20135 20115 +f 20115 20135 20136 +f 20115 20136 20117 +f 20117 20136 20137 +f 20117 20137 20119 +f 20119 20137 20138 +f 20119 20138 20121 +f 20121 20138 20139 +f 20121 20139 20123 +f 20123 20139 20140 +f 20123 20140 20125 +f 20125 20140 20141 +f 20125 20141 20127 +f 20127 20141 20142 +f 20127 20142 20129 +f 20129 20142 20143 +f 20129 20143 20131 +f 20131 20143 20144 +f 20131 20144 19938 +f 19938 20144 19940 +f 20132 19700 20145 +f 20145 19700 19701 +f 20145 19701 20146 +f 20146 19701 19706 +f 20146 19706 20147 +f 20147 19706 20148 +f 20147 20148 20149 +f 20149 20148 20150 +f 20149 20150 20151 +f 20151 20150 20152 +f 20151 20152 20153 +f 20153 20152 20154 +f 20153 20154 20155 +f 20155 20154 20156 +f 20155 20156 20157 +f 20157 20156 20158 +f 20157 20158 20159 +f 20159 20158 20160 +f 20159 20160 20161 +f 20161 20160 20162 +f 20161 20162 20163 +f 20163 20162 20164 +f 20163 20164 20165 +f 20165 20164 20166 +f 20165 20166 20167 +f 20167 20166 20168 +f 20167 20168 20169 +f 20169 20168 20170 +f 20169 20170 20171 +f 20171 20170 20172 +f 20171 20172 19946 +f 19946 20172 19948 +f 20148 19706 20173 +f 20173 19706 19708 +f 20173 19708 20174 +f 20174 19708 20175 +f 20174 20175 20176 +f 20176 20175 20177 +f 20176 20177 20178 +f 20178 20177 20179 +f 20178 20179 20180 +f 20180 20179 20181 +f 20180 20181 20182 +f 20182 20181 20183 +f 20182 20183 20184 +f 20184 20183 20185 +f 20184 20185 20186 +f 20186 20185 20187 +f 20186 20187 20188 +f 20188 20187 20189 +f 20188 20189 20190 +f 20190 20189 20191 +f 20190 20191 20192 +f 20192 20191 20193 +f 20192 20193 20194 +f 20194 20193 20195 +f 20194 20195 20196 +f 20196 20195 20197 +f 20196 20197 20198 +f 20198 20197 20199 +f 20198 20199 19952 +f 19952 20199 19954 +f 19708 19714 20175 +f 20175 19714 20200 +f 20175 20200 20177 +f 20177 20200 20201 +f 20177 20201 20179 +f 20179 20201 20202 +f 20179 20202 20181 +f 20181 20202 20203 +f 20181 20203 20183 +f 20183 20203 20204 +f 20183 20204 20185 +f 20185 20204 20205 +f 20185 20205 20187 +f 20187 20205 20206 +f 20187 20206 20189 +f 20189 20206 20207 +f 20189 20207 20191 +f 20191 20207 20208 +f 20191 20208 20193 +f 20193 20208 20209 +f 20193 20209 20195 +f 20195 20209 20210 +f 20195 20210 20197 +f 20197 20210 20211 +f 20197 20211 20199 +f 20199 20211 20212 +f 20199 20212 19954 +f 19954 20212 19956 +f 20200 19714 20213 +f 20213 19714 19721 +f 20213 19721 20214 +f 20214 19721 20215 +f 20214 20215 20216 +f 20216 20215 20217 +f 20216 20217 20218 +f 20218 20217 20219 +f 20218 20219 20220 +f 20220 20219 20221 +f 20220 20221 20222 +f 20222 20221 20223 +f 20222 20223 20224 +f 20224 20223 20225 +f 20224 20225 20226 +f 20226 20225 20227 +f 20226 20227 20228 +f 20228 20227 20229 +f 20228 20229 20230 +f 20230 20229 20231 +f 20230 20231 20232 +f 20232 20231 20233 +f 20232 20233 20234 +f 20234 20233 20235 +f 20234 20235 20236 +f 20236 20235 20237 +f 20236 20237 20238 +f 20238 20237 20239 +f 20238 20239 19960 +f 19960 20239 19962 +f 19721 19719 20215 +f 20215 19719 20240 +f 20215 20240 20217 +f 20217 20240 20241 +f 20217 20241 20219 +f 20219 20241 20242 +f 20219 20242 20221 +f 20221 20242 20243 +f 20221 20243 20223 +f 20223 20243 20244 +f 20223 20244 20225 +f 20225 20244 20245 +f 20225 20245 20227 +f 20227 20245 20246 +f 20227 20246 20229 +f 20229 20246 20247 +f 20229 20247 20231 +f 20231 20247 20248 +f 20231 20248 20233 +f 20233 20248 20249 +f 20233 20249 20235 +f 20235 20249 20250 +f 20235 20250 20237 +f 20237 20250 20251 +f 20237 20251 20239 +f 20239 20251 20252 +f 20239 20252 19962 +f 19962 20252 19964 +f 20240 19719 20253 +f 20253 19719 19638 +f 20253 19638 20254 +f 20254 19638 20255 +f 20254 20255 20256 +f 20256 20255 20257 +f 20256 20257 20242 +f 20242 20257 20243 +f 19638 19637 20255 +f 20255 19637 20258 +f 20255 20258 20257 +f 20257 20258 20259 +f 20257 20259 20243 +f 20243 20259 20244 +f 19639 20260 19637 +f 19637 20260 20261 +f 19637 20261 20262 +f 20262 20261 20263 +f 20262 20263 20259 +f 20259 20263 20244 +f 19642 20264 19639 +f 19639 20264 20265 +f 19639 20265 20266 +f 20266 20265 20267 +f 20266 20267 20268 +f 20268 20267 20247 +f 20268 20247 20246 +f 19644 20269 19642 +f 19642 20269 20270 +f 19642 20270 20271 +f 20271 20270 20272 +f 20271 20272 20273 +f 20273 20272 20250 +f 20273 20250 20249 +f 20269 19644 20274 +f 20274 19644 19645 +f 20274 19645 19968 +f 19647 19648 19972 +f 19972 19648 20275 +f 19972 20275 19974 +f 19974 20275 19892 +f 19974 19892 19890 +f 20275 19648 19894 +f 19894 19648 19650 +f 19820 19652 20276 +f 20276 19652 19620 +f 20276 19620 19621 +f 20276 19621 20277 +f 20277 19621 19727 +f 20277 19727 20278 +f 20278 19727 20279 +f 20278 20279 19816 +f 19816 20279 19814 +f 20279 19727 20280 +f 20280 19727 19728 +f 20280 19728 20281 +f 20281 19728 20282 +f 20281 20282 19810 +f 19810 20282 19808 +f 19728 19729 20282 +f 20282 19729 20283 +f 20282 20283 19808 +f 19808 20283 19806 +f 19730 20284 19729 +f 19729 20284 20285 +f 19729 20285 20283 +f 20283 20285 19806 +f 20284 19730 20286 +f 20286 19730 19732 +f 20286 19732 20287 +f 20287 19732 20288 +f 20287 20288 19798 +f 19798 20288 19796 +f 19732 19733 20288 +f 20288 19733 20289 +f 20288 20289 19796 +f 19796 20289 19794 +f 20289 19733 20290 +f 20290 19733 19734 +f 20290 19734 20291 +f 20291 19734 20292 +f 20291 20292 19790 +f 19790 20292 19788 +f 19734 20293 20292 +f 20292 20293 20294 +f 20292 20294 19788 +f 19788 20294 19786 +f 20294 20293 20295 +f 20295 20293 20296 +f 20295 20296 20297 +f 20297 20296 20298 +f 20297 20298 20299 +f 20299 20298 20300 +f 20299 20300 19780 +f 19780 20300 19778 +f 19743 20301 20298 +f 20298 20301 20302 +f 20298 20302 20303 +f 19742 20304 19743 +f 19743 20304 20305 +f 19743 20305 20301 +f 20304 19742 20306 +f 20306 19742 19741 +f 20306 19741 19740 +f 20306 19740 20307 +f 20307 19740 19739 +f 20307 19739 19738 +f 20307 19738 19627 +f 19627 19738 19737 +f 19627 19737 19736 +f 19736 19735 19627 +f 19627 19735 19625 +f 19625 19735 19623 +f 20308 20309 20303 +f 20303 20309 20300 +f 20303 20300 20298 +f 20309 20308 20310 +f 20310 20308 20311 +f 20310 20311 20312 +f 20312 20311 20313 +f 20312 20313 20314 +f 20314 20313 20315 +f 20314 20315 19770 +f 19770 20315 19768 +f 20313 20316 20315 +f 20315 20316 20317 +f 20315 20317 20318 +f 20318 20317 19629 +f 20318 19629 20319 +f 20319 19629 20320 +f 20319 20320 19764 +f 19764 20320 19762 +f 19624 20321 19629 +f 19629 20321 20322 +f 19629 20322 20320 +f 20320 20322 19762 +f 20323 20324 20321 +f 20321 20324 20325 +f 20321 20325 20322 +f 20322 20325 19760 +f 20322 19760 19762 +f 20326 20327 20323 +f 20323 20327 20328 +f 20323 20328 20329 +f 20329 20328 19754 +f 20329 19754 19756 +f 20326 19746 20327 +f 20327 19746 19750 +f 20327 19750 19752 +f 20258 19637 20262 +f 19639 20266 20260 +f 20260 20266 20268 +f 20260 20268 20330 +f 20330 20268 20246 +f 20330 20246 20245 +f 19642 20271 20264 +f 20264 20271 20273 +f 20264 20273 20331 +f 20331 20273 20249 +f 20331 20249 20248 +f 19643 20332 20333 +f 20333 20332 20334 +f 20333 20334 20335 +f 20335 20334 20336 +f 20335 20336 20337 +f 20337 20336 20338 +f 20337 20338 20339 +f 20339 20338 20340 +f 20339 20340 20341 +f 20341 20340 20342 +f 20341 20342 20343 +f 20343 20342 20344 +f 20343 20344 20345 +f 20345 20344 20346 +f 20345 20346 20347 +f 20347 20346 20348 +f 20347 20348 20349 +f 20349 20348 20350 +f 20349 20350 20351 +f 20351 20350 20352 +f 20351 20352 20353 +f 20353 20352 20354 +f 20353 20354 20355 +f 20355 20354 20356 +f 20355 20356 20357 +f 20357 20356 20358 +f 20357 20358 20359 +f 20359 20358 20360 +f 20359 20360 20361 +f 20361 20360 20362 +f 20361 20362 20363 +f 20363 20362 20364 +f 20363 20364 20365 +f 20365 20364 20366 +f 20365 20366 20367 +f 20367 20366 20368 +f 20367 20368 20369 +f 20369 20368 20370 +f 20369 20370 20371 +f 20371 20370 20372 +f 20371 20372 20373 +f 20373 20372 20374 +f 20373 20374 20375 +f 20375 20374 20376 +f 20375 20376 20377 +f 20377 20376 20378 +f 20377 20378 20379 +f 20379 20378 20380 +f 20379 20380 20381 +f 20381 20380 20382 +f 20381 20382 20383 +f 20383 20382 20384 +f 20383 20384 20385 +f 20385 20384 20386 +f 20385 20386 20387 +f 20387 20386 20388 +f 20387 20388 20389 +f 20389 20388 20390 +f 20389 20390 20391 +f 20391 20390 20392 +f 20391 20392 20393 +f 20393 20392 20394 +f 20393 20394 20395 +f 20395 20394 20396 +f 20395 20396 20397 +f 20397 20396 20398 +f 20397 20398 20399 +f 20399 20398 20400 +f 20399 20400 20401 +f 20401 20400 20402 +f 20401 20402 19973 +f 19973 20402 19971 +f 19643 20333 19821 +f 19821 20333 20335 +f 19821 20335 20403 +f 20403 20335 20337 +f 20403 20337 20404 +f 20404 20337 20339 +f 20404 20339 20405 +f 20405 20339 20341 +f 20405 20341 20406 +f 20406 20341 20343 +f 20406 20343 20407 +f 20407 20343 20345 +f 20407 20345 20408 +f 20408 20345 20347 +f 20408 20347 20409 +f 20409 20347 20349 +f 20409 20349 20410 +f 20410 20349 20351 +f 20410 20351 20411 +f 20411 20351 20353 +f 20411 20353 20412 +f 20412 20353 20355 +f 20412 20355 20413 +f 20413 20355 20357 +f 20413 20357 20414 +f 20414 20357 20359 +f 20414 20359 20415 +f 20415 20359 20361 +f 20415 20361 20416 +f 20416 20361 20363 +f 20416 20363 20417 +f 20417 20363 20365 +f 20417 20365 20418 +f 20418 20365 20367 +f 20418 20367 20419 +f 20419 20367 20369 +f 20419 20369 20420 +f 20420 20369 20371 +f 20420 20371 20421 +f 20421 20371 20373 +f 20421 20373 20422 +f 20422 20373 20375 +f 20422 20375 20423 +f 20423 20375 20377 +f 20423 20377 20424 +f 20424 20377 20379 +f 20424 20379 20425 +f 20425 20379 20381 +f 20425 20381 20426 +f 20426 20381 20383 +f 20426 20383 20427 +f 20427 20383 20385 +f 20427 20385 20428 +f 20428 20385 20387 +f 20428 20387 20429 +f 20429 20387 20389 +f 20429 20389 20430 +f 20430 20389 20391 +f 20430 20391 20431 +f 20431 20391 20393 +f 20431 20393 20432 +f 20432 20393 20395 +f 20432 20395 20433 +f 20433 20395 20397 +f 20433 20397 20434 +f 20434 20397 20399 +f 20434 20399 20435 +f 20435 20399 20401 +f 20435 20401 19975 +f 19975 20401 19973 +f 19747 19646 19823 +f 19744 19750 19746 +f 20324 20323 20329 +f 19754 20328 19752 +f 19752 20328 20327 +f 20329 19756 20324 +f 20324 19756 19758 +f 20324 19758 20325 +f 20325 19758 19760 +f 19768 20315 20318 +f 19764 19766 20319 +f 20319 19766 20318 +f 19766 19768 20318 +f 19770 19772 20314 +f 20314 19772 20312 +f 19772 19774 20312 +f 20312 19774 20310 +f 19778 20300 20309 +f 19774 19776 20310 +f 20310 19776 20309 +f 19776 19778 20309 +f 19780 19782 20299 +f 20299 19782 20297 +f 19786 20294 20295 +f 19782 19784 20297 +f 20297 19784 20295 +f 19784 19786 20295 +f 19794 20289 20290 +f 19790 19792 20291 +f 20291 19792 20290 +f 19792 19794 20290 +f 19798 19800 20287 +f 20287 19800 20286 +f 19800 19802 20286 +f 20286 19802 20284 +f 19802 19804 20284 +f 20284 19804 20285 +f 19804 19806 20285 +f 19814 20279 20280 +f 19810 19812 20281 +f 20281 19812 20280 +f 19812 19814 20280 +f 19820 20276 20277 +f 19816 19818 20278 +f 20278 19818 20277 +f 19818 19820 20277 +f 19819 19817 19896 +f 19896 19817 20436 +f 19896 20436 19895 +f 19895 20436 19893 +f 19817 19815 20436 +f 20436 19815 20437 +f 20436 20437 19893 +f 19893 20437 19891 +f 19815 19813 20437 +f 20437 19813 20438 +f 20437 20438 19891 +f 19891 20438 19889 +f 19813 19811 20438 +f 20438 19811 20439 +f 20438 20439 19889 +f 19889 20439 19887 +f 19811 19809 20439 +f 20439 19809 20440 +f 20439 20440 19887 +f 19887 20440 19885 +f 19809 19807 20440 +f 20440 19807 20441 +f 20440 20441 19885 +f 19885 20441 19883 +f 19807 19805 20441 +f 20441 19805 20442 +f 20441 20442 19883 +f 19883 20442 19881 +f 19805 19803 20442 +f 20442 19803 20443 +f 20442 20443 19881 +f 19881 20443 19879 +f 19803 19801 20443 +f 20443 19801 20444 +f 20443 20444 19879 +f 19879 20444 19877 +f 19801 19799 20444 +f 20444 19799 20445 +f 20444 20445 19877 +f 19877 20445 19875 +f 19799 19797 20445 +f 20445 19797 20446 +f 20445 20446 19875 +f 19875 20446 19873 +f 19797 19795 20446 +f 20446 19795 20447 +f 20446 20447 19873 +f 19873 20447 19871 +f 19795 19793 20447 +f 20447 19793 20448 +f 20447 20448 19871 +f 19871 20448 19869 +f 19793 19791 20448 +f 20448 19791 20449 +f 20448 20449 19869 +f 19869 20449 19867 +f 19791 19789 20449 +f 20449 19789 20450 +f 20449 20450 19867 +f 19867 20450 19865 +f 19789 19787 20450 +f 20450 19787 20451 +f 20450 20451 19865 +f 19865 20451 19863 +f 19787 19785 20451 +f 20451 19785 20452 +f 20451 20452 19863 +f 19863 20452 19861 +f 19785 19783 20452 +f 20452 19783 20453 +f 20452 20453 19861 +f 19861 20453 19859 +f 19783 19781 20453 +f 20453 19781 20454 +f 20453 20454 19859 +f 19859 20454 19857 +f 19781 19779 20454 +f 20454 19779 20455 +f 20454 20455 19857 +f 19857 20455 19855 +f 19779 19777 20455 +f 20455 19777 20456 +f 20455 20456 19855 +f 19855 20456 19853 +f 19777 19775 20456 +f 20456 19775 20457 +f 20456 20457 19853 +f 19853 20457 19851 +f 19775 19773 20457 +f 20457 19773 20458 +f 20457 20458 19851 +f 19851 20458 19849 +f 19773 19771 20458 +f 20458 19771 20459 +f 20458 20459 19849 +f 19849 20459 19847 +f 19771 19769 20459 +f 20459 19769 20460 +f 20459 20460 19847 +f 19847 20460 19845 +f 19769 19767 20460 +f 20460 19767 20461 +f 20460 20461 19845 +f 19845 20461 19843 +f 19767 19765 20461 +f 20461 19765 20462 +f 20461 20462 19843 +f 19843 20462 19841 +f 19765 19763 20462 +f 20462 19763 20463 +f 20462 20463 19841 +f 19841 20463 19839 +f 19763 19761 20463 +f 20463 19761 20464 +f 20463 20464 19839 +f 19839 20464 19837 +f 19761 19759 20464 +f 20464 19759 20465 +f 20464 20465 19837 +f 19837 20465 19835 +f 19759 19757 20465 +f 20465 19757 20466 +f 20465 20466 19835 +f 19835 20466 19833 +f 19757 19755 20466 +f 20466 19755 20467 +f 20466 20467 19833 +f 19833 20467 19831 +f 19755 19753 20467 +f 20467 19753 20468 +f 20467 20468 19831 +f 19831 20468 19829 +f 19753 19751 20468 +f 20468 19751 20469 +f 20468 20469 19829 +f 19829 20469 19827 +f 19751 19749 20469 +f 20469 19749 20470 +f 20469 20470 19827 +f 19827 20470 19825 +f 19749 19748 20470 +f 20470 19748 19747 +f 20470 19747 19825 +f 19825 19747 19823 +f 19894 19892 20275 +f 20435 19975 19888 +f 20434 20435 19886 +f 19886 20435 19888 +f 20433 20434 19884 +f 19884 20434 19886 +f 20432 20433 19882 +f 19882 20433 19884 +f 20431 20432 19880 +f 19880 20432 19882 +f 20430 20431 19878 +f 19878 20431 19880 +f 20429 20430 19876 +f 19876 20430 19878 +f 20428 20429 19874 +f 19874 20429 19876 +f 20427 20428 19872 +f 19872 20428 19874 +f 20426 20427 19870 +f 19870 20427 19872 +f 20425 20426 19868 +f 19868 20426 19870 +f 20424 20425 19866 +f 19866 20425 19868 +f 20423 20424 19864 +f 19864 20424 19866 +f 20422 20423 19862 +f 19862 20423 19864 +f 20421 20422 19860 +f 19860 20422 19862 +f 20420 20421 19858 +f 19858 20421 19860 +f 20419 20420 19856 +f 19856 20420 19858 +f 20418 20419 19854 +f 19854 20419 19856 +f 20417 20418 19852 +f 19852 20418 19854 +f 20416 20417 19850 +f 19850 20417 19852 +f 20415 20416 19848 +f 19848 20416 19850 +f 20414 20415 19846 +f 19846 20415 19848 +f 20413 20414 19844 +f 19844 20414 19846 +f 20412 20413 19842 +f 19842 20413 19844 +f 20411 20412 19840 +f 19840 20412 19842 +f 20410 20411 19838 +f 19838 20411 19840 +f 20409 20410 19836 +f 19836 20410 19838 +f 20408 20409 19834 +f 19834 20409 19836 +f 20407 20408 19832 +f 19832 20408 19834 +f 20406 20407 19830 +f 19830 20407 19832 +f 20405 20406 19828 +f 19828 20406 19830 +f 20404 20405 19826 +f 19826 20405 19828 +f 20403 20404 19824 +f 19824 20404 19826 +f 19821 20403 19822 +f 19822 20403 19824 +f 19968 19966 20274 +f 20274 19966 20471 +f 20274 20471 20269 +f 20269 20471 20472 +f 20269 20472 20270 +f 20270 20472 20272 +f 19966 19964 20471 +f 20471 19964 20252 +f 20471 20252 20472 +f 20472 20252 20251 +f 20472 20251 20272 +f 20272 20251 20250 +f 19960 19958 20238 +f 20238 19958 20473 +f 20238 20473 20236 +f 20236 20473 20474 +f 20236 20474 20234 +f 20234 20474 20475 +f 20234 20475 20232 +f 20232 20475 20476 +f 20232 20476 20230 +f 20230 20476 20477 +f 20230 20477 20228 +f 20228 20477 20478 +f 20228 20478 20226 +f 20226 20478 20479 +f 20226 20479 20224 +f 20224 20479 20480 +f 20224 20480 20222 +f 20222 20480 20481 +f 20222 20481 20220 +f 20220 20481 20482 +f 20220 20482 20218 +f 20218 20482 20483 +f 20218 20483 20216 +f 20216 20483 20484 +f 20216 20484 20214 +f 20214 20484 20213 +f 19958 19956 20473 +f 20473 19956 20212 +f 20473 20212 20474 +f 20474 20212 20211 +f 20474 20211 20475 +f 20475 20211 20210 +f 20475 20210 20476 +f 20476 20210 20209 +f 20476 20209 20477 +f 20477 20209 20208 +f 20477 20208 20478 +f 20478 20208 20207 +f 20478 20207 20479 +f 20479 20207 20206 +f 20479 20206 20480 +f 20480 20206 20205 +f 20480 20205 20481 +f 20481 20205 20204 +f 20481 20204 20482 +f 20482 20204 20203 +f 20482 20203 20483 +f 20483 20203 20202 +f 20483 20202 20484 +f 20484 20202 20201 +f 20484 20201 20213 +f 20213 20201 20200 +f 19952 19950 20198 +f 20198 19950 20485 +f 20198 20485 20196 +f 20196 20485 20486 +f 20196 20486 20194 +f 20194 20486 20487 +f 20194 20487 20192 +f 20192 20487 20488 +f 20192 20488 20190 +f 20190 20488 20489 +f 20190 20489 20188 +f 20188 20489 20490 +f 20188 20490 20186 +f 20186 20490 20491 +f 20186 20491 20184 +f 20184 20491 20492 +f 20184 20492 20182 +f 20182 20492 20493 +f 20182 20493 20180 +f 20180 20493 20494 +f 20180 20494 20178 +f 20178 20494 20495 +f 20178 20495 20176 +f 20176 20495 20496 +f 20176 20496 20174 +f 20174 20496 20173 +f 19950 19948 20485 +f 20485 19948 20172 +f 20485 20172 20486 +f 20486 20172 20170 +f 20486 20170 20487 +f 20487 20170 20168 +f 20487 20168 20488 +f 20488 20168 20166 +f 20488 20166 20489 +f 20489 20166 20164 +f 20489 20164 20490 +f 20490 20164 20162 +f 20490 20162 20491 +f 20491 20162 20160 +f 20491 20160 20492 +f 20492 20160 20158 +f 20492 20158 20493 +f 20493 20158 20156 +f 20493 20156 20494 +f 20494 20156 20154 +f 20494 20154 20495 +f 20495 20154 20152 +f 20495 20152 20496 +f 20496 20152 20150 +f 20496 20150 20173 +f 20173 20150 20148 +f 19946 19944 20171 +f 20171 19944 20497 +f 20171 20497 20169 +f 20169 20497 20498 +f 20169 20498 20167 +f 20167 20498 20499 +f 20167 20499 20165 +f 20165 20499 20500 +f 20165 20500 20163 +f 20163 20500 20501 +f 20163 20501 20161 +f 20161 20501 20502 +f 20161 20502 20159 +f 20159 20502 20503 +f 20159 20503 20157 +f 20157 20503 20504 +f 20157 20504 20155 +f 20155 20504 20505 +f 20155 20505 20153 +f 20153 20505 20506 +f 20153 20506 20151 +f 20151 20506 20507 +f 20151 20507 20149 +f 20149 20507 20508 +f 20149 20508 20147 +f 20147 20508 20146 +f 19944 19942 20497 +f 20497 19942 20509 +f 20497 20509 20498 +f 20498 20509 20510 +f 20498 20510 20499 +f 20499 20510 20511 +f 20499 20511 20500 +f 20500 20511 20512 +f 20500 20512 20501 +f 20501 20512 20513 +f 20501 20513 20502 +f 20502 20513 20514 +f 20502 20514 20503 +f 20503 20514 20515 +f 20503 20515 20504 +f 20504 20515 20516 +f 20504 20516 20505 +f 20505 20516 20517 +f 20505 20517 20506 +f 20506 20517 20518 +f 20506 20518 20507 +f 20507 20518 20519 +f 20507 20519 20508 +f 20508 20519 20520 +f 20508 20520 20146 +f 20146 20520 20145 +f 19942 19940 20509 +f 20509 19940 20144 +f 20509 20144 20510 +f 20510 20144 20143 +f 20510 20143 20511 +f 20511 20143 20142 +f 20511 20142 20512 +f 20512 20142 20141 +f 20512 20141 20513 +f 20513 20141 20140 +f 20513 20140 20514 +f 20514 20140 20139 +f 20514 20139 20515 +f 20515 20139 20138 +f 20515 20138 20516 +f 20516 20138 20137 +f 20516 20137 20517 +f 20517 20137 20136 +f 20517 20136 20518 +f 20518 20136 20135 +f 20518 20135 20519 +f 20519 20135 20134 +f 20519 20134 20520 +f 20520 20134 20133 +f 20520 20133 20145 +f 20145 20133 20132 +f 19936 19934 20130 +f 20130 19934 20105 +f 20130 20105 20128 +f 20128 20105 20104 +f 20128 20104 20126 +f 20126 20104 20103 +f 20126 20103 20124 +f 20124 20103 20102 +f 20124 20102 20122 +f 20122 20102 20101 +f 20122 20101 20120 +f 20120 20101 20100 +f 20120 20100 20118 +f 20118 20100 20099 +f 20118 20099 20116 +f 20116 20099 20098 +f 20116 20098 20114 +f 20114 20098 20097 +f 20114 20097 20112 +f 20112 20097 20096 +f 20112 20096 20110 +f 20110 20096 20095 +f 20110 20095 20108 +f 20108 20095 20094 +f 20108 20094 20106 +f 20106 20094 20093 +f 19930 19928 20091 +f 20091 19928 20521 +f 20091 20521 20089 +f 20089 20521 20522 +f 20089 20522 20087 +f 20087 20522 20523 +f 20087 20523 20085 +f 20085 20523 20524 +f 20085 20524 20083 +f 20083 20524 20525 +f 20083 20525 20081 +f 20081 20525 20526 +f 20081 20526 20079 +f 20079 20526 20527 +f 20079 20527 20077 +f 20077 20527 20528 +f 20077 20528 20075 +f 20075 20528 20529 +f 20075 20529 20073 +f 20073 20529 20530 +f 20073 20530 20071 +f 20071 20530 20531 +f 20071 20531 20069 +f 20069 20531 20532 +f 20069 20532 20067 +f 20067 20532 20066 +f 19928 19926 20521 +f 20521 19926 20533 +f 20521 20533 20522 +f 20522 20533 20534 +f 20522 20534 20523 +f 20523 20534 20535 +f 20523 20535 20524 +f 20524 20535 20536 +f 20524 20536 20525 +f 20525 20536 20537 +f 20525 20537 20526 +f 20526 20537 20538 +f 20526 20538 20527 +f 20527 20538 20539 +f 20527 20539 20528 +f 20528 20539 20540 +f 20528 20540 20529 +f 20529 20540 20541 +f 20529 20541 20530 +f 20530 20541 20542 +f 20530 20542 20531 +f 20531 20542 20543 +f 20531 20543 20532 +f 20532 20543 20544 +f 20532 20544 20066 +f 20066 20544 20065 +f 19926 19924 20533 +f 20533 19924 20064 +f 20533 20064 20534 +f 20534 20064 20062 +f 20534 20062 20535 +f 20535 20062 20060 +f 20535 20060 20536 +f 20536 20060 20058 +f 20536 20058 20537 +f 20537 20058 20056 +f 20537 20056 20538 +f 20538 20056 20054 +f 20538 20054 20539 +f 20539 20054 20052 +f 20539 20052 20540 +f 20540 20052 20050 +f 20540 20050 20541 +f 20541 20050 20048 +f 20541 20048 20542 +f 20542 20048 20046 +f 20542 20046 20543 +f 20543 20046 20044 +f 20543 20044 20544 +f 20544 20044 20042 +f 20544 20042 20065 +f 20065 20042 20040 +f 19922 19920 20063 +f 20063 19920 20545 +f 20063 20545 20061 +f 20061 20545 20546 +f 20061 20546 20059 +f 20059 20546 20547 +f 20059 20547 20057 +f 20057 20547 20548 +f 20057 20548 20055 +f 20055 20548 20549 +f 20055 20549 20053 +f 20053 20549 20550 +f 20053 20550 20051 +f 20051 20550 20551 +f 20051 20551 20049 +f 20049 20551 20552 +f 20049 20552 20047 +f 20047 20552 20553 +f 20047 20553 20045 +f 20045 20553 20554 +f 20045 20554 20043 +f 20043 20554 20555 +f 20043 20555 20041 +f 20041 20555 20556 +f 20041 20556 20039 +f 20039 20556 20038 +f 19920 19918 20545 +f 20545 19918 20557 +f 20545 20557 20546 +f 20546 20557 20558 +f 20546 20558 20547 +f 20547 20558 20559 +f 20547 20559 20548 +f 20548 20559 20560 +f 20548 20560 20549 +f 20549 20560 20561 +f 20549 20561 20550 +f 20550 20561 20562 +f 20550 20562 20551 +f 20551 20562 20563 +f 20551 20563 20552 +f 20552 20563 20564 +f 20552 20564 20553 +f 20553 20564 20565 +f 20553 20565 20554 +f 20554 20565 20566 +f 20554 20566 20555 +f 20555 20566 20567 +f 20555 20567 20556 +f 20556 20567 20568 +f 20556 20568 20038 +f 20038 20568 19997 +f 19918 19916 20557 +f 20557 19916 20569 +f 20557 20569 20558 +f 20558 20569 20570 +f 20558 20570 20559 +f 20559 20570 20571 +f 20559 20571 20560 +f 20560 20571 20572 +f 20560 20572 20561 +f 20561 20572 20573 +f 20561 20573 20562 +f 20562 20573 20574 +f 20562 20574 20563 +f 20563 20574 20575 +f 20563 20575 20564 +f 20564 20575 20576 +f 20564 20576 20565 +f 20565 20576 20577 +f 20565 20577 20566 +f 20566 20577 20578 +f 20566 20578 20567 +f 20567 20578 20579 +f 20567 20579 20568 +f 20568 20579 19995 +f 20568 19995 19997 +f 19916 19914 20569 +f 20569 19914 20580 +f 20569 20580 20570 +f 20570 20580 20581 +f 20570 20581 20571 +f 20571 20581 20582 +f 20571 20582 20572 +f 20572 20582 20583 +f 20572 20583 20573 +f 20573 20583 20584 +f 20573 20584 20574 +f 20574 20584 20585 +f 20574 20585 20575 +f 20575 20585 20586 +f 20575 20586 20576 +f 20576 20586 20587 +f 20576 20587 20577 +f 20577 20587 20588 +f 20577 20588 20578 +f 20578 20588 20589 +f 20578 20589 20579 +f 20579 20589 19993 +f 20579 19993 19995 +f 19914 19912 20580 +f 20580 19912 20590 +f 20580 20590 20581 +f 20581 20590 20591 +f 20581 20591 20582 +f 20582 20591 20592 +f 20582 20592 20583 +f 20583 20592 20593 +f 20583 20593 20584 +f 20584 20593 20594 +f 20584 20594 20585 +f 20585 20594 20595 +f 20585 20595 20586 +f 20586 20595 20596 +f 20586 20596 20587 +f 20587 20596 20597 +f 20587 20597 20588 +f 20588 20597 20598 +f 20588 20598 20589 +f 20589 20598 19991 +f 20589 19991 19993 +f 19912 19910 20590 +f 20590 19910 20599 +f 20590 20599 20591 +f 20591 20599 20600 +f 20591 20600 20592 +f 20592 20600 20601 +f 20592 20601 20593 +f 20593 20601 20602 +f 20593 20602 20594 +f 20594 20602 20603 +f 20594 20603 20595 +f 20595 20603 20604 +f 20595 20604 20596 +f 20596 20604 20605 +f 20596 20605 20597 +f 20597 20605 20606 +f 20597 20606 20598 +f 20598 20606 19989 +f 20598 19989 19991 +f 19910 19908 20599 +f 20599 19908 20607 +f 20599 20607 20600 +f 20600 20607 20608 +f 20600 20608 20601 +f 20601 20608 20609 +f 20601 20609 20602 +f 20602 20609 20610 +f 20602 20610 20603 +f 20603 20610 20611 +f 20603 20611 20604 +f 20604 20611 20612 +f 20604 20612 20605 +f 20605 20612 20613 +f 20605 20613 20606 +f 20606 20613 19987 +f 20606 19987 19989 +f 19908 19906 20607 +f 20607 19906 20614 +f 20607 20614 20608 +f 20608 20614 20615 +f 20608 20615 20609 +f 20609 20615 20616 +f 20609 20616 20610 +f 20610 20616 20617 +f 20610 20617 20611 +f 20611 20617 20618 +f 20611 20618 20612 +f 20612 20618 20619 +f 20612 20619 20613 +f 20613 20619 19985 +f 20613 19985 19987 +f 19906 19904 20614 +f 20614 19904 20620 +f 20614 20620 20615 +f 20615 20620 20621 +f 20615 20621 20616 +f 20616 20621 20622 +f 20616 20622 20617 +f 20617 20622 20623 +f 20617 20623 20618 +f 20618 20623 20624 +f 20618 20624 20619 +f 20619 20624 19983 +f 20619 19983 19985 +f 19904 19902 20620 +f 20620 19902 20625 +f 20620 20625 20621 +f 20621 20625 20626 +f 20621 20626 20622 +f 20622 20626 20627 +f 20622 20627 20623 +f 20623 20627 20628 +f 20623 20628 20624 +f 20624 20628 19981 +f 20624 19981 19983 +f 19902 19900 20625 +f 20625 19900 20629 +f 20625 20629 20626 +f 20626 20629 20630 +f 20626 20630 20627 +f 20627 20630 20631 +f 20627 20631 20628 +f 20628 20631 19979 +f 20628 19979 19981 +f 19900 19898 20629 +f 20629 19898 19897 +f 20629 19897 20630 +f 20630 19897 19976 +f 20630 19976 20631 +f 20631 19976 19977 +f 20631 19977 19979 +f 19643 19899 20632 +f 20632 19899 19901 +f 20632 19901 20633 +f 20633 19901 19903 +f 20633 19903 20634 +f 20634 19903 19905 +f 20634 19905 20635 +f 20635 19905 19907 +f 20635 19907 20636 +f 20636 19907 19909 +f 20636 19909 20637 +f 20637 19909 19911 +f 20637 19911 20638 +f 20638 19911 19913 +f 20638 19913 20639 +f 20639 19913 19915 +f 20639 19915 20640 +f 20640 19915 19917 +f 20640 19917 20641 +f 20641 19917 19919 +f 20641 19919 20642 +f 20642 19919 19921 +f 20642 19921 20643 +f 20643 19921 19923 +f 20643 19923 20644 +f 20644 19923 19925 +f 20644 19925 20645 +f 20645 19925 19927 +f 20645 19927 20646 +f 20646 19927 19929 +f 20646 19929 20647 +f 20647 19929 19931 +f 20647 19931 20648 +f 20648 19931 19933 +f 20648 19933 20649 +f 20649 19933 19935 +f 20649 19935 20650 +f 20650 19935 19937 +f 20650 19937 20651 +f 20651 19937 19939 +f 20651 19939 20652 +f 20652 19939 19941 +f 20652 19941 20653 +f 20653 19941 19943 +f 20653 19943 20654 +f 20654 19943 19945 +f 20654 19945 20655 +f 20655 19945 19947 +f 20655 19947 20656 +f 20656 19947 19949 +f 20656 19949 20657 +f 20657 19949 19951 +f 20657 19951 20658 +f 20658 19951 19953 +f 20658 19953 20659 +f 20659 19953 19955 +f 20659 19955 20660 +f 20660 19955 19957 +f 20660 19957 20661 +f 20661 19957 19959 +f 20661 19959 20662 +f 20662 19959 19961 +f 20662 19961 20663 +f 20663 19961 19963 +f 20663 19963 20664 +f 20664 19963 19965 +f 20664 19965 20665 +f 20665 19965 19967 +f 20665 19967 20666 +f 20666 19967 19969 +f 20666 19969 20667 +f 20667 19969 19970 +f 20667 19970 20402 +f 20402 19970 19971 +f 20248 20247 20267 +f 20264 20331 20265 +f 20265 20331 20267 +f 20331 20248 20267 +f 19999 20008 20668 +f 20668 20008 20007 +f 20668 20007 20669 +f 20669 20007 20670 +f 20669 20670 20013 +f 20013 20670 20011 +f 19999 20668 20000 +f 20000 20668 20671 +f 20000 20671 20001 +f 20001 20671 20017 +f 20001 20017 20002 +f 20671 20668 20669 +f 20262 20259 20258 +f 20030 20004 20003 +f 20028 20030 20018 +f 20018 20030 20003 +f 20026 20028 20016 +f 20016 20028 20018 +f 20024 20026 20014 +f 20014 20026 20016 +f 20022 20024 20012 +f 20012 20024 20014 +f 20009 20022 20010 +f 20010 20022 20012 +f 20007 19635 20670 +f 20670 19635 20011 +f 20256 20242 20241 +f 20253 20254 20256 +f 20240 20253 20241 +f 20241 20253 20256 +f 20005 20031 20672 +f 20672 20031 20036 +f 20672 20036 19681 +f 20037 20036 20029 +f 20029 20036 20031 +f 20029 20027 20037 +f 20034 20033 20025 +f 20025 20023 20034 +f 19675 20035 20032 +f 20032 20035 20021 +f 19681 20006 20672 +f 20672 20006 20005 +f 20666 20667 20400 +f 20400 20667 20402 +f 20665 20666 20398 +f 20398 20666 20400 +f 20664 20665 20396 +f 20396 20665 20398 +f 20663 20664 20394 +f 20394 20664 20396 +f 20662 20663 20392 +f 20392 20663 20394 +f 20661 20662 20390 +f 20390 20662 20392 +f 20660 20661 20388 +f 20388 20661 20390 +f 20659 20660 20386 +f 20386 20660 20388 +f 20658 20659 20384 +f 20384 20659 20386 +f 20657 20658 20382 +f 20382 20658 20384 +f 20656 20657 20380 +f 20380 20657 20382 +f 20655 20656 20378 +f 20378 20656 20380 +f 20654 20655 20376 +f 20376 20655 20378 +f 20653 20654 20374 +f 20374 20654 20376 +f 20652 20653 20372 +f 20372 20653 20374 +f 20651 20652 20370 +f 20370 20652 20372 +f 20650 20651 20368 +f 20368 20651 20370 +f 20649 20650 20366 +f 20366 20650 20368 +f 20648 20649 20364 +f 20364 20649 20366 +f 20647 20648 20362 +f 20362 20648 20364 +f 20646 20647 20360 +f 20360 20647 20362 +f 20645 20646 20358 +f 20358 20646 20360 +f 20644 20645 20356 +f 20356 20645 20358 +f 20643 20644 20354 +f 20354 20644 20356 +f 20642 20643 20352 +f 20352 20643 20354 +f 20641 20642 20350 +f 20350 20642 20352 +f 20640 20641 20348 +f 20348 20641 20350 +f 20639 20640 20346 +f 20346 20640 20348 +f 20638 20639 20344 +f 20344 20639 20346 +f 20637 20638 20342 +f 20342 20638 20344 +f 20636 20637 20340 +f 20340 20637 20342 +f 20635 20636 20338 +f 20338 20636 20340 +f 20634 20635 20336 +f 20336 20635 20338 +f 20633 20634 20334 +f 20334 20634 20336 +f 20632 20633 20332 +f 20332 20633 20334 +f 19643 20632 20332 +f 20245 20244 20263 +f 20260 20330 20261 +f 20261 20330 20263 +f 20330 20245 20263 +f 20669 20013 20015 +f 20669 20015 20671 +f 20671 20015 20017 +f 19627 19626 20307 +f 20307 19626 20306 +f 20306 19626 19629 +f 20306 19629 20304 +f 20304 19629 20301 +f 20304 20301 20305 +f 19629 20317 20301 +f 20301 20317 20316 +f 20301 20316 20313 +f 20313 20311 20301 +f 20301 20311 20308 +f 20301 20308 20303 +f 20303 20302 20301 +f 20298 20296 19731 +f 19731 20296 20293 +f 19731 20293 19734 +f 19622 20326 19628 +f 19628 20326 20323 +f 19628 20323 20321 +f 19619 19746 19622 +f 19622 19746 20326 +f 19743 20298 19731 +f 19624 19628 20321 +f 20673 20674 20675 +f 20675 20674 20676 +f 20675 20676 20677 +f 20677 20676 20678 +f 20677 20678 20679 +f 20679 20678 20680 +f 20679 20680 20681 +f 20681 20680 20682 +f 20681 20682 20683 +f 20683 20682 20684 +f 20683 20684 20685 +f 20685 20684 20686 +f 20685 20686 20687 +f 20687 20686 20688 +f 20687 20688 20689 +f 20689 20688 20690 +f 20689 20690 20691 +f 20691 20690 20692 +f 20691 20692 20693 +f 20693 20692 20694 +f 20693 20694 20695 +f 20695 20694 20696 +f 20695 20696 20697 +f 20697 20696 20698 +f 20697 20698 20699 +f 20699 20698 20700 +f 20699 20700 20701 +f 20701 20700 20702 +f 20701 20702 20703 +f 20703 20702 20704 +f 20703 20704 20705 +f 20705 20704 20706 +f 20705 20706 20707 +f 20707 20706 20708 +f 20707 20708 20709 +f 20709 20708 20710 +f 20709 20710 20711 +f 20711 20710 20712 +f 20711 20712 20713 +f 20713 20712 20714 +f 20713 20714 20715 +f 20715 20714 20716 +f 20715 20716 20717 +f 20717 20716 20718 +f 20717 20718 20719 +f 20719 20718 20720 +f 20719 20720 20721 +f 20721 20720 20722 +f 20721 20722 20723 +f 20723 20722 20724 +f 20723 20724 20725 +f 20725 20724 20726 +f 20725 20726 20727 +f 20727 20726 20728 +f 20727 20728 20729 +f 20729 20728 20730 +f 20729 20730 20731 +f 20731 20730 20732 +f 20731 20732 20733 +f 20733 20732 20734 +f 20733 20734 20735 +f 20735 20734 20736 +f 20735 20736 20737 +f 20737 20736 20738 +f 20737 20738 20739 +f 20739 20738 20740 +f 20739 20740 20741 +f 20741 20740 20742 +f 20741 20742 20743 +f 20743 20742 20744 +f 20743 20744 20745 +f 20745 20744 20746 +f 20745 20746 20747 +f 20747 20746 20748 +f 20747 20748 20749 +f 20749 20748 20750 +f 20749 20750 20751 +f 20751 20750 20752 +f 20751 20752 20753 +f 20753 20752 20754 +f 20753 20754 20755 +f 20755 20754 20756 +f 20755 20756 20757 +f 20757 20756 20758 +f 20757 20758 20759 +f 20759 20758 20760 +f 20759 20760 20761 +f 20761 20760 20762 +f 20761 20762 20763 +f 20763 20762 20764 +f 20763 20764 20747 +f 20747 20764 20745 +f 20765 20766 20673 +f 20673 20766 20767 +f 20673 20767 20768 +f 20768 20767 20682 +f 20768 20682 20680 +f 20769 20770 20765 +f 20765 20770 20771 +f 20765 20771 20772 +f 20772 20771 20690 +f 20772 20690 20688 +f 20770 20769 20773 +f 20773 20769 20774 +f 20773 20774 20775 +f 20775 20774 20776 +f 20775 20776 20698 +f 20698 20776 20700 +f 20776 20774 20777 +f 20777 20774 20778 +f 20777 20778 20779 +f 20779 20778 20780 +f 20779 20780 20704 +f 20704 20780 20706 +f 20778 20781 20780 +f 20780 20781 20782 +f 20780 20782 20706 +f 20706 20782 20708 +f 20781 20783 20782 +f 20782 20783 20784 +f 20782 20784 20708 +f 20708 20784 20710 +f 20784 20783 20785 +f 20785 20783 20786 +f 20785 20786 20787 +f 20787 20786 20788 +f 20787 20788 20789 +f 20789 20788 20790 +f 20789 20790 20791 +f 20791 20790 20792 +f 20791 20792 20793 +f 20793 20792 20794 +f 20793 20794 20795 +f 20795 20794 20796 +f 20795 20796 20797 +f 20797 20796 20798 +f 20797 20798 20799 +f 20799 20798 20800 +f 20799 20800 20801 +f 20801 20800 20802 +f 20801 20802 20728 +f 20728 20802 20730 +f 20800 20803 20802 +f 20802 20803 20804 +f 20802 20804 20730 +f 20730 20804 20732 +f 20803 20805 20804 +f 20804 20805 20806 +f 20804 20806 20732 +f 20732 20806 20734 +f 20805 20807 20806 +f 20806 20807 20808 +f 20806 20808 20734 +f 20734 20808 20736 +f 20807 20809 20808 +f 20808 20809 20810 +f 20808 20810 20736 +f 20736 20810 20738 +f 20809 20811 20810 +f 20810 20811 20812 +f 20810 20812 20738 +f 20738 20812 20740 +f 20811 20813 20812 +f 20812 20813 20814 +f 20812 20814 20740 +f 20740 20814 20742 +f 20815 20816 20813 +f 20813 20816 20817 +f 20813 20817 20814 +f 20814 20817 20742 +f 20816 20815 20818 +f 20818 20815 20819 +f 20818 20819 20820 +f 20820 20819 20821 +f 20820 20821 20822 +f 20820 20822 20750 +f 20750 20822 20752 +f 20754 20823 20756 +f 20756 20823 20758 +f 20824 20825 20758 +f 20758 20825 20826 +f 20758 20826 20760 +f 20760 20826 20762 +f 20827 20828 20824 +f 20824 20828 20829 +f 20824 20829 20830 +f 20830 20829 20831 +f 20830 20831 20832 +f 20832 20831 20833 +f 20832 20833 20834 +f 20834 20833 20743 +f 20834 20743 20745 +f 20827 20835 20828 +f 20828 20835 20836 +f 20828 20836 20837 +f 20837 20836 20838 +f 20837 20838 20839 +f 20839 20838 20840 +f 20839 20840 20735 +f 20735 20840 20733 +f 20835 20841 20836 +f 20836 20841 20842 +f 20836 20842 20838 +f 20838 20842 20843 +f 20838 20843 20840 +f 20840 20843 20844 +f 20840 20844 20733 +f 20733 20844 20731 +f 20842 20841 20845 +f 20845 20841 20846 +f 20845 20846 20847 +f 20847 20846 20848 +f 20847 20848 20849 +f 20849 20848 20850 +f 20849 20850 20851 +f 20851 20850 20852 +f 20851 20852 20727 +f 20727 20852 20725 +f 20846 20853 20848 +f 20848 20853 20854 +f 20848 20854 20850 +f 20850 20854 20855 +f 20850 20855 20852 +f 20852 20855 20856 +f 20852 20856 20725 +f 20725 20856 20723 +f 20854 20853 20857 +f 20857 20853 20858 +f 20857 20858 20859 +f 20859 20858 20860 +f 20859 20860 20861 +f 20861 20860 20862 +f 20861 20862 20863 +f 20863 20862 20864 +f 20863 20864 20865 +f 20865 20864 20866 +f 20865 20866 20867 +f 20867 20866 20868 +f 20867 20868 20869 +f 20869 20868 20870 +f 20869 20870 20713 +f 20713 20870 20711 +f 20866 20864 20871 +f 20871 20864 20872 +f 20871 20872 20873 +f 20873 20872 20874 +f 20873 20874 20875 +f 20875 20874 20876 +f 20875 20876 20877 +f 20877 20876 20878 +f 20877 20878 20879 +f 20879 20878 20880 +f 20879 20880 20705 +f 20705 20880 20703 +f 20874 20881 20876 +f 20876 20881 20882 +f 20876 20882 20878 +f 20878 20882 20883 +f 20878 20883 20880 +f 20880 20883 20884 +f 20880 20884 20703 +f 20703 20884 20701 +f 20885 20886 20881 +f 20881 20886 20887 +f 20881 20887 20882 +f 20882 20887 20883 +f 20886 20885 20888 +f 20888 20885 20889 +f 20888 20889 20890 +f 20890 20889 20891 +f 20890 20891 20892 +f 20892 20891 20893 +f 20892 20893 20894 +f 20894 20893 20895 +f 20894 20895 20693 +f 20693 20895 20691 +f 20896 20897 20889 +f 20889 20897 20898 +f 20889 20898 20891 +f 20891 20898 20893 +f 20899 20900 20896 +f 20896 20900 20901 +f 20896 20901 20902 +f 20902 20901 20903 +f 20902 20903 20904 +f 20904 20903 20905 +f 20904 20905 20906 +f 20906 20905 20687 +f 20906 20687 20689 +f 20899 20907 20900 +f 20900 20907 20908 +f 20900 20908 20909 +f 20909 20908 20910 +f 20909 20910 20911 +f 20911 20910 20683 +f 20911 20683 20685 +f 20677 20679 20907 +f 20907 20679 20912 +f 20907 20912 20908 +f 20908 20912 20910 +f 20750 20748 20820 +f 20820 20748 20818 +f 20748 20746 20818 +f 20818 20746 20816 +f 20746 20744 20816 +f 20816 20744 20817 +f 20744 20742 20817 +f 20728 20726 20801 +f 20801 20726 20799 +f 20726 20724 20799 +f 20799 20724 20797 +f 20724 20722 20797 +f 20797 20722 20795 +f 20722 20720 20795 +f 20795 20720 20793 +f 20720 20718 20793 +f 20793 20718 20791 +f 20718 20716 20791 +f 20791 20716 20789 +f 20716 20714 20789 +f 20789 20714 20787 +f 20710 20784 20785 +f 20714 20712 20787 +f 20787 20712 20785 +f 20712 20710 20785 +f 20700 20776 20777 +f 20704 20702 20779 +f 20779 20702 20777 +f 20702 20700 20777 +f 20698 20696 20775 +f 20775 20696 20773 +f 20696 20694 20773 +f 20773 20694 20770 +f 20694 20692 20770 +f 20770 20692 20771 +f 20766 20765 20913 +f 20913 20765 20772 +f 20913 20772 20688 +f 20692 20690 20771 +f 20688 20686 20913 +f 20913 20686 20766 +f 20674 20673 20768 +f 20686 20684 20766 +f 20766 20684 20767 +f 20684 20682 20767 +f 20678 20676 20674 +f 20678 20674 20680 +f 20680 20674 20768 +f 20749 20751 20914 +f 20914 20751 20753 +f 20914 20753 20915 +f 20915 20753 20755 +f 20915 20755 20757 +f 20747 20749 20763 +f 20763 20749 20914 +f 20763 20914 20761 +f 20761 20914 20915 +f 20761 20915 20759 +f 20759 20915 20757 +f 20745 20764 20834 +f 20834 20764 20916 +f 20834 20916 20832 +f 20832 20916 20825 +f 20832 20825 20830 +f 20830 20825 20824 +f 20916 20764 20762 +f 20741 20743 20833 +f 20739 20741 20917 +f 20917 20741 20833 +f 20917 20833 20831 +f 20737 20739 20918 +f 20918 20739 20917 +f 20918 20917 20919 +f 20919 20917 20831 +f 20919 20831 20829 +f 20735 20737 20839 +f 20839 20737 20918 +f 20839 20918 20837 +f 20837 20918 20919 +f 20837 20919 20828 +f 20828 20919 20829 +f 20729 20731 20920 +f 20920 20731 20844 +f 20920 20844 20921 +f 20921 20844 20843 +f 20921 20843 20845 +f 20845 20843 20842 +f 20727 20729 20851 +f 20851 20729 20920 +f 20851 20920 20849 +f 20849 20920 20921 +f 20849 20921 20847 +f 20847 20921 20845 +f 20721 20723 20922 +f 20922 20723 20856 +f 20922 20856 20923 +f 20923 20856 20855 +f 20923 20855 20857 +f 20857 20855 20854 +f 20719 20721 20924 +f 20924 20721 20922 +f 20924 20922 20925 +f 20925 20922 20923 +f 20925 20923 20859 +f 20859 20923 20857 +f 20717 20719 20926 +f 20926 20719 20924 +f 20926 20924 20927 +f 20927 20924 20925 +f 20927 20925 20861 +f 20861 20925 20859 +f 20715 20717 20928 +f 20928 20717 20926 +f 20928 20926 20929 +f 20929 20926 20927 +f 20929 20927 20863 +f 20863 20927 20861 +f 20713 20715 20869 +f 20869 20715 20928 +f 20869 20928 20867 +f 20867 20928 20929 +f 20867 20929 20865 +f 20865 20929 20863 +f 20709 20711 20930 +f 20930 20711 20870 +f 20930 20870 20931 +f 20931 20870 20868 +f 20931 20868 20871 +f 20871 20868 20866 +f 20707 20709 20932 +f 20932 20709 20930 +f 20932 20930 20933 +f 20933 20930 20931 +f 20933 20931 20873 +f 20873 20931 20871 +f 20705 20707 20879 +f 20879 20707 20932 +f 20879 20932 20877 +f 20877 20932 20933 +f 20877 20933 20875 +f 20875 20933 20873 +f 20699 20701 20934 +f 20934 20701 20884 +f 20934 20884 20935 +f 20935 20884 20883 +f 20935 20883 20887 +f 20697 20699 20936 +f 20936 20699 20934 +f 20936 20934 20937 +f 20937 20934 20935 +f 20937 20935 20886 +f 20886 20935 20887 +f 20695 20697 20938 +f 20938 20697 20936 +f 20938 20936 20939 +f 20939 20936 20937 +f 20939 20937 20888 +f 20888 20937 20886 +f 20693 20695 20894 +f 20894 20695 20938 +f 20894 20938 20892 +f 20892 20938 20939 +f 20892 20939 20890 +f 20890 20939 20888 +f 20689 20691 20940 +f 20940 20691 20895 +f 20940 20895 20941 +f 20941 20895 20893 +f 20941 20893 20898 +f 20689 20940 20906 +f 20906 20940 20942 +f 20906 20942 20904 +f 20904 20942 20943 +f 20904 20943 20902 +f 20902 20943 20896 +f 20942 20940 20941 +f 20685 20687 20905 +f 20685 20905 20911 +f 20911 20905 20903 +f 20911 20903 20909 +f 20909 20903 20901 +f 20909 20901 20900 +f 20681 20683 20910 +f 20679 20681 20912 +f 20912 20681 20910 +f 20825 20916 20826 +f 20826 20916 20762 +f 20898 20897 20941 +f 20941 20897 20942 +f 20897 20896 20943 +f 20942 20897 20943 +f 20752 20677 20907 +f 20754 20907 20823 +f 20765 20815 20769 +f 20769 20815 20813 +f 20781 20803 20800 +f 20781 20800 20798 +f 20781 20798 20783 +f 20783 20798 20796 +f 20783 20796 20794 +f 20792 20790 20794 +f 20794 20790 20783 +f 20885 20881 20758 +f 20758 20881 20824 +f 20824 20881 20874 +f 20827 20874 20835 +f 20835 20874 20841 +f 20841 20874 20872 +f 20841 20872 20846 +f 20860 20872 20864 +f 20944 20945 20946 +f 20946 20945 20947 +f 20946 20947 20948 +f 20944 20946 20949 +f 20949 20946 20950 +f 20949 20950 20951 +f 20951 20950 20952 +f 20951 20952 20953 +f 20953 20952 20954 +f 20947 20955 20948 +f 20948 20955 20956 +f 20956 20955 20957 +f 20956 20957 20958 +f 20958 20957 20959 +f 20958 20959 20960 +f 20960 20961 20958 +f 20962 20963 20964 +f 20964 20963 20965 +f 20964 20965 20966 +f 20966 20965 20967 +f 20966 20967 20968 +f 20968 20967 20969 +f 20968 20969 20970 +f 20970 20969 20971 +f 20970 20971 20972 +f 20972 20971 20973 +f 20972 20973 20958 +f 20958 20973 20974 +f 20958 20974 20975 +f 20975 20974 20976 +f 20975 20976 20977 +f 20977 20976 20978 +f 20977 20978 20979 +f 20979 20978 20980 +f 20979 20980 20981 +f 20981 20980 20982 +f 20981 20982 20983 +f 20983 20982 20984 +f 20983 20984 20985 +f 20985 20984 20986 +f 20985 20986 20987 +f 20987 20986 20988 +f 20987 20988 20989 +f 20989 20988 20990 +f 20989 20990 20991 +f 20991 20990 20992 +f 20991 20992 20993 +f 20990 20994 20962 +f 20962 20994 20995 +f 20962 20995 20963 +f 20963 20995 20996 +f 20963 20996 20997 +f 20997 20996 20998 +f 20997 20998 20999 +f 20999 20998 21000 +f 20999 21000 20969 +f 20969 21000 20971 +f 21001 21002 20993 +f 20993 21002 21003 +f 20993 21003 20991 +f 20991 21003 21004 +f 20991 21004 20989 +f 20989 21004 21005 +f 20989 21005 20987 +f 20987 21005 21006 +f 20987 21006 20985 +f 20985 21006 21007 +f 20985 21007 20983 +f 20983 21007 21008 +f 20983 21008 20981 +f 20981 21008 21009 +f 20981 21009 20979 +f 20979 21009 21010 +f 20979 21010 20977 +f 20977 21010 21011 +f 20977 21011 20975 +f 20975 21011 21012 +f 20975 21012 20956 +f 20956 21012 21013 +f 20956 21013 20948 +f 20948 21013 20946 +f 20946 21013 21014 +f 20946 21014 20950 +f 20950 21014 21015 +f 20950 21015 21016 +f 21016 21015 21009 +f 21016 21009 21008 +f 21017 21018 21001 +f 21001 21018 21019 +f 21001 21019 21002 +f 21002 21019 21003 +f 21017 21020 21018 +f 21018 21020 20949 +f 21018 20949 21019 +f 21019 20949 20951 +f 21019 20951 21021 +f 21021 20951 20953 +f 21021 20953 21022 +f 21022 20953 21023 +f 21022 21023 21004 +f 21004 21023 21005 +f 21020 20944 20949 +f 20953 20954 21023 +f 21023 20954 21024 +f 21023 21024 21005 +f 21005 21024 21006 +f 20954 20952 21024 +f 21024 20952 21025 +f 21024 21025 21006 +f 21006 21025 21007 +f 21025 20952 21026 +f 21026 20952 20950 +f 21026 20950 21016 +f 20956 20958 20975 +f 20972 20958 21027 +f 21027 20958 20961 +f 21027 20961 21028 +f 21028 20961 21029 +f 21028 21029 21030 +f 21030 21029 20968 +f 21030 20968 20970 +f 21029 20966 20968 +f 20997 20999 20965 +f 20965 20999 20967 +f 20999 20969 20967 +f 21027 21028 21030 +f 21027 21030 20970 +f 20996 20995 21031 +f 21031 20995 21032 +f 21031 21032 20982 +f 20982 21032 20984 +f 20998 20996 21033 +f 21033 20996 21031 +f 21033 21031 20980 +f 20980 21031 20982 +f 21000 20998 21034 +f 21034 20998 21033 +f 21034 21033 20978 +f 20978 21033 20980 +f 21027 20970 20972 +f 20971 21000 21035 +f 21035 21000 21034 +f 21035 21034 20976 +f 20976 21034 20978 +f 20965 20963 20997 +f 20988 20986 20994 +f 20994 20986 20984 +f 20994 20984 21032 +f 20976 20974 21035 +f 21035 20974 20973 +f 21035 20973 20971 +f 20995 20994 21032 +f 20990 20988 20994 +f 21022 21004 21003 +f 21021 21022 21003 +f 21025 21026 21007 +f 21007 21026 21008 +f 21026 21016 21008 +f 21009 21015 21010 +f 21010 21015 21014 +f 21010 21014 21011 +f 21011 21014 21013 +f 21011 21013 21012 +f 21019 21021 21003 +f 21036 21037 21038 +f 21038 21037 21039 +f 21038 21039 21040 +f 21040 21039 21041 +f 21040 21041 21042 +f 21042 21041 21043 +f 21042 21043 21044 +f 21044 21043 21045 +f 21044 21045 21046 +f 21046 21045 21047 +f 21046 21047 21048 +f 21048 21047 21049 +f 21048 21049 21050 +f 21050 21049 21051 +f 21050 21051 21052 +f 21052 21051 21053 +f 21052 21053 21054 +f 21054 21053 21055 +f 21054 21055 21056 +f 21056 21055 21057 +f 21056 21057 21058 +f 21058 21057 21059 +f 21058 21059 21060 +f 21060 21059 21061 +f 21060 21061 21062 +f 21062 21061 21063 +f 21062 21063 21064 +f 21064 21063 21065 +f 21064 21065 21066 +f 21066 21065 21067 +f 21066 21067 21068 +f 21068 21067 21069 +f 21068 21069 21070 +f 21070 21069 21071 +f 21070 21071 21072 +f 21072 21071 21073 +f 21072 21073 21074 +f 21074 21073 21075 +f 21074 21075 21076 +f 21076 21075 21077 +f 21076 21077 21078 +f 21078 21077 21079 +f 21078 21079 21080 +f 21080 21079 21081 +f 21080 21081 21082 +f 21082 21081 21083 +f 21082 21083 21072 +f 21072 21083 21070 +f 21036 21084 21037 +f 21037 21084 21085 +f 21037 21085 21086 +f 21086 21085 21087 +f 21086 21087 21088 +f 21088 21087 21089 +f 21088 21089 21090 +f 21090 21089 21091 +f 21090 21091 21092 +f 21092 21091 21093 +f 21092 21093 21094 +f 21094 21093 21095 +f 21094 21095 21096 +f 21096 21095 21097 +f 21096 21097 21098 +f 21098 21097 21099 +f 21098 21099 21100 +f 21100 21099 21069 +f 21100 21069 21067 +f 21093 21101 21095 +f 21095 21101 21102 +f 21095 21102 21097 +f 21097 21102 21103 +f 21097 21103 21099 +f 21099 21103 21071 +f 21099 21071 21069 +f 21102 21101 21104 +f 21104 21101 21105 +f 21104 21105 21075 +f 21075 21105 21077 +f 21106 21107 21081 +f 21081 21107 21108 +f 21081 21108 21109 +f 21109 21108 21068 +f 21109 21068 21070 +f 21107 21106 21110 +f 21110 21106 21111 +f 21110 21111 21112 +f 21112 21111 21113 +f 21112 21113 21114 +f 21114 21113 21115 +f 21114 21115 21058 +f 21058 21115 21056 +f 21056 21116 21054 +f 21054 21116 21117 +f 21054 21117 21052 +f 21052 21117 21118 +f 21052 21118 21050 +f 21050 21118 21119 +f 21050 21119 21048 +f 21048 21119 21120 +f 21048 21120 21046 +f 21046 21120 21121 +f 21046 21121 21044 +f 21044 21121 21122 +f 21044 21122 21042 +f 21042 21122 21123 +f 21042 21123 21040 +f 21040 21123 21038 +f 21124 21125 21116 +f 21116 21125 21126 +f 21116 21126 21117 +f 21117 21126 21118 +f 20964 20966 21124 +f 21124 20966 21127 +f 21124 21127 21128 +f 21128 21127 21129 +f 21128 21129 21130 +f 21130 21129 21131 +f 21130 21131 21132 +f 21132 21131 21133 +f 21132 21133 21120 +f 21120 21133 21121 +f 21029 21134 20966 +f 20966 21134 21135 +f 20966 21135 21127 +f 21127 21135 21136 +f 21127 21136 21129 +f 21129 21136 21137 +f 21129 21137 21131 +f 21131 21137 21138 +f 21131 21138 21133 +f 21133 21138 21139 +f 21133 21139 21121 +f 21121 21139 21122 +f 21134 21029 21140 +f 21140 21029 20961 +f 21140 20961 21141 +f 21141 20961 21142 +f 21141 21142 21137 +f 21137 21142 21138 +f 20960 21038 20961 +f 20961 21038 21123 +f 20961 21123 21143 +f 21143 21123 21122 +f 21143 21122 21139 +f 21124 21128 21125 +f 21125 21128 21130 +f 21125 21130 21144 +f 21144 21130 21132 +f 21144 21132 21119 +f 21119 21132 21120 +f 21039 21037 21145 +f 21145 21037 21086 +f 21145 21086 21146 +f 21146 21086 21088 +f 21146 21088 21147 +f 21147 21088 21090 +f 21147 21090 21148 +f 21148 21090 21092 +f 21148 21092 21149 +f 21149 21092 21094 +f 21149 21094 21096 +f 21142 20961 21150 +f 21150 20961 21143 +f 21150 21143 21139 +f 21138 21142 21150 +f 21138 21150 21139 +f 21135 21134 21140 +f 21137 21136 21141 +f 21141 21136 21140 +f 21136 21135 21140 +f 21039 21145 21041 +f 21041 21145 21151 +f 21041 21151 21043 +f 21043 21151 21152 +f 21043 21152 21045 +f 21045 21152 21153 +f 21045 21153 21047 +f 21047 21153 21154 +f 21047 21154 21049 +f 21049 21154 21155 +f 21049 21155 21051 +f 21051 21155 21156 +f 21051 21156 21053 +f 21053 21156 21157 +f 21053 21157 21055 +f 21055 21157 21057 +f 21151 21145 21146 +f 21151 21146 21158 +f 21158 21146 21147 +f 21158 21147 21159 +f 21159 21147 21148 +f 21159 21148 21160 +f 21160 21148 21149 +f 21160 21149 21161 +f 21161 21149 21096 +f 21161 21096 21098 +f 21151 21158 21152 +f 21152 21158 21162 +f 21152 21162 21153 +f 21153 21162 21163 +f 21153 21163 21154 +f 21154 21163 21164 +f 21154 21164 21155 +f 21155 21164 21165 +f 21155 21165 21156 +f 21156 21165 21166 +f 21156 21166 21157 +f 21157 21166 21059 +f 21157 21059 21057 +f 21162 21158 21159 +f 21162 21159 21167 +f 21167 21159 21160 +f 21167 21160 21168 +f 21168 21160 21161 +f 21168 21161 21169 +f 21169 21161 21098 +f 21169 21098 21100 +f 21126 21125 21144 +f 21126 21144 21118 +f 21118 21144 21119 +f 21168 21170 21167 +f 21167 21170 21163 +f 21167 21163 21162 +f 21163 21170 21164 +f 21164 21170 21171 +f 21164 21171 21165 +f 21165 21171 21172 +f 21165 21172 21166 +f 21166 21172 21061 +f 21166 21061 21059 +f 21170 21168 21173 +f 21173 21168 21169 +f 21173 21169 21174 +f 21174 21169 21100 +f 21174 21100 21067 +f 21170 21173 21171 +f 21171 21173 21175 +f 21171 21175 21172 +f 21172 21175 21063 +f 21172 21063 21061 +f 21175 21173 21174 +f 21075 21073 21104 +f 21104 21073 21103 +f 21104 21103 21102 +f 21073 21071 21103 +f 21175 21174 21065 +f 21065 21174 21067 +f 21065 21063 21175 +f 21074 21076 21080 +f 21080 21076 21078 +f 21072 21074 21082 +f 21082 21074 21080 +f 21081 21109 21083 +f 21083 21109 21070 +f 21066 21068 21108 +f 21064 21066 21107 +f 21107 21066 21108 +f 21062 21064 21110 +f 21110 21064 21107 +f 21060 21062 21112 +f 21112 21062 21110 +f 21058 21060 21114 +f 21114 21060 21112 +f 21036 21176 21084 +f 21084 21176 21177 +f 21084 21177 21178 +f 21179 21180 21178 +f 21178 21180 21181 +f 21178 21181 21089 +f 21089 21181 21091 +f 21091 21181 21093 +f 21093 21181 21101 +f 21101 21181 21105 +f 21105 21181 21182 +f 21105 21182 21077 +f 21077 21182 21079 +f 21179 21183 21180 +f 21180 21183 21184 +f 21180 21184 21185 +f 21181 21180 21186 +f 21186 21180 21187 +f 21186 21187 21188 +f 21188 21187 21189 +f 21188 21189 21190 +f 21190 21189 21191 +f 21191 21189 21192 +f 21192 21189 21193 +f 21192 21193 21194 +f 21187 21193 21189 +f 21190 21195 21188 +f 21188 21195 21186 +f 21195 21182 21186 +f 21186 21182 21181 +f 21089 21087 21178 +f 21178 21087 21085 +f 21178 21085 21084 +f 21180 21185 21196 +f 21196 21185 21197 +f 21196 21197 21198 +f 21199 21200 21198 +f 21198 21200 21196 +f 21017 21201 21020 +f 21020 21201 21202 +f 21020 21202 20944 +f 20944 21202 20945 +f 21203 21204 21205 +f 21205 21204 21206 +f 21206 21204 21207 +f 21206 21207 21208 +f 21208 21207 21209 +f 21208 21209 21210 +f 21210 21209 21211 +f 21210 21211 21212 +f 21212 21211 21213 +f 21212 21213 21214 +f 21214 21213 21215 +f 21214 21215 21216 +f 21216 21215 21217 +f 21216 21217 21218 +f 21218 21217 21219 +f 21218 21219 21220 +f 21220 21219 21221 +f 21220 21221 21222 +f 21222 21221 21223 +f 21222 21223 21224 +f 21224 21223 21225 +f 21224 21225 21226 +f 21226 21225 21227 +f 21226 21227 21228 +f 21228 21227 21187 +f 21228 21187 21229 +f 21229 21187 21180 +f 21229 21180 21196 +f 21207 21211 21209 +f 21215 21219 21217 +f 21223 21221 21230 +f 21230 21221 21194 +f 21230 21194 21231 +f 21231 21194 21193 +f 21231 21193 21227 +f 21227 21193 21187 +f 21200 21232 21196 +f 21196 21232 21233 +f 21196 21233 21234 +f 21234 21233 21235 +f 21234 21235 21236 +f 21236 21235 21237 +f 21236 21237 21238 +f 21238 21237 21239 +f 21238 21239 21240 +f 21240 21239 21241 +f 21240 21241 21222 +f 21222 21241 21218 +f 21222 21218 21220 +f 21232 21200 21242 +f 21242 21200 21243 +f 21242 21243 21244 +f 21244 21243 21245 +f 21244 21245 21246 +f 21246 21245 21247 +f 21246 21247 21235 +f 21235 21247 21237 +f 21243 21248 21245 +f 21245 21248 21249 +f 21245 21249 21247 +f 21247 21249 21250 +f 21247 21250 21237 +f 21237 21250 21239 +f 21248 21251 21249 +f 21249 21251 21252 +f 21249 21252 21250 +f 21250 21252 21253 +f 21250 21253 21239 +f 21239 21253 21241 +f 21252 21251 21254 +f 21254 21251 21255 +f 21254 21255 21256 +f 21256 21255 21257 +f 21256 21257 21216 +f 21216 21257 21214 +f 21255 21258 21257 +f 21257 21258 21259 +f 21257 21259 21214 +f 21214 21259 21212 +f 21259 21258 21210 +f 21210 21258 21208 +f 21196 21260 21229 +f 21229 21260 21261 +f 21229 21261 21228 +f 21228 21261 21226 +f 21212 21259 21210 +f 21253 21252 21254 +f 21254 21256 21262 +f 21262 21256 21216 +f 21262 21216 21218 +f 21232 21242 21244 +f 21232 21244 21246 +f 21241 21253 21262 +f 21262 21253 21254 +f 21241 21262 21218 +f 21233 21232 21246 +f 21233 21246 21235 +f 21196 21234 21263 +f 21263 21234 21236 +f 21263 21236 21264 +f 21264 21236 21238 +f 21264 21238 21265 +f 21265 21238 21240 +f 21265 21240 21224 +f 21224 21240 21222 +f 21196 21263 21260 +f 21260 21263 21264 +f 21260 21264 21261 +f 21261 21264 21265 +f 21261 21265 21226 +f 21226 21265 21224 +f 21223 21230 21225 +f 21225 21230 21231 +f 21225 21231 21227 +f 21266 21203 21267 +f 21267 21203 21205 +f 21200 21199 21243 +f 21243 21199 21267 +f 21243 21267 21205 +f 21205 21206 21243 +f 21243 21206 21248 +f 21248 21206 21208 +f 21248 21208 21251 +f 21251 21208 21258 +f 21251 21258 21255 +f 21079 21182 21081 +f 21111 21190 21113 +f 20964 21201 20962 +f 20962 21201 20990 +f 20990 21201 20992 +f 21001 21201 21017 +f 21201 21185 20960 +f 20960 21185 21184 +f 20960 21184 21183 +f 21038 21178 21177 +f 20960 21202 21201 +f 20959 20957 20945 +f 21273 21271 21274 +f 21268 21276 21269 +f 21319 21317 21299 +f 21319 21299 21298 +f 21320 21280 21321 +f 21321 21280 21276 +f 21321 21276 21322 +f 21322 21323 21321 +f 21321 21323 21324 +f 21324 21323 21325 +f 21324 21325 21326 +f 21326 21325 21327 +f 21326 21327 21328 +f 21276 21268 21322 +f 21322 21268 21329 +f 21329 21268 21270 +f 21329 21270 21300 +f 21330 21269 21331 +f 21331 21269 21277 +f 21331 21277 21278 +f 21331 21278 21332 +f 21332 21278 21279 +f 21332 21279 21320 +f 21320 21279 21280 +f 21329 21300 21333 +f 21333 21300 21301 +f 21333 21301 21334 +f 21334 21301 21335 +f 21334 21335 21336 +f 21336 21335 21302 +f 21336 21302 21303 +f 21301 21302 21335 +f 21336 21303 21337 +f 21337 21303 21304 +f 21337 21304 21338 +f 21338 21304 21339 +f 21338 21339 21340 +f 21340 21339 21341 +f 21340 21341 21342 +f 21342 21341 21343 +f 21342 21343 21344 +f 21344 21343 21345 +f 21344 21345 21346 +f 21346 21345 21347 +f 21346 21347 21348 +f 21348 21347 21349 +f 21348 21349 21350 +f 21350 21349 21351 +f 21350 21351 21352 +f 21352 21351 21331 +f 21352 21331 21353 +f 21353 21331 21332 +f 21353 21332 21354 +f 21354 21332 21355 +f 21354 21355 21356 +f 21356 21355 21321 +f 21356 21321 21324 +f 21304 21305 21339 +f 21339 21305 21357 +f 21339 21357 21341 +f 21341 21357 21358 +f 21341 21358 21343 +f 21343 21358 21359 +f 21343 21359 21345 +f 21345 21359 21360 +f 21345 21360 21347 +f 21347 21360 21361 +f 21347 21361 21349 +f 21349 21361 21362 +f 21349 21362 21351 +f 21351 21362 21331 +f 21357 21305 21363 +f 21363 21305 21306 +f 21363 21306 21364 +f 21364 21306 21365 +f 21364 21365 21366 +f 21366 21365 21367 +f 21366 21367 21368 +f 21368 21367 21369 +f 21368 21369 21359 +f 21359 21369 21360 +f 21365 21370 21367 +f 21367 21370 21371 +f 21367 21371 21369 +f 21369 21371 21372 +f 21369 21372 21360 +f 21360 21372 21361 +f 21371 21370 21373 +f 21373 21370 21330 +f 21373 21330 21331 +f 21332 21320 21355 +f 21355 21320 21321 +f 21326 21374 21324 +f 21324 21374 21375 +f 21324 21375 21376 +f 21376 21375 21377 +f 21376 21377 21378 +f 21378 21377 21379 +f 21378 21379 21353 +f 21353 21379 21352 +f 21328 21380 21326 +f 21326 21380 21381 +f 21326 21381 21374 +f 21374 21381 21382 +f 21374 21382 21383 +f 21383 21382 21384 +f 21383 21384 21385 +f 21385 21384 21348 +f 21385 21348 21350 +f 21380 21328 21386 +f 21386 21328 21327 +f 21386 21327 21387 +f 21387 21327 21388 +f 21387 21388 21389 +f 21389 21388 21336 +f 21389 21336 21337 +f 21327 21325 21388 +f 21388 21325 21334 +f 21388 21334 21336 +f 21325 21323 21334 +f 21334 21323 21333 +f 21323 21322 21333 +f 21333 21322 21329 +f 21331 21390 21373 +f 21373 21390 21372 +f 21373 21372 21371 +f 21378 21353 21354 +f 21378 21354 21356 +f 21324 21376 21356 +f 21356 21376 21378 +f 21377 21375 21383 +f 21383 21375 21374 +f 21381 21380 21391 +f 21391 21380 21392 +f 21391 21392 21393 +f 21393 21392 21394 +f 21393 21394 21342 +f 21342 21394 21340 +f 21380 21386 21392 +f 21392 21386 21395 +f 21392 21395 21394 +f 21394 21395 21396 +f 21394 21396 21340 +f 21340 21396 21338 +f 21386 21387 21395 +f 21395 21387 21389 +f 21395 21389 21396 +f 21396 21389 21337 +f 21396 21337 21338 +f 21381 21391 21382 +f 21382 21391 21397 +f 21382 21397 21384 +f 21384 21397 21346 +f 21384 21346 21348 +f 21397 21391 21393 +f 21379 21377 21385 +f 21385 21377 21383 +f 21342 21344 21393 +f 21393 21344 21397 +f 21344 21346 21397 +f 21352 21379 21350 +f 21350 21379 21385 +f 21390 21331 21362 +f 21372 21390 21361 +f 21361 21390 21362 +f 21359 21358 21368 +f 21368 21358 21398 +f 21368 21398 21366 +f 21366 21398 21364 +f 21358 21357 21398 +f 21398 21357 21363 +f 21398 21363 21364 +f 21273 21399 21272 +f 21272 21399 21315 +f 21399 21273 21400 +f 21400 21273 21289 +f 21400 21289 21401 +f 21399 21400 21402 +f 21402 21400 21403 +f 21402 21403 21404 +f 21404 21403 21405 +f 21404 21405 21406 +f 21406 21405 21407 +f 21271 21284 21408 +f 21408 21284 21283 +f 21408 21283 21282 +f 21282 21288 21408 +f 21408 21288 21409 +f 21408 21409 21410 +f 21410 21409 21292 +f 21410 21292 21293 +f 21287 21411 21288 +f 21288 21411 21412 +f 21288 21412 21413 +f 21411 21287 21414 +f 21414 21287 21286 +f 21414 21286 21285 +f 21288 21413 21409 +f 21409 21413 21415 +f 21409 21415 21416 +f 21409 21416 21292 +f 21292 21416 21417 +f 21292 21417 21418 +f 21418 21419 21292 +f 21292 21419 21290 +f 21410 21293 21420 +f 21420 21293 21295 +f 21420 21295 21421 +f 21421 21295 21299 +f 21421 21299 21317 +f 21307 21422 21317 +f 21317 21422 21421 +f 21422 21423 21421 +f 21421 21423 21420 +f 21423 21408 21420 +f 21420 21408 21410 +f 21285 21281 21414 +f 21414 21281 21424 +f 21414 21424 21411 +f 21411 21424 21425 +f 21411 21425 21412 +f 21412 21425 21426 +f 21412 21426 21413 +f 21413 21426 21427 +f 21413 21427 21415 +f 21415 21427 21428 +f 21415 21428 21416 +f 21416 21428 21429 +f 21416 21429 21430 +f 21430 21429 21431 +f 21430 21431 21432 +f 21432 21431 21433 +f 21432 21433 21434 +f 21434 21433 21435 +f 21434 21435 21436 +f 21436 21435 21437 +f 21436 21437 21438 +f 21438 21437 21439 +f 21438 21439 21440 +f 21440 21439 21441 +f 21440 21441 21442 +f 21442 21441 21443 +f 21442 21443 21444 +f 21444 21443 21445 +f 21444 21445 21446 +f 21446 21445 21447 +f 21446 21447 21448 +f 21448 21447 21318 +f 21448 21318 21319 +f 21269 21330 21281 +f 21281 21330 21449 +f 21281 21449 21450 +f 21450 21449 21451 +f 21450 21451 21452 +f 21452 21451 21453 +f 21452 21453 21426 +f 21426 21453 21427 +f 21370 21454 21330 +f 21330 21454 21455 +f 21330 21455 21456 +f 21456 21455 21457 +f 21456 21457 21458 +f 21458 21457 21459 +f 21458 21459 21460 +f 21460 21459 21461 +f 21460 21461 21462 +f 21462 21461 21463 +f 21462 21463 21464 +f 21464 21463 21433 +f 21464 21433 21431 +f 21454 21370 21465 +f 21465 21370 21365 +f 21465 21365 21466 +f 21466 21365 21467 +f 21466 21467 21468 +f 21468 21467 21469 +f 21468 21469 21470 +f 21470 21469 21471 +f 21470 21471 21472 +f 21472 21471 21441 +f 21472 21441 21439 +f 21306 21316 21365 +f 21365 21316 21467 +f 21467 21316 21473 +f 21473 21316 21318 +f 21473 21318 21474 +f 21474 21318 21447 +f 21474 21447 21445 +f 21298 21475 21319 +f 21319 21475 21476 +f 21319 21476 21477 +f 21477 21476 21478 +f 21477 21478 21479 +f 21479 21478 21480 +f 21479 21480 21481 +f 21481 21480 21482 +f 21481 21482 21483 +f 21483 21482 21484 +f 21483 21484 21485 +f 21485 21484 21486 +f 21485 21486 21487 +f 21487 21486 21488 +f 21487 21488 21489 +f 21489 21488 21490 +f 21489 21490 21491 +f 21491 21490 21492 +f 21491 21492 21493 +f 21493 21492 21494 +f 21493 21494 21495 +f 21495 21494 21417 +f 21495 21417 21430 +f 21430 21417 21416 +f 21297 21496 21298 +f 21298 21496 21497 +f 21298 21497 21475 +f 21475 21497 21498 +f 21475 21498 21499 +f 21499 21498 21500 +f 21499 21500 21501 +f 21501 21500 21502 +f 21501 21502 21503 +f 21503 21502 21504 +f 21503 21504 21505 +f 21505 21504 21506 +f 21505 21506 21507 +f 21507 21506 21508 +f 21507 21508 21509 +f 21509 21508 21510 +f 21509 21510 21511 +f 21511 21510 21512 +f 21511 21512 21513 +f 21513 21512 21514 +f 21513 21514 21515 +f 21515 21514 21418 +f 21515 21418 21494 +f 21494 21418 21417 +f 21496 21297 21516 +f 21516 21297 21296 +f 21516 21296 21517 +f 21517 21296 21294 +f 21517 21294 21518 +f 21518 21294 21291 +f 21518 21291 21519 +f 21519 21291 21520 +f 21519 21520 21504 +f 21504 21520 21506 +f 21290 21521 21291 +f 21291 21521 21522 +f 21291 21522 21523 +f 21523 21522 21508 +f 21523 21508 21506 +f 21521 21290 21524 +f 21524 21290 21419 +f 21524 21419 21514 +f 21514 21419 21418 +f 21448 21319 21477 +f 21454 21465 21525 +f 21525 21465 21466 +f 21525 21466 21468 +f 21455 21454 21526 +f 21526 21454 21525 +f 21526 21525 21527 +f 21527 21525 21468 +f 21527 21468 21470 +f 21456 21528 21330 +f 21330 21528 21529 +f 21330 21529 21449 +f 21449 21529 21530 +f 21449 21530 21451 +f 21451 21530 21531 +f 21451 21531 21453 +f 21453 21531 21532 +f 21453 21532 21427 +f 21427 21532 21428 +f 21456 21458 21528 +f 21528 21458 21533 +f 21528 21533 21529 +f 21529 21533 21530 +f 21424 21281 21534 +f 21534 21281 21450 +f 21534 21450 21452 +f 21425 21424 21534 +f 21425 21534 21452 +f 21425 21452 21426 +f 21531 21535 21536 +f 21536 21535 21462 +f 21536 21462 21464 +f 21462 21535 21460 +f 21460 21535 21533 +f 21460 21533 21458 +f 21533 21535 21530 +f 21530 21535 21531 +f 21459 21537 21538 +f 21538 21537 21539 +f 21538 21539 21540 +f 21540 21539 21472 +f 21540 21472 21439 +f 21537 21527 21539 +f 21539 21527 21470 +f 21539 21470 21472 +f 21459 21457 21537 +f 21537 21457 21526 +f 21537 21526 21527 +f 21467 21473 21469 +f 21469 21473 21541 +f 21469 21541 21471 +f 21471 21541 21443 +f 21471 21443 21441 +f 21459 21538 21461 +f 21461 21538 21542 +f 21461 21542 21463 +f 21463 21542 21435 +f 21463 21435 21433 +f 21542 21538 21540 +f 21531 21536 21532 +f 21532 21536 21543 +f 21532 21543 21428 +f 21428 21543 21429 +f 21543 21536 21464 +f 21464 21431 21543 +f 21543 21431 21429 +f 21540 21439 21437 +f 21540 21437 21542 +f 21542 21437 21435 +f 21474 21445 21541 +f 21541 21445 21443 +f 21541 21473 21474 +f 21477 21479 21448 +f 21448 21479 21446 +f 21479 21481 21446 +f 21446 21481 21444 +f 21481 21483 21444 +f 21444 21483 21442 +f 21483 21485 21442 +f 21442 21485 21440 +f 21485 21487 21440 +f 21440 21487 21438 +f 21487 21489 21438 +f 21438 21489 21436 +f 21489 21491 21436 +f 21436 21491 21434 +f 21495 21430 21432 +f 21491 21493 21434 +f 21434 21493 21432 +f 21493 21495 21432 +f 21513 21515 21492 +f 21492 21515 21494 +f 21511 21513 21490 +f 21490 21513 21492 +f 21509 21511 21488 +f 21488 21511 21490 +f 21507 21509 21486 +f 21486 21509 21488 +f 21505 21507 21484 +f 21484 21507 21486 +f 21503 21505 21482 +f 21482 21505 21484 +f 21501 21503 21480 +f 21480 21503 21482 +f 21499 21501 21478 +f 21478 21501 21480 +f 21475 21499 21476 +f 21476 21499 21478 +f 21514 21512 21524 +f 21524 21512 21521 +f 21520 21291 21523 +f 21512 21510 21521 +f 21521 21510 21522 +f 21506 21520 21523 +f 21510 21508 21522 +f 21504 21502 21519 +f 21519 21502 21518 +f 21502 21500 21518 +f 21518 21500 21517 +f 21497 21496 21516 +f 21500 21498 21517 +f 21517 21498 21516 +f 21498 21497 21516 +f 21455 21526 21457 +f 21289 21275 21401 +f 21401 21275 21544 +f 21544 21275 21274 +f 21544 21274 21271 +f 21271 21408 21544 +f 21308 21545 21307 +f 21307 21545 21546 +f 21307 21546 21422 +f 21422 21546 21547 +f 21422 21547 21423 +f 21423 21547 21548 +f 21423 21548 21549 +f 21549 21548 21550 +f 21549 21550 21408 +f 21408 21550 21551 +f 21408 21551 21544 +f 21544 21551 21552 +f 21544 21552 21553 +f 21553 21552 21554 +f 21553 21554 21555 +f 21555 21554 21556 +f 21555 21556 21557 +f 21557 21556 21558 +f 21557 21558 21559 +f 21559 21558 21560 +f 21559 21560 21561 +f 21561 21560 21562 +f 21561 21562 21563 +f 21563 21562 21309 +f 21563 21309 21564 +f 21564 21309 21310 +f 21564 21310 21565 +f 21565 21310 21566 +f 21565 21566 21567 +f 21567 21566 21568 +f 21567 21568 21407 +f 21407 21568 21406 +f 21406 21568 21569 +f 21406 21569 21570 +f 21570 21569 21312 +f 21570 21312 21571 +f 21571 21312 21313 +f 21571 21313 21404 +f 21404 21313 21314 +f 21404 21314 21402 +f 21402 21314 21315 +f 21402 21315 21399 +f 21309 21562 21308 +f 21308 21562 21560 +f 21308 21560 21572 +f 21572 21560 21558 +f 21572 21558 21573 +f 21573 21558 21556 +f 21573 21556 21574 +f 21574 21556 21554 +f 21574 21554 21575 +f 21575 21554 21552 +f 21575 21552 21551 +f 21310 21311 21566 +f 21566 21311 21576 +f 21566 21576 21568 +f 21568 21576 21569 +f 21311 21312 21576 +f 21576 21312 21569 +f 21571 21404 21570 +f 21570 21404 21406 +f 21567 21407 21577 +f 21577 21407 21405 +f 21577 21405 21578 +f 21578 21405 21403 +f 21578 21403 21579 +f 21579 21403 21580 +f 21579 21580 21581 +f 21581 21580 21582 +f 21581 21582 21559 +f 21559 21582 21557 +f 21403 21400 21580 +f 21580 21400 21583 +f 21580 21583 21582 +f 21582 21583 21584 +f 21582 21584 21557 +f 21557 21584 21555 +f 21583 21400 21585 +f 21585 21400 21401 +f 21585 21401 21544 +f 21408 21423 21549 +f 21585 21544 21586 +f 21586 21544 21553 +f 21586 21553 21555 +f 21547 21546 21587 +f 21587 21546 21588 +f 21587 21588 21574 +f 21574 21588 21573 +f 21548 21547 21589 +f 21589 21547 21587 +f 21589 21587 21575 +f 21575 21587 21574 +f 21572 21573 21545 +f 21545 21573 21588 +f 21545 21588 21546 +f 21575 21551 21589 +f 21589 21551 21550 +f 21589 21550 21548 +f 21572 21545 21308 +f 21563 21564 21590 +f 21590 21564 21565 +f 21590 21565 21577 +f 21577 21565 21567 +f 21581 21559 21561 +f 21561 21563 21591 +f 21591 21563 21590 +f 21591 21590 21578 +f 21578 21590 21577 +f 21586 21555 21584 +f 21579 21581 21591 +f 21591 21581 21561 +f 21579 21591 21578 +f 21585 21586 21584 +f 21585 21584 21583 +f 21592 21593 21594 +f 21594 21593 21595 +f 21594 21595 21596 +f 21596 21595 21597 +f 21596 21597 21598 +f 21598 21597 21599 +f 21598 21599 21600 +f 21600 21599 21601 +f 21600 21601 21602 +f 21602 21601 21603 +f 21602 21603 21604 +f 21604 21603 21605 +f 21604 21605 21606 +f 21606 21605 21607 +f 21606 21607 21608 +f 21608 21607 21609 +f 21608 21609 21610 +f 21610 21609 21611 +f 21610 21611 21612 +f 21612 21611 21613 +f 21613 21611 21614 +f 21613 21614 21615 +f 21615 21614 21616 +f 21615 21616 21617 +f 21617 21616 21618 +f 21617 21618 21619 +f 21619 21618 21620 +f 21619 21620 21621 +f 21621 21620 21622 +f 21622 21620 21623 +f 21623 21620 21624 +f 21623 21624 21625 +f 21625 21624 21626 +f 21625 21626 21627 +f 21627 21626 21628 +f 21627 21628 21629 +f 21629 21628 21630 +f 21629 21630 21631 +f 21631 21630 21632 +f 21631 21632 21633 +f 21633 21632 21634 +f 21633 21634 21635 +f 21635 21634 21636 +f 21635 21636 21637 +f 21637 21636 21638 +f 21637 21638 21603 +f 21603 21638 21605 +f 21595 21639 21597 +f 21597 21639 21599 +f 21599 21639 21640 +f 21640 21639 21633 +f 21640 21633 21635 +f 21621 21641 21619 +f 21619 21641 21642 +f 21619 21642 21617 +f 21617 21642 21643 +f 21617 21643 21615 +f 21644 21645 21641 +f 21641 21645 21642 +f 21645 21646 21642 +f 21642 21646 21643 +f 21647 21648 21612 +f 21612 21648 21649 +f 21612 21649 21610 +f 21610 21649 21608 +f 21648 21647 21650 +f 21650 21647 21651 +f 21650 21651 21652 +f 21652 21653 21650 +f 21650 21653 21654 +f 21650 21654 21655 +f 21655 21654 21656 +f 21655 21656 21657 +f 21657 21656 21658 +f 21657 21658 21604 +f 21604 21658 21602 +f 21653 21659 21654 +f 21654 21659 21660 +f 21654 21660 21661 +f 21661 21660 21662 +f 21661 21662 21663 +f 21661 21663 21664 +f 21664 21663 21665 +f 21664 21665 21666 +f 21664 21666 21667 +f 21667 21666 21668 +f 21667 21668 21669 +f 21667 21669 21670 +f 21670 21669 21671 +f 21670 21671 21672 +f 21670 21672 21594 +f 21594 21672 21592 +f 21632 21630 21628 +f 21636 21634 21632 +f 21601 21599 21640 +f 21640 21635 21601 +f 21601 21635 21637 +f 21601 21637 21603 +f 21594 21596 21673 +f 21673 21596 21598 +f 21673 21598 21674 +f 21674 21598 21675 +f 21674 21675 21676 +f 21676 21675 21658 +f 21676 21658 21656 +f 21636 21632 21677 +f 21677 21632 21628 +f 21677 21628 21678 +f 21678 21628 21626 +f 21678 21626 21679 +f 21679 21626 21624 +f 21679 21624 21680 +f 21680 21624 21620 +f 21680 21620 21618 +f 21636 21677 21681 +f 21681 21677 21678 +f 21681 21678 21682 +f 21682 21678 21679 +f 21682 21679 21683 +f 21683 21679 21680 +f 21683 21680 21684 +f 21684 21680 21618 +f 21684 21618 21616 +f 21675 21598 21600 +f 21675 21600 21602 +f 21667 21670 21673 +f 21673 21670 21594 +f 21667 21673 21674 +f 21636 21681 21638 +f 21638 21681 21685 +f 21638 21685 21605 +f 21605 21685 21607 +f 21685 21681 21682 +f 21658 21675 21602 +f 21664 21667 21674 +f 21664 21674 21676 +f 21685 21682 21686 +f 21686 21682 21683 +f 21686 21683 21687 +f 21687 21683 21684 +f 21687 21684 21614 +f 21614 21684 21616 +f 21657 21604 21606 +f 21661 21664 21676 +f 21661 21676 21656 +f 21609 21607 21686 +f 21686 21607 21685 +f 21609 21686 21687 +f 21657 21606 21688 +f 21688 21606 21608 +f 21688 21608 21649 +f 21654 21661 21656 +f 21609 21687 21611 +f 21611 21687 21614 +f 21649 21648 21688 +f 21688 21648 21655 +f 21688 21655 21657 +f 21648 21650 21655 +f 21689 21690 21691 +f 21691 21690 21692 +f 21691 21692 21693 +f 21693 21692 21694 +f 21693 21694 21695 +f 21695 21694 21668 +f 21695 21668 21696 +f 21696 21668 21666 +f 21696 21666 21665 +f 21593 21592 21694 +f 21694 21592 21672 +f 21694 21672 21671 +f 21671 21669 21694 +f 21694 21669 21668 +f 21665 21663 21696 +f 21696 21663 21662 +f 21696 21662 21660 +f 21660 21659 21696 +f 21696 21659 21653 +f 21696 21653 21697 +f 21697 21653 21652 +f 21697 21652 21651 +f 21651 21647 21697 +f 21698 21693 21697 +f 21697 21693 21695 +f 21697 21695 21696 +f 21699 21700 21698 +f 21698 21700 21691 +f 21698 21691 21693 +f 21700 21701 21691 +f 21691 21701 21702 +f 21691 21702 21689 +f 21593 21694 21595 +f 21595 21694 21639 +f 21639 21694 21633 +f 21633 21692 21631 +f 21631 21692 21690 +f 21698 21646 21699 +f 21699 21645 21644 +f 21697 21615 21698 +f 21698 21643 21646 +f 21697 21613 21615 +f 21690 21689 21631 +f 21631 21689 21629 +f 21629 21689 21627 +f 21627 21689 21702 +f 21627 21702 21625 +f 21625 21702 21623 +f 21623 21702 21701 +f 21623 21701 21622 +f 21622 21701 21621 +f 21621 21701 21641 +f 21641 21701 21700 +f 21641 21700 21699 +f 21699 21644 21641 +f 21706 21704 21707 +f 21706 21707 21708 +f 21708 21707 21709 +f 21709 21707 21710 +f 21713 21712 21714 +f 21714 21712 21715 +f 21720 21719 21721 +f 21721 21719 21722 +f 21722 21719 21723 +f 21722 21723 21724 +f 21725 21726 21724 +f 21724 21726 21727 +f 21724 21727 21728 +f 21729 21730 21725 +f 21725 21730 21731 +f 21725 21731 21726 +f 21703 21705 21729 +f 21729 21705 21732 +f 21729 21732 21730 +f 21728 21722 21724 +f 21710 21707 21733 +f 21733 21707 21734 +f 21734 21707 21735 +f 21735 21707 21736 +f 21736 21707 21737 +f 21737 21707 21738 +f 21738 21707 21739 +f 21738 21739 21740 +f 21740 21739 21741 +f 21741 21739 21742 +f 21742 21739 21743 +f 21743 21739 21744 +f 21744 21739 21745 +f 21745 21739 21712 +f 21745 21712 21746 +f 21746 21712 21747 +f 21747 21712 21711 +f 21704 21748 21707 +f 21707 21748 21749 +f 21707 21749 21739 +f 21739 21749 21712 +f 21748 21704 21750 +f 21750 21704 21703 +f 21750 21703 21729 +f 21729 21725 21750 +f 21750 21725 21724 +f 21750 21724 21723 +f 21719 21716 21723 +f 21723 21716 21750 +f 21716 21712 21750 +f 21750 21712 21748 +f 21712 21749 21748 +f 21706 21751 21705 +f 21705 21751 21752 +f 21705 21752 21732 +f 21732 21752 21753 +f 21732 21753 21730 +f 21730 21753 21754 +f 21730 21754 21731 +f 21731 21754 21755 +f 21731 21755 21726 +f 21726 21755 21756 +f 21726 21756 21727 +f 21727 21756 21728 +f 21728 21756 21757 +f 21728 21757 21722 +f 21722 21757 21758 +f 21722 21758 21720 +f 21720 21758 21718 +f 21718 21758 21717 +f 21717 21758 21759 +f 21717 21759 21715 +f 21715 21759 21760 +f 21715 21760 21761 +f 21761 21760 21762 +f 21761 21762 21763 +f 21763 21762 21764 +f 21763 21764 21765 +f 21765 21764 21766 +f 21765 21766 21767 +f 21767 21766 21768 +f 21767 21768 21769 +f 21769 21768 21770 +f 21769 21770 21771 +f 21771 21770 21772 +f 21771 21772 21773 +f 21773 21772 21774 +f 21773 21774 21734 +f 21734 21774 21733 +f 21733 21774 21710 +f 21710 21774 21709 +f 21709 21774 21775 +f 21709 21775 21776 +f 21776 21775 21777 +f 21776 21777 21778 +f 21778 21777 21779 +f 21778 21779 21780 +f 21780 21779 21781 +f 21780 21781 21782 +f 21782 21781 21783 +f 21782 21783 21784 +f 21784 21783 21762 +f 21784 21762 21785 +f 21785 21762 21760 +f 21785 21760 21786 +f 21786 21760 21759 +f 21786 21759 21758 +f 21708 21787 21706 +f 21706 21787 21788 +f 21706 21788 21789 +f 21789 21788 21790 +f 21789 21790 21791 +f 21791 21790 21792 +f 21791 21792 21754 +f 21754 21792 21755 +f 21787 21708 21793 +f 21793 21708 21709 +f 21793 21709 21776 +f 21734 21735 21773 +f 21773 21735 21736 +f 21773 21736 21794 +f 21794 21736 21737 +f 21794 21737 21738 +f 21794 21738 21795 +f 21795 21738 21740 +f 21795 21740 21741 +f 21795 21741 21796 +f 21796 21741 21742 +f 21796 21742 21743 +f 21796 21743 21797 +f 21797 21743 21744 +f 21797 21744 21745 +f 21797 21745 21798 +f 21798 21745 21746 +f 21798 21746 21747 +f 21747 21711 21798 +f 21798 21711 21713 +f 21798 21713 21799 +f 21799 21713 21800 +f 21799 21800 21801 +f 21801 21800 21802 +f 21801 21802 21803 +f 21803 21802 21767 +f 21803 21767 21769 +f 21714 21763 21713 +f 21713 21763 21804 +f 21713 21804 21800 +f 21800 21804 21765 +f 21800 21765 21802 +f 21802 21765 21767 +f 21763 21714 21761 +f 21761 21714 21715 +f 21720 21721 21722 +f 21786 21758 21757 +f 21777 21775 21772 +f 21772 21775 21774 +f 21776 21778 21793 +f 21793 21778 21805 +f 21793 21805 21787 +f 21787 21805 21806 +f 21787 21806 21788 +f 21788 21806 21790 +f 21751 21706 21789 +f 21753 21752 21751 +f 21753 21751 21791 +f 21791 21751 21789 +f 21779 21777 21770 +f 21770 21777 21772 +f 21778 21780 21805 +f 21805 21780 21807 +f 21805 21807 21806 +f 21806 21807 21808 +f 21806 21808 21790 +f 21790 21808 21792 +f 21754 21753 21791 +f 21773 21794 21771 +f 21771 21794 21809 +f 21771 21809 21769 +f 21769 21809 21803 +f 21781 21779 21768 +f 21768 21779 21770 +f 21780 21782 21807 +f 21807 21782 21810 +f 21807 21810 21808 +f 21808 21810 21811 +f 21808 21811 21792 +f 21792 21811 21755 +f 21794 21795 21809 +f 21809 21795 21812 +f 21809 21812 21803 +f 21803 21812 21801 +f 21783 21781 21766 +f 21766 21781 21768 +f 21782 21784 21810 +f 21810 21784 21813 +f 21810 21813 21811 +f 21811 21813 21756 +f 21811 21756 21755 +f 21795 21796 21812 +f 21812 21796 21797 +f 21812 21797 21801 +f 21801 21797 21799 +f 21762 21783 21764 +f 21764 21783 21766 +f 21784 21785 21813 +f 21813 21785 21786 +f 21813 21786 21756 +f 21756 21786 21757 +f 21798 21799 21797 +f 21804 21763 21765 +f 21814 21815 21816 +f 21816 21815 21817 +f 21816 21817 21699 +f 21699 21817 21644 +f 21816 21699 21818 +f 21818 21699 21819 +f 21818 21819 21820 +f 21820 21821 21818 +f 21818 21821 21822 +f 21818 21822 21823 +f 21821 21824 21822 +f 21823 21825 21818 +f 21818 21825 21826 +f 21818 21826 21827 +f 21818 21827 21816 +f 21816 21827 21828 +f 21816 21828 21814 +f 21829 21830 21831 +f 21831 21830 21832 +f 21831 21832 21833 +f 21833 21834 21831 +f 21831 21834 21644 +f 21831 21644 21817 +f 21815 21835 21817 +f 21817 21835 21836 +f 21817 21836 21837 +f 21837 21836 21838 +f 21837 21838 21839 +f 21839 21838 21840 +f 21839 21840 21829 +f 21829 21840 21841 +f 21841 21840 21842 +f 21841 21842 21843 +f 21843 21842 21838 +f 21838 21842 21840 +f 21837 21839 21829 +f 21817 21837 21831 +f 21831 21837 21829 +f 21814 21828 21815 +f 21843 21823 21841 +f 21823 21822 21841 +f 21841 21822 21829 +f 21829 21822 21824 +f 21829 21824 21830 +f 21832 21824 21821 +f 21832 21821 21833 +f 21833 21821 21820 +f 21833 21820 21834 +f 21834 21820 21819 +f 21834 21819 21644 +f 21644 21819 21699 +f 21844 21845 21846 +f 21846 21845 21847 +f 21846 21847 21848 +f 21848 21847 21849 +f 21848 21850 21851 +f 21851 21850 21852 +f 21851 21852 21853 +f 21853 21852 21854 +f 21853 21854 21855 +f 21855 21854 21721 +f 21855 21721 21719 +f 21856 21857 21858 +f 21858 21857 21859 +f 21862 21863 21864 +f 21864 21865 21844 +f 21856 21866 21857 +f 21857 21866 21867 +f 21867 21866 21719 +f 21867 21719 21721 +f 21856 21858 21866 +f 21866 21858 21860 +f 21866 21860 21868 +f 21868 21860 21862 +f 21868 21862 21864 +f 21864 21844 21868 +f 21868 21844 21846 +f 21868 21846 21851 +f 21851 21846 21848 +f 21851 21853 21868 +f 21868 21853 21855 +f 21868 21855 21719 +f 21719 21866 21868 +f 21865 21869 21845 +f 21845 21869 21870 +f 21845 21870 21871 +f 21871 21870 21867 +f 21871 21867 21872 +f 21872 21867 21873 +f 21872 21873 21847 +f 21847 21873 21850 +f 21847 21850 21849 +f 21865 21863 21869 +f 21869 21863 21861 +f 21869 21861 21859 +f 21857 21867 21859 +f 21859 21867 21870 +f 21859 21870 21869 +f 21867 21721 21873 +f 21873 21721 21854 +f 21873 21854 21852 +f 21852 21850 21873 +f 21847 21845 21872 +f 21872 21845 21871 +f 21874 21875 21876 +f 21876 21875 21877 +f 21876 21877 21878 +f 21876 21878 21879 +f 21879 21878 21880 +f 21879 21880 21881 +f 21881 21880 21882 +f 21881 21882 21883 +f 21884 21885 21880 +f 21880 21885 21886 +f 21880 21886 21887 +f 21887 21888 21880 +f 21880 21888 21889 +f 21880 21889 21882 +f 21883 21890 21881 +f 21881 21890 21891 +f 21881 21891 21892 +f 21892 21893 21881 +f 21881 21893 21894 +f 21881 21894 21895 +f 21895 21896 21881 +f 21881 21896 21897 +f 21881 21897 21898 +f 21898 21897 21899 +f 21898 21899 21900 +f 21898 21900 21901 +f 21901 21900 21902 +f 21901 21902 21903 +f 21903 21902 21874 +f 21903 21874 21876 +f 21903 21876 21879 +f 21898 21901 21881 +f 21881 21901 21879 +f 21901 21903 21879 +f 21904 21905 21884 +f 21884 21905 21906 +f 21884 21906 21885 +f 21885 21906 21907 +f 21885 21907 21908 +f 21908 21907 21909 +f 21908 21909 21910 +f 21910 21909 21911 +f 21910 21911 21912 +f 21912 21911 21913 +f 21912 21913 21914 +f 21914 21913 21915 +f 21914 21915 21916 +f 21916 21915 21917 +f 21916 21917 21918 +f 21918 21917 21919 +f 21918 21919 21920 +f 21920 21919 21921 +f 21920 21921 21922 +f 21922 21921 21923 +f 21922 21923 21924 +f 21924 21923 21925 +f 21924 21925 21926 +f 21926 21925 21927 +f 21926 21927 21928 +f 21928 21927 21929 +f 21928 21929 21930 +f 21930 21929 21931 +f 21930 21931 21932 +f 21932 21931 21933 +f 21932 21933 21934 +f 21934 21933 21935 +f 21934 21935 21936 +f 21936 21935 21937 +f 21936 21937 21938 +f 21938 21937 21939 +f 21938 21939 21940 +f 21940 21939 21941 +f 21940 21941 21942 +f 21942 21941 21943 +f 21942 21943 21944 +f 21944 21943 21945 +f 21944 21945 21946 +f 21946 21945 21947 +f 21946 21947 21883 +f 21883 21947 21948 +f 21883 21948 21890 +f 21890 21948 21949 +f 21890 21949 21950 +f 21950 21949 21951 +f 21950 21951 21952 +f 21952 21951 21953 +f 21952 21953 21954 +f 21954 21953 21955 +f 21954 21955 21956 +f 21956 21955 21957 +f 21956 21957 21958 +f 21958 21957 21959 +f 21958 21959 21960 +f 21960 21959 21961 +f 21960 21961 21962 +f 21962 21961 21963 +f 21962 21963 21964 +f 21964 21963 21965 +f 21964 21965 21966 +f 21966 21965 21967 +f 21966 21967 21968 +f 21968 21967 21969 +f 21968 21969 21970 +f 21971 21972 21904 +f 21904 21972 21973 +f 21904 21973 21974 +f 21974 21973 21917 +f 21974 21917 21915 +f 21972 21971 21975 +f 21975 21971 21976 +f 21975 21976 21977 +f 21977 21976 21978 +f 21977 21978 21927 +f 21969 21979 21927 +f 21927 21979 21980 +f 21927 21980 21981 +f 21981 21980 21982 +f 21981 21982 21983 +f 21983 21982 21984 +f 21983 21984 21933 +f 21933 21984 21935 +f 21985 21986 21970 +f 21970 21986 21987 +f 21970 21987 21988 +f 21988 21987 21989 +f 21988 21989 21990 +f 21990 21989 21991 +f 21990 21991 21992 +f 21992 21991 21993 +f 21992 21993 21994 +f 21994 21993 21995 +f 21994 21995 21996 +f 21996 21995 21997 +f 21996 21997 21998 +f 21998 21997 21999 +f 21998 21999 22000 +f 22000 21999 22001 +f 22000 22001 22002 +f 22002 22001 22003 +f 22002 22003 22004 +f 22004 22003 22005 +f 22004 22005 22006 +f 22006 22005 21894 +f 22006 21894 22007 +f 22007 21894 21893 +f 22007 21893 22008 +f 22008 21893 22009 +f 22008 22009 22010 +f 22010 22009 22011 +f 22010 22011 22012 +f 22012 22011 22013 +f 22012 22013 22014 +f 22014 22013 22015 +f 22014 22015 22016 +f 22016 22015 22017 +f 22016 22017 22018 +f 22018 22017 21960 +f 22018 21960 21962 +f 22019 22020 21986 +f 21986 22020 22021 +f 21986 22021 22022 +f 22022 22021 22020 +f 22022 22020 22023 +f 22023 22020 22024 +f 22023 22024 22025 +f 22025 22024 22026 +f 22025 22026 22027 +f 22027 22026 22028 +f 22027 22028 22029 +f 22029 22028 22030 +f 22029 22030 22031 +f 22031 22030 22032 +f 22031 22032 22033 +f 22033 22032 22034 +f 22033 22034 22035 +f 22035 22034 22036 +f 22035 22036 22037 +f 22037 22036 22038 +f 22037 22038 22039 +f 22039 22038 21899 +f 22039 21899 21897 +f 22040 22030 22019 +f 22019 22030 22028 +f 22019 22028 22026 +f 21899 22038 22040 +f 22040 22038 22036 +f 22040 22036 22034 +f 21896 22041 21897 +f 21897 22041 22042 +f 21897 22042 22039 +f 22039 22042 22043 +f 22039 22043 22037 +f 22037 22043 22044 +f 22037 22044 22035 +f 22035 22044 22045 +f 22035 22045 22033 +f 22033 22045 22046 +f 22033 22046 22031 +f 22031 22046 22047 +f 22031 22047 22029 +f 22029 22047 22048 +f 22029 22048 22027 +f 22027 22048 22049 +f 22027 22049 22025 +f 22025 22049 22050 +f 22025 22050 22023 +f 22023 22050 22051 +f 22023 22051 22022 +f 22022 22051 21986 +f 21895 22052 21896 +f 21896 22052 22053 +f 21896 22053 22041 +f 22041 22053 22054 +f 22041 22054 22055 +f 22055 22054 22056 +f 22055 22056 22057 +f 22057 22056 22058 +f 22057 22058 22059 +f 22059 22058 22060 +f 22059 22060 22061 +f 22061 22060 22062 +f 22061 22062 22063 +f 22063 22062 22064 +f 22063 22064 22065 +f 22065 22064 22066 +f 22065 22066 22067 +f 22067 22066 22068 +f 22067 22068 22069 +f 22069 22068 22070 +f 22069 22070 22071 +f 22071 22070 21986 +f 22071 21986 22051 +f 21894 22005 21895 +f 21895 22005 22072 +f 21895 22072 22052 +f 22052 22072 22073 +f 22052 22073 22074 +f 22074 22073 22075 +f 22074 22075 22076 +f 22076 22075 22077 +f 22076 22077 22078 +f 22078 22077 22079 +f 22078 22079 22080 +f 22080 22079 22081 +f 22080 22081 22082 +f 22082 22081 22083 +f 22082 22083 22084 +f 22084 22083 22085 +f 22084 22085 22086 +f 22086 22085 22087 +f 22086 22087 22088 +f 22088 22087 22089 +f 22088 22089 22090 +f 22090 22089 21986 +f 22090 21986 22070 +f 21893 21892 22009 +f 22009 21892 22091 +f 22009 22091 22011 +f 22011 22091 22092 +f 22011 22092 22013 +f 22013 22092 22093 +f 22013 22093 22015 +f 22015 22093 22094 +f 22015 22094 22017 +f 22017 22094 21958 +f 22017 21958 21960 +f 21891 22095 21892 +f 21892 22095 22096 +f 21892 22096 22091 +f 22091 22096 22092 +f 21890 21950 21891 +f 21891 21950 22097 +f 21891 22097 22095 +f 22095 22097 22098 +f 22095 22098 22099 +f 22099 22098 22100 +f 22099 22100 22093 +f 22093 22100 22094 +f 21883 21882 21946 +f 21946 21882 22101 +f 21946 22101 21944 +f 21944 22101 22102 +f 21944 22102 21942 +f 21942 22102 22103 +f 21942 22103 21940 +f 21940 22103 22104 +f 21940 22104 21938 +f 21938 22104 22105 +f 21938 22105 21936 +f 21936 22105 22106 +f 21936 22106 21934 +f 21934 22106 22107 +f 21934 22107 21932 +f 21932 22107 22108 +f 21932 22108 21930 +f 21930 22108 22109 +f 21930 22109 21928 +f 21928 22109 21926 +f 22101 21882 22110 +f 22110 21882 21889 +f 22110 21889 22111 +f 22111 21889 22112 +f 22111 22112 22113 +f 22113 22112 22114 +f 22113 22114 22115 +f 22115 22114 22116 +f 22115 22116 22117 +f 22117 22116 22118 +f 22117 22118 22119 +f 22119 22118 22120 +f 22119 22120 22121 +f 22121 22120 22122 +f 22121 22122 22123 +f 22123 22122 21920 +f 22123 21920 21922 +f 21889 21888 22112 +f 22112 21888 22124 +f 22112 22124 22114 +f 22114 22124 22125 +f 22114 22125 22116 +f 22116 22125 22126 +f 22116 22126 22118 +f 22118 22126 22127 +f 22118 22127 22120 +f 22120 22127 22128 +f 22120 22128 22122 +f 22122 22128 21918 +f 22122 21918 21920 +f 22124 21888 22129 +f 22129 21888 21887 +f 22129 21887 22130 +f 22130 21887 22131 +f 22130 22131 22132 +f 22132 22131 22133 +f 22132 22133 22134 +f 22134 22133 21912 +f 22134 21912 21914 +f 21887 21886 22131 +f 22131 21886 22135 +f 22131 22135 22133 +f 22133 22135 21910 +f 22133 21910 21912 +f 22135 21886 21908 +f 21908 21886 21885 +f 22136 21969 22137 +f 22137 21969 22138 +f 22137 22138 22139 +f 22139 22138 22140 +f 22139 22140 22141 +f 22141 22140 22142 +f 22141 22142 22143 +f 22143 22142 21961 +f 22143 21961 21959 +f 21969 21967 22144 +f 22144 21967 21965 +f 22144 21965 22145 +f 22145 21965 21963 +f 22145 21963 22142 +f 22142 21963 21961 +f 21970 22146 21968 +f 21968 22146 22147 +f 21968 22147 21966 +f 21966 22147 22148 +f 21966 22148 21964 +f 21964 22148 22149 +f 21964 22149 21962 +f 21962 22149 22018 +f 22150 21970 22151 +f 22151 21970 22152 +f 22151 22152 22153 +f 22153 22152 22154 +f 22153 22154 22155 +f 22155 22154 22156 +f 22155 22156 22157 +f 22157 22156 21994 +f 22157 21994 21996 +f 21970 21988 22158 +f 22158 21988 21990 +f 22158 21990 22159 +f 22159 21990 21992 +f 22159 21992 22156 +f 22156 21992 21994 +f 21925 21923 21977 +f 21977 21923 21975 +f 21923 21921 21975 +f 21975 21921 21972 +f 21921 21919 21972 +f 21972 21919 21973 +f 21974 22160 21904 +f 21904 22160 22161 +f 21904 22161 22162 +f 22162 22161 21911 +f 22162 21911 21909 +f 21919 21917 21973 +f 21974 21915 22160 +f 22160 21915 21913 +f 22160 21913 22161 +f 22161 21913 21911 +f 21905 21904 22162 +f 21907 21906 21905 +f 21907 21905 21909 +f 21909 21905 22162 +f 22115 22163 22164 +f 22164 22163 22104 +f 22164 22104 22103 +f 22104 22163 22105 +f 22105 22163 22165 +f 22105 22165 22106 +f 22106 22165 22166 +f 22106 22166 22107 +f 22107 22166 22167 +f 22107 22167 22108 +f 22108 22167 22168 +f 22108 22168 22109 +f 22109 22168 21924 +f 22109 21924 21926 +f 22165 22163 22117 +f 22117 22163 22115 +f 21935 21984 22169 +f 22169 21984 22170 +f 22169 22170 22171 +f 22171 22170 22172 +f 22171 22172 22173 +f 22173 22172 22174 +f 22173 22174 22175 +f 22175 22174 22176 +f 22175 22176 22177 +f 22177 22176 22178 +f 22177 22178 22179 +f 22179 22178 22141 +f 22179 22141 22143 +f 21984 21982 22170 +f 22170 21982 22180 +f 22170 22180 22172 +f 22172 22180 22181 +f 22172 22181 22174 +f 22174 22181 22182 +f 22174 22182 22176 +f 22176 22182 22183 +f 22176 22183 22178 +f 22178 22183 22139 +f 22178 22139 22141 +f 21982 21980 22180 +f 22180 21980 21979 +f 22180 21979 22181 +f 22181 21979 22184 +f 22181 22184 22182 +f 22182 22184 22136 +f 22182 22136 22183 +f 22183 22136 22137 +f 22183 22137 22139 +f 21927 21981 22185 +f 22185 21981 21983 +f 22185 21983 21931 +f 21931 21983 21933 +f 21935 22169 21937 +f 21937 22169 22186 +f 21937 22186 21939 +f 21939 22186 22187 +f 21939 22187 21941 +f 21941 22187 22188 +f 21941 22188 21943 +f 21943 22188 22189 +f 21943 22189 21945 +f 21945 22189 22190 +f 21945 22190 21947 +f 21947 22190 21948 +f 22186 22169 22171 +f 22115 22164 22113 +f 22113 22164 22191 +f 22113 22191 22111 +f 22111 22191 22110 +f 22191 22164 22103 +f 21951 21949 22192 +f 22192 21949 21948 +f 22192 21948 22190 +f 21953 21951 22193 +f 22193 21951 22192 +f 22193 22192 22194 +f 22194 22192 22190 +f 22194 22190 22189 +f 21955 21953 22195 +f 22195 21953 22193 +f 22195 22193 22196 +f 22196 22193 22194 +f 22196 22194 22197 +f 22197 22194 22189 +f 22197 22189 22188 +f 21957 21955 22198 +f 22198 21955 22195 +f 22198 22195 22199 +f 22199 22195 22196 +f 22199 22196 22200 +f 22200 22196 22197 +f 22200 22197 22201 +f 22201 22197 22188 +f 22201 22188 22187 +f 21959 21957 22202 +f 22202 21957 22198 +f 22202 22198 22203 +f 22203 22198 22199 +f 22203 22199 22204 +f 22204 22199 22200 +f 22204 22200 22205 +f 22205 22200 22201 +f 22205 22201 22206 +f 22206 22201 22187 +f 22206 22187 22186 +f 21969 22144 22207 +f 22207 22144 22145 +f 22207 22145 22140 +f 22140 22145 22142 +f 21958 22094 21956 +f 21956 22094 22100 +f 21956 22100 21954 +f 21954 22100 22098 +f 21954 22098 21952 +f 21952 22098 22097 +f 21952 22097 21950 +f 22004 22006 22208 +f 22208 22006 22007 +f 22208 22007 22209 +f 22209 22007 22008 +f 22209 22008 22010 +f 22002 22004 22210 +f 22210 22004 22208 +f 22210 22208 22211 +f 22211 22208 22209 +f 22211 22209 22212 +f 22212 22209 22010 +f 22212 22010 22012 +f 22000 22002 22213 +f 22213 22002 22210 +f 22213 22210 22214 +f 22214 22210 22211 +f 22214 22211 22215 +f 22215 22211 22212 +f 22215 22212 22216 +f 22216 22212 22012 +f 22216 22012 22014 +f 21998 22000 22217 +f 22217 22000 22213 +f 22217 22213 22218 +f 22218 22213 22214 +f 22218 22214 22219 +f 22219 22214 22215 +f 22219 22215 22220 +f 22220 22215 22216 +f 22220 22216 22221 +f 22221 22216 22014 +f 22221 22014 22016 +f 21996 21998 22222 +f 22222 21998 22217 +f 22222 22217 22223 +f 22223 22217 22218 +f 22223 22218 22224 +f 22224 22218 22219 +f 22224 22219 22225 +f 22225 22219 22220 +f 22225 22220 22226 +f 22226 22220 22221 +f 22226 22221 22227 +f 22227 22221 22016 +f 22227 22016 22018 +f 21970 22158 22228 +f 22228 22158 22159 +f 22228 22159 22154 +f 22154 22159 22156 +f 22089 22087 21987 +f 21987 22087 21989 +f 22087 22085 21989 +f 21989 22085 21991 +f 22085 22083 21991 +f 21991 22083 21993 +f 22083 22081 21993 +f 21993 22081 21995 +f 22081 22079 21995 +f 21995 22079 21997 +f 22079 22077 21997 +f 21997 22077 21999 +f 22077 22075 21999 +f 21999 22075 22001 +f 22072 22005 22003 +f 22075 22073 22001 +f 22001 22073 22003 +f 22073 22072 22003 +f 22030 22040 22032 +f 22032 22040 22034 +f 22020 22019 22024 +f 22024 22019 22026 +f 22043 22042 22055 +f 22055 22042 22041 +f 22044 22043 22057 +f 22057 22043 22055 +f 22045 22044 22059 +f 22059 22044 22057 +f 22046 22045 22061 +f 22061 22045 22059 +f 22047 22046 22063 +f 22063 22046 22061 +f 22048 22047 22065 +f 22065 22047 22063 +f 22049 22048 22067 +f 22067 22048 22065 +f 22050 22049 22069 +f 22069 22049 22067 +f 22051 22050 22071 +f 22071 22050 22069 +f 21987 21986 22089 +f 22054 22053 22074 +f 22074 22053 22052 +f 22056 22054 22076 +f 22076 22054 22074 +f 22058 22056 22078 +f 22078 22056 22076 +f 22060 22058 22080 +f 22080 22058 22078 +f 22062 22060 22082 +f 22082 22060 22080 +f 22064 22062 22084 +f 22084 22062 22082 +f 22066 22064 22086 +f 22086 22064 22084 +f 22068 22066 22088 +f 22088 22066 22086 +f 22070 22068 22090 +f 22090 22068 22088 +f 21996 22222 22157 +f 22157 22222 22229 +f 22157 22229 22155 +f 22155 22229 22230 +f 22155 22230 22153 +f 22153 22230 22231 +f 22153 22231 22151 +f 22151 22231 22150 +f 22229 22222 22223 +f 22154 22152 22228 +f 22228 22152 21970 +f 22229 22223 22232 +f 22232 22223 22224 +f 22232 22224 22233 +f 22233 22224 22225 +f 22233 22225 22234 +f 22234 22225 22226 +f 22234 22226 22235 +f 22235 22226 22227 +f 22235 22227 22149 +f 22149 22227 22018 +f 22229 22232 22230 +f 22230 22232 22236 +f 22230 22236 22231 +f 22231 22236 22237 +f 22231 22237 22150 +f 22150 22237 22238 +f 22150 22238 21970 +f 21970 22238 22146 +f 22236 22232 22233 +f 22095 22099 22096 +f 22096 22099 22092 +f 22099 22093 22092 +f 22236 22233 22239 +f 22239 22233 22234 +f 22239 22234 22240 +f 22240 22234 22235 +f 22240 22235 22148 +f 22148 22235 22149 +f 22236 22239 22237 +f 22237 22239 22241 +f 22237 22241 22238 +f 22238 22241 22146 +f 22241 22239 22240 +f 22241 22240 22147 +f 22147 22240 22148 +f 22147 22146 22241 +f 22203 22179 22202 +f 22202 22179 22143 +f 22202 22143 21959 +f 22179 22203 22177 +f 22177 22203 22204 +f 22177 22204 22175 +f 22175 22204 22205 +f 22175 22205 22173 +f 22173 22205 22206 +f 22173 22206 22171 +f 22171 22206 22186 +f 21979 21969 22184 +f 22184 21969 22136 +f 21969 22207 22138 +f 22138 22207 22140 +f 22110 22191 22102 +f 22102 22191 22103 +f 22101 22110 22102 +f 22130 22242 22129 +f 22129 22242 22125 +f 22129 22125 22124 +f 22125 22242 22126 +f 22126 22242 22243 +f 22126 22243 22127 +f 22127 22243 22244 +f 22127 22244 22128 +f 22128 22244 21916 +f 22128 21916 21918 +f 22243 22242 22132 +f 22132 22242 22130 +f 22165 22117 22119 +f 22165 22119 22166 +f 22166 22119 22121 +f 22166 22121 22167 +f 22167 22121 22123 +f 22167 22123 22168 +f 22168 22123 21922 +f 22168 21922 21924 +f 21977 21927 21925 +f 21927 22185 21929 +f 21929 22185 21931 +f 22243 22132 22134 +f 21908 21910 22135 +f 22243 22134 22244 +f 22244 22134 21914 +f 22244 21914 21916 +f 21985 21970 21874 +f 21874 21970 21969 +f 21874 21969 21875 +f 21875 21969 21927 +f 21875 21927 21978 +f 21899 22040 21900 +f 21900 22040 22019 +f 21900 22019 21902 +f 21902 22019 21986 +f 21902 21986 21874 +f 21874 21986 21985 +f 21978 21976 21875 +f 21875 21976 21877 +f 21877 21976 21971 +f 21877 21971 21878 +f 21878 21971 21904 +f 21878 21904 21880 +f 21880 21904 21884 +f 22245 22246 22247 +f 22247 22246 22248 +f 22247 22248 22249 +f 22249 22248 22250 +f 22249 22250 22251 +f 22253 22254 22255 +f 22255 22254 22256 +f 22255 22256 22257 +f 22257 22258 22255 +f 19345 22259 22260 +f 22260 22259 22261 +f 22260 22261 22262 +f 22262 22261 22263 +f 22262 22263 22264 +f 22264 22263 22247 +f 22247 22263 22265 +f 22247 22265 22245 +f 19345 22260 22266 +f 22266 22260 22267 +f 22267 22260 22268 +f 22268 22260 22269 +f 22269 22260 22270 +f 22270 22260 22271 +f 22271 22260 22272 +f 22272 22260 22273 +f 22272 22273 22274 +f 22274 22273 22275 +f 22275 22273 22276 +f 22276 22273 22277 +f 22277 22273 22278 +f 22278 22273 22279 +f 22279 22273 22280 +f 22280 22273 22281 +f 22281 22273 22282 +f 22281 22282 22258 +f 22258 22282 22255 +f 22255 22282 22283 +f 22255 22283 22253 +f 22253 22283 22284 +f 22253 22284 22285 +f 22285 22284 22283 +f 22285 22283 22286 +f 22286 22283 22282 +f 22286 22282 22273 +f 22273 22260 22286 +f 22286 22260 22262 +f 22286 22262 22285 +f 22285 22262 22264 +f 22285 22264 22247 +f 22247 22249 22285 +f 22285 22249 22253 +f 22265 22287 22245 +f 22245 22287 22288 +f 22245 22288 22289 +f 22289 22288 22290 +f 22289 22290 22291 +f 22291 22290 22292 +f 22291 22292 22293 +f 22293 22292 22294 +f 22293 22294 22295 +f 22295 22294 22296 +f 22295 22296 22297 +f 22297 22296 22298 +f 22297 22298 22299 +f 22299 22298 22300 +f 22299 22300 22301 +f 22301 22300 22302 +f 22301 22302 22303 +f 22303 22302 22304 +f 22303 22304 22305 +f 22305 22304 22306 +f 22305 22306 22307 +f 22307 22306 22267 +f 22307 22267 22308 +f 22308 22267 22268 +f 22308 22268 22309 +f 22309 22268 22310 +f 22309 22310 22311 +f 22311 22310 22312 +f 22311 22312 22313 +f 22313 22312 22314 +f 22313 22314 22315 +f 22315 22314 22316 +f 22315 22316 22317 +f 22317 22316 22318 +f 22317 22318 22319 +f 22319 22318 22320 +f 22319 22320 22321 +f 22321 22320 22322 +f 22321 22322 22323 +f 22323 22322 22324 +f 22323 22324 22325 +f 22325 22324 22326 +f 22325 22326 22327 +f 22327 22326 22328 +f 22327 22328 22248 +f 22248 22328 22329 +f 22248 22329 22330 +f 22330 22329 22331 +f 22330 22331 22332 +f 22332 22331 22333 +f 22332 22333 22334 +f 22334 22333 22335 +f 22334 22335 22336 +f 22336 22335 22337 +f 22336 22337 22338 +f 22338 22337 22339 +f 22338 22339 22340 +f 22340 22339 22341 +f 22340 22341 22342 +f 22342 22341 22343 +f 22342 22343 22344 +f 22344 22343 22345 +f 22344 22345 22346 +f 22346 22345 22347 +f 22346 22347 22348 +f 22348 22347 22275 +f 22348 22275 22349 +f 22349 22275 22276 +f 22349 22276 22350 +f 22350 22276 22351 +f 22350 22351 22352 +f 22352 22351 22353 +f 22352 22353 22354 +f 22354 22353 22355 +f 22354 22355 22356 +f 22356 22355 22357 +f 22356 22357 22358 +f 22358 22357 22359 +f 22358 22359 22360 +f 22360 22359 22361 +f 22360 22361 22362 +f 22362 22361 22363 +f 22362 22363 22364 +f 22364 22363 22365 +f 22364 22365 22366 +f 22366 22365 22367 +f 22366 22367 22368 +f 22368 22367 22369 +f 22368 22369 22251 +f 22251 22369 22370 +f 22251 22370 22371 +f 22371 22370 22372 +f 22371 22372 22373 +f 22373 22372 22374 +f 22373 22374 22375 +f 22375 22374 22376 +f 22375 22376 22377 +f 22377 22376 22378 +f 22377 22378 22379 +f 22379 22378 22380 +f 22379 22380 22381 +f 22381 22380 22382 +f 22381 22382 22383 +f 22383 22382 22384 +f 22383 22384 22385 +f 22385 22384 22386 +f 22385 22386 22387 +f 22387 22386 22388 +f 22387 22388 22389 +f 22389 22388 22258 +f 22389 22258 22390 +f 22390 22258 22257 +f 22390 22257 22391 +f 22391 22257 22392 +f 22391 22392 22385 +f 22385 22392 22383 +f 22287 22265 22393 +f 22393 22265 22263 +f 22393 22263 22394 +f 22394 22263 22261 +f 22394 22261 22395 +f 22395 22261 22396 +f 22395 22396 22397 +f 22397 22396 22398 +f 22397 22398 22292 +f 22292 22398 22294 +f 22259 22399 22261 +f 22261 22399 22400 +f 22261 22400 22396 +f 22396 22400 22398 +f 19345 22401 22259 +f 22259 22401 22402 +f 22259 22402 22403 +f 22403 22402 22404 +f 22403 22404 22405 +f 22405 22404 22300 +f 22405 22300 22298 +f 19345 22266 22401 +f 22401 22266 22406 +f 22401 22406 22407 +f 22407 22406 22304 +f 22407 22304 22302 +f 22406 22266 22306 +f 22306 22266 22267 +f 22268 22269 22310 +f 22310 22269 22408 +f 22310 22408 22312 +f 22312 22408 22409 +f 22312 22409 22314 +f 22314 22409 22410 +f 22314 22410 22316 +f 22316 22410 22411 +f 22316 22411 22318 +f 22318 22411 22412 +f 22318 22412 22320 +f 22320 22412 22413 +f 22320 22413 22322 +f 22322 22413 22414 +f 22322 22414 22324 +f 22324 22414 22415 +f 22324 22415 22326 +f 22326 22415 22416 +f 22326 22416 22328 +f 22328 22416 22329 +f 22408 22269 22417 +f 22417 22269 22270 +f 22417 22270 22418 +f 22418 22270 22419 +f 22418 22419 22420 +f 22420 22419 22421 +f 22420 22421 22422 +f 22422 22421 22423 +f 22422 22423 22424 +f 22424 22423 22425 +f 22424 22425 22426 +f 22426 22425 22427 +f 22426 22427 22428 +f 22428 22427 22429 +f 22428 22429 22430 +f 22430 22429 22335 +f 22430 22335 22333 +f 22270 22271 22419 +f 22419 22271 22431 +f 22419 22431 22421 +f 22421 22431 22432 +f 22421 22432 22423 +f 22423 22432 22433 +f 22423 22433 22425 +f 22425 22433 22434 +f 22425 22434 22427 +f 22427 22434 22435 +f 22427 22435 22429 +f 22429 22435 22337 +f 22429 22337 22335 +f 22431 22271 22436 +f 22436 22271 22272 +f 22436 22272 22437 +f 22437 22272 22438 +f 22437 22438 22439 +f 22439 22438 22440 +f 22439 22440 22441 +f 22441 22440 22343 +f 22441 22343 22341 +f 22272 22274 22438 +f 22438 22274 22442 +f 22438 22442 22440 +f 22440 22442 22345 +f 22440 22345 22343 +f 22442 22274 22347 +f 22347 22274 22275 +f 22276 22277 22351 +f 22351 22277 22443 +f 22351 22443 22353 +f 22353 22443 22444 +f 22353 22444 22355 +f 22355 22444 22445 +f 22355 22445 22357 +f 22357 22445 22446 +f 22357 22446 22359 +f 22359 22446 22447 +f 22359 22447 22361 +f 22361 22447 22448 +f 22361 22448 22363 +f 22363 22448 22449 +f 22363 22449 22365 +f 22365 22449 22450 +f 22365 22450 22367 +f 22367 22450 22451 +f 22367 22451 22369 +f 22369 22451 22370 +f 22443 22277 22452 +f 22452 22277 22278 +f 22452 22278 22453 +f 22453 22278 22454 +f 22453 22454 22455 +f 22455 22454 22456 +f 22455 22456 22457 +f 22457 22456 22458 +f 22457 22458 22459 +f 22459 22458 22460 +f 22459 22460 22461 +f 22461 22460 22462 +f 22461 22462 22463 +f 22463 22462 22464 +f 22463 22464 22465 +f 22465 22464 22376 +f 22465 22376 22374 +f 22278 22279 22454 +f 22454 22279 22466 +f 22454 22466 22456 +f 22456 22466 22467 +f 22456 22467 22458 +f 22458 22467 22468 +f 22458 22468 22460 +f 22460 22468 22469 +f 22460 22469 22462 +f 22462 22469 22470 +f 22462 22470 22464 +f 22464 22470 22378 +f 22464 22378 22376 +f 22466 22279 22471 +f 22471 22279 22280 +f 22471 22280 22472 +f 22472 22280 22473 +f 22472 22473 22474 +f 22474 22473 22475 +f 22474 22475 22476 +f 22476 22475 22384 +f 22476 22384 22382 +f 22280 22281 22473 +f 22473 22281 22477 +f 22473 22477 22475 +f 22475 22477 22386 +f 22475 22386 22384 +f 22477 22281 22388 +f 22388 22281 22258 +f 22392 22257 22478 +f 22478 22257 22256 +f 22478 22256 22479 +f 22479 22256 22480 +f 22479 22480 22379 +f 22379 22480 22377 +f 22480 22256 22481 +f 22481 22256 22254 +f 22481 22254 22377 +f 22377 22254 22375 +f 22375 22254 22482 +f 22482 22254 22252 +f 22482 22252 22483 +f 22483 22252 22373 +f 22483 22373 22482 +f 22482 22373 22375 +f 22251 22484 22252 +f 22252 22484 22371 +f 22252 22371 22373 +f 22251 22250 22368 +f 22368 22250 22485 +f 22368 22485 22366 +f 22366 22485 22486 +f 22366 22486 22364 +f 22364 22486 22487 +f 22364 22487 22362 +f 22362 22487 22488 +f 22362 22488 22360 +f 22360 22488 22489 +f 22360 22489 22358 +f 22358 22489 22490 +f 22358 22490 22356 +f 22356 22490 22491 +f 22356 22491 22354 +f 22354 22491 22492 +f 22354 22492 22352 +f 22352 22492 22493 +f 22352 22493 22350 +f 22350 22493 22349 +f 22248 22494 22250 +f 22250 22494 22495 +f 22250 22495 22496 +f 22496 22495 22497 +f 22496 22497 22498 +f 22498 22497 22499 +f 22498 22499 22500 +f 22500 22499 22501 +f 22500 22501 22502 +f 22502 22501 22503 +f 22502 22503 22504 +f 22504 22503 22505 +f 22504 22505 22490 +f 22490 22505 22491 +f 22246 22506 22248 +f 22248 22506 22507 +f 22248 22507 22327 +f 22327 22507 22325 +f 22245 22289 22246 +f 22246 22289 22508 +f 22246 22508 22509 +f 22509 22508 22510 +f 22509 22510 22511 +f 22511 22510 22512 +f 22511 22512 22513 +f 22513 22512 22514 +f 22513 22514 22515 +f 22515 22514 22516 +f 22515 22516 22517 +f 22517 22516 22518 +f 22517 22518 22519 +f 22519 22518 22520 +f 22519 22520 22521 +f 22521 22520 22522 +f 22521 22522 22523 +f 22523 22522 22524 +f 22523 22524 22525 +f 22525 22524 22308 +f 22525 22308 22309 +f 22246 22526 22527 +f 22527 22526 22528 +f 22527 22528 22529 +f 22529 22528 22530 +f 22529 22530 22531 +f 22531 22530 22532 +f 22531 22532 22533 +f 22533 22532 22534 +f 22533 22534 22535 +f 22535 22534 22536 +f 22535 22536 22537 +f 22537 22536 22538 +f 22537 22538 22539 +f 22539 22538 22540 +f 22539 22540 22313 +f 22313 22540 22311 +f 22541 22246 22542 +f 22542 22246 22527 +f 22542 22527 22529 +f 22246 22543 22506 +f 22506 22543 22544 +f 22506 22544 22545 +f 22545 22544 22546 +f 22545 22546 22323 +f 22323 22546 22321 +f 22248 22547 22494 +f 22494 22547 22548 +f 22494 22548 22549 +f 22549 22548 22550 +f 22549 22550 22551 +f 22551 22550 22552 +f 22551 22552 22553 +f 22553 22552 22554 +f 22553 22554 22555 +f 22555 22554 22556 +f 22555 22556 22557 +f 22557 22556 22558 +f 22557 22558 22559 +f 22559 22558 22560 +f 22559 22560 22492 +f 22492 22560 22493 +f 22250 22496 22561 +f 22561 22496 22498 +f 22561 22498 22562 +f 22562 22498 22500 +f 22562 22500 22563 +f 22563 22500 22502 +f 22563 22502 22564 +f 22564 22502 22504 +f 22564 22504 22489 +f 22489 22504 22490 +f 22565 22250 22566 +f 22566 22250 22567 +f 22566 22567 22568 +f 22568 22567 22562 +f 22568 22562 22563 +f 22251 22371 22484 +f 22387 22389 22390 +f 22404 22402 22407 +f 22407 22402 22401 +f 22399 22259 22569 +f 22569 22259 22403 +f 22569 22403 22405 +f 22399 22569 22570 +f 22570 22569 22405 +f 22570 22405 22298 +f 22400 22399 22571 +f 22571 22399 22570 +f 22571 22570 22296 +f 22296 22570 22298 +f 22287 22393 22394 +f 22394 22395 22572 +f 22572 22395 22397 +f 22572 22397 22290 +f 22290 22397 22292 +f 22306 22304 22406 +f 22404 22407 22302 +f 22302 22300 22404 +f 22296 22294 22571 +f 22571 22294 22398 +f 22571 22398 22400 +f 22290 22288 22572 +f 22572 22288 22287 +f 22572 22287 22394 +f 22526 22246 22509 +f 22305 22307 22524 +f 22524 22307 22308 +f 22303 22305 22522 +f 22522 22305 22524 +f 22301 22303 22520 +f 22520 22303 22522 +f 22299 22301 22518 +f 22518 22301 22520 +f 22297 22299 22516 +f 22516 22299 22518 +f 22295 22297 22514 +f 22514 22297 22516 +f 22293 22295 22512 +f 22512 22295 22514 +f 22291 22293 22510 +f 22510 22293 22512 +f 22289 22291 22508 +f 22508 22291 22510 +f 22525 22309 22311 +f 22523 22525 22540 +f 22540 22525 22311 +f 22521 22523 22538 +f 22538 22523 22540 +f 22519 22521 22536 +f 22536 22521 22538 +f 22517 22519 22534 +f 22534 22519 22536 +f 22515 22517 22532 +f 22532 22517 22534 +f 22513 22515 22530 +f 22530 22515 22532 +f 22511 22513 22528 +f 22528 22513 22530 +f 22509 22511 22526 +f 22526 22511 22528 +f 22408 22417 22409 +f 22409 22417 22573 +f 22409 22573 22410 +f 22410 22573 22574 +f 22410 22574 22411 +f 22411 22574 22575 +f 22411 22575 22412 +f 22412 22575 22576 +f 22412 22576 22413 +f 22413 22576 22577 +f 22413 22577 22414 +f 22414 22577 22578 +f 22414 22578 22415 +f 22415 22578 22579 +f 22415 22579 22416 +f 22416 22579 22331 +f 22416 22331 22329 +f 22539 22313 22315 +f 22537 22539 22580 +f 22580 22539 22315 +f 22580 22315 22317 +f 22535 22537 22581 +f 22581 22537 22580 +f 22581 22580 22582 +f 22582 22580 22317 +f 22582 22317 22319 +f 22533 22535 22583 +f 22583 22535 22581 +f 22583 22581 22584 +f 22584 22581 22582 +f 22584 22582 22585 +f 22585 22582 22319 +f 22585 22319 22321 +f 22531 22533 22586 +f 22586 22533 22583 +f 22586 22583 22587 +f 22587 22583 22584 +f 22587 22584 22588 +f 22588 22584 22585 +f 22588 22585 22546 +f 22546 22585 22321 +f 22529 22531 22589 +f 22589 22531 22586 +f 22589 22586 22590 +f 22590 22586 22587 +f 22590 22587 22591 +f 22591 22587 22588 +f 22591 22588 22544 +f 22544 22588 22546 +f 22541 22542 22589 +f 22589 22542 22529 +f 22541 22589 22590 +f 22246 22541 22592 +f 22592 22541 22590 +f 22592 22590 22591 +f 22418 22420 22573 +f 22573 22420 22574 +f 22575 22574 22422 +f 22422 22574 22420 +f 22544 22543 22591 +f 22591 22543 22592 +f 22543 22246 22592 +f 22417 22418 22573 +f 22431 22436 22432 +f 22432 22436 22593 +f 22432 22593 22433 +f 22433 22593 22594 +f 22433 22594 22434 +f 22434 22594 22595 +f 22434 22595 22435 +f 22435 22595 22339 +f 22435 22339 22337 +f 22575 22422 22424 +f 22575 22424 22576 +f 22576 22424 22426 +f 22576 22426 22577 +f 22577 22426 22428 +f 22577 22428 22578 +f 22578 22428 22430 +f 22578 22430 22579 +f 22579 22430 22333 +f 22579 22333 22331 +f 22507 22506 22545 +f 22507 22545 22325 +f 22325 22545 22323 +f 22437 22439 22593 +f 22593 22439 22594 +f 22595 22594 22441 +f 22441 22594 22439 +f 22436 22437 22593 +f 22347 22345 22442 +f 22595 22441 22341 +f 22341 22339 22595 +f 22248 22330 22596 +f 22596 22330 22332 +f 22596 22332 22597 +f 22597 22332 22334 +f 22597 22334 22598 +f 22598 22334 22336 +f 22598 22336 22599 +f 22599 22336 22338 +f 22599 22338 22600 +f 22600 22338 22340 +f 22600 22340 22601 +f 22601 22340 22342 +f 22601 22342 22602 +f 22602 22342 22344 +f 22602 22344 22603 +f 22603 22344 22346 +f 22603 22346 22604 +f 22604 22346 22348 +f 22604 22348 22349 +f 22349 22493 22604 +f 22604 22493 22560 +f 22604 22560 22603 +f 22603 22560 22558 +f 22603 22558 22602 +f 22602 22558 22556 +f 22602 22556 22601 +f 22601 22556 22554 +f 22601 22554 22600 +f 22600 22554 22552 +f 22600 22552 22599 +f 22599 22552 22550 +f 22599 22550 22598 +f 22598 22550 22548 +f 22598 22548 22597 +f 22597 22548 22547 +f 22597 22547 22596 +f 22596 22547 22248 +f 22492 22491 22559 +f 22559 22491 22505 +f 22559 22505 22557 +f 22557 22505 22503 +f 22557 22503 22555 +f 22555 22503 22501 +f 22555 22501 22553 +f 22553 22501 22499 +f 22553 22499 22551 +f 22551 22499 22497 +f 22551 22497 22549 +f 22549 22497 22495 +f 22549 22495 22494 +f 22443 22452 22444 +f 22444 22452 22605 +f 22444 22605 22445 +f 22445 22605 22606 +f 22445 22606 22446 +f 22446 22606 22607 +f 22446 22607 22447 +f 22447 22607 22608 +f 22447 22608 22448 +f 22448 22608 22609 +f 22448 22609 22449 +f 22449 22609 22610 +f 22449 22610 22450 +f 22450 22610 22611 +f 22450 22611 22451 +f 22451 22611 22372 +f 22451 22372 22370 +f 22453 22455 22605 +f 22605 22455 22606 +f 22607 22606 22457 +f 22457 22606 22455 +f 22564 22489 22488 +f 22563 22564 22612 +f 22612 22564 22488 +f 22612 22488 22487 +f 22563 22612 22568 +f 22568 22612 22613 +f 22568 22613 22566 +f 22566 22613 22565 +f 22613 22612 22487 +f 22561 22562 22567 +f 22250 22561 22567 +f 22452 22453 22605 +f 22466 22471 22467 +f 22467 22471 22614 +f 22467 22614 22468 +f 22468 22614 22615 +f 22468 22615 22469 +f 22469 22615 22616 +f 22469 22616 22470 +f 22470 22616 22380 +f 22470 22380 22378 +f 22607 22457 22459 +f 22607 22459 22608 +f 22608 22459 22461 +f 22608 22461 22609 +f 22609 22461 22463 +f 22609 22463 22610 +f 22610 22463 22465 +f 22610 22465 22611 +f 22611 22465 22374 +f 22611 22374 22372 +f 22613 22487 22486 +f 22613 22486 22565 +f 22565 22486 22485 +f 22565 22485 22250 +f 22472 22474 22614 +f 22614 22474 22615 +f 22616 22615 22476 +f 22476 22615 22474 +f 22471 22472 22614 +f 22388 22386 22477 +f 22616 22476 22382 +f 22382 22380 22616 +f 22377 22480 22481 +f 22383 22392 22478 +f 22379 22381 22479 +f 22479 22381 22478 +f 22381 22383 22478 +f 22387 22390 22391 +f 22387 22391 22385 +f 22617 22618 22619 +f 22619 22618 22620 +f 22620 22618 22621 +f 22621 22618 22622 +f 22622 22618 22623 +f 22623 22618 22624 +f 22623 22624 22625 +f 22626 22627 22618 +f 22618 22627 22628 +f 22618 22628 22624 +f 22626 22629 22627 +f 22627 22629 22630 +f 22627 22630 22631 +f 22631 22632 22627 +f 22627 22632 22633 +f 22627 22633 22634 +f 22635 22636 22634 +f 22634 22636 22637 +f 22634 22637 22638 +f 22639 22640 22635 +f 22635 22640 22641 +f 22635 22641 22636 +f 22640 22639 22642 +f 22642 22639 22643 +f 22642 22643 22644 +f 22642 22644 22645 +f 22645 22644 22646 +f 22645 22646 22647 +f 22638 22648 22634 +f 22634 22648 22649 +f 22634 22649 22650 +f 22650 22651 22634 +f 22634 22651 22627 +f 22625 22652 22623 +f 22623 22652 22653 +f 22653 22652 22654 +f 22654 22652 22655 +f 22654 22655 22656 +f 22657 22658 22656 +f 22656 22658 22659 +f 22656 22659 22654 +f 22657 22660 22658 +f 22658 22660 22661 +f 22658 22661 22662 +f 22662 22661 22663 +f 22662 22663 22664 +f 22662 22664 22665 +f 22665 22664 22666 +f 22665 22666 22667 +f 22667 22666 22668 +f 22667 22668 22669 +f 22669 22670 22667 +f 22667 22670 22671 +f 22667 22671 22672 +f 21821 22673 21824 +f 21824 22673 22674 +f 21824 22674 22675 +f 22675 22674 22676 +f 22675 22676 22677 +f 22677 22676 22678 +f 22677 22678 22674 +f 22674 22678 22676 +f 21821 21820 22673 +f 22673 21820 21819 +f 22673 21819 21699 +f 22673 21699 22679 +f 22679 21699 21698 +f 22679 21698 21697 +f 22679 21697 22680 +f 22680 21697 21647 +f 22680 21647 22681 +f 22682 22683 22677 +f 22677 22683 22684 +f 22677 22684 22685 +f 22685 22684 22682 +f 22685 22682 22686 +f 22686 22682 22687 +f 22686 22687 18380 +f 18380 22687 22688 +f 18380 22688 18384 +f 18384 22688 22682 +f 22682 22688 22687 +f 18378 22689 18380 +f 18380 22689 22690 +f 18380 22690 22686 +f 22686 22690 22691 +f 22686 22691 22692 +f 22692 22691 22693 +f 22692 22693 22694 +f 22694 22693 22695 +f 22694 22695 22696 +f 22696 22695 22697 +f 22696 22697 22698 +f 22698 22697 22699 +f 22699 22697 22700 +f 22699 22700 22701 +f 22701 22700 22702 +f 22701 22702 22703 +f 22703 22702 22704 +f 22703 22704 22705 +f 22705 22704 22706 +f 22705 22706 22632 +f 22632 22706 22707 +f 22632 22707 22708 +f 22708 22707 22633 +f 22708 22633 22709 +f 22709 22633 22632 +f 22709 22632 22708 +f 18377 22710 18378 +f 18378 22710 22711 +f 18378 22711 22712 +f 22712 22711 22713 +f 22712 22713 22714 +f 22714 22713 20758 +f 22714 20758 20823 +f 18370 22715 18377 +f 18377 22715 22716 +f 18377 22716 22717 +f 22717 22716 22718 +f 22717 22718 22719 +f 22719 22718 20758 +f 22719 20758 22713 +f 18368 22720 18370 +f 18370 22720 22721 +f 18370 22721 22716 +f 22716 22721 22718 +f 22720 18368 22722 +f 22722 18368 18379 +f 22722 18379 22723 +f 22723 18379 22724 +f 22723 22724 18361 +f 18361 22724 18379 +f 18359 22725 18361 +f 18361 22725 22726 +f 18361 22726 22727 +f 22727 22726 18359 +f 22727 18359 22728 +f 22728 18359 22729 +f 22728 22729 18357 +f 18357 22729 22730 +f 22730 18359 18357 +f 18357 18355 22728 +f 22728 18355 22731 +f 22728 22731 20858 +f 20858 22731 20860 +f 20860 22731 22732 +f 20860 22732 20862 +f 20862 22732 22733 +f 20862 22733 20864 +f 20864 22733 22734 +f 20864 22734 20872 +f 20872 22734 22735 +f 20872 22735 22736 +f 22736 22735 18336 +f 22736 18336 18331 +f 18353 22737 18355 +f 18355 22737 22738 +f 18355 22738 22731 +f 22731 22738 18353 +f 22731 18353 22732 +f 22732 18353 18350 +f 22732 18350 22733 +f 22733 18350 22739 +f 22733 22739 18349 +f 18349 22739 18350 +f 18351 22740 18349 +f 18349 22740 22734 +f 18349 22734 22733 +f 18341 22741 18351 +f 18351 22741 22734 +f 18351 22734 22740 +f 22741 18341 22735 +f 22735 18341 18336 +f 18324 22742 18331 +f 18331 22742 22743 +f 18331 22743 22736 +f 22736 22743 20874 +f 22736 20874 20872 +f 18319 22744 18324 +f 18324 22744 22745 +f 18324 22745 22746 +f 22746 22745 20885 +f 22746 20885 20881 +f 18318 22747 18319 +f 18319 22747 22748 +f 18319 22748 22749 +f 22749 22748 22750 +f 22749 22750 20889 +f 20889 22750 22751 +f 20889 22751 20896 +f 20896 22751 22752 +f 20896 22752 20899 +f 20899 22752 22753 +f 20899 22753 22754 +f 22754 22753 22755 +f 22754 22755 22756 +f 22756 22755 22757 +f 22756 22757 22758 +f 22758 22757 22759 +f 22758 22759 22760 +f 22760 22759 22761 +f 22760 22761 22762 +f 22762 22761 22763 +f 22762 22763 22764 +f 22764 22763 22765 +f 22764 22765 22766 +f 22766 22765 22767 +f 22766 22767 22768 +f 22768 22767 22769 +f 22768 22769 22770 +f 22770 22769 22771 +f 22770 22771 22772 +f 22772 22771 22773 +f 22772 22773 22774 +f 22774 22773 22775 +f 22774 22775 22776 +f 22776 22775 21841 +f 22776 21841 22777 +f 22777 21841 21843 +f 22777 21843 21838 +f 18317 22778 18318 +f 18318 22778 22779 +f 18318 22779 22780 +f 22780 22779 22781 +f 22780 22781 22752 +f 22752 22781 22753 +f 18315 22782 18317 +f 18317 22782 22783 +f 18317 22783 22781 +f 22781 22783 22753 +f 22782 18315 22784 +f 22784 18315 22785 +f 22784 22785 22786 +f 22786 22785 22787 +f 22786 22787 22788 +f 22788 22787 22789 +f 22788 22789 22790 +f 22790 22789 22791 +f 22790 22791 22761 +f 22761 22791 22763 +f 22787 22792 22789 +f 22789 22792 22793 +f 22789 22793 22791 +f 22791 22793 22794 +f 22791 22794 22763 +f 22763 22794 22765 +f 22793 22792 22795 +f 22795 22792 22796 +f 22795 22796 22797 +f 22797 22796 22798 +f 22797 22798 22799 +f 22799 22798 22800 +f 22799 22800 22769 +f 22769 22800 22771 +f 22796 22801 22798 +f 22798 22801 22802 +f 22798 22802 22800 +f 22800 22802 22803 +f 22800 22803 22771 +f 22771 22803 22773 +f 22802 22801 22804 +f 22804 22801 22805 +f 22804 22805 21830 +f 21830 22805 21832 +f 21832 22805 22806 +f 21832 22806 21833 +f 21833 22806 21834 +f 21834 22806 22807 +f 21834 22807 21644 +f 21644 22807 22808 +f 21644 22808 21645 +f 21645 22808 21646 +f 21646 22808 21643 +f 21643 22808 22809 +f 21643 22809 21615 +f 21615 22809 21613 +f 21613 22809 21612 +f 21612 22809 22681 +f 21612 22681 21647 +f 22805 22807 22806 +f 22804 21830 22810 +f 22810 21830 21829 +f 22810 21829 22775 +f 22775 21829 21841 +f 21838 21836 22777 +f 22777 21836 22811 +f 22777 22811 22812 +f 22812 22811 22813 +f 22812 22813 22814 +f 22814 22813 22815 +f 22814 22815 22816 +f 22816 22815 22817 +f 22816 22817 22818 +f 22818 22817 22819 +f 22818 22819 22820 +f 22820 22819 22821 +f 22820 22821 22822 +f 22822 22821 22823 +f 22822 22823 22654 +f 22654 22823 22824 +f 22654 22824 22653 +f 22653 22824 21631 +f 22653 21631 22623 +f 22623 21631 22825 +f 22623 22825 22826 +f 22826 22825 21631 +f 22826 21631 22827 +f 22827 21631 21639 +f 22827 21639 22620 +f 22620 21639 21595 +f 22620 21595 22619 +f 22619 21595 21593 +f 22619 21593 22617 +f 21836 21835 22811 +f 22811 21835 21815 +f 22813 22828 22815 +f 22815 22828 22817 +f 22828 22829 22817 +f 22817 22829 22819 +f 22829 22830 22819 +f 22819 22830 22821 +f 22821 22830 22823 +f 22823 22830 21631 +f 22823 21631 22824 +f 21631 21633 21639 +f 22620 22621 22827 +f 22827 22621 22622 +f 22827 22622 22826 +f 22826 22622 22623 +f 22822 22654 22831 +f 22831 22654 22659 +f 22831 22659 22658 +f 22662 22832 22658 +f 22658 22832 22822 +f 22658 22822 22831 +f 22832 22662 22833 +f 22833 22662 22665 +f 22833 22665 22834 +f 22834 22665 22667 +f 22834 22667 22835 +f 22835 22667 22836 +f 22835 22836 22837 +f 22837 22836 22838 +f 22837 22838 22839 +f 22839 22838 22840 +f 22839 22840 22841 +f 22841 22840 22842 +f 22841 22842 22843 +f 22843 22842 22844 +f 22843 22844 22845 +f 22845 22844 22846 +f 22845 22846 22847 +f 22847 22846 22848 +f 22847 22848 22770 +f 22770 22848 22768 +f 22667 22672 22836 +f 22836 22672 22849 +f 22836 22849 22838 +f 22838 22849 22850 +f 22838 22850 22840 +f 22840 22850 22851 +f 22840 22851 22842 +f 22842 22851 22852 +f 22842 22852 22844 +f 22844 22852 22853 +f 22844 22853 22846 +f 22846 22853 22854 +f 22846 22854 22848 +f 22848 22854 22855 +f 22848 22855 22768 +f 22768 22855 22766 +f 22672 22671 22849 +f 22849 22671 22856 +f 22849 22856 22857 +f 22857 22856 22858 +f 22857 22858 22859 +f 22859 22858 22860 +f 22859 22860 22861 +f 22861 22860 22862 +f 22861 22862 22863 +f 22863 22862 22864 +f 22863 22864 22865 +f 22865 22864 22866 +f 22865 22866 22867 +f 22867 22866 22868 +f 22867 22868 22869 +f 22869 22868 22870 +f 22869 22870 22871 +f 22871 22870 22872 +f 22871 22872 22873 +f 22873 22872 22874 +f 22873 22874 22758 +f 22758 22874 22756 +f 22671 22670 22856 +f 22856 22670 22858 +f 22670 22669 22858 +f 22858 22669 22860 +f 22669 22668 22860 +f 22860 22668 22862 +f 22668 22666 22862 +f 22862 22666 22875 +f 22862 22875 22864 +f 22864 22875 22876 +f 22864 22876 22877 +f 22877 22876 20675 +f 22877 20675 20677 +f 22666 22664 22875 +f 22875 22664 22876 +f 22664 22663 22876 +f 22876 22663 22878 +f 22876 22878 20675 +f 20675 22878 22879 +f 20675 22879 20673 +f 20673 22879 22880 +f 22880 22879 22878 +f 22663 22661 22878 +f 22878 22661 22881 +f 22878 22881 22880 +f 22880 22881 20673 +f 22661 22660 22881 +f 22881 22660 22882 +f 22881 22882 20673 +f 20673 22882 22883 +f 22883 22884 20765 +f 20765 22884 22885 +f 20765 22885 22886 +f 22886 22885 22655 +f 22886 22655 22652 +f 22660 22657 22882 +f 22882 22657 22656 +f 22882 22656 22885 +f 22885 22656 22655 +f 22886 22652 22887 +f 22887 22652 22625 +f 22887 22625 22888 +f 22888 22625 22624 +f 22888 22624 22889 +f 22889 22624 22628 +f 22889 22628 22890 +f 22890 22628 22891 +f 22890 22891 20783 +f 20783 22891 20786 +f 20786 22891 22892 +f 20786 22892 22893 +f 22893 22892 20788 +f 22893 20788 20786 +f 22628 22627 22891 +f 22891 22627 22892 +f 22627 22651 22892 +f 22892 22651 22650 +f 22892 22650 22894 +f 22894 22650 22649 +f 22894 22649 22895 +f 22895 22649 22648 +f 22895 22648 22896 +f 22896 22648 22638 +f 22896 22638 22637 +f 22896 22637 22897 +f 22897 22637 22636 +f 22897 22636 22898 +f 22898 22636 22899 +f 22898 22899 20800 +f 20800 22899 22900 +f 20800 22900 22901 +f 22901 22900 20803 +f 22901 20803 20800 +f 22899 22636 22902 +f 22902 22636 22641 +f 22902 22641 22899 +f 22899 22641 22903 +f 22899 22903 22904 +f 22904 22903 22642 +f 22904 22642 22905 +f 22905 22642 22906 +f 22905 22906 22907 +f 22907 22906 22645 +f 22907 22645 22908 +f 22908 22645 22647 +f 22908 22647 22909 +f 22909 22647 22646 +f 22909 22646 22910 +f 22910 22646 22644 +f 22910 22644 22643 +f 22641 22640 22903 +f 22903 22640 22642 +f 22642 22645 22906 +f 22639 22911 22643 +f 22643 22911 22912 +f 22643 22912 22910 +f 22910 22912 22913 +f 22910 22913 22909 +f 22909 22913 22914 +f 22909 22914 22908 +f 22908 22914 22915 +f 22908 22915 22907 +f 22907 22915 22905 +f 22911 22639 22916 +f 22916 22639 22635 +f 22916 22635 22911 +f 22911 22635 22917 +f 22911 22917 22918 +f 22918 22917 22919 +f 22918 22919 22920 +f 22920 22919 22633 +f 22920 22633 22921 +f 22921 22633 22704 +f 22921 22704 22922 +f 22922 22704 22702 +f 22922 22702 22923 +f 22923 22702 22700 +f 22923 22700 22924 +f 22924 22700 22697 +f 22924 22697 22695 +f 22917 22635 22925 +f 22925 22635 22634 +f 22925 22634 22917 +f 22917 22634 22919 +f 22633 22926 22634 +f 22634 22926 22927 +f 22634 22927 22919 +f 22919 22927 22633 +f 22631 22928 22632 +f 22632 22928 22929 +f 22632 22929 22930 +f 22930 22929 22631 +f 22930 22631 22931 +f 22931 22631 22932 +f 22931 22932 21690 +f 21690 22932 22933 +f 21690 22933 21692 +f 21692 22933 22630 +f 21692 22630 21694 +f 21694 22630 22629 +f 21694 22629 22626 +f 22932 22631 22933 +f 22933 22631 22630 +f 22626 22618 21694 +f 21694 22618 22617 +f 21694 22617 21593 +f 22931 21690 22934 +f 22934 21690 22935 +f 22934 22935 22936 +f 22936 22935 22699 +f 22936 22699 22703 +f 22703 22699 22701 +f 21814 21828 22698 +f 22698 21828 21827 +f 22698 21827 22937 +f 22937 21827 21826 +f 22937 21826 22938 +f 22938 21826 21825 +f 22938 21825 21823 +f 21822 22939 21823 +f 21823 22939 22694 +f 21823 22694 22696 +f 22939 21822 22675 +f 22675 21822 21824 +f 20819 22911 20821 +f 20821 22911 22940 +f 20821 22940 22941 +f 22941 22940 22942 +f 22941 22942 22943 +f 22943 22942 22944 +f 22943 22944 22945 +f 22945 22944 22946 +f 22945 22946 22947 +f 22947 22946 22948 +f 22947 22948 22949 +f 22949 22948 22924 +f 22949 22924 22950 +f 22950 22924 22695 +f 22950 22695 22693 +f 20815 22951 20819 +f 20819 22951 22952 +f 20819 22952 22912 +f 22912 22952 22913 +f 20813 22953 20815 +f 20815 22953 22954 +f 20815 22954 22952 +f 22952 22954 22913 +f 20811 22955 20813 +f 20813 22955 22956 +f 20813 22956 22957 +f 22957 22956 22915 +f 22957 22915 22914 +f 20809 22958 20811 +f 20811 22958 22959 +f 20811 22959 22960 +f 22960 22959 20809 +f 22960 20809 20807 +f 20805 22961 20807 +f 22961 20805 22962 +f 22962 20805 22904 +f 22962 22904 20807 +f 20807 22904 22905 +f 20807 22905 22960 +f 22960 22905 20811 +f 20803 22900 20805 +f 20805 22900 22899 +f 20805 22899 22904 +f 20798 22963 20800 +f 20800 22963 22964 +f 20800 22964 22898 +f 22898 22964 20798 +f 22898 20798 22896 +f 22896 20798 20796 +f 22896 20796 22965 +f 22965 20796 20794 +f 22965 20794 22896 +f 22896 20794 22895 +f 20794 20792 22895 +f 22895 20792 22966 +f 22895 22966 22967 +f 22967 22966 20790 +f 22967 20790 22894 +f 22894 20790 20788 +f 22894 20788 22892 +f 20792 20790 22966 +f 22890 20783 22968 +f 22968 20783 20781 +f 22968 20781 22890 +f 22890 20781 22889 +f 22889 20781 22969 +f 22969 20781 20778 +f 22969 20778 22889 +f 22889 20778 22888 +f 20774 22970 20778 +f 20778 22970 22888 +f 22888 22970 20774 +f 22888 20774 22887 +f 22887 20774 22971 +f 22887 22971 20769 +f 20769 22971 20774 +f 22887 20769 22886 +f 22886 20769 20765 +f 20765 20673 22883 +f 20907 22972 20677 +f 20677 22972 22973 +f 20677 22973 22877 +f 22877 22973 22866 +f 22877 22866 22864 +f 20899 22974 20907 +f 20907 22974 22975 +f 20907 22975 22972 +f 22972 22975 22870 +f 22972 22870 22868 +f 22749 20889 22745 +f 22745 20889 20885 +f 22746 20881 22743 +f 22743 20881 20874 +f 20858 20853 22728 +f 22728 20853 20846 +f 22728 20846 22976 +f 22976 20846 20841 +f 22976 20841 22977 +f 22977 20841 20835 +f 22977 20835 22978 +f 22978 20835 20827 +f 22978 20827 20824 +f 20758 22718 20824 +f 20824 22718 22721 +f 20824 22721 22978 +f 22978 22721 22720 +f 22978 22720 22722 +f 20754 22979 20823 +f 20823 22979 22980 +f 20823 22980 22714 +f 22714 22980 22690 +f 22714 22690 22689 +f 22979 20754 22981 +f 22981 20754 20752 +f 22981 20752 22982 +f 22982 20752 22983 +f 22982 22983 22984 +f 22984 22983 22947 +f 22984 22947 22949 +f 20752 20822 22983 +f 22983 20822 22945 +f 22983 22945 22947 +f 22945 20822 22943 +f 22943 20822 20821 +f 22943 20821 22941 +f 22898 22896 22897 +f 20798 22964 22963 +f 22915 22956 20811 +f 20811 22956 22955 +f 20815 22952 22951 +f 18353 22738 22737 +f 22734 22741 22735 +f 22746 22743 22742 +f 20899 22754 22985 +f 22985 22754 22756 +f 22985 22756 22874 +f 22696 22698 22937 +f 22682 22684 22683 +f 18361 22976 22723 +f 22723 22976 22977 +f 22723 22977 22722 +f 22722 22977 22978 +f 22730 22729 18359 +f 22728 22976 22727 +f 22727 22976 18361 +f 22715 18370 22716 +f 22711 22710 22717 +f 22717 22710 22986 +f 22717 22986 18377 +f 18377 22986 22710 +f 22689 18378 22712 +f 22713 22711 22719 +f 22719 22711 22717 +f 22714 22689 22712 +f 22677 22685 22939 +f 22939 22685 22692 +f 22939 22692 22694 +f 22725 18359 22726 +f 22802 22804 22803 +f 22803 22804 22810 +f 22803 22810 22773 +f 22773 22810 22775 +f 22795 22797 22987 +f 22987 22797 22799 +f 22987 22799 22767 +f 22767 22799 22769 +f 22793 22795 22794 +f 22794 22795 22987 +f 22794 22987 22765 +f 22765 22987 22767 +f 22786 22788 22988 +f 22988 22788 22790 +f 22988 22790 22759 +f 22759 22790 22761 +f 22784 22786 22989 +f 22989 22786 22988 +f 22989 22988 22757 +f 22757 22988 22759 +f 22782 22784 22783 +f 22783 22784 22989 +f 22783 22989 22755 +f 22755 22989 22757 +f 22778 18317 22781 +f 22753 22783 22755 +f 22778 22781 22779 +f 22780 22990 18318 +f 18318 22990 22991 +f 18318 22991 22747 +f 22747 22991 22750 +f 22747 22750 22748 +f 22751 22750 22990 +f 22990 22750 22991 +f 22752 22751 22780 +f 22780 22751 22990 +f 22744 18319 22745 +f 22745 18319 22749 +f 22742 18324 22746 +f 22691 22690 22980 +f 22692 22685 22686 +f 22677 22939 22675 +f 22691 22980 22992 +f 22992 22980 22979 +f 22992 22979 22993 +f 22993 22979 22981 +f 22993 22981 22984 +f 22984 22981 22982 +f 22776 22777 22994 +f 22994 22777 22812 +f 22994 22812 22995 +f 22995 22812 22814 +f 22995 22814 22996 +f 22996 22814 22816 +f 22996 22816 22997 +f 22997 22816 22818 +f 22997 22818 22998 +f 22998 22818 22820 +f 22998 22820 22999 +f 22999 22820 22822 +f 22999 22822 22832 +f 22774 22776 23000 +f 23000 22776 22994 +f 23000 22994 23001 +f 23001 22994 22995 +f 23001 22995 23002 +f 23002 22995 22996 +f 23002 22996 23003 +f 23003 22996 22997 +f 23003 22997 23004 +f 23004 22997 22998 +f 23004 22998 23005 +f 23005 22998 22999 +f 23005 22999 22833 +f 22833 22999 22832 +f 22847 22770 22772 +f 22772 22774 23006 +f 23006 22774 23000 +f 23006 23000 23007 +f 23007 23000 23001 +f 23007 23001 23008 +f 23008 23001 23002 +f 23008 23002 23009 +f 23009 23002 23003 +f 23009 23003 23010 +f 23010 23003 23004 +f 23010 23004 23011 +f 23011 23004 23005 +f 23011 23005 22834 +f 22834 23005 22833 +f 22764 22766 23012 +f 23012 22766 22855 +f 23012 22855 23013 +f 23013 22855 22854 +f 23013 22854 23014 +f 23014 22854 22853 +f 23014 22853 23015 +f 23015 22853 22852 +f 23015 22852 23016 +f 23016 22852 22851 +f 23016 22851 22857 +f 22857 22851 22850 +f 22857 22850 22849 +f 22762 22764 23017 +f 23017 22764 23012 +f 23017 23012 23018 +f 23018 23012 23013 +f 23018 23013 23019 +f 23019 23013 23014 +f 23019 23014 23020 +f 23020 23014 23015 +f 23020 23015 23021 +f 23021 23015 23016 +f 23021 23016 22859 +f 22859 23016 22857 +f 22873 22758 22760 +f 22760 22762 23022 +f 23022 22762 23017 +f 23022 23017 23023 +f 23023 23017 23018 +f 23023 23018 23024 +f 23024 23018 23019 +f 23024 23019 23025 +f 23025 23019 23020 +f 23025 23020 23026 +f 23026 23020 23021 +f 23026 23021 22861 +f 22861 23021 22859 +f 20899 22985 22974 +f 22974 22985 22874 +f 22974 22874 22872 +f 22845 22847 23006 +f 23006 22847 22772 +f 22845 23006 23007 +f 22871 22873 23022 +f 23022 22873 22760 +f 22871 23022 23023 +f 22843 22845 23007 +f 22843 23007 23008 +f 22869 22871 23023 +f 22869 23023 23024 +f 22975 22974 22872 +f 22975 22872 22870 +f 22843 23008 22841 +f 22841 23008 23009 +f 22841 23009 22839 +f 22839 23009 23010 +f 22839 23010 22837 +f 22837 23010 23011 +f 22837 23011 22835 +f 22835 23011 22834 +f 22869 23024 22867 +f 22867 23024 23025 +f 22867 23025 22865 +f 22865 23025 23026 +f 22865 23026 22863 +f 22863 23026 22861 +f 22973 22972 22868 +f 22973 22868 22866 +f 22884 22883 22885 +f 22885 22883 22882 +f 22894 22895 22967 +f 22905 22915 20811 +f 22957 22914 22954 +f 22954 22914 22913 +f 22912 22911 20819 +f 22940 22911 22918 +f 22705 22632 22930 +f 22704 22633 22706 +f 22706 22633 22707 +f 22930 22931 22934 +f 22705 22930 22934 +f 22942 22940 22918 +f 22942 22918 22920 +f 20813 22957 22953 +f 22953 22957 22954 +f 22961 22962 20807 +f 22926 22633 22927 +f 22928 22631 22929 +f 22703 22705 22934 +f 22936 22703 22934 +f 22944 22942 22920 +f 22958 20809 22959 +f 22946 22944 22921 +f 22921 22944 22920 +f 22946 22921 22922 +f 22922 22923 22948 +f 22948 22923 22924 +f 22922 22948 22946 +f 22993 22984 22949 +f 22993 22949 22950 +f 22993 22950 22992 +f 22992 22950 22693 +f 22992 22693 22691 +f 22938 21823 22937 +f 22937 21823 22696 +f 18392 23027 18396 +f 18396 23027 23028 +f 18396 23028 23029 +f 18392 18291 23027 +f 23030 23031 23032 +f 23032 23031 23033 +f 23032 23033 23034 +f 23034 23033 23035 +f 23034 23035 23036 +f 23036 23035 23037 +f 23036 23037 23038 +f 23031 23039 23033 +f 21199 23040 21267 +f 21267 23040 23041 +f 23041 23040 23042 +f 23041 23042 23043 +f 23043 23042 23044 +f 23043 23044 23045 +f 23045 23044 23046 +f 23047 23048 18313 +f 18313 23048 18287 +f 23049 21194 23050 +f 23050 21194 21221 +f 23050 21221 23051 +f 23051 21221 23052 +f 23051 23052 23053 +f 23053 23052 21219 +f 23053 21219 23054 +f 23054 21219 21215 +f 23054 21215 23055 +f 23055 21215 21213 +f 23055 21213 23056 +f 23056 21213 23057 +f 23056 23057 23058 +f 23058 23057 21211 +f 23058 21211 23059 +f 23059 21211 21207 +f 23059 21207 21204 +f 21221 21219 23052 +f 21213 21211 23057 +f 23059 21204 23060 +f 23060 21204 21203 +f 23060 21203 23061 +f 23061 23062 23060 +f 23060 23062 23063 +f 23060 23063 23064 +f 23064 23063 23065 +f 23064 23065 23066 +f 23066 23065 23067 +f 23066 23067 23068 +f 23068 23067 23069 +f 23068 23069 23070 +f 23070 23069 23071 +f 23070 23071 23072 +f 23072 23071 23073 +f 23072 23073 23050 +f 23050 23073 23049 +f 23065 23074 23067 +f 23067 23074 23075 +f 23067 23075 23069 +f 23069 23075 23076 +f 23069 23076 23071 +f 23071 23076 23077 +f 23071 23077 23073 +f 23073 23077 23078 +f 23073 23078 23049 +f 18309 18306 23074 +f 23074 18306 23075 +f 18305 23079 18306 +f 18306 23079 23080 +f 18306 23080 23075 +f 23075 23080 23076 +f 23079 18305 23081 +f 23081 18305 23082 +f 23081 23082 23077 +f 23077 23082 23078 +f 23080 23079 23081 +f 23080 23081 23076 +f 23076 23081 23077 +f 23050 23051 23072 +f 23072 23051 23053 +f 23072 23053 23070 +f 23070 23053 23083 +f 23070 23083 23068 +f 23068 23083 23084 +f 23068 23084 23066 +f 23066 23084 23064 +f 23053 23054 23083 +f 23083 23054 23056 +f 23083 23056 23084 +f 23084 23056 23058 +f 23084 23058 23064 +f 23064 23058 23060 +f 23055 23056 23054 +f 23059 23060 23058 +f 23027 18291 23085 +f 23085 18291 18287 +f 23085 18287 23047 +f 23047 18287 23048 +f 23029 23028 23085 +f 23085 23028 23027 +f 18396 18306 18313 +f 18392 18313 18291 +f 18291 18313 18287 +f 18306 18309 18313 +f 18317 18318 18380 +f 18378 18319 18324 +f 18368 18331 18336 +f 18379 18336 18341 +f 18357 18341 18353 +f 18341 18351 18353 +f 18350 18351 18349 +f 18692 18693 18970 +f 18970 18693 18695 +f 18970 18695 18957 +f 18957 18695 18702 +f 18952 18706 18711 +f 18430 18719 18725 +f 18430 18725 18506 +f 18430 18506 18431 +f 18431 18507 18433 +f 18801 18507 18727 +f 18801 18727 18875 +f 18317 18384 18950 +f 18317 18950 18875 +f 20899 20823 20896 +f 20896 20823 20758 +f 20896 20758 20889 +f 20889 20758 20885 +f 20874 20824 20827 +f 20872 20846 20853 +f 20853 20858 20872 +f 20872 20858 20860 +f 20864 20860 20862 +f 20675 20673 20821 +f 20821 20673 20819 +f 20819 20673 20765 +f 20819 20765 20815 +f 20813 20769 20774 +f 20813 20774 20811 +f 20811 20774 20809 +f 20809 20774 20778 +f 20809 20778 20807 +f 20807 20778 20805 +f 20805 20778 20803 +f 20803 20778 20781 +f 20786 20788 20783 +f 20783 20788 20790 +f 20899 20907 20823 +f 20754 20907 20752 +f 20752 20677 20822 +f 20822 20677 20675 +f 20822 20675 20821 +f 21017 21001 23086 +f 23086 21001 23087 +f 23086 23087 23088 +f 23088 23087 23089 +f 23088 23089 23090 +f 23090 23089 23091 +f 23090 23091 23092 +f 23092 23091 23093 +f 23092 23093 23094 +f 23094 23093 23095 +f 23094 23095 23096 +f 23096 23095 23097 +f 23096 23097 23098 +f 23098 23097 23099 +f 23098 23099 23100 +f 23100 23099 23101 +f 23100 23101 23102 +f 23102 23101 23103 +f 23102 23103 23104 +f 23104 23103 23105 +f 23104 23105 23106 +f 23106 23105 23107 +f 23106 23107 23108 +f 23108 23107 20962 +f 23108 20962 23109 +f 23109 20962 20964 +f 23109 20964 23110 +f 23110 20964 23111 +f 23110 23111 23112 +f 23112 23111 23113 +f 23112 23113 23114 +f 23114 23113 23115 +f 23114 23115 23108 +f 23108 23115 23106 +f 20993 23116 21001 +f 21001 23116 23117 +f 21001 23117 23087 +f 23087 23117 23089 +f 20992 23118 20993 +f 20993 23118 23119 +f 20993 23119 23116 +f 23116 23119 23120 +f 23116 23120 23117 +f 23117 23120 23089 +f 20990 23121 20992 +f 20992 23121 23122 +f 20992 23122 23118 +f 23118 23122 23123 +f 23118 23123 23124 +f 23124 23123 23097 +f 23124 23097 23095 +f 20962 23107 20990 +f 20990 23107 23125 +f 20990 23125 23126 +f 23126 23125 23103 +f 23126 23103 23101 +f 23111 23127 23113 +f 23113 23127 23128 +f 23113 23128 23115 +f 23115 23128 23129 +f 23115 23129 23106 +f 23106 23129 23104 +f 23130 23131 23127 +f 23127 23131 23129 +f 23127 23129 23128 +f 23132 23133 23130 +f 23130 23133 23134 +f 23130 23134 23135 +f 23135 23134 23133 +f 23135 23133 23136 +f 23136 23133 23132 +f 23136 23132 23137 +f 23137 23132 23138 +f 23137 23138 23139 +f 23139 23138 23132 +f 18688 23140 23139 +f 23139 23140 23141 +f 23139 23141 23137 +f 23137 23141 23096 +f 23137 23096 23098 +f 18688 19339 23140 +f 23140 19339 23092 +f 23140 23092 23141 +f 23141 23092 23094 +f 23141 23094 23096 +f 23122 23121 23142 +f 23142 23121 23126 +f 23142 23126 23101 +f 23118 23124 23119 +f 23119 23124 23143 +f 23119 23143 23120 +f 23120 23143 23091 +f 23120 23091 23089 +f 23121 20990 23126 +f 23105 23103 23125 +f 23122 23142 23123 +f 23123 23142 23099 +f 23123 23099 23097 +f 23099 23142 23101 +f 23093 23091 23143 +f 23093 23143 23095 +f 23095 23143 23124 +f 23102 23104 23144 +f 23144 23104 23129 +f 23144 23129 23131 +f 23100 23102 23135 +f 23135 23102 23144 +f 23135 23144 23130 +f 23130 23144 23131 +f 23135 23136 23100 +f 23100 23136 23098 +f 23136 23137 23098 +f 23125 23107 23105 +f 23109 23110 23112 +f 23109 23112 23114 +f 23108 23109 23114 +f 21036 21038 23038 +f 23038 21038 23036 +f 23036 21038 20960 +f 23036 20960 23034 +f 23034 20960 23032 +f 23032 20960 23030 +f 23145 22681 23146 +f 23146 22681 22809 +f 23146 22809 23147 +f 23147 22809 23148 +f 23148 22809 22808 +f 23148 22808 23149 +f 23149 22808 23150 +f 23150 22808 21978 +f 21978 22808 22807 +f 21978 22807 23151 +f 23151 22807 23152 +f 23152 22807 22805 +f 23152 22805 23153 +f 23153 22805 23154 +f 23153 23154 23155 +f 23155 23154 23156 +f 23155 23156 23157 +f 23157 23156 23158 +f 23157 23158 23159 +f 23159 23158 23160 +f 23159 23160 23161 +f 23161 23160 23162 +f 23161 23162 23163 +f 23163 23162 23164 +f 23163 23164 23165 +f 23165 23164 18727 +f 23165 18727 18507 +f 22805 22801 23154 +f 23154 22801 23156 +f 22801 22796 23156 +f 23156 22796 23158 +f 22796 22792 23158 +f 23158 22792 23160 +f 22792 22787 23160 +f 23160 22787 23162 +f 23162 22787 23164 +f 23164 22787 22785 +f 23164 22785 18315 +f 18315 18727 23164 +f 18506 23166 18507 +f 18507 23166 23167 +f 18507 23167 23165 +f 23165 23167 23168 +f 23165 23168 23163 +f 23163 23168 23169 +f 23163 23169 23161 +f 23161 23169 23170 +f 23161 23170 23159 +f 23159 23170 23171 +f 23159 23171 23157 +f 23157 23171 23172 +f 23157 23172 23155 +f 23155 23172 23173 +f 23155 23173 23153 +f 18725 23174 18506 +f 18506 23174 23175 +f 18506 23175 23166 +f 23166 23175 23176 +f 23166 23176 23177 +f 23177 23176 23178 +f 23177 23178 23179 +f 23179 23178 23180 +f 23179 23180 23181 +f 23181 23180 23182 +f 23181 23182 23183 +f 23183 23182 23184 +f 23183 23184 23185 +f 23185 23184 23186 +f 23185 23186 23187 +f 23174 18725 23188 +f 23188 18725 18719 +f 23188 18719 23189 +f 23189 18719 18711 +f 23189 18711 23190 +f 23190 18711 23191 +f 23190 23191 23192 +f 23192 23191 23193 +f 23192 23193 23194 +f 23194 23193 23195 +f 23194 23195 23196 +f 23196 23195 23197 +f 23196 23197 23198 +f 23198 23197 23199 +f 23198 23199 23200 +f 23200 23199 23201 +f 23200 23201 21124 +f 21124 23201 20964 +f 20964 23201 23111 +f 23111 23201 23202 +f 23111 23202 23203 +f 23203 23202 23204 +f 23203 23204 23205 +f 23205 23204 23206 +f 23205 23206 23207 +f 23207 23206 23208 +f 23207 23208 23209 +f 23209 23208 23210 +f 23209 23210 18706 +f 18706 23210 23191 +f 18706 23191 18711 +f 18706 18702 23209 +f 23209 18702 23211 +f 23209 23211 23207 +f 23207 23211 23212 +f 23207 23212 23205 +f 23205 23212 23213 +f 23205 23213 23203 +f 23203 23213 23127 +f 23203 23127 23111 +f 18702 18695 23211 +f 23211 18695 23214 +f 23211 23214 23212 +f 23212 23214 23215 +f 23212 23215 23213 +f 23213 23215 23132 +f 23213 23132 23130 +f 18695 18693 23214 +f 23214 18693 23216 +f 23214 23216 23215 +f 23215 23216 23139 +f 23215 23139 23132 +f 18693 18692 23216 +f 23216 18692 23139 +f 18692 18688 23139 +f 23130 23127 23213 +f 21124 21116 23200 +f 23200 21116 23217 +f 23200 23217 23198 +f 23198 23217 23218 +f 23198 23218 23196 +f 23196 23218 23219 +f 23196 23219 23194 +f 23194 23219 23220 +f 23194 23220 23192 +f 23192 23220 23221 +f 23192 23221 23190 +f 23190 23221 23189 +f 21116 21056 23217 +f 23217 21056 23222 +f 23217 23222 23218 +f 23218 23222 23223 +f 23218 23223 23219 +f 23219 23223 23224 +f 23219 23224 23220 +f 23220 23224 23225 +f 23220 23225 23221 +f 23221 23225 23226 +f 23221 23226 23189 +f 23189 23226 23188 +f 21056 21115 23222 +f 23222 21115 23227 +f 23222 23227 23228 +f 23228 23227 23229 +f 23228 23229 23230 +f 23230 23229 23231 +f 23230 23231 23232 +f 23232 23231 23233 +f 23232 23233 23234 +f 23234 23233 23235 +f 23234 23235 23236 +f 23236 23235 23237 +f 23236 23237 23238 +f 23238 23237 23176 +f 23238 23176 23175 +f 23227 21115 23239 +f 23239 21115 21113 +f 23239 21113 23240 +f 23240 21113 23241 +f 23240 23241 23242 +f 23242 23241 23243 +f 23242 23243 23244 +f 23244 23243 23245 +f 23244 23245 23246 +f 23246 23245 23247 +f 23246 23247 23248 +f 23248 23247 23249 +f 23248 23249 23250 +f 23250 23249 23251 +f 23250 23251 23252 +f 23252 23251 23253 +f 23252 23253 23254 +f 23254 23253 23255 +f 23254 23255 23256 +f 21113 21111 23241 +f 23241 21111 23243 +f 21111 21106 23243 +f 23243 21106 23245 +f 21106 21081 23245 +f 23245 21081 23247 +f 21079 23251 21081 +f 21081 23251 23249 +f 21081 23249 23247 +f 23251 21079 23253 +f 23253 21079 23257 +f 23253 23257 23255 +f 23256 23258 23254 +f 23254 23258 23259 +f 23254 23259 23260 +f 23260 23259 23261 +f 23260 23261 23262 +f 21899 22040 23262 +f 23262 22040 23260 +f 22019 23263 22040 +f 22040 23263 23264 +f 22040 23264 23265 +f 23265 23264 23252 +f 23265 23252 23254 +f 21986 23266 22019 +f 22019 23266 23267 +f 22019 23267 23263 +f 23263 23267 23248 +f 23263 23248 23250 +f 23266 21986 23268 +f 23268 21986 21985 +f 23268 21985 23269 +f 23268 23269 23270 +f 23270 23269 23271 +f 23270 23271 23242 +f 23242 23239 23240 +f 23229 23272 23231 +f 23231 23272 23273 +f 23231 23273 23233 +f 23233 23273 23274 +f 23233 23274 23235 +f 23235 23274 23275 +f 23235 23275 23237 +f 23237 23275 23178 +f 23237 23178 23176 +f 23272 23276 23273 +f 23273 23276 23277 +f 23273 23277 23274 +f 23274 23277 23278 +f 23274 23278 23275 +f 23275 23278 23180 +f 23275 23180 23178 +f 23276 23279 23277 +f 23277 23279 23280 +f 23277 23280 23278 +f 23278 23280 23182 +f 23278 23182 23180 +f 23280 23279 23184 +f 23184 23279 23186 +f 23185 23187 23172 +f 23172 23187 23173 +f 23193 23191 23210 +f 23183 23185 23171 +f 23171 23185 23172 +f 23181 23183 23170 +f 23170 23183 23171 +f 23179 23181 23169 +f 23169 23181 23170 +f 23177 23179 23168 +f 23168 23179 23169 +f 23166 23177 23167 +f 23167 23177 23168 +f 23184 23182 23280 +f 23175 23174 23238 +f 23238 23174 23281 +f 23238 23281 23236 +f 23236 23281 23282 +f 23236 23282 23234 +f 23234 23282 23283 +f 23234 23283 23232 +f 23232 23283 23284 +f 23232 23284 23230 +f 23230 23284 23228 +f 23174 23188 23281 +f 23281 23188 23226 +f 23281 23226 23282 +f 23282 23226 23225 +f 23282 23225 23283 +f 23283 23225 23224 +f 23283 23224 23284 +f 23284 23224 23223 +f 23284 23223 23228 +f 23228 23223 23222 +f 23195 23193 23208 +f 23208 23193 23210 +f 23197 23195 23206 +f 23206 23195 23208 +f 23199 23197 23204 +f 23204 23197 23206 +f 23201 23199 23202 +f 23202 23199 23204 +f 23263 23250 23264 +f 23264 23250 23252 +f 23248 23267 23246 +f 23246 23267 23266 +f 23246 23266 23244 +f 23244 23266 23268 +f 23244 23268 23270 +f 23244 23270 23242 +f 22040 23265 23260 +f 23260 23265 23254 +f 23030 20960 23285 +f 23285 20960 20959 +f 23285 20959 23286 +f 23286 20959 23287 +f 23286 23287 23288 +f 23288 23287 23289 +f 23288 23289 23290 +f 23290 23289 23291 +f 23290 23291 23292 +f 23292 23291 23293 +f 23292 23293 23294 +f 23294 23293 23295 +f 23294 23295 23296 +f 23296 23295 23297 +f 23296 23297 23298 +f 23298 23297 23299 +f 23298 23299 23300 +f 23300 23299 23301 +f 23300 23301 23302 +f 23302 23301 23303 +f 23302 23303 23304 +f 23304 23303 23305 +f 23304 23305 23306 +f 23306 23305 23307 +f 23306 23307 23308 +f 23308 23307 23309 +f 23308 23309 23310 +f 23310 23309 23311 +f 23310 23311 23312 +f 23312 23311 23313 +f 23312 23313 23314 +f 23314 23313 23315 +f 23314 23315 23316 +f 23316 23315 23317 +f 23316 23317 23318 +f 23318 23317 23319 +f 23318 23319 23320 +f 23320 23319 23321 +f 23320 23321 23322 +f 23322 23321 23323 +f 23322 23323 23029 +f 23029 23323 23324 +f 23029 23324 23325 +f 23325 23324 23326 +f 23325 23326 19339 +f 19339 23326 23092 +f 23092 23326 23327 +f 23092 23327 23090 +f 23090 23327 23328 +f 23090 23328 23329 +f 23329 23328 23330 +f 23329 23330 23331 +f 23331 23330 23332 +f 23331 23332 23333 +f 23333 23332 23307 +f 23333 23307 23305 +f 20957 23334 20959 +f 20959 23334 23335 +f 20959 23335 23336 +f 23336 23335 23337 +f 23336 23337 23289 +f 23289 23337 23291 +f 23334 20957 23338 +f 23338 20957 20955 +f 23338 20955 23339 +f 23339 20955 20947 +f 23339 20947 23340 +f 23341 23342 23340 +f 23340 23342 23343 +f 23340 23343 23339 +f 23339 23343 23338 +f 23344 23345 23341 +f 23341 23345 23346 +f 23341 23346 23342 +f 23342 23346 23347 +f 23342 23347 23348 +f 23348 23347 23349 +f 23348 23349 23334 +f 23334 23349 23335 +f 23345 23344 23297 +f 23297 23344 23299 +f 23301 23350 23303 +f 23303 23350 23351 +f 23303 23351 23305 +f 23305 23351 23333 +f 23351 23350 23352 +f 23352 23350 23353 +f 23352 23353 23354 +f 23354 23353 20945 +f 23354 20945 21202 +f 21202 21201 23354 +f 23354 21201 23086 +f 23354 23086 23329 +f 23329 23086 23088 +f 23329 23088 23090 +f 21201 21017 23086 +f 19339 18396 23325 +f 23325 18396 23029 +f 23029 23085 23322 +f 23318 23355 23316 +f 23316 23355 23356 +f 23316 23356 23314 +f 23314 23356 23357 +f 23314 23357 23312 +f 23312 23357 23358 +f 23312 23358 23310 +f 23310 23358 23359 +f 23310 23359 23308 +f 23308 23359 23360 +f 23308 23360 23306 +f 23306 23360 23361 +f 23306 23361 23304 +f 23304 23361 23362 +f 23304 23362 23302 +f 23302 23362 23300 +f 23355 23363 23356 +f 23356 23363 23364 +f 23356 23364 23357 +f 23357 23364 23365 +f 23357 23365 23358 +f 23358 23365 23366 +f 23358 23366 23359 +f 23359 23366 23367 +f 23359 23367 23360 +f 23360 23367 23368 +f 23360 23368 23361 +f 23361 23368 23369 +f 23361 23369 23362 +f 23362 23369 23370 +f 23362 23370 23300 +f 23300 23370 23298 +f 23363 23371 23364 +f 23364 23371 23372 +f 23364 23372 23365 +f 23365 23372 23373 +f 23365 23373 23366 +f 23366 23373 23374 +f 23366 23374 23367 +f 23367 23374 23375 +f 23367 23375 23368 +f 23368 23375 23376 +f 23368 23376 23369 +f 23369 23376 23377 +f 23369 23377 23370 +f 23370 23377 23296 +f 23370 23296 23298 +f 23371 23378 23372 +f 23372 23378 23379 +f 23372 23379 23373 +f 23373 23379 23380 +f 23373 23380 23374 +f 23374 23380 23381 +f 23374 23381 23375 +f 23375 23381 23382 +f 23375 23382 23376 +f 23376 23382 23383 +f 23376 23383 23377 +f 23377 23383 23294 +f 23377 23294 23296 +f 23378 23384 23379 +f 23379 23384 23385 +f 23379 23385 23380 +f 23380 23385 23386 +f 23380 23386 23381 +f 23381 23386 23387 +f 23381 23387 23382 +f 23382 23387 23388 +f 23382 23388 23383 +f 23383 23388 23292 +f 23383 23292 23294 +f 23385 23384 23389 +f 23389 23384 23390 +f 23389 23390 23391 +f 23391 23390 23031 +f 23391 23031 23030 +f 23030 23285 23286 +f 23287 20959 23336 +f 23330 23328 23392 +f 23392 23328 23327 +f 23392 23327 23393 +f 23393 23327 23326 +f 23393 23326 23324 +f 23332 23330 23394 +f 23394 23330 23392 +f 23394 23392 23395 +f 23395 23392 23393 +f 23395 23393 23396 +f 23396 23393 23324 +f 23396 23324 23397 +f 23397 23324 23323 +f 23397 23323 23319 +f 23319 23323 23321 +f 23307 23332 23309 +f 23309 23332 23394 +f 23309 23394 23311 +f 23311 23394 23395 +f 23311 23395 23313 +f 23313 23395 23396 +f 23313 23396 23315 +f 23315 23396 23397 +f 23315 23397 23317 +f 23317 23397 23319 +f 23290 23292 23388 +f 23291 23337 23398 +f 23398 23337 23349 +f 23398 23349 23347 +f 23337 23335 23349 +f 23289 23287 23336 +f 23291 23398 23293 +f 23293 23398 23399 +f 23293 23399 23295 +f 23295 23399 23345 +f 23295 23345 23297 +f 23399 23398 23347 +f 23334 23338 23348 +f 23348 23338 23343 +f 23348 23343 23342 +f 23345 23399 23346 +f 23346 23399 23347 +f 23354 23329 23331 +f 23351 23352 23333 +f 23333 23352 23331 +f 23352 23354 23331 +f 23290 23388 23400 +f 23400 23388 23387 +f 23400 23387 23401 +f 23401 23387 23386 +f 23401 23386 23389 +f 23389 23386 23385 +f 23401 23402 23400 +f 23400 23402 23288 +f 23400 23288 23290 +f 23030 23286 23402 +f 23402 23286 23288 +f 23389 23391 23401 +f 23401 23391 23402 +f 23391 23030 23402 +f 21184 23037 21185 +f 21185 23037 23035 +f 21185 23035 23033 +f 21184 21183 23037 +f 23037 21183 21179 +f 23037 21179 21178 +f 23037 21178 23038 +f 23038 21178 21177 +f 23038 21177 21176 +f 21176 21036 23038 +f 23033 23039 21185 +f 20947 20945 23340 +f 23340 20945 23353 +f 23340 23353 23341 +f 23341 23353 23350 +f 23341 23350 23344 +f 23344 23350 23301 +f 23344 23301 23299 +f 23040 21199 23403 +f 23403 21199 21198 +f 23403 21198 23404 +f 23404 21198 21197 +f 23404 21197 23405 +f 23405 21197 23406 +f 23405 23406 23407 +f 23407 23406 23039 +f 23407 23039 23390 +f 23390 23039 23031 +f 21197 21185 23406 +f 23406 21185 23039 +f 23407 23390 23408 +f 23408 23390 23384 +f 23408 23384 23409 +f 23409 23384 23410 +f 23409 23410 23411 +f 23411 23410 23412 +f 23411 23412 23413 +f 23413 23412 23414 +f 23413 23414 23415 +f 23415 23414 23416 +f 23415 23416 23042 +f 23042 23416 23044 +f 23044 23416 23417 +f 23044 23417 23418 +f 23418 23417 23419 +f 23418 23419 23420 +f 23420 23419 23421 +f 23420 23421 23422 +f 23422 23421 23423 +f 23422 23423 23424 +f 23424 23423 23355 +f 23424 23355 23318 +f 23384 23378 23410 +f 23410 23378 23425 +f 23410 23425 23412 +f 23412 23425 23426 +f 23412 23426 23414 +f 23414 23426 23427 +f 23414 23427 23416 +f 23416 23427 23417 +f 23425 23378 23428 +f 23428 23378 23371 +f 23428 23371 23429 +f 23429 23371 23363 +f 23429 23363 23423 +f 23423 23363 23355 +f 23424 23318 23430 +f 23430 23318 23320 +f 23430 23320 23431 +f 23431 23320 23322 +f 23431 23322 23047 +f 23047 23322 23085 +f 23431 23047 23432 +f 23432 23047 18313 +f 23432 18313 18309 +f 18309 23074 23432 +f 23432 23074 23433 +f 23432 23433 23434 +f 23434 23433 23435 +f 23434 23435 23436 +f 23436 23435 23437 +f 23436 23437 23438 +f 23438 23437 23043 +f 23438 23043 23045 +f 23074 23065 23433 +f 23433 23065 23439 +f 23433 23439 23435 +f 23435 23439 23440 +f 23435 23440 23437 +f 23437 23440 23043 +f 23065 23063 23439 +f 23439 23063 23062 +f 23439 23062 23441 +f 23441 23062 23061 +f 23441 23061 21266 +f 21266 23061 21203 +f 21266 21267 23441 +f 23441 21267 23041 +f 23441 23041 23440 +f 23440 23041 23043 +f 23438 23045 23442 +f 23442 23045 23046 +f 23442 23046 23443 +f 23443 23046 23044 +f 23443 23044 23418 +f 23415 23042 23444 +f 23444 23042 23040 +f 23444 23040 23445 +f 23445 23040 23403 +f 23445 23403 23446 +f 23446 23403 23404 +f 23446 23404 23447 +f 23447 23404 23405 +f 23447 23405 23407 +f 23413 23415 23444 +f 23444 23445 23448 +f 23448 23445 23446 +f 23448 23446 23449 +f 23449 23446 23447 +f 23449 23447 23408 +f 23408 23447 23407 +f 23419 23417 23427 +f 23418 23420 23443 +f 23443 23420 23450 +f 23443 23450 23442 +f 23442 23450 23451 +f 23442 23451 23438 +f 23438 23451 23436 +f 23439 23441 23440 +f 23411 23413 23448 +f 23448 23413 23444 +f 23411 23448 23449 +f 23419 23427 23452 +f 23452 23427 23426 +f 23452 23426 23428 +f 23428 23426 23425 +f 23420 23422 23450 +f 23450 23422 23453 +f 23450 23453 23451 +f 23451 23453 23454 +f 23451 23454 23436 +f 23436 23454 23434 +f 23409 23411 23449 +f 23409 23449 23408 +f 23419 23452 23421 +f 23421 23452 23429 +f 23421 23429 23423 +f 23429 23452 23428 +f 23422 23424 23453 +f 23453 23424 23430 +f 23453 23430 23454 +f 23454 23430 23431 +f 23454 23431 23434 +f 23434 23431 23432 +f 21266 21185 21267 +f 21267 21185 21197 +f 21267 21197 21198 +f 21266 21201 21185 +f 21183 20960 21179 +f 21179 20960 21038 +f 21179 21038 21178 +f 21177 21038 21176 +f 21176 21038 21036 +f 20960 21202 20945 +f 20960 20945 20959 +f 20957 20945 20955 +f 20955 20945 20947 +f 21198 21199 21267 +f 21203 21204 21266 +f 21266 21204 21207 +f 21266 21207 21211 +f 21211 21213 21266 +f 21266 21213 21215 +f 21266 21215 21219 +f 21219 21221 21266 +f 21266 21221 21194 +f 21266 21194 20964 +f 20964 21194 21124 +f 21124 21194 21192 +f 21124 21192 21116 +f 21116 21192 21056 +f 21056 21192 21191 +f 21056 21191 21115 +f 21266 20964 21201 +f 21201 20992 20993 +f 21201 20993 21001 +f 21115 21191 21113 +f 21113 21191 21190 +f 21111 21190 21106 +f 21106 21190 21195 +f 21106 21195 21081 +f 21081 21195 21182 +f 21815 21814 22811 +f 22811 21814 22813 +f 22813 21814 22698 +f 22813 22698 22828 +f 22828 22698 22829 +f 22829 22698 22699 +f 22829 22699 22830 +f 22830 22699 22935 +f 22830 22935 21631 +f 21631 22935 21690 +f 21633 21692 21694 +f 21819 21645 21699 +f 21699 21645 21646 +f 21698 21643 21615 +f 21645 21819 21644 +f 21644 21819 21820 +f 21644 21820 21834 +f 21834 21820 21821 +f 21834 21821 21833 +f 21833 21821 21824 +f 21833 21824 21832 +f 21832 21824 21830 +f 21697 21613 21612 +f 21612 21647 21697 +f 21843 21823 21825 +f 21843 21825 21838 +f 21838 21825 21826 +f 21838 21826 21836 +f 21836 21826 21827 +f 21836 21827 21835 +f 21835 21827 21828 +f 21835 21828 21815 +f 23151 23455 21978 +f 21978 23455 21875 +f 23145 23456 22681 +f 22681 23456 22680 +f 22680 23456 23457 +f 22680 23457 23458 +f 22680 23458 22679 +f 22679 23458 23459 +f 22679 23459 21875 +f 23455 23460 21875 +f 21875 23460 22673 +f 21875 22673 22679 +f 23455 23461 23460 +f 23460 23461 22673 +f 23462 23463 23461 +f 23461 23463 23464 +f 23461 23464 22673 +f 22673 23464 22674 +f 22674 23464 23465 +f 22674 23465 22677 +f 22677 23465 22682 +f 22682 23465 23466 +f 22682 23466 18384 +f 18384 23466 18950 +f 18950 23466 23467 +f 18950 23467 23468 +f 23468 23467 23469 +f 23468 23469 23470 +f 23470 23469 23463 +f 23470 23463 23471 +f 23471 23463 23462 +f 23471 23462 23472 +f 23472 23462 23473 +f 23472 23473 23474 +f 23474 23473 23475 +f 23474 23475 23476 +f 23476 23475 23477 +f 23476 23477 18433 +f 18433 23477 18431 +f 18431 23477 18430 +f 18430 23477 23478 +f 18430 23478 18952 +f 18952 23478 23479 +f 18952 23479 18957 +f 18957 23479 18970 +f 18970 23479 23082 +f 18970 23082 18305 +f 23480 23481 23462 +f 23462 23481 23482 +f 23462 23482 23483 +f 23483 23482 23484 +f 23483 23484 23475 +f 23475 23484 23477 +f 23480 23485 23481 +f 23481 23485 23486 +f 23481 23486 23487 +f 23487 23486 23049 +f 23487 23049 23078 +f 23486 23485 21191 +f 21191 23485 23488 +f 21191 23488 21190 +f 21190 23488 23489 +f 21190 23489 21195 +f 21195 23489 21900 +f 21195 21900 21182 +f 21182 21900 21079 +f 21079 21900 23257 +f 23257 21900 23255 +f 23255 21900 23256 +f 23256 21900 23258 +f 23258 21900 23259 +f 23259 21900 23261 +f 23261 21900 23262 +f 23262 21900 21899 +f 21874 21902 23489 +f 23489 21902 21900 +f 21191 21192 23486 +f 23486 21192 23049 +f 21192 21194 23049 +f 23078 23082 23487 +f 23487 23082 23479 +f 23487 23479 23490 +f 23490 23479 23478 +f 23490 23478 23484 +f 23484 23478 23477 +f 18433 18801 23476 +f 23476 18801 23491 +f 23476 23491 23474 +f 23474 23491 23492 +f 23474 23492 23472 +f 23472 23492 23471 +f 18801 18875 23491 +f 23491 18875 23493 +f 23491 23493 23492 +f 23492 23493 23470 +f 23492 23470 23471 +f 23493 18875 23468 +f 23468 18875 18950 +f 23473 23462 23483 +f 23467 23466 23465 +f 23463 23469 23464 +f 23464 23469 23465 +f 23469 23467 23465 +f 23484 23482 23490 +f 23490 23482 23481 +f 23490 23481 23487 +f 23475 23473 23483 +f 23468 23470 23493 +f 23456 23146 23457 +f 23457 23146 23147 +f 23457 23147 23458 +f 23458 23147 23148 +f 23458 23148 23459 +f 23459 23148 23149 +f 23459 23149 21875 +f 21875 23149 23150 +f 21875 23150 21978 +f 23480 23272 23485 +f 23485 23272 23229 +f 23485 23229 23227 +f 23462 23279 23480 +f 23480 23279 23276 +f 23480 23276 23272 +f 23461 23173 23462 +f 23462 23173 23187 +f 23462 23187 23186 +f 23461 23153 23173 +f 23186 23279 23462 +f 23455 23151 23461 +f 23461 23151 23152 +f 23494 23495 23496 +f 23496 23495 23497 +f 23497 23495 23498 +f 23498 23499 23497 +f 23497 23499 23500 +f 23500 23499 23501 +f 23500 23501 23502 +f 23501 23503 23502 +f 23502 23503 23504 +f 23502 23504 22249 +f 23505 23506 23494 +f 23494 23506 23507 +f 23494 23507 23508 +f 23508 23507 23504 +f 23508 23504 23509 +f 23509 23504 23510 +f 23509 23510 23494 +f 23494 23510 23495 +f 23495 23510 23511 +f 23495 23511 23498 +f 23498 23511 23499 +f 23499 23511 23501 +f 23501 23511 23503 +f 23503 23511 23510 +f 23503 23510 23504 +f 23505 22251 23506 +f 23506 22251 23507 +f 22251 23504 23507 +f 23509 23494 23508 +f 23502 22249 23512 +f 23512 22249 23496 +f 23512 23496 23497 +f 23497 23500 23512 +f 23512 23500 23502 +f 22249 22251 23496 +f 23456 23146 23145 +f 23146 23513 23145 +f 23145 23513 21884 +f 23146 23456 23513 +f 23513 23456 23514 +f 23513 23514 23515 +f 23515 21884 23513 +f 23456 23145 23514 +f 23514 23145 23515 +f 23515 23145 21884 +f 23455 23516 23517 +f 23517 23516 23518 +f 23517 23518 23461 +f 23461 23455 23517 +f 23152 23461 23153 +f 23519 23516 23151 +f 23151 23516 23455 +f 23520 23521 23522 +f 23522 23521 23523 +f 23522 23523 23519 +f 23151 23152 23519 +f 23519 23152 23522 +f 23153 23524 23152 +f 23152 23524 23525 +f 23152 23525 23526 +f 23526 23525 23153 +f 23526 23153 23527 +f 23527 23153 23520 +f 23527 23520 23528 +f 23528 23520 23522 +f 23528 23522 23152 +f 23528 23152 23527 +f 23527 23152 23526 +f 23524 23153 23525 +f 23521 23520 23518 +f 23518 23520 23461 +f 23461 23520 23153 +f 23518 23523 23521 +f 23529 23530 23531 +f 23531 23530 23532 +f 23531 23532 23533 +f 22251 23504 22249 +f 23498 23534 23497 +f 23497 23534 23535 +f 23497 23535 23536 +f 23536 23535 23537 +f 23536 23537 23538 +f 23536 23538 23539 +f 23539 23538 23540 +f 23539 23540 23541 +f 23541 23542 23539 +f 23539 23542 23531 +f 23531 23542 23529 +f 22249 23502 22253 +f 22253 23502 21292 +f 22253 21292 23543 +f 23543 21292 23544 +f 23544 21292 23545 +f 23545 21292 21290 +f 23500 21295 23502 +f 23502 21295 21293 +f 23502 21293 21292 +f 21295 23500 21299 +f 21299 23500 23497 +f 21299 23497 23546 +f 23546 23497 23547 +f 23546 23547 23548 +f 23548 23547 23549 +f 23548 23549 23550 +f 23550 23549 23551 +f 23550 23551 19646 +f 19646 23551 19643 +f 19643 23551 23552 +f 19643 23552 19641 +f 19641 23552 19640 +f 19640 23552 23553 +f 19640 23553 19636 +f 19636 23553 23554 +f 19636 23554 23555 +f 23555 23554 23556 +f 23555 23556 23557 +f 23557 23556 23558 +f 23557 23558 23559 +f 23559 23558 23531 +f 23559 23531 23560 +f 23560 23531 23561 +f 23560 23561 23562 +f 23562 23561 23563 +f 23562 23563 23564 +f 23564 23563 23565 +f 23564 23565 19632 +f 23497 23536 23547 +f 23547 23536 23539 +f 23547 23539 23566 +f 23566 23539 23567 +f 23566 23567 23568 +f 23568 23567 23569 +f 23568 23569 23552 +f 23552 23569 23553 +f 23539 23531 23567 +f 23567 23531 23558 +f 23567 23558 23556 +f 23533 23570 23531 +f 23531 23570 23571 +f 23531 23571 23561 +f 23561 23571 23563 +f 23533 22247 23570 +f 23570 22247 23572 +f 23570 23572 23573 +f 23572 22247 23574 +f 23574 22247 23575 +f 23574 23575 23576 +f 23576 23577 23574 +f 23574 23577 23578 +f 23578 23577 19342 +f 23578 19342 23579 +f 23579 19342 19346 +f 23570 23573 23571 +f 23571 23573 23580 +f 23571 23580 23563 +f 23563 23580 23565 +f 19632 19634 23564 +f 23564 19634 23581 +f 23564 23581 23562 +f 23562 23581 23582 +f 23562 23582 23560 +f 23560 23582 23559 +f 19634 19635 23581 +f 23581 19635 23583 +f 23581 23583 23582 +f 23582 23583 23557 +f 23582 23557 23559 +f 23583 19635 23555 +f 23555 19635 19636 +f 19646 19649 23550 +f 23550 19649 23584 +f 23550 23584 23548 +f 23548 23584 23585 +f 23548 23585 23586 +f 19649 19618 23584 +f 23584 19618 19619 +f 23548 23586 23546 +f 23546 23586 21307 +f 23546 21307 21317 +f 21317 21299 23546 +f 23543 23587 22253 +f 22253 23587 23588 +f 22253 23588 23589 +f 22253 23589 22255 +f 22255 23589 23590 +f 22255 23590 22258 +f 23552 23551 23549 +f 23547 23566 23549 +f 23549 23566 23568 +f 23549 23568 23552 +f 23555 23557 23583 +f 23569 23567 23556 +f 23553 23569 23554 +f 23554 23569 23556 +f 19342 23577 19340 +f 19340 23577 23591 +f 23591 23577 23576 +f 23591 23576 23592 +f 23592 23576 23575 +f 23592 23575 23593 +f 23593 23575 22247 +f 23593 22247 23594 +f 23594 22247 23595 +f 23595 22247 22245 +f 23532 22245 23533 +f 23533 22245 22247 +f 23503 23596 23501 +f 23501 23596 23597 +f 23501 23597 23598 +f 23598 23597 21296 +f 23598 21296 21297 +f 23596 23503 23599 +f 23599 23503 23504 +f 23599 23504 23600 +f 23600 23504 22251 +f 23600 22251 22252 +f 22254 23601 22252 +f 22252 23601 23602 +f 22252 23602 23600 +f 23600 23602 23599 +f 23601 22254 23603 +f 23603 22254 22256 +f 23603 22256 23604 +f 23604 22256 22257 +f 23604 22257 23605 +f 23605 22257 23606 +f 23605 23606 23607 +f 23607 23606 23608 +f 23607 23608 23609 +f 23609 23608 23610 +f 23609 23610 21290 +f 21290 23610 23545 +f 23545 23610 23544 +f 23544 23610 23608 +f 23544 23608 23543 +f 23543 23608 23587 +f 23587 23608 23588 +f 23588 23608 23606 +f 23588 23606 23589 +f 23589 23606 23590 +f 23590 23606 22258 +f 22258 23606 22257 +f 21290 21291 23609 +f 23609 21291 23611 +f 23609 23611 23607 +f 23607 23611 23612 +f 23607 23612 23605 +f 23605 23612 23604 +f 21294 23613 21291 +f 21291 23613 23614 +f 21291 23614 23611 +f 23611 23614 23612 +f 23613 21294 23597 +f 23597 21294 21296 +f 21298 23499 21297 +f 21297 23499 23615 +f 21297 23615 23598 +f 23598 23615 23501 +f 21319 23616 21298 +f 21298 23616 23498 +f 21298 23498 23499 +f 23616 21319 23617 +f 23617 21319 21318 +f 23617 21318 23618 +f 23618 21318 21316 +f 23618 21316 23619 +f 23619 21316 21306 +f 23619 21306 23620 +f 23621 23622 23620 +f 23620 23622 23623 +f 23620 23623 23619 +f 23619 23623 23618 +f 23622 23621 23624 +f 23624 23621 23625 +f 23624 23625 23626 +f 23624 23626 23627 +f 23627 23626 23628 +f 23627 23628 23629 +f 23629 23628 19620 +f 23629 19620 19652 +f 23628 19621 19620 +f 23629 19652 23630 +f 23630 19652 19651 +f 23630 19651 23631 +f 23631 19651 19650 +f 23631 19650 23632 +f 23632 19650 19648 +f 23632 19648 23633 +f 23633 19648 19647 +f 23633 19647 23634 +f 23634 19647 23635 +f 23634 23635 23636 +f 23636 23635 23637 +f 23636 23637 23638 +f 23638 23637 23639 +f 23638 23639 23640 +f 23640 23639 23641 +f 23640 23641 23642 +f 23642 23641 23643 +f 23642 23643 23644 +f 23644 23643 23645 +f 23644 23645 23540 +f 23540 23645 23541 +f 23541 23645 23646 +f 23541 23646 23542 +f 23542 23646 23647 +f 23542 23647 23648 +f 23648 23647 23649 +f 23648 23649 23650 +f 23650 23649 23651 +f 23650 23651 23652 +f 23652 23651 23653 +f 23652 23653 23654 +f 23654 23653 23655 +f 23654 23655 23656 +f 23656 23655 23657 +f 23656 23657 23658 +f 23658 23657 19637 +f 23658 19637 23659 +f 23659 19637 19638 +f 19647 19645 23635 +f 23635 19645 23660 +f 23635 23660 23637 +f 23637 23660 23661 +f 23637 23661 23639 +f 23639 23661 23662 +f 23639 23662 23641 +f 23641 23662 23663 +f 23641 23663 23643 +f 23643 23663 23664 +f 23643 23664 23645 +f 23645 23664 23646 +f 23660 19645 23665 +f 23665 19645 19644 +f 23665 19644 23666 +f 23666 19644 19642 +f 23666 19642 23667 +f 23667 19642 19639 +f 23667 19639 23668 +f 23668 19639 23669 +f 23668 23669 23670 +f 23670 23669 23655 +f 23670 23655 23653 +f 19639 19637 23669 +f 23669 19637 23657 +f 23669 23657 23655 +f 23659 23671 23658 +f 23658 23671 23656 +f 23656 23671 23654 +f 23654 23671 23672 +f 23654 23672 23652 +f 23652 23672 23673 +f 23652 23673 23650 +f 23650 23673 23674 +f 23650 23674 23648 +f 23648 23674 23675 +f 23648 23675 23529 +f 23529 23675 23530 +f 23530 23675 23676 +f 23530 23676 23532 +f 23532 23676 22245 +f 22245 23676 23677 +f 22245 23677 23595 +f 23595 23677 23594 +f 23594 23677 23593 +f 23593 23677 23592 +f 23592 23677 23678 +f 23592 23678 23591 +f 23591 23678 19340 +f 19340 23678 23579 +f 19340 23579 19346 +f 23529 23542 23648 +f 23540 23538 23644 +f 23644 23538 23679 +f 23644 23679 23642 +f 23642 23679 23680 +f 23642 23680 23640 +f 23640 23680 23681 +f 23640 23681 23638 +f 23638 23681 23682 +f 23638 23682 23636 +f 23636 23682 23683 +f 23636 23683 23634 +f 23634 23683 23633 +f 23679 23538 23684 +f 23684 23538 23537 +f 23684 23537 23685 +f 23685 23537 23535 +f 23685 23535 23686 +f 23686 23535 23534 +f 23686 23534 23687 +f 23687 23534 23688 +f 23687 23688 23689 +f 23689 23688 23690 +f 23689 23690 23691 +f 23691 23690 23692 +f 23691 23692 23693 +f 23693 23692 23694 +f 23693 23694 23695 +f 23695 23694 23627 +f 23695 23627 23629 +f 23534 23498 23688 +f 23688 23498 23616 +f 23688 23616 23690 +f 23690 23616 23696 +f 23690 23696 23692 +f 23692 23696 23697 +f 23692 23697 23694 +f 23694 23697 23624 +f 23694 23624 23627 +f 23499 23501 23615 +f 23613 23597 23698 +f 23698 23597 23596 +f 23698 23596 23601 +f 23601 23596 23602 +f 23596 23599 23602 +f 23614 23613 23699 +f 23699 23613 23698 +f 23699 23698 23603 +f 23603 23698 23601 +f 23604 23612 23699 +f 23699 23612 23614 +f 23604 23699 23603 +f 23691 23700 23701 +f 23701 23700 23702 +f 23701 23702 23703 +f 23703 23702 23704 +f 23703 23704 23705 +f 23705 23704 23682 +f 23705 23682 23681 +f 23700 23706 23702 +f 23702 23706 23707 +f 23702 23707 23704 +f 23704 23707 23683 +f 23704 23683 23682 +f 23691 23693 23700 +f 23700 23693 23708 +f 23700 23708 23706 +f 23706 23708 23631 +f 23706 23631 23632 +f 23706 23632 23707 +f 23707 23632 23633 +f 23707 23633 23683 +f 23691 23701 23689 +f 23689 23701 23709 +f 23689 23709 23687 +f 23687 23709 23686 +f 23709 23701 23703 +f 23616 23617 23696 +f 23696 23617 23710 +f 23696 23710 23697 +f 23697 23710 23622 +f 23697 23622 23624 +f 23630 23631 23708 +f 23630 23708 23695 +f 23695 23708 23693 +f 23617 23618 23710 +f 23710 23618 23623 +f 23710 23623 23622 +f 23629 23630 23695 +f 23709 23703 23711 +f 23711 23703 23705 +f 23711 23705 23712 +f 23712 23705 23681 +f 23712 23681 23680 +f 23685 23686 23711 +f 23711 23686 23709 +f 23685 23711 23712 +f 23660 23665 23661 +f 23661 23665 23713 +f 23661 23713 23662 +f 23662 23713 23714 +f 23662 23714 23663 +f 23663 23714 23715 +f 23663 23715 23664 +f 23664 23715 23716 +f 23664 23716 23646 +f 23646 23716 23647 +f 23685 23712 23684 +f 23684 23712 23680 +f 23684 23680 23679 +f 23665 23666 23713 +f 23713 23666 23717 +f 23713 23717 23714 +f 23714 23717 23718 +f 23714 23718 23715 +f 23715 23718 23719 +f 23715 23719 23716 +f 23716 23719 23649 +f 23716 23649 23647 +f 23666 23667 23717 +f 23717 23667 23720 +f 23717 23720 23718 +f 23718 23720 23721 +f 23718 23721 23719 +f 23719 23721 23651 +f 23719 23651 23649 +f 23668 23670 23720 +f 23720 23670 23721 +f 23651 23721 23653 +f 23653 23721 23670 +f 23667 23668 23720 +f 21845 21865 21844 +f 21864 21865 21863 +f 21862 21863 21861 +f 21862 21861 21860 +f 21860 21861 21859 +f 21860 21859 21858 +f 19356 23722 19354 +f 19354 23722 23723 +f 19354 23723 23724 +f 23724 23723 23725 +f 23724 23725 23726 +f 19358 23727 19356 +f 19356 23727 23728 +f 19356 23728 23729 +f 23729 23728 23730 +f 23729 23730 23731 +f 19360 23732 19358 +f 19358 23732 23733 +f 19358 23733 23734 +f 23734 23733 23728 +f 23734 23728 23727 +f 19362 23735 19360 +f 19360 23735 23736 +f 19360 23736 23732 +f 23732 23736 23737 +f 23732 23737 23738 +f 19365 23739 19362 +f 19362 23739 23740 +f 19362 23740 23736 +f 23736 23740 23741 +f 23736 23741 23737 +f 19369 23742 19365 +f 19365 23742 23743 +f 19365 23743 23740 +f 23740 23743 23744 +f 23740 23744 23741 +f 19372 23745 19369 +f 19369 23745 23746 +f 19369 23746 23743 +f 23743 23746 23747 +f 23743 23747 23744 +f 19377 23748 19372 +f 19372 23748 23746 +f 19372 23746 23745 +f 19378 23749 19377 +f 19377 23749 23750 +f 23750 23749 19378 +f 23750 19378 23751 +f 23751 19378 19375 +f 23751 19375 23752 +f 23752 19375 19376 +f 23752 19376 23753 +f 23753 19376 23754 +f 23753 23754 23751 +f 23751 23754 23755 +f 23751 23755 23756 +f 19376 19374 23754 +f 23754 19374 23757 +f 23754 23757 23758 +f 23758 23757 23759 +f 23759 23757 23760 +f 23760 23757 23761 +f 23760 23761 23762 +f 23762 23761 23763 +f 23762 23763 23764 +f 23764 23763 19370 +f 23764 19370 23765 +f 23765 19370 23766 +f 23765 23766 19368 +f 19368 23766 19370 +f 23757 19374 23767 +f 23767 19374 19373 +f 23767 19373 23757 +f 23757 19373 19371 +f 23757 19371 23763 +f 23763 19371 23768 +f 23763 23768 19370 +f 19370 23768 23769 +f 19370 23769 19371 +f 19371 23769 23768 +f 19368 19367 23765 +f 23765 19367 23764 +f 19366 23770 19367 +f 23770 19366 23771 +f 23771 19366 23772 +f 23771 23772 19367 +f 19367 23772 23764 +f 19364 23773 19366 +f 19366 23773 23774 +f 19366 23774 23772 +f 23772 23774 23775 +f 23772 23775 23776 +f 23776 23775 23777 +f 23776 23777 23778 +f 19363 23779 19364 +f 19364 23779 23780 +f 19364 23780 23773 +f 23773 23780 19363 +f 23773 19363 23774 +f 23774 19363 23781 +f 23774 23781 23782 +f 23782 23781 23783 +f 23782 23783 23784 +f 23784 23783 23785 +f 23784 23785 23786 +f 23786 23785 23787 +f 23786 23787 23788 +f 23788 23787 23789 +f 23788 23789 23790 +f 19361 23791 19363 +f 19363 23791 23792 +f 19363 23792 23781 +f 23781 23792 23793 +f 23781 23793 23783 +f 23783 23793 23794 +f 23783 23794 23785 +f 23785 23794 23795 +f 23785 23795 23787 +f 23787 23795 19357 +f 23787 19357 19355 +f 19359 23796 19361 +f 19361 23796 23793 +f 19361 23793 23792 +f 19357 23797 19359 +f 19359 23797 23795 +f 19359 23795 23794 +f 19353 23798 19355 +f 19355 23798 23799 +f 19355 23799 23800 +f 23800 23799 23801 +f 23800 23801 23802 +f 23802 23801 23803 +f 23802 23803 23804 +f 23804 23803 23805 +f 23804 23805 23806 +f 23806 23805 23807 +f 23806 23807 23804 +f 19351 23808 19353 +f 19353 23808 23809 +f 19353 23809 23798 +f 23798 23809 23810 +f 23798 23810 23811 +f 23811 23810 23812 +f 23811 23812 23813 +f 23813 23812 23807 +f 23813 23807 23803 +f 23803 23807 23805 +f 19350 23814 19351 +f 19351 23814 23815 +f 19351 23815 23808 +f 23808 23815 23816 +f 23808 23816 23817 +f 23817 23816 23818 +f 23817 23818 23819 +f 23819 23818 23820 +f 23819 23820 23821 +f 23821 23820 23822 +f 23821 23822 23823 +f 23823 23822 23824 +f 23823 23824 23825 +f 23825 23824 23826 +f 23825 23826 23827 +f 23827 23826 21703 +f 23827 21703 23828 +f 23828 21703 23829 +f 23828 23829 23830 +f 23830 23829 23831 +f 23830 23831 23832 +f 23832 23831 21704 +f 23832 21704 21707 +f 19349 23833 19350 +f 19350 23833 23834 +f 19350 23834 23814 +f 23814 23834 23835 +f 23814 23835 23836 +f 23836 23835 23837 +f 23836 23837 23838 +f 23838 23837 23839 +f 23838 23839 23840 +f 23840 23839 23841 +f 23840 23841 23842 +f 23842 23841 23843 +f 23842 23843 23824 +f 19380 23844 19349 +f 19349 23844 23845 +f 19349 23845 23833 +f 23833 23845 23846 +f 23833 23846 23834 +f 23834 23846 23835 +f 19384 23847 19380 +f 19380 23847 23848 +f 19380 23848 23849 +f 23849 23848 23850 +f 23849 23850 23851 +f 23851 23850 19655 +f 23851 19655 23852 +f 23852 19655 19631 +f 23852 19631 23853 +f 23853 19631 23854 +f 23853 23854 23845 +f 23845 23854 23855 +f 23845 23855 23846 +f 23846 23855 23856 +f 23846 23856 23835 +f 23835 23856 23837 +f 23847 19384 23857 +f 23857 19384 19386 +f 23857 19386 23858 +f 23858 19386 19387 +f 23858 19387 23859 +f 23859 19387 19388 +f 23859 19388 23860 +f 23860 19388 19390 +f 23860 19390 19391 +f 23860 19391 23861 +f 23861 19391 19392 +f 23861 19392 23862 +f 23862 19392 19393 +f 23862 19393 23863 +f 23863 19393 19395 +f 23863 19395 23864 +f 23864 19395 19394 +f 23864 19394 23865 +f 23865 19394 19389 +f 23865 19389 23866 +f 23866 19389 23867 +f 23866 23867 19661 +f 19661 23867 19659 +f 19659 23867 23868 +f 19659 23868 19656 +f 19656 23868 23869 +f 19656 23869 23870 +f 23870 23869 19382 +f 23870 19382 19381 +f 19389 19385 23867 +f 23867 19385 23868 +f 19385 19383 23868 +f 23868 19383 23869 +f 19383 19382 23869 +f 19379 23871 19381 +f 19381 23871 23872 +f 19381 23872 23873 +f 23873 23872 23874 +f 23873 23874 19654 +f 19654 23874 19653 +f 19653 23874 23875 +f 19653 23875 23876 +f 23876 23875 23877 +f 23876 23877 23878 +f 23878 23877 19347 +f 23878 19347 23879 +f 23879 19347 19348 +f 23879 19348 23880 +f 23880 19348 23881 +f 23880 23881 23882 +f 23882 23881 23883 +f 23882 23883 23884 +f 23884 23883 23885 +f 23884 23885 23886 +f 23886 23885 23887 +f 23886 23887 23888 +f 23888 23887 23889 +f 23888 23889 23890 +f 23890 23889 23891 +f 23890 23891 23892 +f 23892 23891 23893 +f 23892 23893 23894 +f 23871 19379 23877 +f 23877 19379 19347 +f 23881 19348 23895 +f 23895 19348 19352 +f 23895 19352 23896 +f 23896 19352 23897 +f 23896 23897 23898 +f 23898 23897 23899 +f 23898 23899 23900 +f 23900 23899 23901 +f 23900 23901 23902 +f 23902 23901 23903 +f 23902 23903 23904 +f 19352 19354 23897 +f 23897 19354 23905 +f 23897 23905 23899 +f 23899 23905 23906 +f 23899 23906 23901 +f 23901 23906 23907 +f 23901 23907 23903 +f 21857 21859 23908 +f 23908 21859 21861 +f 23908 21861 23909 +f 23909 21861 21863 +f 23909 21863 21865 +f 21865 21845 23909 +f 23909 21845 23910 +f 23909 23910 23911 +f 23911 23910 23912 +f 23911 23912 23913 +f 23913 23912 23914 +f 23913 23914 23915 +f 23915 23914 23916 +f 23915 23916 23917 +f 23917 23916 23918 +f 23917 23918 23919 +f 23919 23918 23920 +f 23919 23920 23921 +f 23921 23920 23922 +f 23921 23922 23923 +f 23923 23922 23924 +f 23923 23924 23925 +f 23925 23924 23926 +f 23926 23924 23927 +f 23926 23927 23928 +f 23928 23927 23929 +f 23928 23929 23930 +f 23930 23929 23931 +f 23930 23931 23932 +f 23932 23931 23933 +f 23932 23933 23934 +f 23934 23933 23935 +f 23934 23935 23936 +f 23936 23935 23937 +f 23936 23937 23938 +f 23938 23937 23939 +f 23938 23939 23940 +f 23940 23939 23941 +f 23940 23941 23942 +f 23942 23941 23943 +f 23942 23943 23944 +f 23944 23943 23945 +f 23944 23945 23946 +f 23946 23945 23947 +f 23946 23947 23878 +f 23878 23947 23948 +f 23878 23948 23876 +f 23876 23948 23949 +f 23876 23949 19653 +f 19653 23949 23950 +f 19653 23950 19633 +f 19633 23950 23948 +f 19633 23948 23947 +f 21845 21847 23910 +f 23910 21847 23951 +f 23910 23951 23952 +f 23952 23951 23953 +f 23952 23953 23954 +f 23954 23953 23955 +f 23954 23955 23956 +f 23956 23955 23957 +f 23956 23957 23958 +f 23958 23957 23959 +f 23958 23959 23960 +f 23960 23959 23961 +f 23960 23961 23962 +f 23962 23961 23963 +f 23962 23963 23964 +f 23964 23963 23965 +f 23964 23965 23966 +f 23966 23965 23967 +f 23966 23967 23943 +f 23943 23967 23945 +f 23951 21847 23968 +f 23968 21847 21849 +f 23968 21849 23969 +f 23969 21849 23675 +f 23969 23675 23674 +f 21849 21850 23675 +f 23675 21850 23970 +f 23675 23970 23676 +f 23676 23970 21854 +f 23676 21854 21721 +f 21850 21852 23970 +f 23970 21852 21854 +f 21721 21720 23676 +f 23676 21720 23677 +f 23677 21720 21718 +f 23677 21718 21717 +f 23677 21717 23678 +f 23678 21717 21715 +f 23678 21715 21714 +f 21714 21713 23678 +f 23678 21713 23579 +f 23579 21713 21711 +f 23673 23971 23674 +f 23674 23971 23972 +f 23674 23972 23969 +f 23969 23972 23968 +f 23672 23973 23673 +f 23673 23973 23974 +f 23673 23974 23971 +f 23971 23974 23975 +f 23971 23975 23976 +f 23976 23975 23955 +f 23976 23955 23953 +f 23671 23977 23672 +f 23672 23977 23978 +f 23672 23978 23973 +f 23973 23978 23979 +f 23973 23979 23980 +f 23980 23979 23959 +f 23980 23959 23957 +f 23659 23981 23671 +f 23671 23981 23982 +f 23671 23982 23977 +f 23977 23982 23983 +f 23977 23983 23984 +f 23984 23983 23961 +f 23984 23961 23979 +f 23979 23961 23959 +f 23981 23659 23985 +f 23985 23659 19638 +f 23985 19638 23986 +f 23986 19638 19633 +f 23986 19633 23947 +f 19656 23987 19654 +f 19654 23987 23870 +f 19654 23870 23873 +f 23873 23870 19381 +f 19661 19663 23866 +f 23866 19663 23988 +f 23866 23988 23989 +f 23989 23988 19669 +f 23989 19669 19671 +f 19663 19669 23988 +f 19670 23990 19671 +f 19671 23990 23864 +f 19671 23864 23865 +f 19667 23863 19670 +f 19670 23863 23864 +f 19670 23864 23990 +f 19668 23991 19667 +f 19667 23991 23992 +f 19667 23992 23862 +f 23862 23992 19668 +f 23862 19668 23861 +f 23861 19668 19666 +f 23861 19666 23993 +f 23993 19666 23994 +f 23993 23994 19665 +f 19665 23994 19666 +f 19664 23995 19665 +f 19665 23995 23996 +f 19665 23996 23997 +f 23997 23996 19664 +f 23997 19664 23860 +f 23860 19664 23998 +f 23860 23998 23859 +f 23859 23998 23999 +f 23859 23999 23858 +f 23858 23999 24000 +f 23858 24000 23857 +f 23857 24000 19658 +f 23857 19658 24001 +f 24001 19658 24002 +f 24001 24002 19657 +f 19657 24002 19658 +f 23998 19664 24003 +f 24003 19664 19662 +f 24003 19662 23998 +f 23998 19662 23999 +f 19662 19660 23999 +f 23999 19660 24000 +f 19660 19658 24000 +f 19655 24004 19657 +f 19657 24004 24005 +f 19657 24005 24006 +f 24006 24005 24004 +f 24006 24004 23850 +f 23850 24004 19655 +f 19632 24007 19631 +f 19631 24007 24008 +f 19631 24008 23854 +f 23854 24008 23565 +f 23854 23565 24009 +f 24009 23565 24010 +f 24009 24010 23580 +f 23580 24010 24011 +f 23580 24011 23565 +f 23565 24011 24010 +f 19632 23565 24007 +f 24007 23565 24008 +f 23573 24012 23580 +f 23580 24012 24013 +f 23580 24013 24014 +f 24014 24013 21846 +f 24014 21846 24015 +f 24015 21846 21844 +f 24015 21844 24016 +f 24016 21844 24017 +f 24016 24017 23839 +f 23839 24017 23841 +f 23573 23572 24012 +f 24012 23572 21848 +f 24012 21848 21846 +f 23574 21719 23572 +f 23572 21719 21855 +f 23572 21855 21853 +f 21719 23574 21716 +f 21716 23574 23578 +f 21716 23578 21712 +f 21712 23578 23579 +f 21712 23579 21711 +f 21853 21851 23572 +f 23572 21851 21848 +f 21844 21864 24017 +f 24017 21864 21862 +f 24017 21862 21860 +f 24017 21860 23843 +f 23843 21860 21858 +f 23843 21858 21856 +f 23829 21703 23831 +f 23831 21703 21704 +f 21710 24018 21707 +f 21707 24018 24019 +f 21707 24019 24020 +f 21710 24021 24018 +f 24020 23832 21707 +f 24022 24023 23830 +f 23830 24023 24024 +f 23830 24024 24025 +f 24025 24024 24022 +f 24025 24022 24026 +f 24026 24022 24027 +f 24026 24027 24028 +f 24028 24027 24029 +f 24028 24029 23823 +f 23823 24029 23821 +f 23807 24030 24022 +f 24022 24030 24031 +f 24022 24031 24032 +f 24032 24031 23807 +f 24032 23807 24027 +f 24027 23807 24029 +f 23802 23804 24033 +f 24033 23804 24034 +f 24033 24034 23802 +f 23802 24034 23800 +f 23800 24034 24035 +f 24035 24034 24036 +f 24035 24036 23800 +f 23800 24036 23789 +f 23800 23789 23787 +f 23790 24037 23788 +f 23788 24037 23786 +f 24037 24038 23786 +f 23786 24038 23784 +f 24038 24039 23784 +f 23784 24039 23782 +f 23782 24039 24040 +f 24040 24039 23775 +f 24040 23775 23774 +f 23762 24041 23778 +f 23778 24041 23764 +f 23778 23764 23772 +f 23758 23755 23754 +f 23751 23756 23750 +f 23750 23756 24042 +f 23750 24042 24043 +f 23750 24043 23748 +f 23748 24043 23747 +f 23748 23747 23746 +f 23732 23738 23733 +f 23733 23738 24044 +f 23733 24044 23728 +f 23728 24044 24045 +f 23728 24045 23730 +f 23729 23731 23723 +f 23723 23731 23725 +f 23724 23726 23906 +f 23906 23726 23907 +f 23902 23904 24046 +f 24046 23904 24047 +f 24046 24047 23891 +f 23891 24047 23893 +f 23892 23894 24048 +f 24048 23894 24049 +f 24048 24049 23930 +f 23930 24049 23928 +f 23925 24050 23923 +f 23923 24050 24051 +f 23923 24051 23921 +f 23921 24051 24052 +f 23921 24052 23919 +f 23919 24052 24053 +f 23919 24053 23917 +f 23917 24053 24054 +f 23917 24054 23915 +f 23915 24054 24055 +f 23915 24055 23913 +f 23913 24055 24056 +f 23913 24056 24057 +f 24057 24056 24058 +f 24058 24056 24055 +f 24058 24055 24059 +f 24059 24055 24054 +f 24059 24054 24053 +f 24052 24051 24060 +f 24060 24051 24061 +f 24060 24061 21705 +f 21705 24061 24062 +f 21705 24062 21706 +f 21706 24062 24063 +f 21706 24063 24064 +f 24064 24065 21706 +f 21706 24065 21708 +f 21708 24065 21709 +f 21709 24065 24066 +f 21709 24066 21710 +f 21710 24066 24021 +f 24060 21705 24052 +f 24052 21705 24067 +f 24052 24067 24053 +f 24053 24067 24059 +f 23913 24057 23911 +f 23911 24057 23908 +f 23911 23908 23909 +f 23763 23761 23757 +f 23748 19377 23750 +f 19369 23743 23742 +f 19362 23736 23735 +f 23771 19367 23770 +f 19357 23795 23797 +f 23727 19358 23734 +f 23863 19667 23862 +f 24012 21846 24013 +f 19668 23992 23991 +f 23949 23948 23950 +f 23824 23822 23842 +f 23842 23822 23820 +f 23842 23820 23840 +f 23840 23820 23818 +f 23840 23818 23838 +f 23838 23818 23816 +f 23838 23816 23836 +f 23836 23816 23815 +f 23836 23815 23814 +f 19356 23729 24068 +f 24068 23729 23723 +f 24068 23723 23722 +f 24068 23722 19356 +f 23739 19365 23740 +f 23827 23828 24025 +f 24025 23828 23830 +f 23827 24025 24026 +f 24022 24032 24027 +f 24023 24022 24024 +f 24030 23807 24031 +f 23800 23787 19355 +f 24040 23774 23782 +f 23776 23778 23772 +f 24041 23762 23764 +f 23752 23753 23751 +f 23905 19354 23724 +f 23724 23906 23905 +f 23902 24046 24069 +f 24069 24046 23889 +f 24069 23889 23887 +f 24046 23891 23889 +f 23892 24048 24070 +f 24070 24048 23932 +f 24070 23932 23934 +f 24048 23930 23932 +f 23929 23927 24071 +f 24071 23927 24072 +f 24071 24072 24073 +f 24073 24072 24074 +f 24073 24074 24075 +f 24075 24074 24076 +f 24075 24076 24077 +f 24077 24076 24078 +f 24077 24078 24079 +f 24079 24078 24080 +f 24079 24080 24081 +f 24081 24080 24082 +f 24081 24082 23954 +f 23954 24082 23952 +f 23927 23924 24072 +f 24072 23924 23922 +f 24072 23922 24074 +f 24074 23922 23920 +f 24074 23920 24076 +f 24076 23920 23918 +f 24076 23918 24078 +f 24078 23918 23916 +f 24078 23916 24080 +f 24080 23916 23914 +f 24080 23914 24082 +f 24082 23914 23912 +f 24082 23912 23952 +f 23952 23912 23910 +f 23929 24071 23931 +f 23931 24071 24083 +f 23931 24083 23933 +f 23933 24083 24084 +f 23933 24084 23935 +f 23935 24084 24085 +f 23935 24085 23937 +f 23937 24085 24086 +f 23937 24086 23939 +f 23939 24086 24087 +f 23939 24087 23941 +f 23941 24087 23966 +f 23941 23966 23943 +f 24083 24071 24073 +f 23892 24070 23890 +f 23890 24070 24088 +f 23890 24088 23888 +f 23888 24088 24089 +f 23888 24089 23886 +f 23886 24089 24090 +f 23886 24090 23884 +f 23884 24090 24091 +f 23884 24091 23882 +f 23882 24091 24092 +f 23882 24092 23880 +f 23880 24092 23879 +f 24088 24070 23934 +f 23902 24069 23900 +f 23900 24069 24093 +f 23900 24093 23898 +f 23898 24093 24094 +f 23898 24094 23896 +f 23896 24094 23895 +f 24093 24069 23887 +f 23791 19361 23792 +f 19359 23794 23796 +f 23796 23794 23793 +f 23813 23803 23801 +f 23798 23811 23799 +f 23799 23811 23801 +f 23811 23813 23801 +f 19363 23780 23779 +f 23821 24029 23812 +f 23812 24029 23807 +f 23825 23827 24026 +f 23825 24026 24028 +f 23825 24028 23823 +f 23819 23821 23812 +f 23817 23819 23810 +f 23810 23819 23812 +f 23808 23817 23809 +f 23809 23817 23810 +f 24017 23843 23841 +f 23839 23837 24016 +f 24016 23837 23856 +f 24016 23856 24095 +f 24095 23856 23855 +f 24095 23855 24009 +f 24009 23855 23854 +f 24015 24016 24095 +f 24014 24015 24095 +f 24014 24095 24009 +f 23951 23968 23953 +f 23953 23968 23976 +f 23957 23955 23975 +f 23971 23976 23972 +f 23972 23976 23968 +f 23957 23975 23980 +f 23980 23975 23974 +f 23980 23974 23973 +f 23963 23961 23983 +f 23977 23984 23978 +f 23978 23984 23979 +f 23967 23965 24096 +f 24096 23965 23983 +f 24096 23983 23982 +f 23945 23967 24097 +f 24097 23967 24096 +f 24097 24096 23981 +f 23981 24096 23982 +f 23947 23945 24098 +f 24098 23945 24097 +f 24098 24097 23985 +f 23985 24097 23981 +f 23986 23947 24098 +f 23986 24098 23985 +f 23871 23877 23875 +f 23874 23872 23875 +f 23875 23872 23871 +f 23987 19656 23870 +f 19671 23865 23989 +f 23989 23865 23866 +f 23997 23860 23861 +f 19665 23997 23861 +f 23857 24001 23847 +f 23847 24001 24006 +f 23847 24006 23848 +f 23848 24006 23850 +f 23844 19380 23849 +f 23852 23853 23844 +f 23844 23853 23845 +f 23852 23844 23851 +f 23851 23844 23849 +f 23580 24014 24009 +f 23944 23946 23879 +f 23879 23946 23878 +f 23965 23963 23983 +f 23942 23944 24092 +f 24092 23944 23879 +f 23966 24087 23964 +f 23964 24087 24099 +f 23964 24099 23962 +f 23962 24099 24100 +f 23962 24100 23960 +f 23960 24100 24101 +f 23960 24101 23958 +f 23958 24101 24102 +f 23958 24102 23956 +f 23956 24102 24081 +f 23956 24081 23954 +f 23881 23895 23883 +f 23883 23895 24094 +f 23883 24094 23885 +f 23885 24094 24093 +f 23885 24093 23887 +f 24091 24090 23940 +f 23940 24090 23938 +f 23936 23938 24089 +f 24089 23938 24090 +f 24085 24103 24104 +f 24104 24103 24105 +f 24104 24105 24100 +f 24100 24105 24101 +f 24103 24106 24105 +f 24105 24106 24107 +f 24105 24107 24101 +f 24101 24107 24102 +f 24085 24084 24103 +f 24103 24084 24108 +f 24103 24108 24106 +f 24106 24108 24075 +f 24106 24075 24077 +f 24106 24077 24107 +f 24107 24077 24079 +f 24107 24079 24102 +f 24102 24079 24081 +f 24085 24104 24086 +f 24086 24104 24099 +f 24086 24099 24087 +f 24099 24104 24100 +f 24092 24091 23942 +f 23942 24091 23940 +f 23936 24089 24088 +f 24088 23934 23936 +f 24108 24084 24083 +f 24075 24108 24073 +f 24073 24108 24083 +f 23993 19665 23861 +f 19657 24006 24001 +f 23995 19664 23996 +f 21300 21301 21270 +f 21270 21301 21302 +f 21270 21302 21303 +f 21303 21304 21270 +f 21270 21304 21305 +f 21270 21305 21306 +f 21316 21307 21306 +f 21306 21307 21272 +f 21306 21272 21270 +f 21307 21316 21317 +f 21317 21316 21318 +f 21317 21318 21319 +f 21307 21308 21272 +f 21272 21308 21309 +f 21272 21309 21310 +f 21310 21311 21272 +f 21272 21311 21312 +f 21272 21312 21313 +f 21313 21314 21272 +f 21272 21314 21315 +f 21298 21297 21299 +f 21299 21297 21295 +f 21295 21297 21296 +f 21295 21296 21294 +f 21295 21294 21293 +f 21293 21294 21291 +f 21293 21291 21292 +f 21292 21291 21290 +f 21276 21269 21277 +f 21276 21277 21278 +f 21268 21270 21269 +f 21269 21270 21271 +f 21269 21271 21284 +f 21270 21272 21271 +f 21271 21272 21273 +f 21274 21273 21275 +f 21275 21273 21289 +f 21284 21283 21269 +f 21269 21283 21282 +f 21269 21282 21281 +f 21281 21282 21288 +f 21281 21288 21287 +f 21287 21286 21281 +f 21281 21286 21285 +f 21278 21279 21276 +f 21276 21279 21280 +f 21289 21273 24109 +f 24109 21273 24110 +f 24109 24110 24111 +f 24111 24110 24112 +f 24111 24112 24113 +f 24113 24112 24114 +f 24113 24114 24115 +f 24116 21271 24117 +f 24117 21271 21274 +f 24117 21274 24118 +f 24118 21274 24119 +f 24118 24119 24120 +f 24120 24119 24121 +f 24120 24121 24122 +f 24122 24121 24109 +f 24122 24109 24111 +f 21274 21275 24119 +f 24119 21275 24123 +f 24119 24123 24121 +f 24121 24123 24109 +f 21275 21289 24123 +f 24123 21289 24109 +f 24113 24124 24111 +f 24111 24124 24125 +f 24111 24125 24122 +f 24122 24125 24126 +f 24122 24126 24120 +f 24120 24126 24127 +f 24120 24127 24118 +f 24118 24127 24117 +f 24115 24128 24113 +f 24113 24128 24129 +f 24113 24129 24130 +f 24130 24129 24131 +f 24130 24131 24132 +f 24132 24131 24133 +f 24132 24133 24134 +f 24134 24133 24135 +f 24134 24135 24136 +f 24136 24135 24137 +f 24136 24137 24138 +f 24128 24115 24139 +f 24139 24115 24114 +f 24139 24114 24140 +f 24140 24114 24112 +f 24140 24112 24141 +f 24141 24112 24142 +f 24141 24142 24143 +f 24143 24142 24144 +f 24143 24144 24145 +f 24145 24144 24146 +f 24145 24146 24147 +f 24147 24146 24148 +f 24147 24148 24149 +f 24149 24148 24150 +f 24150 24148 24151 +f 24150 24151 24152 +f 24112 24110 24142 +f 24142 24110 24153 +f 24142 24153 24144 +f 24144 24153 24154 +f 24144 24154 24146 +f 24146 24154 24155 +f 24146 24155 24148 +f 24148 24155 24156 +f 24148 24156 24151 +f 24151 24156 19624 +f 19624 24156 19628 +f 19628 24156 24157 +f 24157 24156 24155 +f 24157 24155 24158 +f 24158 24155 24154 +f 24158 24154 24159 +f 24159 24154 24160 +f 24160 24154 24153 +f 24160 24153 24161 +f 24161 24153 21272 +f 24161 21272 21315 +f 24110 21273 24153 +f 24153 21273 21272 +f 24149 24162 24147 +f 24147 24162 24163 +f 24147 24163 24145 +f 24145 24163 24164 +f 24145 24164 24143 +f 24143 24164 24165 +f 24143 24165 24141 +f 24141 24165 24140 +f 24162 24166 24163 +f 24163 24166 24167 +f 24163 24167 24164 +f 24164 24167 24168 +f 24164 24168 24165 +f 24165 24168 24169 +f 24165 24169 24140 +f 24140 24169 24139 +f 24166 24170 24167 +f 24167 24170 24171 +f 24167 24171 24168 +f 24168 24171 24172 +f 24168 24172 24169 +f 24169 24172 24173 +f 24169 24173 24139 +f 24139 24173 24128 +f 24170 24174 24171 +f 24171 24174 24175 +f 24171 24175 24172 +f 24172 24175 24176 +f 24172 24176 24173 +f 24173 24176 24177 +f 24173 24177 24128 +f 24128 24177 24129 +f 24174 24178 24175 +f 24175 24178 24179 +f 24175 24179 24176 +f 24176 24179 24180 +f 24176 24180 24177 +f 24177 24180 24131 +f 24177 24131 24129 +f 24179 24178 24181 +f 24181 24178 24137 +f 24181 24137 24135 +f 24136 24138 24182 +f 24182 24138 24183 +f 24182 24183 24116 +f 24182 24116 24117 +f 24117 24127 24182 +f 24182 24127 24184 +f 24182 24184 24136 +f 24136 24184 24134 +f 24180 24179 24181 +f 24180 24181 24133 +f 24133 24181 24135 +f 24180 24133 24131 +f 24134 24184 24185 +f 24185 24184 24126 +f 24185 24126 24125 +f 24184 24127 24126 +f 24134 24185 24132 +f 24132 24185 24124 +f 24132 24124 24130 +f 24130 24124 24113 +f 24124 24185 24125 +f 21281 24186 21269 +f 21269 24186 24187 +f 21269 24187 24188 +f 21285 24189 21281 +f 21281 24189 24186 +f 24188 24190 21269 +f 21315 21314 24161 +f 24161 21314 24191 +f 24161 24191 24160 +f 24160 24191 24159 +f 24159 24191 24192 +f 24159 24192 24158 +f 24158 24192 24193 +f 24158 24193 24194 +f 24194 24193 24195 +f 24194 24195 24196 +f 24196 24195 24197 +f 24196 24197 24198 +f 24198 24197 24199 +f 24198 24199 24200 +f 24200 24199 21310 +f 24200 21310 21309 +f 21314 21313 24191 +f 24191 21313 24201 +f 24191 24201 24192 +f 24192 24201 24202 +f 24192 24202 24193 +f 24193 24202 24195 +f 21313 21312 24201 +f 24201 21312 24202 +f 24202 21312 24203 +f 24203 21312 21311 +f 24203 21311 24197 +f 24197 21311 24199 +f 21311 21310 24199 +f 21308 24204 21309 +f 21309 24204 24205 +f 21309 24205 24200 +f 24200 24205 24206 +f 24200 24206 24198 +f 24198 24206 24207 +f 24198 24207 24196 +f 24196 24207 24208 +f 24196 24208 24194 +f 24194 24208 24157 +f 24194 24157 24158 +f 21307 24209 21308 +f 21308 24209 24210 +f 21308 24210 24204 +f 24204 24210 24211 +f 24204 24211 24205 +f 24205 24211 24212 +f 24205 24212 24206 +f 24206 24212 24213 +f 24206 24213 24207 +f 24207 24213 24214 +f 24207 24214 24208 +f 24208 24214 24157 +f 21307 23586 24209 +f 24209 23586 24215 +f 24209 24215 24210 +f 24210 24215 24211 +f 23586 23585 24215 +f 24215 23585 24216 +f 24215 24216 24211 +f 24211 24216 24212 +f 23585 23584 24216 +f 24216 23584 24217 +f 24216 24217 24212 +f 24212 24217 24213 +f 23584 19619 24217 +f 24217 19619 24218 +f 24217 24218 24213 +f 24213 24218 24214 +f 19619 19622 24218 +f 24218 19622 19628 +f 24218 19628 24157 +f 24218 24157 24214 +f 24195 24202 24203 +f 24197 24195 24203 +f 21285 21286 24189 +f 24189 21286 21287 +f 24189 21287 21288 +f 24189 21288 24219 +f 24219 21288 21282 +f 24219 21282 21283 +f 21283 21284 24219 +f 24219 21284 21271 +f 24219 21271 24220 +f 24220 21271 24221 +f 24221 21271 24116 +f 19347 19379 19349 +f 19349 19379 19380 +f 19380 19379 19381 +f 19380 19381 19382 +f 19380 19383 19384 +f 19390 19389 19391 +f 19391 19389 19392 +f 19392 19389 19393 +f 19393 19389 19394 +f 19393 19394 19395 +f 19360 19361 19362 +f 19362 19363 19364 +f 19362 19364 19365 +f 19365 19364 19366 +f 19365 19366 19367 +f 19367 19368 19365 +f 19365 19368 19369 +f 19369 19368 19370 +f 19369 19370 19371 +f 19369 19371 19372 +f 19375 19378 19372 +f 19353 19354 19352 +f 21305 24222 21306 +f 21306 24222 24223 +f 21306 24223 23620 +f 23620 24223 24224 +f 23620 24224 24225 +f 24225 24224 24226 +f 24225 24226 24227 +f 24227 24226 24228 +f 24227 24228 24229 +f 24229 24228 24230 +f 24229 24230 24231 +f 24231 24230 24232 +f 24231 24232 24233 +f 24233 24232 24234 +f 24233 24234 24235 +f 24235 24234 24236 +f 24235 24236 24237 +f 24237 24236 21301 +f 24237 21301 24238 +f 24238 21301 21300 +f 24238 21300 24239 +f 21304 24240 21305 +f 21305 24240 24241 +f 21305 24241 24242 +f 24242 24241 24243 +f 24242 24243 24244 +f 24244 24243 24245 +f 24244 24245 24228 +f 24228 24245 24230 +f 21303 24246 21304 +f 21304 24246 24247 +f 21304 24247 24240 +f 24240 24247 24243 +f 24240 24243 24241 +f 21302 24248 21303 +f 21303 24248 24249 +f 21303 24249 24246 +f 24246 24249 24247 +f 21301 24236 21302 +f 21302 24236 24234 +f 21302 24234 24248 +f 24248 24234 24232 +f 24248 24232 24250 +f 24250 24232 24230 +f 24250 24230 24245 +f 24239 24251 24238 +f 24238 24251 24252 +f 24238 24252 24237 +f 24237 24252 24235 +f 24251 24253 24252 +f 24252 24253 24254 +f 24252 24254 24255 +f 24255 24254 24256 +f 24255 24256 24257 +f 24257 24256 24258 +f 24257 24258 24259 +f 24259 24258 24260 +f 24259 24260 24261 +f 24261 24260 23625 +f 24261 23625 24262 +f 24262 23625 23621 +f 24262 23621 24261 +f 24261 23621 24227 +f 24261 24227 24229 +f 24253 24263 24254 +f 24254 24263 24264 +f 24254 24264 24256 +f 24256 24264 24265 +f 24256 24265 24258 +f 24258 24265 24266 +f 24258 24266 24260 +f 24260 24266 24267 +f 24260 24267 23625 +f 23625 24267 24268 +f 23625 24268 23626 +f 23626 24268 24266 +f 23626 24266 24269 +f 24269 24266 24265 +f 24269 24265 24270 +f 24270 24265 24264 +f 24270 24264 24263 +f 24263 19630 24270 +f 24270 19630 24271 +f 24270 24271 24269 +f 24269 24271 23628 +f 24269 23628 24272 +f 24272 23628 23626 +f 24272 23626 24269 +f 19630 19621 24271 +f 24271 19621 24273 +f 24271 24273 23628 +f 23628 24273 19621 +f 23620 24225 23621 +f 23621 24225 24274 +f 23621 24274 24227 +f 24227 24274 24225 +f 24224 24223 24275 +f 24275 24223 24222 +f 24275 24222 21305 +f 24266 24268 24267 +f 24257 24259 24231 +f 24231 24259 24229 +f 24229 24259 24261 +f 24228 24226 24244 +f 24244 24226 24275 +f 24244 24275 24242 +f 24242 24275 21305 +f 24250 24245 24247 +f 24247 24245 24243 +f 24255 24257 24233 +f 24233 24257 24231 +f 24235 24252 24255 +f 24255 24233 24235 +f 24249 24248 24250 +f 24250 24247 24249 +f 24224 24275 24226 +f 24276 21280 24277 +f 24277 21280 21279 +f 24277 21279 24278 +f 24278 21279 21278 +f 24278 21278 24279 +f 24279 21278 21277 +f 24279 21277 24280 +f 24280 21277 24281 +f 24280 24281 24282 +f 24282 24281 24283 +f 24282 24283 24284 +f 24284 24283 24285 +f 24284 24285 24286 +f 24286 24285 24287 +f 24286 24287 24288 +f 24288 24287 24137 +f 24288 24137 24178 +f 21277 21269 24281 +f 24281 21269 24289 +f 24281 24289 24283 +f 24283 24289 24290 +f 24283 24290 24285 +f 24285 24290 24291 +f 24285 24291 24287 +f 24287 24291 24137 +f 24190 24292 21269 +f 21269 24292 24293 +f 21269 24293 24289 +f 24289 24293 24290 +f 24183 24294 24190 +f 24190 24294 24290 +f 24190 24290 24293 +f 24183 24138 24294 +f 24294 24138 24291 +f 24294 24291 24290 +f 24138 24137 24291 +f 24288 24178 24295 +f 24295 24178 24174 +f 24295 24174 24296 +f 24296 24174 24170 +f 24296 24170 24297 +f 24297 24170 24166 +f 24297 24166 24298 +f 24298 24166 24162 +f 24298 24162 24299 +f 24299 24162 24300 +f 24299 24300 24301 +f 24301 24300 24302 +f 24301 24302 24303 +f 24303 24302 24304 +f 24303 24304 24305 +f 24305 24304 24306 +f 24305 24306 24307 +f 24307 24306 24308 +f 24307 24308 24309 +f 24309 24308 24310 +f 24309 24310 24311 +f 24311 24310 24312 +f 24311 24312 24313 +f 24313 24312 24314 +f 24313 24314 24315 +f 24315 24314 24316 +f 24315 24316 24317 +f 24317 24316 24318 +f 24317 24318 21268 +f 21268 24318 21270 +f 21270 24318 24239 +f 21270 24239 21300 +f 24162 24149 24300 +f 24300 24149 24319 +f 24300 24319 24302 +f 24302 24319 24320 +f 24302 24320 24304 +f 24304 24320 24321 +f 24304 24321 24306 +f 24306 24321 24322 +f 24306 24322 24308 +f 24308 24322 24323 +f 24308 24323 24310 +f 24310 24323 24324 +f 24310 24324 24312 +f 24312 24324 24325 +f 24312 24325 24314 +f 24314 24325 24316 +f 24149 24150 24319 +f 24319 24150 24326 +f 24319 24326 24320 +f 24320 24326 24321 +f 24150 24152 24326 +f 24321 24326 24327 +f 24327 24326 19623 +f 24327 19623 19630 +f 19630 24263 24327 +f 24327 24263 24328 +f 24327 24328 24322 +f 24322 24328 24323 +f 24328 24263 24329 +f 24329 24263 24253 +f 24329 24253 24330 +f 24330 24253 24251 +f 24330 24251 24331 +f 24331 24251 24239 +f 24331 24239 24318 +f 21268 21276 24317 +f 24315 24332 24313 +f 24313 24332 24333 +f 24313 24333 24311 +f 24311 24333 24334 +f 24311 24334 24309 +f 24309 24334 24335 +f 24309 24335 24307 +f 24307 24335 24336 +f 24307 24336 24305 +f 24305 24336 24337 +f 24305 24337 24303 +f 24303 24337 24338 +f 24303 24338 24301 +f 24301 24338 24339 +f 24301 24339 24299 +f 24299 24339 24298 +f 24333 24332 24340 +f 24340 24332 24341 +f 24340 24341 24342 +f 24342 24341 24343 +f 24342 24343 24344 +f 24344 24343 24345 +f 24344 24345 24346 +f 24346 24345 24347 +f 24346 24347 24348 +f 24348 24347 24349 +f 24348 24349 24350 +f 24350 24349 24351 +f 24350 24351 24352 +f 24352 24351 24353 +f 24352 24353 24354 +f 24354 24353 24355 +f 24354 24355 24296 +f 24296 24355 24295 +f 24341 24356 24343 +f 24343 24356 24357 +f 24343 24357 24345 +f 24345 24357 24358 +f 24345 24358 24347 +f 24347 24358 24359 +f 24347 24359 24349 +f 24349 24359 24360 +f 24349 24360 24351 +f 24351 24360 24361 +f 24351 24361 24353 +f 24353 24361 24362 +f 24353 24362 24355 +f 24355 24362 24363 +f 24355 24363 24295 +f 24295 24363 24288 +f 24356 24364 24357 +f 24357 24364 24365 +f 24357 24365 24358 +f 24358 24365 24366 +f 24358 24366 24359 +f 24359 24366 24367 +f 24359 24367 24360 +f 24360 24367 24368 +f 24360 24368 24361 +f 24361 24368 24369 +f 24361 24369 24362 +f 24362 24369 24370 +f 24362 24370 24363 +f 24363 24370 24286 +f 24363 24286 24288 +f 24365 24364 24371 +f 24371 24364 24276 +f 24371 24276 24372 +f 24372 24276 24277 +f 24372 24277 24373 +f 24373 24277 24278 +f 24373 24278 24374 +f 24374 24278 24279 +f 24374 24279 24375 +f 24375 24279 24280 +f 24375 24280 24282 +f 24190 24293 24292 +f 24366 24365 24371 +f 24371 24372 24376 +f 24376 24372 24373 +f 24376 24373 24377 +f 24377 24373 24374 +f 24377 24374 24378 +f 24378 24374 24375 +f 24378 24375 24379 +f 24379 24375 24282 +f 24379 24282 24284 +f 24334 24333 24340 +f 24340 24342 24380 +f 24380 24342 24344 +f 24380 24344 24381 +f 24381 24344 24346 +f 24381 24346 24382 +f 24382 24346 24348 +f 24382 24348 24383 +f 24383 24348 24350 +f 24383 24350 24384 +f 24384 24350 24352 +f 24384 24352 24385 +f 24385 24352 24354 +f 24385 24354 24297 +f 24297 24354 24296 +f 24331 24318 24316 +f 24331 24316 24325 +f 24367 24366 24376 +f 24376 24366 24371 +f 24367 24376 24377 +f 24335 24334 24380 +f 24380 24334 24340 +f 24335 24380 24381 +f 24330 24331 24325 +f 24330 24325 24324 +f 24368 24367 24377 +f 24368 24377 24378 +f 24336 24335 24381 +f 24336 24381 24382 +f 24329 24330 24324 +f 24329 24324 24323 +f 24369 24368 24378 +f 24369 24378 24379 +f 24337 24336 24382 +f 24337 24382 24383 +f 24328 24329 24323 +f 24297 24298 24385 +f 24385 24298 24339 +f 24385 24339 24384 +f 24384 24339 24338 +f 24384 24338 24383 +f 24383 24338 24337 +f 24284 24286 24370 +f 24322 24321 24327 +f 24379 24284 24370 +f 24379 24370 24369 +f 21280 24276 21276 +f 21276 24276 24317 +f 24317 24276 24364 +f 24317 24364 24315 +f 24315 24364 24356 +f 24315 24356 24332 +f 24332 24356 24341 +f 24190 24188 24183 +f 24183 24188 24221 +f 24183 24221 24116 +f 24188 24187 24221 +f 24221 24187 24220 +f 24220 24187 24186 +f 24220 24186 24219 +f 24219 24186 24189 +f 24021 24066 24018 +f 24018 24066 24065 +f 24018 24065 24064 +f 24064 24063 24018 +f 24018 24063 24062 +f 24018 24062 23744 +f 23744 24062 23741 +f 23741 24062 23737 +f 23737 24062 24061 +f 23737 24061 24051 +f 24050 24044 24051 +f 24051 24044 23738 +f 24051 23738 23737 +f 24050 23925 24044 +f 24044 23925 24045 +f 24045 23925 23730 +f 23730 23925 23731 +f 23731 23925 23926 +f 23731 23926 23725 +f 23725 23926 23726 +f 23726 23926 23928 +f 23726 23928 23907 +f 23907 23928 24049 +f 23907 24049 23903 +f 23903 24049 23904 +f 23904 24049 24047 +f 24047 24049 23893 +f 23893 24049 23894 +f 23744 23747 24018 +f 24018 23747 24043 +f 24018 24043 24019 +f 24019 24043 24020 +f 24020 24043 23832 +f 23832 24043 23830 +f 23830 24043 24022 +f 24022 24043 23807 +f 23807 24043 23804 +f 23804 24043 24042 +f 23804 24042 23756 +f 23756 23755 23804 +f 23804 23755 23758 +f 23804 23758 23759 +f 23759 23760 23804 +f 23804 23760 23762 +f 23804 23762 24034 +f 24034 23762 23778 +f 24034 23778 23777 +f 24034 23777 24036 +f 24036 23777 23775 +f 24036 23775 23789 +f 23789 23775 23790 +f 23790 23775 24039 +f 23790 24039 24037 +f 24037 24039 24038 +f 19627 24152 19629 +f 19629 24152 24151 +f 19629 24151 24386 +f 19627 24387 24152 +f 24152 24387 24388 +f 24152 24388 24326 +f 19627 19625 24387 +f 24387 19625 19623 +f 24387 19623 24388 +f 24388 19623 24326 +f 19629 24386 19624 +f 19624 24386 24151 +f 19624 19625 19627 +f 19627 19629 19624 +f 19631 19633 19632 +f 19632 19633 19634 +f 19634 19633 19635 +f 19635 19633 19638 +f 19635 19638 19637 +f 19635 19637 19636 +f 19636 19639 19640 +f 19643 19644 19645 +f 19646 19645 19647 +f 19646 19647 19648 +f 19646 19648 19649 +f 19649 19648 19650 +f 19649 19650 19651 +f 19649 19651 19618 +f 19618 19651 19652 +f 19618 19652 19620 +f 19655 19654 19631 +f 19656 19657 19658 +f 19659 19658 19660 +f 19659 19660 19661 +f 19661 19660 19662 +f 19661 19662 19663 +f 19663 19662 19664 +f 19663 19664 19665 +f 19665 19666 19663 +f 19663 19666 19667 +f 19663 19667 19669 +f 19669 19667 19670 +f 19666 19668 19667 +f 21706 21704 21705 +f 21705 21704 21703 +f 21716 21718 21719 +f 21719 21718 21720 +f 21719 21720 21855 +f 21855 21720 21721 +f 21855 21721 21853 +f 21853 21721 21854 +f 21853 21854 21851 +f 21851 21854 21852 +f 21851 21852 21848 +f 21848 21852 21850 +f 21848 21850 21849 +f 21712 21715 21716 +f 21716 21715 21717 +f 21716 21717 21718 +f 21711 21713 21712 +f 21857 23908 21856 +f 21856 23908 24057 +f 21856 24057 23843 +f 23843 24057 24058 +f 23843 24058 24059 +f 23843 24059 23824 +f 23824 24059 24067 +f 23824 24067 23826 +f 23826 24067 21705 +f 23826 21705 21703 +f 22253 22254 22252 +f 22253 22252 22249 +f 22249 22252 22251 +f 24389 21874 24390 +f 24390 21874 24391 +f 24390 24391 24392 +f 24392 24389 24390 +f 24389 24393 21874 +f 21874 24393 21985 +f 24392 24395 24393 +f 24392 24393 24389 +f 24396 24397 24398 +f 24398 24397 24399 +f 24398 24399 21985 +f 24393 24395 21985 +f 21985 24395 24398 +f 24394 24400 24395 +f 24395 24400 24401 +f 24395 24401 24402 +f 24402 24401 24394 +f 24402 24394 24403 +f 24403 24394 24404 +f 24403 24404 24395 +f 24395 24404 24405 +f 24395 24405 24398 +f 24398 24405 24396 +f 24394 24396 24404 +f 24404 24396 24405 +f 24395 24402 24403 +f 24401 24400 24394 +f 24397 24396 24391 +f 24391 24396 24392 +f 24392 24396 24394 +f 21874 21985 24391 +f 23518 23523 23519 +f 23518 23519 23516 +f 24392 23518 24406 +f 24406 23518 23516 +f 24406 23516 24389 +f 24389 24392 24406 +f 23519 24407 23516 +f 23516 24407 24389 +f 24389 24407 24393 +f 23519 23523 24407 +f 24407 23523 24408 +f 24407 24408 24409 +f 24409 24408 24410 +f 24409 24410 24411 +f 24411 24410 24394 +f 24411 24394 24395 +f 23521 24412 23523 +f 23523 24412 24413 +f 23523 24413 24414 +f 24414 24413 23521 +f 24414 23521 24415 +f 24415 23521 24408 +f 24415 24408 23523 +f 23521 24410 24408 +f 24395 24393 24411 +f 24411 24393 24407 +f 24411 24407 24409 +f 23521 24413 24412 +f 24414 24415 23523 +f 23521 23518 24410 +f 24410 23518 24392 +f 24410 24392 24394 +f 24394 24392 24395 +f 21985 24391 24399 +f 24399 24391 24397 +f 23485 24391 24416 +f 24416 24391 21874 +f 24416 21874 23489 +f 23489 23488 24416 +f 24416 23488 23485 +f 24399 24417 21985 +f 21985 24417 24418 +f 21985 24418 24419 +f 24419 24418 24397 +f 24419 24397 24420 +f 24420 24397 24421 +f 24420 24421 24422 +f 24422 24421 24423 +f 24422 24423 23271 +f 23271 24423 23242 +f 23242 24423 23239 +f 23239 24423 23227 +f 23227 24423 24421 +f 24399 24397 24417 +f 24417 24397 24418 +f 23271 23269 24422 +f 24422 23269 24420 +f 24420 23269 24419 +f 24419 23269 21985 +f 23227 23485 23239 +f 23239 23485 23488 +f 23239 23488 23242 +f 23242 23488 23489 +f 24397 24391 24421 +f 24421 24391 23485 +f 24421 23485 23227 +f 21874 23269 23489 +f 23489 23269 23271 +f 23489 23271 23242 +f 21874 21985 23269 +f 24424 24425 24426 +f 24426 24425 23496 +f 23496 24425 23494 +f 22251 23496 23505 +f 23505 23496 23494 +f 22249 24427 24428 +f 24428 24427 24426 +f 24428 24426 23496 +f 23496 22249 24428 +f 24427 22249 24429 +f 24429 22249 22251 +f 24430 24431 24424 +f 24424 24431 24432 +f 24424 24432 24433 +f 24433 24432 24430 +f 24433 24430 22251 +f 22251 24430 24429 +f 23505 24434 22251 +f 22251 24434 24435 +f 22251 24435 24436 +f 24436 24435 24424 +f 24436 24424 24437 +f 24437 24424 24433 +f 24437 24433 22251 +f 23494 24425 23505 +f 23505 24425 24434 +f 24434 24425 24435 +f 24435 24425 24424 +f 24436 24437 22251 +f 24432 24431 24430 +f 24427 24429 24426 +f 24438 24439 24440 +f 24440 24441 24442 +f 23531 24440 24443 +f 24443 24440 24442 +f 24443 24442 23533 +f 23533 23531 24443 +f 24441 23532 24442 +f 24442 23532 23533 +f 24439 24444 24441 +f 24441 24444 24445 +f 24441 24445 24446 +f 24446 24445 23529 +f 24446 23529 24447 +f 24447 23529 24448 +f 24447 24448 24441 +f 24441 24448 23530 +f 24441 23530 23532 +f 24438 24449 24439 +f 24439 24449 24444 +f 24444 24449 24445 +f 24445 24449 23529 +f 24448 23529 24450 +f 24450 23529 23530 +f 24450 23530 24448 +f 24446 24447 24441 +f 24438 24440 24449 +f 24449 24440 23531 +f 24449 23531 23529 +f 24429 24426 24430 +f 24430 24426 24424 +f 24424 24426 24451 +f 24451 24426 24440 +f 24451 24440 24438 +f 24440 24426 24452 +f 24452 24426 24427 +f 24452 24427 24442 +f 24442 24440 24452 +f 24429 24453 24427 +f 24427 24453 24442 +f 24442 24453 24441 +f 24430 24454 24429 +f 24429 24454 24455 +f 24429 24455 24453 +f 24453 24455 24456 +f 24453 24456 24457 +f 24457 24456 24438 +f 24457 24438 24458 +f 24458 24438 24459 +f 24458 24459 24453 +f 24453 24459 24460 +f 24453 24460 24441 +f 24441 24460 24439 +f 24439 24460 24438 +f 24438 24460 24459 +f 24424 24451 24430 +f 24430 24451 24454 +f 24454 24451 24455 +f 24455 24451 24438 +f 24455 24438 24456 +f 24458 24453 24457 +f 24440 24441 24439 +f 24461 24462 24463 +f 24463 24462 24464 +f 24463 24464 24465 +f 24465 24464 24466 +f 24466 24464 24467 +f 24466 24467 24468 +f 24468 24467 24469 +f 24468 24469 24470 +f 24470 24469 24471 +f 24470 24471 24472 +f 24473 24474 24472 +f 24472 24474 24475 +f 24472 24475 24470 +f 24474 24473 24476 +f 24476 24473 24477 +f 24476 24477 24478 +f 24478 24477 24479 +f 24479 24477 24480 +f 24480 24477 24481 +f 24481 24477 24482 +f 24481 24482 24483 +f 24483 24482 24484 +f 24484 24482 24485 +f 24485 24482 24486 +f 24485 24486 24487 +f 24487 24486 24488 +f 24488 24486 24489 +f 24488 24489 24490 +f 24491 24492 24490 +f 24490 24492 24493 +f 24490 24493 24488 +f 24491 24494 24492 +f 24492 24494 24495 +f 24492 24495 24496 +f 24496 24495 24497 +f 24478 24498 24476 +f 24476 24498 24499 +f 24476 24499 24500 +f 24476 24500 24501 +f 24501 24500 24502 +f 24501 24502 24503 +f 24503 24504 24501 +f 24501 24504 24505 +f 24505 24504 24506 +f 24505 24506 24507 +f 24508 24509 24507 +f 24507 24509 24510 +f 24507 24510 24505 +f 24508 24511 24509 +f 24509 24511 24512 +f 24512 24511 24513 +f 24513 24511 24514 +f 24514 24511 24515 +f 24514 24515 24516 +f 24517 24518 24519 +f 24519 24518 24520 +f 24519 24520 24521 +f 24521 24520 24522 +f 24521 24522 24523 +f 24523 24522 24524 +f 24523 24524 24525 +f 24525 24524 24526 +f 24525 24526 24527 +f 24517 24528 24518 +f 24518 24528 24529 +f 24518 24529 24530 +f 24530 24529 24531 +f 24530 24531 24532 +f 24532 24531 24533 +f 24532 24533 24534 +f 24534 24533 24535 +f 24534 24535 24536 +f 24536 24535 24537 +f 24536 24537 24538 +f 24538 24537 24539 +f 24538 24539 24540 +f 24540 24539 24541 +f 24540 24541 24542 +f 24542 24541 24543 +f 24542 24543 24544 +f 24544 24543 24545 +f 24544 24545 24546 +f 24546 24545 24547 +f 24546 24547 24548 +f 24548 24547 24549 +f 24548 24549 24550 +f 24550 24549 24551 +f 24550 24551 24552 +f 24552 24551 24553 +f 24552 24553 24554 +f 24554 24553 24555 +f 24554 24555 24556 +f 24556 24555 24557 +f 24556 24557 24558 +f 24558 24557 24559 +f 24558 24559 24560 +f 24560 24559 24561 +f 24560 24561 24562 +f 24562 24561 24563 +f 24562 24563 24564 +f 24564 24563 24565 +f 24564 24565 24566 +f 24566 24565 24567 +f 24566 24567 24568 +f 24568 24567 24569 +f 24568 24569 24570 +f 24570 24569 24571 +f 24570 24571 24572 +f 24572 24571 24573 +f 24573 24571 24574 +f 24573 24574 24575 +f 24575 24574 24576 +f 24575 24576 24577 +f 24577 24576 24578 +f 24577 24578 24579 +f 24579 24578 24580 +f 24579 24580 24581 +f 24581 24580 24582 +f 24581 24582 24583 +f 24583 24582 24584 +f 24584 24582 24585 +f 24584 24585 24586 +f 24586 24585 24587 +f 24586 24587 24588 +f 24588 24587 24589 +f 24588 24589 24590 +f 24590 24589 24591 +f 24590 24591 24592 +f 24592 24591 24593 +f 24592 24593 24594 +f 24594 24593 24595 +f 24594 24595 24596 +f 24596 24595 24597 +f 24596 24597 24598 +f 24598 24597 24599 +f 24598 24599 24600 +f 24600 24599 24601 +f 24600 24601 24602 +f 24602 24601 24603 +f 24602 24603 24604 +f 24604 24603 24605 +f 24604 24605 24606 +f 24606 24605 24607 +f 24606 24607 24608 +f 24529 24528 24609 +f 24609 24528 24610 +f 24609 24610 24611 +f 24611 24610 24612 +f 24611 24612 24613 +f 24613 24612 24614 +f 24613 24614 24615 +f 24615 24614 24616 +f 24615 24616 24617 +f 24617 24616 24618 +f 24617 24618 24619 +f 24620 24621 24619 +f 24619 24621 24622 +f 24619 24622 24617 +f 24617 24622 24623 +f 24617 24623 24624 +f 24624 24623 24625 +f 24624 24625 24626 +f 24626 24625 24627 +f 24626 24627 24628 +f 24628 24627 24629 +f 24628 24629 24630 +f 24630 24629 24631 +f 24630 24631 24539 +f 24539 24631 24541 +f 24621 24620 24632 +f 24632 24620 24633 +f 24632 24633 24634 +f 24634 24633 24635 +f 24634 24635 24636 +f 24636 24635 24637 +f 24636 24637 24638 +f 24638 24637 24639 +f 24638 24639 24640 +f 24640 24639 24641 +f 24640 24641 24642 +f 24642 24641 24643 +f 24642 24643 24644 +f 24644 24643 24645 +f 24644 24645 24646 +f 24646 24645 24647 +f 24646 24647 24648 +f 24648 24647 24649 +f 24648 24649 24650 +f 24650 24649 24651 +f 24650 24651 24652 +f 24652 24651 24653 +f 24652 24653 24654 +f 24654 24653 24655 +f 24654 24655 24656 +f 24656 24655 24657 +f 24656 24657 24658 +f 24658 24657 24659 +f 24658 24659 24660 +f 24660 24659 24661 +f 24660 24661 24662 +f 24662 24661 24663 +f 24662 24663 24664 +f 24664 24663 24665 +f 24664 24665 24666 +f 24666 24665 24667 +f 24666 24667 24668 +f 24668 24667 24669 +f 24668 24669 24670 +f 24670 24669 24671 +f 24670 24671 24672 +f 24672 24671 24673 +f 24672 24673 24674 +f 24674 24673 24593 +f 24674 24593 24591 +f 24633 24675 24635 +f 24635 24675 24676 +f 24635 24676 24637 +f 24637 24676 24677 +f 24637 24677 24639 +f 24639 24677 24678 +f 24639 24678 24641 +f 24641 24678 24679 +f 24641 24679 24643 +f 24643 24679 24680 +f 24643 24680 24645 +f 24645 24680 24681 +f 24645 24681 24647 +f 24647 24681 24682 +f 24647 24682 24649 +f 24649 24682 24683 +f 24649 24683 24651 +f 24651 24683 24684 +f 24651 24684 24653 +f 24653 24684 24685 +f 24653 24685 24655 +f 24655 24685 24686 +f 24655 24686 24657 +f 24657 24686 24687 +f 24657 24687 24659 +f 24659 24687 24688 +f 24659 24688 24661 +f 24661 24688 24689 +f 24661 24689 24663 +f 24663 24689 24690 +f 24663 24690 24665 +f 24665 24690 24691 +f 24665 24691 24667 +f 24667 24691 24692 +f 24667 24692 24669 +f 24669 24692 24693 +f 24669 24693 24671 +f 24671 24693 24694 +f 24671 24694 24673 +f 24673 24694 24595 +f 24673 24595 24593 +f 24676 24675 24695 +f 24695 24675 24696 +f 24695 24696 24697 +f 24697 24696 24698 +f 24697 24698 24699 +f 24697 24699 24700 +f 24700 24699 24701 +f 24700 24701 24702 +f 24702 24701 24703 +f 24702 24703 24704 +f 24704 24703 24705 +f 24704 24705 24706 +f 24706 24705 24707 +f 24706 24707 24608 +f 24608 24708 24709 +f 24709 24708 24710 +f 24709 24710 24711 +f 24711 24710 24712 +f 24711 24712 24713 +f 24713 24712 24714 +f 24713 24714 24715 +f 24715 24714 24716 +f 24715 24716 24717 +f 24717 24716 24718 +f 24717 24718 24719 +f 24719 24718 24720 +f 24719 24720 24721 +f 24721 24720 24594 +f 24721 24594 24596 +f 24720 24718 24592 +f 24592 24718 24590 +f 24572 24722 24570 +f 24570 24722 24723 +f 24570 24723 24568 +f 24568 24723 24724 +f 24568 24724 24566 +f 24566 24724 24725 +f 24566 24725 24564 +f 24564 24725 24726 +f 24564 24726 24562 +f 24562 24726 24727 +f 24562 24727 24560 +f 24560 24727 24728 +f 24560 24728 24558 +f 24558 24728 24729 +f 24558 24729 24556 +f 24556 24729 24730 +f 24556 24730 24554 +f 24554 24730 24731 +f 24554 24731 24552 +f 24552 24731 24732 +f 24552 24732 24550 +f 24550 24732 24733 +f 24550 24733 24548 +f 24548 24733 24734 +f 24548 24734 24546 +f 24546 24734 24735 +f 24546 24735 24544 +f 24544 24735 24736 +f 24544 24736 24542 +f 24542 24736 24737 +f 24542 24737 24540 +f 24540 24737 24738 +f 24540 24738 24538 +f 24538 24738 24739 +f 24538 24739 24536 +f 24536 24739 24740 +f 24536 24740 24534 +f 24534 24740 24741 +f 24534 24741 24532 +f 24532 24741 24742 +f 24532 24742 24530 +f 24530 24742 24743 +f 24530 24743 24518 +f 24518 24743 24520 +f 24722 24744 24723 +f 24723 24744 24745 +f 24723 24745 24724 +f 24724 24745 24746 +f 24724 24746 24725 +f 24725 24746 24747 +f 24725 24747 24726 +f 24726 24747 24748 +f 24726 24748 24727 +f 24727 24748 24749 +f 24727 24749 24728 +f 24728 24749 24750 +f 24728 24750 24729 +f 24729 24750 24751 +f 24729 24751 24730 +f 24730 24751 24752 +f 24730 24752 24731 +f 24731 24752 24753 +f 24731 24753 24732 +f 24732 24753 24754 +f 24732 24754 24733 +f 24733 24754 24755 +f 24733 24755 24734 +f 24734 24755 24756 +f 24734 24756 24735 +f 24735 24756 24757 +f 24735 24757 24736 +f 24736 24757 24758 +f 24736 24758 24737 +f 24737 24758 24759 +f 24737 24759 24738 +f 24738 24759 24760 +f 24738 24760 24739 +f 24739 24760 24761 +f 24739 24761 24740 +f 24740 24761 24762 +f 24740 24762 24741 +f 24741 24762 24763 +f 24741 24763 24742 +f 24742 24763 24764 +f 24742 24764 24743 +f 24743 24764 24522 +f 24743 24522 24520 +f 24527 24765 24744 +f 24744 24765 24766 +f 24744 24766 24745 +f 24745 24766 24746 +f 24706 24608 24767 +f 24767 24608 24768 +f 24768 24608 24769 +f 24769 24608 24770 +f 24770 24608 24771 +f 24771 24608 24772 +f 24772 24608 24773 +f 24773 24608 24774 +f 24774 24608 24775 +f 24775 24608 24776 +f 24776 24608 24777 +f 24777 24608 24778 +f 24778 24608 24607 +f 24606 24608 24779 +f 24779 24608 24780 +f 24780 24608 24781 +f 24781 24608 24782 +f 24782 24608 24783 +f 24783 24608 24784 +f 24784 24608 24709 +f 24765 24527 24785 +f 24785 24527 24786 +f 24786 24527 24787 +f 24787 24527 24788 +f 24788 24527 24789 +f 24789 24527 24790 +f 24790 24527 24791 +f 24791 24527 24792 +f 24792 24527 24793 +f 24793 24527 24794 +f 24794 24527 24795 +f 24795 24527 24796 +f 24796 24527 24797 +f 24797 24527 24798 +f 24798 24527 24799 +f 24799 24527 24800 +f 24800 24527 24801 +f 24801 24527 24526 +f 24525 24527 24802 +f 24802 24527 24803 +f 24704 24706 24804 +f 24804 24706 24767 +f 24804 24767 24805 +f 24805 24767 24768 +f 24805 24768 24806 +f 24806 24768 24769 +f 24806 24769 24807 +f 24807 24769 24770 +f 24807 24770 24808 +f 24808 24770 24771 +f 24808 24771 24809 +f 24809 24771 24772 +f 24809 24772 24810 +f 24810 24772 24773 +f 24810 24773 24811 +f 24811 24773 24774 +f 24811 24774 24812 +f 24812 24774 24775 +f 24812 24775 24813 +f 24813 24775 24776 +f 24813 24776 24814 +f 24814 24776 24777 +f 24814 24777 24815 +f 24815 24777 24778 +f 24815 24778 24816 +f 24816 24778 24607 +f 24816 24607 24605 +f 24702 24704 24817 +f 24817 24704 24804 +f 24817 24804 24818 +f 24818 24804 24805 +f 24818 24805 24819 +f 24819 24805 24806 +f 24819 24806 24820 +f 24820 24806 24807 +f 24820 24807 24821 +f 24821 24807 24808 +f 24821 24808 24822 +f 24822 24808 24809 +f 24822 24809 24823 +f 24823 24809 24810 +f 24823 24810 24824 +f 24824 24810 24811 +f 24824 24811 24825 +f 24825 24811 24812 +f 24825 24812 24826 +f 24826 24812 24813 +f 24826 24813 24827 +f 24827 24813 24814 +f 24827 24814 24828 +f 24828 24814 24815 +f 24828 24815 24829 +f 24829 24815 24816 +f 24829 24816 24830 +f 24830 24816 24605 +f 24830 24605 24603 +f 24700 24702 24831 +f 24831 24702 24817 +f 24831 24817 24832 +f 24832 24817 24818 +f 24832 24818 24833 +f 24833 24818 24819 +f 24833 24819 24834 +f 24834 24819 24820 +f 24834 24820 24835 +f 24835 24820 24821 +f 24835 24821 24836 +f 24836 24821 24822 +f 24836 24822 24837 +f 24837 24822 24823 +f 24837 24823 24838 +f 24838 24823 24824 +f 24838 24824 24839 +f 24839 24824 24825 +f 24839 24825 24840 +f 24840 24825 24826 +f 24840 24826 24841 +f 24841 24826 24827 +f 24841 24827 24842 +f 24842 24827 24828 +f 24842 24828 24843 +f 24843 24828 24829 +f 24843 24829 24844 +f 24844 24829 24830 +f 24844 24830 24845 +f 24845 24830 24603 +f 24845 24603 24601 +f 24697 24700 24846 +f 24846 24700 24831 +f 24846 24831 24847 +f 24847 24831 24832 +f 24847 24832 24848 +f 24848 24832 24833 +f 24848 24833 24849 +f 24849 24833 24834 +f 24849 24834 24850 +f 24850 24834 24835 +f 24850 24835 24851 +f 24851 24835 24836 +f 24851 24836 24852 +f 24852 24836 24837 +f 24852 24837 24853 +f 24853 24837 24838 +f 24853 24838 24854 +f 24854 24838 24839 +f 24854 24839 24855 +f 24855 24839 24840 +f 24855 24840 24856 +f 24856 24840 24841 +f 24856 24841 24857 +f 24857 24841 24842 +f 24857 24842 24858 +f 24858 24842 24843 +f 24858 24843 24859 +f 24859 24843 24844 +f 24859 24844 24860 +f 24860 24844 24845 +f 24860 24845 24861 +f 24861 24845 24601 +f 24861 24601 24599 +f 24677 24676 24695 +f 24695 24697 24862 +f 24862 24697 24846 +f 24862 24846 24863 +f 24863 24846 24847 +f 24863 24847 24864 +f 24864 24847 24848 +f 24864 24848 24865 +f 24865 24848 24849 +f 24865 24849 24866 +f 24866 24849 24850 +f 24866 24850 24867 +f 24867 24850 24851 +f 24867 24851 24868 +f 24868 24851 24852 +f 24868 24852 24869 +f 24869 24852 24853 +f 24869 24853 24870 +f 24870 24853 24854 +f 24870 24854 24871 +f 24871 24854 24855 +f 24871 24855 24872 +f 24872 24855 24856 +f 24872 24856 24873 +f 24873 24856 24857 +f 24873 24857 24874 +f 24874 24857 24858 +f 24874 24858 24875 +f 24875 24858 24859 +f 24875 24859 24876 +f 24876 24859 24860 +f 24876 24860 24877 +f 24877 24860 24861 +f 24877 24861 24878 +f 24878 24861 24599 +f 24878 24599 24597 +f 24632 24634 24879 +f 24879 24634 24636 +f 24879 24636 24880 +f 24880 24636 24638 +f 24880 24638 24881 +f 24881 24638 24640 +f 24881 24640 24882 +f 24882 24640 24642 +f 24882 24642 24883 +f 24883 24642 24644 +f 24883 24644 24884 +f 24884 24644 24646 +f 24884 24646 24885 +f 24885 24646 24648 +f 24885 24648 24886 +f 24886 24648 24650 +f 24886 24650 24887 +f 24887 24650 24652 +f 24887 24652 24888 +f 24888 24652 24654 +f 24888 24654 24889 +f 24889 24654 24656 +f 24889 24656 24890 +f 24890 24656 24658 +f 24890 24658 24891 +f 24891 24658 24660 +f 24891 24660 24892 +f 24892 24660 24662 +f 24892 24662 24893 +f 24893 24662 24664 +f 24893 24664 24894 +f 24894 24664 24666 +f 24894 24666 24895 +f 24895 24666 24668 +f 24895 24668 24896 +f 24896 24668 24670 +f 24896 24670 24897 +f 24897 24670 24672 +f 24897 24672 24898 +f 24898 24672 24674 +f 24898 24674 24589 +f 24589 24674 24591 +f 24621 24632 24899 +f 24899 24632 24879 +f 24899 24879 24900 +f 24900 24879 24880 +f 24900 24880 24901 +f 24901 24880 24881 +f 24901 24881 24902 +f 24902 24881 24882 +f 24902 24882 24903 +f 24903 24882 24883 +f 24903 24883 24904 +f 24904 24883 24884 +f 24904 24884 24905 +f 24905 24884 24885 +f 24905 24885 24906 +f 24906 24885 24886 +f 24906 24886 24907 +f 24907 24886 24887 +f 24907 24887 24908 +f 24908 24887 24888 +f 24908 24888 24909 +f 24909 24888 24889 +f 24909 24889 24910 +f 24910 24889 24890 +f 24910 24890 24911 +f 24911 24890 24891 +f 24911 24891 24912 +f 24912 24891 24892 +f 24912 24892 24913 +f 24913 24892 24893 +f 24913 24893 24914 +f 24914 24893 24894 +f 24914 24894 24915 +f 24915 24894 24895 +f 24915 24895 24916 +f 24916 24895 24896 +f 24916 24896 24917 +f 24917 24896 24897 +f 24917 24897 24918 +f 24918 24897 24898 +f 24918 24898 24587 +f 24587 24898 24589 +f 24622 24621 24919 +f 24919 24621 24899 +f 24919 24899 24920 +f 24920 24899 24900 +f 24920 24900 24921 +f 24921 24900 24901 +f 24921 24901 24922 +f 24922 24901 24902 +f 24922 24902 24923 +f 24923 24902 24903 +f 24923 24903 24924 +f 24924 24903 24904 +f 24924 24904 24925 +f 24925 24904 24905 +f 24925 24905 24926 +f 24926 24905 24906 +f 24926 24906 24927 +f 24927 24906 24907 +f 24927 24907 24928 +f 24928 24907 24908 +f 24928 24908 24929 +f 24929 24908 24909 +f 24929 24909 24930 +f 24930 24909 24910 +f 24930 24910 24931 +f 24931 24910 24911 +f 24931 24911 24932 +f 24932 24911 24912 +f 24932 24912 24933 +f 24933 24912 24913 +f 24933 24913 24934 +f 24934 24913 24914 +f 24934 24914 24935 +f 24935 24914 24915 +f 24935 24915 24936 +f 24936 24915 24916 +f 24936 24916 24937 +f 24937 24916 24917 +f 24937 24917 24938 +f 24938 24917 24918 +f 24938 24918 24585 +f 24585 24918 24587 +f 24617 24624 24615 +f 24615 24624 24939 +f 24615 24939 24613 +f 24613 24939 24940 +f 24613 24940 24611 +f 24611 24940 24941 +f 24611 24941 24609 +f 24609 24941 24531 +f 24609 24531 24529 +f 24521 24942 24519 +f 24519 24942 24803 +f 24519 24803 24527 +f 24802 24803 24942 +f 24802 24942 24523 +f 24523 24942 24521 +f 24766 24765 24943 +f 24943 24765 24785 +f 24943 24785 24944 +f 24944 24785 24786 +f 24944 24786 24945 +f 24945 24786 24787 +f 24945 24787 24946 +f 24946 24787 24788 +f 24946 24788 24947 +f 24947 24788 24789 +f 24947 24789 24948 +f 24948 24789 24790 +f 24948 24790 24949 +f 24949 24790 24791 +f 24949 24791 24950 +f 24950 24791 24792 +f 24950 24792 24951 +f 24951 24792 24793 +f 24951 24793 24952 +f 24952 24793 24794 +f 24952 24794 24953 +f 24953 24794 24795 +f 24953 24795 24954 +f 24954 24795 24796 +f 24954 24796 24955 +f 24955 24796 24797 +f 24955 24797 24956 +f 24956 24797 24798 +f 24956 24798 24957 +f 24957 24798 24799 +f 24957 24799 24958 +f 24958 24799 24800 +f 24958 24800 24959 +f 24959 24800 24801 +f 24959 24801 24960 +f 24960 24801 24526 +f 24960 24526 24524 +f 24574 24571 24961 +f 24961 24571 24569 +f 24961 24569 24962 +f 24962 24569 24567 +f 24962 24567 24963 +f 24963 24567 24565 +f 24963 24565 24964 +f 24964 24565 24563 +f 24964 24563 24965 +f 24965 24563 24561 +f 24965 24561 24966 +f 24966 24561 24559 +f 24966 24559 24967 +f 24967 24559 24557 +f 24967 24557 24968 +f 24968 24557 24555 +f 24968 24555 24969 +f 24969 24555 24553 +f 24969 24553 24970 +f 24970 24553 24551 +f 24970 24551 24971 +f 24971 24551 24549 +f 24971 24549 24972 +f 24972 24549 24547 +f 24972 24547 24973 +f 24973 24547 24545 +f 24973 24545 24974 +f 24974 24545 24543 +f 24974 24543 24975 +f 24975 24543 24541 +f 24975 24541 24631 +f 24576 24574 24976 +f 24976 24574 24961 +f 24976 24961 24977 +f 24977 24961 24962 +f 24977 24962 24978 +f 24978 24962 24963 +f 24978 24963 24979 +f 24979 24963 24964 +f 24979 24964 24980 +f 24980 24964 24965 +f 24980 24965 24981 +f 24981 24965 24966 +f 24981 24966 24982 +f 24982 24966 24967 +f 24982 24967 24983 +f 24983 24967 24968 +f 24983 24968 24984 +f 24984 24968 24969 +f 24984 24969 24985 +f 24985 24969 24970 +f 24985 24970 24986 +f 24986 24970 24971 +f 24986 24971 24987 +f 24987 24971 24972 +f 24987 24972 24988 +f 24988 24972 24973 +f 24988 24973 24989 +f 24989 24973 24974 +f 24989 24974 24990 +f 24990 24974 24975 +f 24990 24975 24991 +f 24991 24975 24631 +f 24991 24631 24629 +f 24578 24576 24992 +f 24992 24576 24976 +f 24992 24976 24993 +f 24993 24976 24977 +f 24993 24977 24994 +f 24994 24977 24978 +f 24994 24978 24995 +f 24995 24978 24979 +f 24995 24979 24996 +f 24996 24979 24980 +f 24996 24980 24997 +f 24997 24980 24981 +f 24997 24981 24998 +f 24998 24981 24982 +f 24998 24982 24999 +f 24999 24982 24983 +f 24999 24983 25000 +f 25000 24983 24984 +f 25000 24984 25001 +f 25001 24984 24985 +f 25001 24985 25002 +f 25002 24985 24986 +f 25002 24986 25003 +f 25003 24986 24987 +f 25003 24987 25004 +f 25004 24987 24988 +f 25004 24988 25005 +f 25005 24988 24989 +f 25005 24989 25006 +f 25006 24989 24990 +f 25006 24990 25007 +f 25007 24990 24991 +f 25007 24991 25008 +f 25008 24991 24629 +f 25008 24629 24627 +f 24580 24578 25009 +f 25009 24578 24992 +f 25009 24992 25010 +f 25010 24992 24993 +f 25010 24993 25011 +f 25011 24993 24994 +f 25011 24994 25012 +f 25012 24994 24995 +f 25012 24995 25013 +f 25013 24995 24996 +f 25013 24996 25014 +f 25014 24996 24997 +f 25014 24997 25015 +f 25015 24997 24998 +f 25015 24998 25016 +f 25016 24998 24999 +f 25016 24999 25017 +f 25017 24999 25000 +f 25017 25000 25018 +f 25018 25000 25001 +f 25018 25001 25019 +f 25019 25001 25002 +f 25019 25002 25020 +f 25020 25002 25003 +f 25020 25003 25021 +f 25021 25003 25004 +f 25021 25004 25022 +f 25022 25004 25005 +f 25022 25005 25023 +f 25023 25005 25006 +f 25023 25006 25024 +f 25024 25006 25007 +f 25024 25007 25025 +f 25025 25007 25008 +f 25025 25008 25026 +f 25026 25008 24627 +f 25026 24627 24625 +f 24938 24585 24582 +f 24582 24580 25027 +f 25027 24580 25009 +f 25027 25009 25028 +f 25028 25009 25010 +f 25028 25010 25029 +f 25029 25010 25011 +f 25029 25011 25030 +f 25030 25011 25012 +f 25030 25012 25031 +f 25031 25012 25013 +f 25031 25013 25032 +f 25032 25013 25014 +f 25032 25014 25033 +f 25033 25014 25015 +f 25033 25015 25034 +f 25034 25015 25016 +f 25034 25016 25035 +f 25035 25016 25017 +f 25035 25017 25036 +f 25036 25017 25018 +f 25036 25018 25037 +f 25037 25018 25019 +f 25037 25019 25038 +f 25038 25019 25020 +f 25038 25020 25039 +f 25039 25020 25021 +f 25039 25021 25040 +f 25040 25021 25022 +f 25040 25022 25041 +f 25041 25022 25023 +f 25041 25023 25042 +f 25042 25023 25024 +f 25042 25024 25043 +f 25043 25024 25025 +f 25043 25025 25044 +f 25044 25025 25026 +f 25044 25026 25045 +f 25045 25026 24625 +f 25045 24625 24623 +f 24594 24720 24592 +f 24717 24719 25046 +f 25046 24719 24721 +f 25046 24721 25047 +f 25047 24721 24596 +f 25047 24596 24598 +f 24715 24717 25048 +f 25048 24717 25046 +f 25048 25046 25049 +f 25049 25046 25047 +f 25049 25047 25050 +f 25050 25047 24598 +f 25050 24598 24600 +f 24713 24715 25051 +f 25051 24715 25048 +f 25051 25048 25052 +f 25052 25048 25049 +f 25052 25049 25053 +f 25053 25049 25050 +f 25053 25050 25054 +f 25054 25050 24600 +f 25054 24600 24602 +f 24784 24709 24711 +f 24711 24713 25055 +f 25055 24713 25051 +f 25055 25051 25056 +f 25056 25051 25052 +f 25056 25052 25057 +f 25057 25052 25053 +f 25057 25053 25058 +f 25058 25053 25054 +f 25058 25054 25059 +f 25059 25054 24602 +f 25059 24602 24604 +f 24678 24677 24862 +f 24862 24677 24695 +f 24678 24862 24863 +f 25045 24623 24919 +f 24919 24623 24622 +f 25045 24919 24920 +f 24624 24626 24939 +f 24939 24626 25060 +f 24939 25060 24940 +f 24940 25060 25061 +f 24940 25061 24941 +f 24941 25061 24533 +f 24941 24533 24531 +f 24524 24522 24764 +f 24525 24802 24523 +f 24679 24678 24863 +f 24679 24863 24864 +f 25044 25045 24920 +f 25044 24920 24921 +f 24626 24628 25060 +f 25060 24628 25062 +f 25060 25062 25061 +f 25061 25062 24535 +f 25061 24535 24533 +f 24960 24524 24764 +f 24960 24764 24763 +f 24680 24679 24864 +f 24680 24864 24865 +f 25043 25044 24921 +f 25043 24921 24922 +f 24537 24535 25062 +f 24537 25062 24630 +f 24630 25062 24628 +f 24959 24960 24763 +f 24959 24763 24762 +f 24681 24680 24865 +f 24681 24865 24866 +f 25042 25043 24922 +f 25042 24922 24923 +f 24539 24537 24630 +f 24958 24959 24762 +f 24958 24762 24761 +f 24682 24681 24866 +f 24682 24866 24867 +f 25041 25042 24923 +f 25041 24923 24924 +f 24957 24958 24761 +f 24957 24761 24760 +f 24683 24682 24867 +f 24683 24867 24868 +f 25040 25041 24924 +f 25040 24924 24925 +f 24956 24957 24760 +f 24956 24760 24759 +f 24684 24683 24868 +f 24684 24868 24869 +f 25039 25040 24925 +f 25039 24925 24926 +f 24955 24956 24759 +f 24955 24759 24758 +f 24685 24684 24869 +f 24685 24869 24870 +f 25038 25039 24926 +f 25038 24926 24927 +f 24954 24955 24758 +f 24954 24758 24757 +f 24686 24685 24870 +f 24686 24870 24871 +f 25037 25038 24927 +f 25037 24927 24928 +f 24953 24954 24757 +f 24953 24757 24756 +f 24687 24686 24871 +f 24687 24871 24872 +f 25036 25037 24928 +f 25036 24928 24929 +f 24952 24953 24756 +f 24952 24756 24755 +f 24688 24687 24872 +f 24688 24872 24873 +f 25035 25036 24929 +f 25035 24929 24930 +f 24951 24952 24755 +f 24951 24755 24754 +f 24689 24688 24873 +f 24689 24873 24874 +f 25034 25035 24930 +f 25034 24930 24931 +f 24950 24951 24754 +f 24950 24754 24753 +f 24690 24689 24874 +f 24690 24874 24875 +f 25033 25034 24931 +f 25033 24931 24932 +f 24949 24950 24753 +f 24949 24753 24752 +f 24604 24606 24779 +f 24691 24690 24875 +f 24691 24875 24876 +f 25032 25033 24932 +f 25032 24932 24933 +f 24948 24949 24752 +f 24948 24752 24751 +f 25059 24604 24779 +f 25059 24779 24780 +f 24692 24691 24876 +f 24692 24876 24877 +f 25031 25032 24933 +f 25031 24933 24934 +f 24947 24948 24751 +f 24947 24751 24750 +f 25058 25059 24780 +f 25058 24780 24781 +f 24693 24692 24877 +f 24693 24877 24878 +f 25030 25031 24934 +f 25030 24934 24935 +f 24946 24947 24750 +f 24946 24750 24749 +f 25057 25058 24781 +f 25057 24781 24782 +f 24694 24693 24878 +f 24694 24878 24597 +f 25029 25030 24935 +f 25029 24935 24936 +f 24945 24946 24749 +f 24945 24749 24748 +f 25056 25057 24782 +f 25056 24782 24783 +f 24595 24694 24597 +f 25028 25029 24936 +f 25028 24936 24937 +f 24944 24945 24748 +f 24944 24748 24747 +f 25055 25056 24783 +f 25055 24783 24784 +f 25027 25028 24937 +f 25027 24937 24938 +f 24943 24944 24747 +f 24943 24747 24746 +f 24711 25055 24784 +f 24582 25027 24938 +f 24766 24943 24746 +f 24527 25063 24519 +f 24519 25063 25064 +f 24519 25064 24517 +f 24517 25064 25065 +f 24517 25065 24528 +f 24528 25065 25066 +f 24528 25066 24610 +f 24610 25066 25067 +f 24610 25067 25068 +f 25069 25070 25068 +f 25068 25070 24612 +f 25068 24612 24610 +f 25070 25069 25071 +f 25071 25069 25072 +f 25071 25072 25073 +f 25073 25072 25074 +f 25073 25074 25075 +f 25075 25074 25076 +f 25075 25076 25077 +f 25077 25076 25078 +f 25077 25078 25079 +f 25079 25078 25080 +f 25079 25080 25081 +f 25081 25080 25082 +f 25081 25082 25083 +f 25083 25082 25084 +f 25083 25084 25085 +f 25072 25086 25074 +f 25074 25086 25076 +f 25076 25086 25078 +f 25078 25086 25080 +f 25085 25087 25083 +f 25083 25087 25088 +f 25083 25088 25089 +f 25089 25088 25090 +f 25089 25090 25091 +f 25091 25090 25092 +f 25091 25092 25093 +f 25093 25092 25094 +f 25093 25094 25095 +f 25095 25094 25096 +f 25095 25096 25097 +f 25097 25096 24509 +f 25097 24509 24512 +f 25088 25087 25098 +f 25098 25087 25099 +f 25098 25099 25100 +f 25100 25099 25101 +f 25100 25101 25102 +f 25102 25101 25103 +f 25102 25103 25104 +f 25104 25103 24505 +f 25104 24505 24510 +f 25099 25105 25101 +f 25101 25105 25106 +f 25101 25106 25103 +f 25103 25106 24501 +f 25103 24501 24505 +f 25105 25107 25106 +f 25106 25107 25108 +f 25106 25108 24476 +f 24476 25108 24474 +f 24474 25108 25109 +f 24474 25109 24475 +f 24475 25109 24470 +f 24470 25109 25110 +f 24470 25110 24468 +f 24468 25110 25111 +f 24468 25111 24466 +f 24466 25111 25112 +f 24466 25112 24465 +f 24465 25112 25113 +f 24465 25113 24463 +f 24463 25113 25114 +f 24463 25114 24461 +f 24476 24501 25106 +f 24509 25096 24510 +f 24510 25096 25115 +f 24510 25115 25104 +f 25104 25115 25116 +f 25104 25116 25102 +f 25102 25116 25117 +f 25102 25117 25100 +f 25100 25117 25098 +f 25097 24512 25118 +f 25118 24512 24513 +f 25118 24513 24514 +f 25118 24514 25119 +f 25119 24514 24516 +f 25119 24516 25120 +f 25120 24516 24515 +f 25120 24515 25121 +f 25121 24515 24511 +f 25121 24511 25122 +f 25122 24511 24508 +f 25122 24508 25123 +f 25123 24508 25124 +f 25123 25124 25125 +f 25125 25124 25126 +f 25125 25126 25127 +f 25127 25126 25128 +f 25127 25128 25129 +f 25129 25128 25130 +f 25129 25130 25131 +f 25131 25130 25132 +f 25131 25132 25133 +f 25133 25132 25134 +f 25133 25134 25135 +f 25135 25134 25136 +f 25135 25136 25137 +f 25137 25136 25138 +f 25137 25138 25139 +f 25139 25138 25140 +f 25139 25140 25141 +f 25141 25140 25142 +f 25141 25142 25143 +f 25143 25142 25144 +f 25143 25144 25145 +f 25145 25144 25146 +f 25145 25146 25147 +f 25147 25146 25148 +f 25147 25148 24675 +f 24675 25148 24696 +f 24696 25148 25149 +f 24696 25149 24698 +f 24698 25149 25150 +f 24698 25150 24699 +f 24699 25150 24701 +f 24701 25150 25151 +f 24701 25151 24703 +f 24703 25151 25152 +f 24703 25152 24705 +f 24705 25152 25153 +f 24705 25153 24707 +f 24707 25153 25154 +f 24707 25154 25155 +f 25155 25154 25156 +f 25155 25156 25157 +f 25157 25156 25158 +f 25157 25158 25159 +f 25159 25158 25160 +f 25159 25160 25161 +f 25161 25160 25162 +f 25161 25162 25163 +f 25163 25162 25164 +f 25163 25164 25165 +f 25165 25164 25166 +f 25165 25166 25167 +f 25167 25166 25168 +f 25167 25168 25169 +f 25169 25168 25170 +f 25169 25170 25171 +f 25171 25170 25172 +f 25171 25172 25173 +f 25173 25172 25174 +f 25173 25174 25175 +f 25175 25174 25176 +f 25175 25176 25177 +f 25177 25176 25178 +f 25177 25178 25179 +f 25179 25178 24493 +f 25179 24493 24492 +f 24508 24507 25124 +f 25124 24507 25180 +f 25124 25180 25126 +f 25126 25180 25181 +f 25126 25181 25128 +f 25128 25181 25182 +f 25128 25182 25130 +f 25130 25182 25183 +f 25130 25183 25132 +f 25132 25183 25184 +f 25132 25184 25134 +f 25134 25184 25185 +f 25134 25185 25136 +f 25136 25185 25186 +f 25136 25186 25138 +f 25138 25186 25187 +f 25138 25187 25140 +f 25140 25187 25188 +f 25140 25188 25142 +f 25142 25188 25189 +f 25142 25189 25144 +f 25144 25189 25190 +f 25144 25190 25146 +f 25146 25190 25191 +f 25146 25191 25148 +f 25148 25191 25149 +f 24507 24506 25180 +f 25180 24506 25192 +f 25180 25192 25181 +f 25181 25192 25193 +f 25181 25193 25182 +f 25182 25193 25194 +f 25182 25194 25183 +f 25183 25194 25195 +f 25183 25195 25184 +f 25184 25195 25196 +f 25184 25196 25185 +f 25185 25196 25197 +f 25185 25197 25186 +f 25186 25197 25198 +f 25186 25198 25187 +f 25187 25198 25199 +f 25187 25199 25188 +f 25188 25199 25200 +f 25188 25200 25189 +f 25189 25200 25201 +f 25189 25201 25190 +f 25190 25201 25202 +f 25190 25202 25191 +f 25191 25202 25203 +f 25191 25203 25149 +f 25149 25203 25150 +f 24506 24504 25192 +f 25192 24504 25204 +f 25192 25204 25193 +f 25193 25204 25205 +f 25193 25205 25194 +f 25194 25205 25206 +f 25194 25206 25195 +f 25195 25206 25207 +f 25195 25207 25196 +f 25196 25207 25208 +f 25196 25208 25197 +f 25197 25208 25209 +f 25197 25209 25198 +f 25198 25209 25210 +f 25198 25210 25199 +f 25199 25210 25211 +f 25199 25211 25200 +f 25200 25211 25212 +f 25200 25212 25201 +f 25201 25212 25213 +f 25201 25213 25202 +f 25202 25213 25214 +f 25202 25214 25203 +f 25203 25214 25215 +f 25203 25215 25150 +f 25150 25215 25151 +f 24504 24503 25204 +f 25204 24503 24502 +f 25204 24502 25216 +f 25216 24502 24500 +f 25216 24500 25217 +f 25217 24500 24499 +f 25217 24499 25218 +f 25218 24499 24498 +f 25218 24498 25219 +f 25219 24498 24478 +f 25219 24478 25220 +f 25220 24478 24479 +f 25220 24479 25221 +f 25221 24479 25222 +f 25221 25222 25223 +f 25223 25222 25224 +f 25223 25224 25225 +f 25225 25224 25226 +f 25225 25226 25227 +f 25227 25226 25228 +f 25227 25228 25229 +f 25229 25228 25230 +f 25229 25230 25231 +f 25231 25230 25232 +f 25231 25232 25233 +f 25233 25232 25234 +f 25233 25234 25235 +f 25235 25234 25164 +f 25235 25164 25162 +f 24479 24480 25222 +f 25222 24480 24481 +f 25222 24481 25236 +f 25236 24481 24483 +f 25236 24483 25237 +f 25237 24483 24484 +f 25237 24484 25238 +f 25238 24484 24485 +f 25238 24485 25239 +f 25239 24485 24487 +f 25239 24487 25240 +f 25240 24487 24488 +f 25240 24488 25241 +f 25241 24488 24493 +f 25241 24493 25178 +f 25179 24492 25242 +f 25242 24492 24496 +f 25242 24496 25243 +f 25243 24496 24497 +f 25243 24497 25244 +f 25244 24497 24495 +f 25244 24495 25245 +f 25245 24495 24494 +f 25245 24494 24491 +f 24490 25246 24491 +f 24491 25246 25247 +f 24491 25247 25245 +f 25245 25247 25248 +f 25245 25248 25249 +f 25249 25248 25250 +f 25249 25250 25251 +f 25251 25250 25252 +f 25251 25252 25253 +f 25253 25252 25254 +f 25253 25254 25255 +f 25255 25254 25256 +f 25255 25256 25257 +f 25257 25256 25258 +f 25257 25258 25259 +f 25259 25258 25260 +f 25259 25260 25261 +f 25261 25260 25262 +f 25261 25262 25263 +f 25263 25262 25264 +f 25263 25264 25265 +f 25265 25264 25266 +f 25265 25266 25267 +f 25267 25266 25268 +f 25267 25268 25163 +f 25163 25268 25269 +f 25163 25269 25161 +f 25161 25269 25270 +f 25161 25270 25159 +f 25159 25270 25271 +f 25159 25271 25157 +f 25157 25271 25272 +f 25157 25272 25155 +f 25155 25272 24608 +f 25155 24608 24707 +f 25246 24490 25273 +f 25273 24490 24489 +f 25273 24489 25274 +f 25274 24489 24486 +f 25274 24486 25275 +f 25275 24486 24482 +f 25275 24482 25276 +f 25276 24482 24477 +f 25276 24477 25277 +f 25277 24477 24473 +f 25277 24473 25278 +f 25278 24473 24472 +f 25278 24472 25279 +f 25279 24472 24471 +f 25279 24471 24469 +f 25279 24469 25280 +f 25280 24469 24467 +f 25280 24467 24464 +f 24464 24462 25280 +f 25280 24462 25114 +f 25114 24462 24461 +f 25277 25281 25276 +f 25276 25281 25282 +f 25276 25282 25283 +f 25283 25282 25284 +f 25283 25284 25285 +f 25285 25284 25286 +f 25285 25286 25287 +f 25287 25286 25288 +f 25287 25288 25289 +f 25289 25288 25290 +f 25289 25290 25291 +f 25291 25290 25292 +f 25291 25292 25293 +f 25293 25292 25294 +f 25293 25294 25295 +f 25295 25294 25296 +f 25295 25296 25297 +f 25297 25296 25298 +f 25297 25298 25299 +f 25299 25298 25300 +f 25299 25300 25301 +f 25301 25300 25302 +f 25301 25302 25303 +f 25303 25302 25304 +f 25303 25304 25305 +f 25305 25304 24588 +f 25305 24588 24590 +f 25281 25306 25282 +f 25282 25306 25307 +f 25282 25307 25284 +f 25284 25307 25308 +f 25284 25308 25286 +f 25286 25308 25309 +f 25286 25309 25288 +f 25288 25309 25310 +f 25288 25310 25290 +f 25290 25310 25311 +f 25290 25311 25292 +f 25292 25311 25312 +f 25292 25312 25294 +f 25294 25312 25313 +f 25294 25313 25296 +f 25296 25313 25314 +f 25296 25314 25298 +f 25298 25314 25315 +f 25298 25315 25300 +f 25300 25315 25316 +f 25300 25316 25302 +f 25302 25316 25317 +f 25302 25317 25304 +f 25304 25317 24588 +f 25306 25318 25307 +f 25307 25318 25319 +f 25307 25319 25308 +f 25308 25319 25320 +f 25308 25320 25309 +f 25309 25320 25321 +f 25309 25321 25310 +f 25310 25321 25322 +f 25310 25322 25311 +f 25311 25322 25323 +f 25311 25323 25312 +f 25312 25323 25313 +f 25324 25325 25318 +f 25318 25325 25326 +f 25318 25326 25319 +f 25319 25326 25320 +f 25324 25327 25325 +f 25325 25327 25328 +f 25325 25328 25329 +f 25329 25328 25330 +f 25329 25330 25331 +f 25331 25330 25332 +f 25331 25332 25333 +f 25333 25332 25334 +f 25333 25334 25335 +f 25335 25334 25336 +f 25335 25336 25337 +f 25337 25336 25338 +f 25337 25338 25339 +f 25339 25338 25340 +f 25339 25340 25341 +f 25341 25340 24583 +f 25341 24583 25342 +f 25342 24583 24584 +f 25342 24584 24586 +f 25327 25343 25328 +f 25328 25343 25344 +f 25328 25344 25330 +f 25330 25344 25332 +f 25344 25345 25332 +f 25332 25345 25346 +f 25332 25346 25334 +f 25334 25346 25347 +f 25334 25347 25336 +f 25336 25347 25348 +f 25336 25348 25338 +f 25338 25348 25349 +f 25338 25349 25340 +f 25340 25349 24581 +f 25340 24581 24583 +f 25345 25350 25346 +f 25346 25350 25351 +f 25346 25351 25347 +f 25347 25351 25352 +f 25347 25352 25348 +f 25348 25352 25353 +f 25348 25353 25349 +f 25349 25353 24579 +f 25349 24579 24581 +f 25351 25350 25354 +f 25354 25350 25355 +f 25354 25355 25356 +f 25356 25355 25357 +f 25356 25357 24577 +f 24577 25357 24575 +f 24575 25357 25358 +f 24575 25358 24573 +f 24573 25358 24572 +f 24572 25358 25359 +f 24572 25359 24722 +f 24722 25359 25063 +f 24722 25063 24744 +f 24744 25063 24527 +f 25356 24577 25360 +f 25360 24577 24579 +f 25360 24579 25353 +f 24588 25317 24586 +f 24586 25317 25361 +f 24586 25361 25342 +f 25342 25361 25362 +f 25342 25362 25363 +f 25363 25362 25364 +f 25363 25364 25365 +f 25365 25364 25366 +f 25365 25366 25367 +f 25367 25366 25368 +f 25367 25368 25369 +f 25369 25368 25370 +f 25369 25370 25333 +f 25333 25370 25331 +f 24718 25371 24590 +f 24590 25371 25372 +f 24590 25372 25305 +f 25305 25372 25373 +f 25305 25373 25303 +f 25303 25373 25374 +f 25303 25374 25301 +f 25301 25374 25375 +f 25301 25375 25299 +f 25299 25375 25376 +f 25299 25376 25297 +f 25297 25376 25295 +f 24716 25377 24718 +f 24718 25377 25378 +f 24718 25378 25371 +f 25371 25378 25379 +f 25371 25379 25380 +f 25380 25379 25381 +f 25380 25381 25382 +f 25382 25381 25383 +f 25382 25383 25384 +f 25384 25383 25385 +f 25384 25385 25386 +f 25386 25385 25387 +f 25386 25387 25376 +f 25376 25387 25388 +f 25376 25388 25295 +f 25295 25388 25389 +f 25295 25389 25293 +f 25293 25389 25390 +f 25293 25390 25291 +f 25291 25390 25391 +f 25291 25391 25289 +f 25289 25391 25392 +f 25289 25392 25287 +f 25287 25392 25393 +f 25287 25393 25285 +f 25285 25393 25394 +f 25285 25394 25283 +f 25283 25394 25275 +f 25283 25275 25276 +f 25377 24716 25395 +f 25395 24716 24714 +f 25395 24714 25396 +f 25396 24714 24712 +f 25396 24712 25397 +f 25397 24712 24710 +f 25397 24710 25398 +f 25398 24710 24708 +f 25398 24708 25272 +f 25272 24708 24608 +f 24675 24633 25147 +f 25147 24633 25399 +f 25147 25399 25145 +f 25145 25399 25400 +f 25145 25400 25143 +f 25143 25400 25401 +f 25143 25401 25141 +f 25141 25401 25402 +f 25141 25402 25139 +f 25139 25402 25403 +f 25139 25403 25404 +f 25404 25403 25405 +f 25404 25405 25406 +f 25406 25405 25407 +f 25406 25407 25408 +f 25408 25407 25409 +f 25408 25409 25410 +f 25410 25409 25411 +f 25410 25411 25412 +f 25412 25411 25413 +f 25412 25413 25414 +f 25414 25413 25415 +f 25414 25415 25416 +f 25416 25415 25417 +f 25416 25417 25418 +f 25418 25417 25419 +f 25418 25419 25420 +f 25420 25419 25421 +f 25420 25421 25120 +f 25120 25421 25119 +f 24620 25422 24633 +f 24633 25422 25423 +f 24633 25423 25399 +f 25399 25423 25400 +f 25422 24620 25424 +f 25424 24620 24619 +f 25424 24619 25425 +f 25425 24619 25426 +f 25425 25426 25427 +f 25427 25426 25428 +f 25427 25428 25429 +f 25429 25428 25430 +f 25429 25430 25431 +f 25431 25430 25432 +f 25431 25432 25433 +f 25433 25432 25434 +f 25433 25434 25435 +f 25435 25434 25436 +f 25435 25436 25437 +f 25437 25436 25438 +f 25437 25438 25439 +f 25439 25438 25440 +f 25439 25440 25441 +f 25441 25440 25442 +f 25441 25442 25443 +f 25443 25442 25444 +f 25443 25444 25445 +f 25445 25444 25446 +f 25445 25446 25447 +f 25447 25446 25091 +f 25447 25091 25093 +f 24619 24618 25426 +f 25426 24618 24616 +f 25426 24616 25448 +f 25448 24616 25449 +f 25448 25449 25450 +f 25450 25449 25451 +f 25450 25451 25452 +f 25452 25451 25453 +f 25452 25453 25454 +f 25454 25453 25455 +f 25454 25455 25436 +f 25436 25455 25438 +f 24616 24614 25449 +f 25449 24614 25456 +f 25449 25456 25451 +f 25451 25456 25457 +f 25451 25457 25453 +f 25453 25457 25458 +f 25453 25458 25455 +f 25455 25458 25459 +f 25455 25459 25438 +f 25438 25459 25460 +f 25438 25460 25440 +f 25440 25460 25461 +f 25440 25461 25462 +f 25462 25461 25077 +f 25462 25077 25463 +f 25463 25077 25079 +f 25463 25079 25081 +f 25456 24614 25464 +f 25464 24614 24612 +f 25464 24612 25070 +f 25457 25456 25464 +f 25464 25070 25465 +f 25465 25070 25071 +f 25465 25071 25466 +f 25466 25071 25073 +f 25466 25073 25467 +f 25467 25073 25075 +f 25467 25075 25461 +f 25461 25075 25077 +f 25428 25426 25448 +f 25428 25448 25450 +f 25424 25425 25468 +f 25468 25425 25427 +f 25468 25427 25469 +f 25469 25427 25429 +f 25469 25429 25470 +f 25470 25429 25431 +f 25470 25431 25471 +f 25471 25431 25433 +f 25471 25433 25409 +f 25409 25433 25472 +f 25409 25472 25411 +f 25411 25472 25473 +f 25411 25473 25413 +f 25413 25473 25474 +f 25413 25474 25415 +f 25415 25474 25475 +f 25415 25475 25417 +f 25417 25475 25476 +f 25417 25476 25419 +f 25419 25476 25477 +f 25419 25477 25421 +f 25421 25477 25478 +f 25421 25478 25119 +f 25119 25478 25118 +f 25422 25424 25479 +f 25479 25424 25468 +f 25479 25468 25480 +f 25480 25468 25469 +f 25480 25469 25481 +f 25481 25469 25470 +f 25481 25470 25407 +f 25407 25470 25471 +f 25407 25471 25409 +f 25423 25422 25482 +f 25482 25422 25479 +f 25482 25479 25483 +f 25483 25479 25480 +f 25483 25480 25484 +f 25484 25480 25481 +f 25484 25481 25405 +f 25405 25481 25407 +f 25152 25151 25485 +f 25485 25151 25215 +f 25485 25215 25486 +f 25486 25215 25214 +f 25486 25214 25487 +f 25487 25214 25213 +f 25487 25213 25488 +f 25488 25213 25212 +f 25488 25212 25489 +f 25489 25212 25211 +f 25489 25211 25490 +f 25490 25211 25210 +f 25490 25210 25491 +f 25491 25210 25209 +f 25491 25209 25492 +f 25492 25209 25208 +f 25492 25208 25493 +f 25493 25208 25207 +f 25493 25207 25494 +f 25494 25207 25206 +f 25494 25206 25495 +f 25495 25206 25205 +f 25495 25205 25216 +f 25216 25205 25204 +f 25153 25152 25496 +f 25496 25152 25485 +f 25496 25485 25497 +f 25497 25485 25486 +f 25497 25486 25498 +f 25498 25486 25487 +f 25498 25487 25499 +f 25499 25487 25488 +f 25499 25488 25500 +f 25500 25488 25489 +f 25500 25489 25501 +f 25501 25489 25490 +f 25501 25490 25502 +f 25502 25490 25491 +f 25502 25491 25503 +f 25503 25491 25492 +f 25503 25492 25504 +f 25504 25492 25493 +f 25504 25493 25505 +f 25505 25493 25494 +f 25505 25494 25506 +f 25506 25494 25495 +f 25506 25495 25217 +f 25217 25495 25216 +f 25154 25153 25507 +f 25507 25153 25496 +f 25507 25496 25508 +f 25508 25496 25497 +f 25508 25497 25509 +f 25509 25497 25498 +f 25509 25498 25510 +f 25510 25498 25499 +f 25510 25499 25511 +f 25511 25499 25500 +f 25511 25500 25512 +f 25512 25500 25501 +f 25512 25501 25513 +f 25513 25501 25502 +f 25513 25502 25514 +f 25514 25502 25503 +f 25514 25503 25515 +f 25515 25503 25504 +f 25515 25504 25516 +f 25516 25504 25505 +f 25516 25505 25517 +f 25517 25505 25506 +f 25517 25506 25218 +f 25218 25506 25217 +f 25272 25271 25398 +f 25398 25271 25518 +f 25398 25518 25397 +f 25397 25518 25519 +f 25397 25519 25396 +f 25396 25519 25520 +f 25396 25520 25395 +f 25395 25520 25521 +f 25395 25521 25377 +f 25377 25521 25522 +f 25377 25522 25378 +f 25378 25522 25379 +f 25373 25372 25380 +f 25380 25372 25371 +f 25362 25361 25316 +f 25316 25361 25317 +f 25339 25341 25363 +f 25363 25341 25342 +f 25354 25356 25360 +f 25354 25360 25352 +f 25352 25360 25353 +f 25458 25457 25465 +f 25465 25457 25464 +f 25458 25465 25466 +f 25430 25428 25450 +f 25430 25450 25452 +f 25401 25400 25482 +f 25482 25400 25423 +f 25401 25482 25483 +f 25154 25507 25156 +f 25156 25507 25523 +f 25156 25523 25158 +f 25158 25523 25524 +f 25158 25524 25160 +f 25160 25524 25525 +f 25160 25525 25162 +f 25162 25525 25235 +f 25523 25507 25508 +f 25271 25270 25518 +f 25518 25270 25526 +f 25518 25526 25519 +f 25519 25526 25527 +f 25519 25527 25520 +f 25520 25527 25528 +f 25520 25528 25521 +f 25521 25528 25529 +f 25521 25529 25522 +f 25522 25529 25530 +f 25522 25530 25379 +f 25379 25530 25381 +f 25374 25373 25382 +f 25382 25373 25380 +f 25364 25362 25315 +f 25315 25362 25316 +f 25337 25339 25365 +f 25365 25339 25363 +f 25351 25354 25352 +f 25459 25458 25466 +f 25459 25466 25467 +f 25432 25430 25452 +f 25432 25452 25454 +f 25402 25401 25483 +f 25402 25483 25484 +f 25523 25508 25531 +f 25531 25508 25509 +f 25531 25509 25532 +f 25532 25509 25510 +f 25532 25510 25533 +f 25533 25510 25511 +f 25533 25511 25534 +f 25534 25511 25512 +f 25534 25512 25535 +f 25535 25512 25513 +f 25535 25513 25536 +f 25536 25513 25514 +f 25536 25514 25537 +f 25537 25514 25515 +f 25537 25515 25538 +f 25538 25515 25516 +f 25538 25516 25539 +f 25539 25516 25517 +f 25539 25517 25219 +f 25219 25517 25218 +f 25270 25269 25526 +f 25526 25269 25540 +f 25526 25540 25527 +f 25527 25540 25541 +f 25527 25541 25528 +f 25528 25541 25542 +f 25528 25542 25529 +f 25529 25542 25543 +f 25529 25543 25530 +f 25530 25543 25544 +f 25530 25544 25381 +f 25381 25544 25383 +f 25375 25374 25384 +f 25384 25374 25382 +f 25366 25364 25314 +f 25314 25364 25315 +f 25335 25337 25367 +f 25367 25337 25365 +f 25459 25467 25460 +f 25460 25467 25461 +f 25432 25454 25434 +f 25434 25454 25436 +f 25472 25433 25435 +f 25402 25484 25403 +f 25403 25484 25405 +f 25137 25139 25404 +f 25532 25545 25531 +f 25531 25545 25524 +f 25531 25524 25523 +f 25545 25532 25533 +f 25524 25545 25525 +f 25525 25545 25546 +f 25525 25546 25235 +f 25235 25546 25233 +f 25546 25545 25533 +f 25540 25269 25268 +f 25541 25540 25266 +f 25266 25540 25268 +f 25542 25541 25264 +f 25264 25541 25266 +f 25543 25542 25262 +f 25262 25542 25264 +f 25544 25543 25547 +f 25547 25543 25262 +f 25547 25262 25260 +f 25383 25544 25548 +f 25548 25544 25547 +f 25548 25547 25260 +f 25383 25548 25385 +f 25385 25548 25549 +f 25385 25549 25550 +f 25550 25549 25551 +f 25550 25551 25552 +f 25552 25551 25553 +f 25552 25553 25554 +f 25554 25553 25555 +f 25554 25555 25556 +f 25556 25555 25557 +f 25556 25557 25558 +f 25558 25557 25559 +f 25558 25559 25560 +f 25560 25559 25561 +f 25560 25561 25562 +f 25562 25561 25246 +f 25562 25246 25273 +f 25549 25548 25260 +f 25375 25384 25386 +f 25386 25376 25375 +f 25366 25314 25313 +f 25366 25313 25368 +f 25368 25313 25323 +f 25368 25323 25370 +f 25370 25323 25322 +f 25370 25322 25563 +f 25563 25322 25321 +f 25563 25321 25564 +f 25564 25321 25320 +f 25564 25320 25326 +f 25335 25367 25369 +f 25369 25333 25335 +f 25462 25463 25565 +f 25565 25463 25081 +f 25565 25081 25566 +f 25566 25081 25083 +f 25566 25083 25089 +f 25440 25462 25442 +f 25442 25462 25565 +f 25442 25565 25444 +f 25444 25565 25566 +f 25444 25566 25446 +f 25446 25566 25089 +f 25446 25089 25091 +f 25437 25439 25567 +f 25567 25439 25441 +f 25567 25441 25568 +f 25568 25441 25443 +f 25568 25443 25569 +f 25569 25443 25445 +f 25569 25445 25570 +f 25570 25445 25447 +f 25570 25447 25571 +f 25571 25447 25093 +f 25571 25093 25095 +f 25435 25437 25572 +f 25572 25437 25567 +f 25572 25567 25573 +f 25573 25567 25568 +f 25573 25568 25574 +f 25574 25568 25569 +f 25574 25569 25575 +f 25575 25569 25570 +f 25575 25570 25576 +f 25576 25570 25571 +f 25576 25571 25577 +f 25577 25571 25095 +f 25577 25095 25097 +f 25472 25435 25473 +f 25473 25435 25572 +f 25473 25572 25474 +f 25474 25572 25573 +f 25474 25573 25475 +f 25475 25573 25574 +f 25475 25574 25476 +f 25476 25574 25575 +f 25476 25575 25477 +f 25477 25575 25576 +f 25477 25576 25478 +f 25478 25576 25577 +f 25478 25577 25118 +f 25118 25577 25097 +f 25406 25408 25578 +f 25578 25408 25410 +f 25578 25410 25579 +f 25579 25410 25412 +f 25579 25412 25580 +f 25580 25412 25414 +f 25580 25414 25581 +f 25581 25414 25416 +f 25581 25416 25582 +f 25582 25416 25418 +f 25582 25418 25583 +f 25583 25418 25420 +f 25583 25420 25121 +f 25121 25420 25120 +f 25404 25406 25584 +f 25584 25406 25578 +f 25584 25578 25585 +f 25585 25578 25579 +f 25585 25579 25586 +f 25586 25579 25580 +f 25586 25580 25587 +f 25587 25580 25581 +f 25587 25581 25588 +f 25588 25581 25582 +f 25588 25582 25589 +f 25589 25582 25583 +f 25589 25583 25122 +f 25122 25583 25121 +f 25137 25404 25135 +f 25135 25404 25584 +f 25135 25584 25133 +f 25133 25584 25585 +f 25133 25585 25131 +f 25131 25585 25586 +f 25131 25586 25129 +f 25129 25586 25587 +f 25129 25587 25127 +f 25127 25587 25588 +f 25127 25588 25125 +f 25125 25588 25589 +f 25125 25589 25123 +f 25123 25589 25122 +f 25546 25533 25590 +f 25590 25533 25534 +f 25590 25534 25591 +f 25591 25534 25535 +f 25591 25535 25592 +f 25592 25535 25536 +f 25592 25536 25593 +f 25593 25536 25537 +f 25593 25537 25594 +f 25594 25537 25538 +f 25594 25538 25595 +f 25595 25538 25539 +f 25595 25539 25220 +f 25220 25539 25219 +f 25231 25233 25590 +f 25590 25233 25546 +f 25231 25590 25591 +f 25164 25234 25166 +f 25166 25234 25596 +f 25166 25596 25168 +f 25168 25596 25597 +f 25168 25597 25170 +f 25170 25597 25598 +f 25170 25598 25172 +f 25172 25598 25599 +f 25172 25599 25174 +f 25174 25599 25600 +f 25174 25600 25176 +f 25176 25600 25241 +f 25176 25241 25178 +f 25596 25234 25232 +f 25265 25267 25601 +f 25601 25267 25167 +f 25601 25167 25169 +f 25263 25265 25602 +f 25602 25265 25601 +f 25602 25601 25603 +f 25603 25601 25169 +f 25603 25169 25171 +f 25261 25263 25604 +f 25604 25263 25602 +f 25604 25602 25605 +f 25605 25602 25603 +f 25605 25603 25606 +f 25606 25603 25171 +f 25606 25171 25173 +f 25261 25604 25259 +f 25259 25604 25607 +f 25259 25607 25257 +f 25257 25607 25608 +f 25257 25608 25255 +f 25255 25608 25609 +f 25255 25609 25253 +f 25253 25609 25610 +f 25253 25610 25251 +f 25251 25610 25611 +f 25251 25611 25249 +f 25249 25611 25244 +f 25249 25244 25245 +f 25607 25604 25605 +f 25549 25260 25258 +f 25549 25258 25551 +f 25551 25258 25256 +f 25551 25256 25553 +f 25553 25256 25254 +f 25553 25254 25555 +f 25555 25254 25252 +f 25555 25252 25557 +f 25557 25252 25250 +f 25557 25250 25559 +f 25559 25250 25248 +f 25559 25248 25561 +f 25561 25248 25247 +f 25561 25247 25246 +f 25388 25387 25612 +f 25612 25387 25552 +f 25612 25552 25554 +f 25388 25612 25389 +f 25389 25612 25613 +f 25389 25613 25390 +f 25390 25613 25614 +f 25390 25614 25391 +f 25391 25614 25615 +f 25391 25615 25392 +f 25392 25615 25616 +f 25392 25616 25393 +f 25393 25616 25617 +f 25393 25617 25394 +f 25394 25617 25274 +f 25394 25274 25275 +f 25613 25612 25554 +f 25331 25370 25563 +f 25331 25563 25329 +f 25329 25563 25564 +f 25329 25564 25325 +f 25325 25564 25326 +f 25385 25550 25387 +f 25387 25550 25552 +f 25163 25165 25267 +f 25267 25165 25167 +f 25229 25231 25591 +f 25229 25591 25592 +f 25596 25232 25618 +f 25618 25232 25230 +f 25618 25230 25619 +f 25619 25230 25228 +f 25619 25228 25620 +f 25620 25228 25226 +f 25620 25226 25621 +f 25621 25226 25224 +f 25621 25224 25236 +f 25236 25224 25222 +f 25607 25605 25622 +f 25622 25605 25606 +f 25622 25606 25623 +f 25623 25606 25173 +f 25623 25173 25175 +f 25614 25613 25556 +f 25556 25613 25554 +f 25227 25229 25592 +f 25227 25592 25593 +f 25596 25618 25597 +f 25597 25618 25624 +f 25597 25624 25598 +f 25598 25624 25625 +f 25598 25625 25599 +f 25599 25625 25626 +f 25599 25626 25600 +f 25600 25626 25240 +f 25600 25240 25241 +f 25624 25618 25619 +f 25607 25622 25608 +f 25608 25622 25627 +f 25608 25627 25609 +f 25609 25627 25628 +f 25609 25628 25610 +f 25610 25628 25629 +f 25610 25629 25611 +f 25611 25629 25243 +f 25611 25243 25244 +f 25627 25622 25623 +f 25615 25614 25558 +f 25558 25614 25556 +f 25117 25116 25092 +f 25092 25116 25094 +f 25096 25094 25115 +f 25115 25094 25116 +f 25595 25223 25594 +f 25594 25223 25225 +f 25594 25225 25593 +f 25593 25225 25227 +f 25220 25221 25595 +f 25595 25221 25223 +f 25621 25630 25620 +f 25620 25630 25631 +f 25620 25631 25619 +f 25619 25631 25624 +f 25630 25632 25631 +f 25631 25632 25625 +f 25631 25625 25624 +f 25236 25237 25621 +f 25621 25237 25630 +f 25625 25632 25626 +f 25626 25632 25239 +f 25626 25239 25240 +f 25237 25238 25630 +f 25630 25238 25632 +f 25238 25239 25632 +f 25177 25633 25634 +f 25634 25633 25628 +f 25634 25628 25627 +f 25628 25633 25629 +f 25629 25633 25242 +f 25629 25242 25243 +f 25242 25633 25179 +f 25179 25633 25177 +f 25560 25562 25616 +f 25616 25562 25617 +f 25274 25617 25273 +f 25273 25617 25562 +f 25558 25560 25615 +f 25615 25560 25616 +f 25623 25175 25634 +f 25634 25175 25177 +f 25623 25634 25627 +f 25098 25117 25090 +f 25090 25117 25092 +f 25098 25090 25088 +f 25063 25359 25064 +f 25277 25278 25108 +f 25108 25278 25109 +f 25109 25278 25279 +f 25111 25280 25112 +f 25112 25280 25113 +f 25113 25280 25114 +f 25357 25072 25069 +f 25357 25069 25068 +f 25080 25345 25082 +f 25082 25345 25084 +f 25087 25327 25324 +f 25105 25318 25306 +f 25107 25306 25108 +f 25108 25306 25281 +f 25108 25281 25277 +f 25635 25636 25637 +f 25637 25636 25638 +f 25637 25638 25639 +f 25639 25638 25640 +f 25639 25640 25641 +f 25641 25640 25642 +f 25642 25640 25643 +f 25643 25640 25644 +f 25643 25644 25645 +f 25645 25644 25646 +f 25645 25646 25647 +f 25647 25646 25648 +f 25647 25648 25649 +f 25649 25648 25650 +f 25649 25650 25651 +f 25651 25650 25652 +f 25651 25652 25653 +f 25653 25652 25654 +f 25653 25654 25655 +f 25655 25654 25656 +f 25655 25656 25657 +f 25657 25656 25658 +f 25657 25658 25659 +f 25659 25658 25660 +f 25660 25658 25661 +f 25660 25661 25662 +f 25662 25661 25663 +f 25662 25663 25664 +f 25664 25663 25665 +f 25665 25663 25666 +f 25666 25663 25667 +f 25666 25667 25668 +f 25668 25667 25669 +f 25668 25669 25670 +f 25670 25669 25671 +f 25670 25671 25672 +f 25672 25671 25673 +f 25673 25671 25674 +f 25673 25674 25675 +f 25675 25674 25676 +f 25676 25674 25677 +f 25676 25677 25678 +f 25678 25677 25679 +f 25678 25679 25680 +f 25680 25679 25681 +f 25681 25679 25682 +f 25682 25679 25683 +f 25683 25679 25684 +f 25683 25684 25685 +f 25685 25684 25686 +f 25685 25686 25687 +f 25687 25686 25688 +f 25687 25688 25636 +f 25636 25688 25689 +f 25636 25689 25638 +f 25638 25689 25690 +f 25638 25690 25640 +f 25640 25690 25644 +f 25641 25691 25639 +f 25639 25691 25637 +f 25684 25679 25677 +f 25686 25684 25692 +f 25692 25684 25677 +f 25692 25677 25693 +f 25693 25677 25674 +f 25693 25674 25694 +f 25694 25674 25671 +f 25694 25671 25695 +f 25695 25671 25669 +f 25695 25669 25696 +f 25696 25669 25667 +f 25696 25667 25661 +f 25661 25667 25663 +f 25688 25686 25697 +f 25697 25686 25692 +f 25697 25692 25698 +f 25698 25692 25693 +f 25698 25693 25699 +f 25699 25693 25694 +f 25699 25694 25700 +f 25700 25694 25695 +f 25700 25695 25701 +f 25701 25695 25696 +f 25701 25696 25658 +f 25658 25696 25661 +f 25689 25688 25702 +f 25702 25688 25697 +f 25702 25697 25703 +f 25703 25697 25698 +f 25703 25698 25704 +f 25704 25698 25699 +f 25704 25699 25705 +f 25705 25699 25700 +f 25705 25700 25706 +f 25706 25700 25701 +f 25706 25701 25656 +f 25656 25701 25658 +f 25690 25702 25707 +f 25707 25702 25703 +f 25707 25703 25708 +f 25708 25703 25704 +f 25708 25704 25709 +f 25709 25704 25705 +f 25709 25705 25710 +f 25710 25705 25706 +f 25710 25706 25654 +f 25654 25706 25656 +f 25702 25690 25689 +f 25646 25644 25707 +f 25707 25644 25690 +f 25646 25707 25708 +f 25648 25646 25708 +f 25648 25708 25709 +f 25650 25648 25709 +f 25650 25709 25710 +f 25652 25650 25710 +f 25652 25710 25654 +f 25711 25712 25713 +f 25713 25712 25714 +f 25713 25714 25715 +f 25715 25714 25716 +f 25716 25714 25717 +f 25717 25714 25718 +f 25717 25718 25719 +f 25719 25718 25720 +f 25720 25718 25721 +f 25720 25721 25722 +f 25722 25721 25723 +f 25723 25721 25724 +f 25723 25724 25725 +f 25725 25724 25726 +f 25725 25726 25727 +f 25727 25726 25728 +f 25727 25728 25729 +f 25729 25728 25730 +f 25729 25730 25731 +f 25731 25730 25732 +f 25731 25732 25733 +f 25733 25732 25734 +f 25733 25734 25735 +f 25735 25734 25736 +f 25735 25736 25737 +f 25737 25736 25738 +f 25737 25738 25739 +f 25739 25738 25740 +f 25739 25740 25741 +f 25741 25740 25651 +f 25741 25651 25653 +f 25742 25743 25712 +f 25712 25743 25744 +f 25712 25744 25714 +f 25714 25744 25718 +f 25635 25745 25742 +f 25742 25745 25746 +f 25742 25746 25747 +f 25747 25746 25748 +f 25747 25748 25749 +f 25749 25748 25750 +f 25749 25750 25751 +f 25751 25750 25752 +f 25751 25752 25724 +f 25724 25752 25726 +f 25745 25635 25753 +f 25753 25635 25637 +f 25753 25637 25691 +f 25691 25641 25753 +f 25753 25641 25642 +f 25753 25642 25643 +f 25753 25643 25754 +f 25754 25643 25645 +f 25754 25645 25755 +f 25755 25645 25647 +f 25755 25647 25756 +f 25756 25647 25649 +f 25756 25649 25757 +f 25757 25649 25740 +f 25757 25740 25738 +f 25649 25651 25740 +f 25653 25758 25741 +f 25741 25758 25739 +f 25759 25735 25758 +f 25758 25735 25737 +f 25758 25737 25739 +f 25760 25731 25759 +f 25759 25731 25733 +f 25759 25733 25735 +f 25731 25760 25729 +f 25729 25760 25761 +f 25729 25761 25727 +f 25745 25753 25762 +f 25762 25753 25754 +f 25762 25754 25763 +f 25763 25754 25755 +f 25763 25755 25764 +f 25764 25755 25756 +f 25764 25756 25765 +f 25765 25756 25757 +f 25765 25757 25738 +f 25743 25742 25747 +f 25746 25745 25766 +f 25766 25745 25762 +f 25766 25762 25767 +f 25767 25762 25763 +f 25767 25763 25768 +f 25768 25763 25764 +f 25768 25764 25769 +f 25769 25764 25765 +f 25769 25765 25736 +f 25736 25765 25738 +f 25747 25749 25743 +f 25743 25749 25770 +f 25743 25770 25744 +f 25744 25770 25718 +f 25746 25766 25748 +f 25748 25766 25771 +f 25748 25771 25750 +f 25750 25771 25772 +f 25750 25772 25752 +f 25752 25772 25773 +f 25752 25773 25726 +f 25726 25773 25728 +f 25771 25766 25767 +f 25721 25718 25770 +f 25721 25770 25751 +f 25751 25770 25749 +f 25771 25767 25774 +f 25774 25767 25768 +f 25774 25768 25775 +f 25775 25768 25769 +f 25775 25769 25734 +f 25734 25769 25736 +f 25724 25721 25751 +f 25771 25774 25772 +f 25772 25774 25776 +f 25772 25776 25773 +f 25773 25776 25730 +f 25773 25730 25728 +f 25776 25774 25775 +f 25734 25732 25775 +f 25775 25732 25776 +f 25732 25730 25776 +f 25687 25712 25685 +f 25685 25712 25683 +f 25664 25760 25662 +f 25662 25759 25660 +f 25660 25759 25659 +f 25659 25759 25758 +f 25659 25758 25657 +f 25657 25758 25655 +f 25655 25758 25653 +f 25711 25680 25681 +f 25680 25713 25678 +f 25678 25713 25715 +f 25678 25715 25676 +f 25676 25715 25716 +f 25676 25716 25675 +f 25675 25716 25673 +f 25673 25716 25717 +f 25673 25717 25672 +f 25670 25719 25720 +f 25670 25720 25722 +f 25670 25722 25668 +f 25668 25722 25723 +f 25668 25723 25666 +f 25666 25725 25665 +f 25068 25357 25067 +f 25067 25357 25358 +f 25067 25358 25066 +f 25066 25358 25065 +f 25065 25358 25359 +f 25065 25359 25064 +f 25111 25280 25279 +f 25111 25279 25110 +f 25110 25279 25109 +f 25107 25306 25105 +f 25105 25318 25099 +f 25099 25318 25324 +f 25099 25324 25087 +f 25087 25327 25343 +f 25087 25343 25085 +f 25085 25343 25344 +f 25085 25344 25084 +f 25084 25344 25345 +f 25080 25345 25350 +f 25080 25350 25086 +f 25086 25350 25355 +f 25086 25355 25072 +f 25072 25355 25357 +f 25359 25777 25063 +f 25063 25777 25778 +f 25063 25778 25779 +f 25779 25778 25780 +f 25780 25778 25781 +f 25781 25778 25782 +f 25782 25778 25783 +f 25783 25778 25784 +f 25783 25784 25785 +f 25785 25784 25786 +f 25785 25786 25787 +f 25787 25786 25788 +f 25787 25788 25789 +f 25789 25788 25790 +f 25789 25790 25791 +f 25791 25790 25792 +f 25791 25792 25793 +f 25793 25792 25794 +f 25793 25794 25795 +f 25795 25794 25796 +f 25795 25796 25797 +f 25797 25796 25798 +f 25797 25798 25799 +f 25799 25798 25800 +f 25799 25800 25801 +f 25801 25800 25802 +f 25801 25802 25803 +f 25803 25802 25281 +f 25803 25281 25804 +f 25804 25281 25277 +f 25804 25277 25278 +f 25358 25805 25359 +f 25359 25805 25806 +f 25359 25806 25807 +f 25807 25806 25808 +f 25807 25808 25809 +f 25809 25808 25810 +f 25809 25810 25786 +f 25786 25810 25788 +f 25357 25811 25358 +f 25358 25811 25812 +f 25358 25812 25805 +f 25805 25812 25813 +f 25805 25813 25814 +f 25814 25813 25815 +f 25814 25815 25816 +f 25816 25815 25817 +f 25816 25817 25818 +f 25818 25817 25792 +f 25818 25792 25790 +f 25357 25355 25811 +f 25811 25355 25350 +f 25811 25350 25345 +f 25345 25344 25811 +f 25811 25344 25819 +f 25811 25819 25820 +f 25820 25819 25821 +f 25820 25821 25822 +f 25822 25821 25823 +f 25822 25823 25824 +f 25824 25823 25796 +f 25824 25796 25794 +f 25344 25343 25819 +f 25819 25343 25327 +f 25819 25327 25825 +f 25825 25327 25324 +f 25825 25324 25318 +f 25825 25318 25826 +f 25826 25318 25306 +f 25826 25306 25802 +f 25802 25306 25281 +f 25804 25278 25827 +f 25827 25278 25279 +f 25827 25279 25828 +f 25828 25279 25829 +f 25828 25829 25799 +f 25799 25829 25797 +f 25279 25280 25829 +f 25829 25280 25830 +f 25829 25830 25797 +f 25797 25830 25795 +f 25114 25831 25280 +f 25280 25831 25832 +f 25280 25832 25830 +f 25830 25832 25795 +f 25114 25833 25831 +f 25831 25833 25791 +f 25831 25791 25793 +f 25833 25789 25791 +f 25813 25812 25820 +f 25820 25812 25811 +f 25777 25359 25807 +f 25808 25806 25814 +f 25814 25806 25805 +f 25784 25778 25777 +f 25784 25777 25809 +f 25809 25777 25807 +f 25815 25813 25822 +f 25822 25813 25820 +f 25810 25808 25816 +f 25816 25808 25814 +f 25786 25784 25809 +f 25819 25825 25821 +f 25821 25825 25834 +f 25821 25834 25823 +f 25823 25834 25798 +f 25823 25798 25796 +f 25817 25815 25824 +f 25824 25815 25822 +f 25788 25810 25818 +f 25818 25810 25816 +f 25825 25826 25834 +f 25834 25826 25800 +f 25834 25800 25798 +f 25802 25800 25826 +f 25792 25817 25794 +f 25794 25817 25824 +f 25790 25788 25818 +f 25832 25831 25793 +f 25793 25795 25832 +f 25827 25828 25801 +f 25801 25828 25799 +f 25804 25827 25803 +f 25803 25827 25801 +f 25068 25067 25069 +f 25069 25067 25835 +f 25069 25835 25072 +f 25072 25835 25086 +f 25086 25835 25836 +f 25086 25836 25080 +f 25080 25836 25837 +f 25080 25837 25082 +f 25082 25837 25084 +f 25084 25837 25838 +f 25084 25838 25085 +f 25085 25838 25087 +f 25087 25838 25839 +f 25087 25839 25099 +f 25099 25839 25840 +f 25099 25840 25105 +f 25105 25840 25841 +f 25105 25841 25107 +f 25107 25841 25108 +f 25108 25841 25109 +f 25109 25841 25842 +f 25109 25842 25110 +f 25110 25842 25843 +f 25110 25843 25111 +f 25111 25843 25112 +f 25112 25843 25844 +f 25112 25844 25113 +f 25113 25844 25845 +f 25113 25845 25114 +f 25114 25845 25846 +f 25114 25846 25833 +f 25833 25846 25847 +f 25833 25847 25789 +f 25789 25847 25848 +f 25789 25848 25787 +f 25787 25848 25849 +f 25787 25849 25785 +f 25785 25849 25850 +f 25785 25850 25783 +f 25783 25850 25851 +f 25783 25851 25782 +f 25782 25851 25781 +f 25781 25851 25852 +f 25781 25852 25780 +f 25780 25852 25779 +f 25779 25852 25063 +f 25063 25852 25853 +f 25063 25853 25064 +f 25064 25853 25854 +f 25064 25854 25855 +f 25855 25854 25856 +f 25855 25856 25857 +f 25857 25856 25858 +f 25857 25858 25859 +f 25859 25858 25860 +f 25859 25860 25861 +f 25861 25860 25862 +f 25861 25862 25839 +f 25839 25862 25840 +f 25835 25067 25863 +f 25863 25067 25066 +f 25863 25066 25864 +f 25864 25066 25065 +f 25864 25065 25855 +f 25855 25065 25064 +f 25853 25852 25865 +f 25865 25852 25851 +f 25865 25851 25850 +f 25856 25854 25865 +f 25865 25854 25853 +f 25864 25855 25866 +f 25866 25855 25857 +f 25866 25857 25859 +f 25836 25835 25863 +f 25863 25864 25836 +f 25836 25864 25866 +f 25836 25866 25867 +f 25867 25866 25859 +f 25867 25859 25861 +f 25856 25865 25868 +f 25868 25865 25850 +f 25868 25850 25869 +f 25869 25850 25849 +f 25869 25849 25870 +f 25870 25849 25848 +f 25870 25848 25871 +f 25871 25848 25847 +f 25871 25847 25845 +f 25845 25847 25846 +f 25837 25836 25867 +f 25856 25868 25858 +f 25858 25868 25872 +f 25858 25872 25860 +f 25860 25872 25873 +f 25860 25873 25862 +f 25862 25873 25874 +f 25862 25874 25840 +f 25840 25874 25841 +f 25872 25868 25869 +f 25838 25837 25867 +f 25838 25867 25861 +f 25872 25869 25875 +f 25875 25869 25870 +f 25875 25870 25876 +f 25876 25870 25871 +f 25876 25871 25844 +f 25844 25871 25845 +f 25839 25838 25861 +f 25872 25875 25873 +f 25873 25875 25877 +f 25873 25877 25874 +f 25874 25877 25842 +f 25874 25842 25841 +f 25877 25875 25876 +f 25844 25843 25876 +f 25876 25843 25877 +f 25843 25842 25877 +f 25682 25711 25683 +f 25683 25711 25712 +f 25687 25712 25742 +f 25687 25742 25636 +f 25636 25742 25635 +f 25662 25759 25760 +f 25664 25760 25761 +f 25761 25727 25664 +f 25664 25727 25725 +f 25664 25725 25665 +f 25666 25725 25723 +f 25670 25719 25672 +f 25672 25719 25717 +f 25680 25713 25711 +f 25681 25711 25682 +f 25878 25879 25880 +f 25880 25879 25881 +f 25880 25881 25882 +f 25882 25881 25883 +f 25882 25883 25884 +f 25884 25883 25885 +f 25884 25885 25886 +f 25886 25885 25887 +f 25886 25887 25888 +f 25886 25888 25889 +f 25889 25888 25890 +f 25889 25890 25891 +f 25891 25890 25892 +f 25891 25892 25893 +f 25893 25892 25894 +f 25893 25894 25895 +f 25895 25894 25896 +f 25895 25896 25897 +f 25897 25896 25898 +f 25897 25898 25899 +f 25899 25898 25900 +f 25899 25900 25901 +f 25901 25900 25902 +f 25901 25902 25903 +f 25903 25902 25904 +f 25903 25904 25905 +f 25905 25904 25906 +f 25905 25906 25907 +f 25907 25906 25908 +f 25907 25908 25909 +f 25909 25908 25910 +f 25909 25910 25911 +f 25911 25910 25912 +f 25911 25912 25913 +f 25913 25912 25914 +f 25913 25914 25915 +f 25915 25914 25916 +f 25915 25916 25917 +f 25917 25916 25918 +f 25917 25918 25919 +f 25919 25918 25920 +f 25919 25920 25921 +f 25921 25920 25922 +f 25921 25922 25923 +f 25923 25922 25924 +f 25923 25924 25925 +f 25925 25924 25926 +f 25925 25926 25927 +f 25927 25926 25928 +f 25927 25928 25929 +f 25929 25928 25930 +f 25929 25930 25931 +f 25931 25930 25932 +f 25931 25932 25933 +f 25933 25932 25934 +f 25933 25934 25935 +f 25935 25934 25936 +f 25935 25936 25937 +f 25937 25936 25938 +f 25938 25936 25939 +f 25938 25939 25940 +f 25940 25939 25941 +f 25940 25941 25942 +f 25942 25941 25943 +f 25942 25943 25944 +f 25944 25943 25945 +f 25944 25945 25946 +f 25946 25945 25947 +f 25946 25947 25948 +f 25948 25947 25949 +f 25948 25949 25950 +f 25950 25949 25951 +f 25950 25951 25952 +f 25952 25951 25953 +f 25952 25953 25954 +f 25954 25953 25955 +f 25954 25955 25956 +f 25956 25955 25957 +f 25956 25957 25958 +f 25958 25957 25959 +f 25958 25959 25960 +f 25960 25959 25961 +f 25960 25961 25962 +f 25962 25961 25963 +f 25962 25963 25964 +f 25964 25963 25965 +f 25964 25965 25966 +f 25966 25965 25967 +f 25966 25967 25968 +f 25892 25969 25894 +f 25894 25969 25970 +f 25894 25970 25896 +f 25896 25970 25971 +f 25896 25971 25898 +f 25898 25971 25972 +f 25898 25972 25900 +f 25900 25972 25973 +f 25900 25973 25902 +f 25902 25973 25974 +f 25902 25974 25904 +f 25904 25974 25975 +f 25904 25975 25906 +f 25906 25975 25976 +f 25906 25976 25908 +f 25908 25976 25977 +f 25908 25977 25910 +f 25910 25977 25978 +f 25910 25978 25912 +f 25912 25978 25979 +f 25912 25979 25914 +f 25914 25979 25980 +f 25914 25980 25916 +f 25916 25980 25981 +f 25916 25981 25918 +f 25918 25981 25982 +f 25918 25982 25920 +f 25920 25982 25983 +f 25920 25983 25922 +f 25922 25983 25984 +f 25922 25984 25924 +f 25924 25984 25985 +f 25924 25985 25926 +f 25926 25985 25986 +f 25926 25986 25928 +f 25928 25986 25987 +f 25928 25987 25930 +f 25930 25987 25988 +f 25930 25988 25932 +f 25932 25988 25989 +f 25932 25989 25934 +f 25934 25989 25990 +f 25934 25990 25936 +f 25936 25990 25939 +f 25970 25969 25991 +f 25991 25969 25992 +f 25991 25992 25993 +f 25993 25992 25994 +f 25993 25994 25995 +f 25995 25994 25996 +f 25995 25996 25997 +f 25997 25996 25998 +f 25997 25998 25999 +f 25999 25998 26000 +f 25999 26000 26001 +f 26001 26000 26002 +f 26001 26002 26003 +f 26003 26002 26004 +f 26003 26004 26005 +f 26005 26004 26006 +f 26005 26006 26007 +f 26007 26006 26008 +f 26007 26008 26009 +f 26009 26008 26010 +f 26009 26010 26011 +f 26011 26010 26012 +f 26011 26012 26013 +f 26013 26012 26014 +f 26013 26014 26015 +f 26015 26014 26016 +f 26015 26016 26017 +f 26017 26016 26018 +f 26017 26018 26019 +f 26019 26018 26020 +f 26019 26020 26021 +f 26021 26020 26022 +f 26021 26022 26023 +f 26023 26022 26024 +f 26023 26024 26025 +f 26025 26024 26026 +f 26025 26026 26027 +f 26027 26026 26028 +f 26027 26028 26029 +f 26029 26028 25963 +f 26029 25963 25961 +f 25968 26030 26010 +f 26010 26030 26031 +f 26010 26031 26012 +f 26012 26031 26014 +f 26032 26033 26034 +f 26034 26033 26035 +f 26034 26035 26036 +f 26036 26035 26037 +f 26036 26037 25968 +f 26033 26032 26038 +f 26038 26032 26039 +f 26038 26039 26040 +f 26040 26039 26041 +f 26040 26041 26042 +f 26042 26041 26043 +f 26042 26043 26044 +f 26044 26043 26045 +f 26044 26045 26046 +f 26046 26045 26047 +f 26046 26047 26048 +f 26048 26047 26049 +f 26048 26049 26050 +f 26050 26049 26051 +f 26050 26051 26052 +f 26052 26051 26053 +f 26052 26053 26054 +f 26054 26053 26055 +f 26054 26055 26056 +f 26056 26055 25956 +f 26056 25956 25958 +f 26039 26057 26041 +f 26041 26057 26058 +f 26041 26058 26043 +f 26043 26058 26059 +f 26043 26059 26045 +f 26045 26059 26060 +f 26045 26060 26047 +f 26047 26060 26061 +f 26047 26061 26049 +f 26049 26061 26062 +f 26049 26062 26051 +f 26051 26062 26063 +f 26051 26063 26053 +f 26053 26063 26064 +f 26053 26064 26055 +f 26055 26064 25954 +f 26055 25954 25956 +f 26057 26065 26058 +f 26058 26065 26066 +f 26058 26066 26059 +f 26059 26066 26067 +f 26059 26067 26060 +f 26060 26067 26068 +f 26060 26068 26061 +f 26061 26068 26069 +f 26061 26069 26062 +f 26062 26069 26070 +f 26062 26070 26063 +f 26063 26070 26071 +f 26063 26071 26064 +f 26064 26071 25952 +f 26064 25952 25954 +f 26065 26072 26066 +f 26066 26072 26073 +f 26066 26073 26067 +f 26067 26073 26074 +f 26067 26074 26068 +f 26068 26074 26075 +f 26068 26075 26069 +f 26069 26075 26076 +f 26069 26076 26070 +f 26070 26076 26077 +f 26070 26077 26071 +f 26071 26077 25950 +f 26071 25950 25952 +f 26072 26078 26073 +f 26073 26078 26079 +f 26073 26079 26074 +f 26074 26079 26080 +f 26074 26080 26075 +f 26075 26080 26081 +f 26075 26081 26076 +f 26076 26081 26082 +f 26076 26082 26077 +f 26077 26082 25948 +f 26077 25948 25950 +f 26078 26083 26079 +f 26079 26083 26084 +f 26079 26084 26085 +f 26085 26084 26086 +f 26085 26086 26087 +f 26087 26086 26088 +f 26087 26088 26089 +f 26089 26088 26090 +f 26089 26090 25940 +f 25940 26090 25938 +f 25935 25937 26091 +f 26091 25937 26092 +f 26091 26092 26093 +f 26093 26092 26094 +f 26093 26094 26095 +f 26095 26094 26096 +f 26095 26096 26097 +f 26097 26096 26098 +f 26097 26098 26099 +f 26099 26098 26100 +f 26099 26100 26101 +f 26101 26100 26102 +f 26101 26102 26103 +f 26103 26102 26104 +f 26103 26104 26105 +f 26105 26104 26106 +f 26105 26106 26107 +f 26107 26106 26108 +f 26107 26108 26109 +f 26109 26108 26110 +f 26109 26110 26111 +f 26111 26110 26112 +f 26111 26112 26113 +f 26113 26112 26114 +f 26113 26114 26115 +f 26115 26114 26116 +f 26115 26116 26117 +f 26117 26116 26118 +f 26117 26118 26119 +f 26119 26118 26120 +f 26119 26120 26121 +f 26121 26120 26122 +f 26121 26122 26123 +f 26123 26122 26124 +f 26123 26124 26125 +f 26125 26124 26126 +f 26125 26126 26127 +f 26127 26126 26128 +f 26127 26128 26129 +f 26129 26128 26130 +f 26129 26130 26131 +f 26131 26130 26132 +f 26131 26132 26133 +f 26133 26132 26134 +f 26133 26134 25889 +f 25889 26134 25886 +f 26092 26135 26094 +f 26094 26135 26136 +f 26094 26136 26096 +f 26096 26136 26137 +f 26096 26137 26098 +f 26098 26137 26138 +f 26098 26138 26100 +f 26100 26138 26139 +f 26100 26139 26102 +f 26102 26139 26140 +f 26102 26140 26104 +f 26104 26140 26141 +f 26104 26141 26106 +f 26106 26141 26142 +f 26106 26142 26108 +f 26108 26142 26143 +f 26108 26143 26110 +f 26110 26143 26144 +f 26110 26144 26112 +f 26112 26144 26145 +f 26112 26145 26114 +f 26114 26145 26146 +f 26114 26146 26116 +f 26116 26146 26147 +f 26116 26147 26118 +f 26118 26147 26148 +f 26118 26148 26120 +f 26120 26148 26149 +f 26120 26149 26122 +f 26122 26149 26150 +f 26122 26150 26124 +f 26124 26150 26151 +f 26124 26151 26126 +f 26126 26151 26152 +f 26126 26152 26128 +f 26128 26152 26153 +f 26128 26153 26130 +f 26130 26153 26154 +f 26130 26154 26132 +f 26132 26154 26155 +f 26132 26155 26134 +f 26134 26155 26156 +f 26134 26156 25886 +f 25886 26156 25884 +f 26135 26157 26136 +f 26136 26157 26158 +f 26136 26158 26137 +f 26137 26158 26159 +f 26137 26159 26138 +f 26138 26159 26160 +f 26138 26160 26139 +f 26139 26160 26161 +f 26139 26161 26140 +f 26140 26161 26162 +f 26140 26162 26141 +f 26141 26162 26163 +f 26141 26163 26142 +f 26142 26163 26164 +f 26142 26164 26143 +f 26143 26164 26165 +f 26143 26165 26144 +f 26144 26165 26166 +f 26144 26166 26145 +f 26145 26166 26167 +f 26145 26167 26146 +f 26146 26167 26168 +f 26146 26168 26147 +f 26147 26168 26169 +f 26147 26169 26148 +f 26148 26169 26170 +f 26148 26170 26149 +f 26149 26170 26171 +f 26149 26171 26150 +f 26150 26171 26172 +f 26150 26172 26151 +f 26151 26172 26173 +f 26151 26173 26152 +f 26152 26173 26174 +f 26152 26174 26153 +f 26153 26174 26175 +f 26153 26175 26154 +f 26154 26175 26176 +f 26154 26176 26155 +f 26155 26176 26177 +f 26155 26177 26156 +f 26156 26177 26178 +f 26156 26178 25884 +f 25884 26178 25882 +f 26157 26179 26158 +f 26158 26179 26180 +f 26158 26180 26159 +f 26159 26180 26181 +f 26159 26181 26160 +f 26160 26181 26182 +f 26160 26182 26161 +f 26161 26182 26183 +f 26161 26183 26162 +f 26162 26183 26184 +f 26162 26184 26163 +f 26163 26184 26185 +f 26163 26185 26164 +f 26164 26185 26186 +f 26164 26186 26165 +f 26165 26186 26187 +f 26165 26187 26166 +f 26166 26187 26188 +f 26166 26188 26167 +f 26167 26188 26189 +f 26167 26189 26168 +f 26168 26189 26190 +f 26168 26190 26169 +f 26169 26190 26191 +f 26169 26191 26170 +f 26170 26191 26192 +f 26170 26192 26171 +f 26171 26192 26193 +f 26171 26193 26172 +f 26172 26193 26194 +f 26172 26194 26173 +f 26173 26194 26195 +f 26173 26195 26174 +f 26174 26195 26196 +f 26174 26196 26175 +f 26175 26196 26197 +f 26175 26197 26176 +f 26176 26197 26198 +f 26176 26198 26177 +f 26177 26198 26199 +f 26177 26199 26178 +f 26178 26199 26200 +f 26178 26200 25882 +f 25882 26200 25880 +f 26179 26201 26180 +f 26180 26201 25878 +f 26030 25968 26202 +f 26202 25968 26203 +f 26203 25968 26204 +f 26204 25968 26205 +f 26205 25968 26206 +f 26206 25968 26207 +f 26207 25968 25967 +f 25966 25968 26208 +f 26208 25968 26209 +f 26209 25968 26210 +f 26210 25968 26211 +f 26211 25968 26212 +f 26212 25968 26213 +f 26213 25968 26214 +f 26214 25968 26215 +f 26215 25968 26216 +f 26216 25968 26217 +f 26217 25968 26218 +f 26218 25968 26037 +f 26180 25878 26181 +f 26181 25878 26182 +f 26182 25878 26183 +f 26183 25878 26184 +f 26184 25878 26185 +f 26185 25878 26186 +f 26186 25878 26187 +f 26187 25878 26188 +f 26188 25878 26189 +f 26189 25878 26190 +f 26190 25878 26191 +f 26191 25878 26192 +f 26192 25878 26193 +f 26193 25878 26194 +f 26194 25878 26195 +f 26195 25878 26196 +f 26196 25878 26197 +f 26197 25878 26198 +f 26198 25878 26199 +f 26199 25878 26200 +f 26200 25878 25880 +f 26031 26030 26219 +f 26219 26030 26202 +f 26219 26202 26220 +f 26220 26202 26203 +f 26220 26203 26221 +f 26221 26203 26204 +f 26221 26204 26222 +f 26222 26204 26205 +f 26222 26205 26223 +f 26223 26205 26206 +f 26223 26206 26224 +f 26224 26206 26207 +f 26224 26207 26225 +f 26225 26207 25967 +f 26225 25967 25965 +f 26009 26011 26226 +f 26226 26011 26013 +f 26226 26013 26227 +f 26227 26013 26015 +f 26227 26015 26228 +f 26228 26015 26017 +f 26228 26017 26229 +f 26229 26017 26019 +f 26229 26019 26230 +f 26230 26019 26021 +f 26230 26021 26231 +f 26231 26021 26023 +f 26231 26023 26232 +f 26232 26023 26025 +f 26232 26025 26233 +f 26233 26025 26027 +f 26233 26027 26234 +f 26234 26027 26029 +f 26234 26029 26235 +f 26235 26029 25961 +f 26235 25961 25959 +f 26007 26009 26236 +f 26236 26009 26226 +f 26236 26226 26237 +f 26237 26226 26227 +f 26237 26227 26238 +f 26238 26227 26228 +f 26238 26228 26239 +f 26239 26228 26229 +f 26239 26229 26240 +f 26240 26229 26230 +f 26240 26230 26241 +f 26241 26230 26231 +f 26241 26231 26242 +f 26242 26231 26232 +f 26242 26232 26243 +f 26243 26232 26233 +f 26243 26233 26244 +f 26244 26233 26234 +f 26244 26234 26245 +f 26245 26234 26235 +f 26245 26235 26246 +f 26246 26235 25959 +f 26246 25959 25957 +f 26005 26007 26247 +f 26247 26007 26236 +f 26247 26236 26248 +f 26248 26236 26237 +f 26248 26237 26249 +f 26249 26237 26238 +f 26249 26238 26250 +f 26250 26238 26239 +f 26250 26239 26251 +f 26251 26239 26240 +f 26251 26240 26252 +f 26252 26240 26241 +f 26252 26241 26253 +f 26253 26241 26242 +f 26253 26242 26254 +f 26254 26242 26243 +f 26254 26243 26255 +f 26255 26243 26244 +f 26255 26244 26256 +f 26256 26244 26245 +f 26256 26245 26257 +f 26257 26245 26246 +f 26257 26246 26258 +f 26258 26246 25957 +f 26258 25957 25955 +f 26003 26005 26259 +f 26259 26005 26247 +f 26259 26247 26260 +f 26260 26247 26248 +f 26260 26248 26261 +f 26261 26248 26249 +f 26261 26249 26262 +f 26262 26249 26250 +f 26262 26250 26263 +f 26263 26250 26251 +f 26263 26251 26264 +f 26264 26251 26252 +f 26264 26252 26265 +f 26265 26252 26253 +f 26265 26253 26266 +f 26266 26253 26254 +f 26266 26254 26267 +f 26267 26254 26255 +f 26267 26255 26268 +f 26268 26255 26256 +f 26268 26256 26269 +f 26269 26256 26257 +f 26269 26257 26270 +f 26270 26257 26258 +f 26270 26258 26271 +f 26271 26258 25955 +f 26271 25955 25953 +f 26001 26003 26272 +f 26272 26003 26259 +f 26272 26259 26273 +f 26273 26259 26260 +f 26273 26260 26274 +f 26274 26260 26261 +f 26274 26261 26275 +f 26275 26261 26262 +f 26275 26262 26276 +f 26276 26262 26263 +f 26276 26263 26277 +f 26277 26263 26264 +f 26277 26264 26278 +f 26278 26264 26265 +f 26278 26265 26279 +f 26279 26265 26266 +f 26279 26266 26280 +f 26280 26266 26267 +f 26280 26267 26281 +f 26281 26267 26268 +f 26281 26268 26282 +f 26282 26268 26269 +f 26282 26269 26283 +f 26283 26269 26270 +f 26283 26270 26284 +f 26284 26270 26271 +f 26284 26271 26285 +f 26285 26271 25953 +f 26285 25953 25951 +f 25999 26001 26286 +f 26286 26001 26272 +f 26286 26272 26287 +f 26287 26272 26273 +f 26287 26273 26288 +f 26288 26273 26274 +f 26288 26274 26289 +f 26289 26274 26275 +f 26289 26275 26290 +f 26290 26275 26276 +f 26290 26276 26291 +f 26291 26276 26277 +f 26291 26277 26292 +f 26292 26277 26278 +f 26292 26278 26293 +f 26293 26278 26279 +f 26293 26279 26294 +f 26294 26279 26280 +f 26294 26280 26295 +f 26295 26280 26281 +f 26295 26281 26296 +f 26296 26281 26282 +f 26296 26282 26297 +f 26297 26282 26283 +f 26297 26283 26298 +f 26298 26283 26284 +f 26298 26284 26299 +f 26299 26284 26285 +f 26299 26285 26300 +f 26300 26285 25951 +f 26300 25951 25949 +f 25997 25999 26301 +f 26301 25999 26286 +f 26301 26286 26302 +f 26302 26286 26287 +f 26302 26287 26303 +f 26303 26287 26288 +f 26303 26288 26304 +f 26304 26288 26289 +f 26304 26289 26305 +f 26305 26289 26290 +f 26305 26290 26306 +f 26306 26290 26291 +f 26306 26291 26307 +f 26307 26291 26292 +f 26307 26292 26308 +f 26308 26292 26293 +f 26308 26293 26309 +f 26309 26293 26294 +f 26309 26294 26310 +f 26310 26294 26295 +f 26310 26295 26311 +f 26311 26295 26296 +f 26311 26296 26312 +f 26312 26296 26297 +f 26312 26297 26313 +f 26313 26297 26298 +f 26313 26298 26314 +f 26314 26298 26299 +f 26314 26299 26315 +f 26315 26299 26300 +f 26315 26300 26316 +f 26316 26300 25949 +f 26316 25949 25947 +f 25995 25997 26317 +f 26317 25997 26301 +f 26317 26301 26318 +f 26318 26301 26302 +f 26318 26302 26319 +f 26319 26302 26303 +f 26319 26303 26320 +f 26320 26303 26304 +f 26320 26304 26321 +f 26321 26304 26305 +f 26321 26305 26322 +f 26322 26305 26306 +f 26322 26306 26323 +f 26323 26306 26307 +f 26323 26307 26324 +f 26324 26307 26308 +f 26324 26308 26325 +f 26325 26308 26309 +f 26325 26309 26326 +f 26326 26309 26310 +f 26326 26310 26327 +f 26327 26310 26311 +f 26327 26311 26328 +f 26328 26311 26312 +f 26328 26312 26329 +f 26329 26312 26313 +f 26329 26313 26330 +f 26330 26313 26314 +f 26330 26314 26331 +f 26331 26314 26315 +f 26331 26315 26332 +f 26332 26315 26316 +f 26332 26316 26333 +f 26333 26316 25947 +f 26333 25947 25945 +f 25993 25995 26334 +f 26334 25995 26317 +f 26334 26317 26335 +f 26335 26317 26318 +f 26335 26318 26336 +f 26336 26318 26319 +f 26336 26319 26337 +f 26337 26319 26320 +f 26337 26320 26338 +f 26338 26320 26321 +f 26338 26321 26339 +f 26339 26321 26322 +f 26339 26322 26340 +f 26340 26322 26323 +f 26340 26323 26341 +f 26341 26323 26324 +f 26341 26324 26342 +f 26342 26324 26325 +f 26342 26325 26343 +f 26343 26325 26326 +f 26343 26326 26344 +f 26344 26326 26327 +f 26344 26327 26345 +f 26345 26327 26328 +f 26345 26328 26346 +f 26346 26328 26329 +f 26346 26329 26347 +f 26347 26329 26330 +f 26347 26330 26348 +f 26348 26330 26331 +f 26348 26331 26349 +f 26349 26331 26332 +f 26349 26332 26350 +f 26350 26332 26333 +f 26350 26333 26351 +f 26351 26333 25945 +f 26351 25945 25943 +f 25971 25970 25991 +f 25991 25993 26352 +f 26352 25993 26334 +f 26352 26334 26353 +f 26353 26334 26335 +f 26353 26335 26354 +f 26354 26335 26336 +f 26354 26336 26355 +f 26355 26336 26337 +f 26355 26337 26356 +f 26356 26337 26338 +f 26356 26338 26357 +f 26357 26338 26339 +f 26357 26339 26358 +f 26358 26339 26340 +f 26358 26340 26359 +f 26359 26340 26341 +f 26359 26341 26360 +f 26360 26341 26342 +f 26360 26342 26361 +f 26361 26342 26343 +f 26361 26343 26362 +f 26362 26343 26344 +f 26362 26344 26363 +f 26363 26344 26345 +f 26363 26345 26364 +f 26364 26345 26346 +f 26364 26346 26365 +f 26365 26346 26347 +f 26365 26347 26366 +f 26366 26347 26348 +f 26366 26348 26367 +f 26367 26348 26349 +f 26367 26349 26368 +f 26368 26349 26350 +f 26368 26350 26369 +f 26369 26350 26351 +f 26369 26351 26370 +f 26370 26351 25943 +f 26370 25943 25941 +f 26133 25889 25891 +f 25891 25893 26371 +f 26371 25893 25895 +f 26371 25895 26372 +f 26372 25895 25897 +f 26372 25897 26373 +f 26373 25897 25899 +f 26373 25899 26374 +f 26374 25899 25901 +f 26374 25901 26375 +f 26375 25901 25903 +f 26375 25903 26376 +f 26376 25903 25905 +f 26376 25905 26377 +f 26377 25905 25907 +f 26377 25907 26378 +f 26378 25907 25909 +f 26378 25909 26379 +f 26379 25909 25911 +f 26379 25911 26380 +f 26380 25911 25913 +f 26380 25913 26381 +f 26381 25913 25915 +f 26381 25915 26382 +f 26382 25915 25917 +f 26382 25917 26383 +f 26383 25917 25919 +f 26383 25919 26384 +f 26384 25919 25921 +f 26384 25921 26385 +f 26385 25921 25923 +f 26385 25923 26386 +f 26386 25923 25925 +f 26386 25925 26387 +f 26387 25925 25927 +f 26387 25927 26388 +f 26388 25927 25929 +f 26388 25929 26389 +f 26389 25929 25931 +f 26389 25931 26390 +f 26390 25931 25933 +f 26390 25933 26091 +f 26091 25933 25935 +f 26390 26091 26093 +f 26390 26093 26095 +f 25941 25939 25990 +f 25940 25942 26089 +f 26089 25942 26391 +f 26089 26391 26087 +f 26087 26391 26392 +f 26087 26392 26085 +f 26085 26392 26080 +f 26085 26080 26079 +f 26038 26040 26393 +f 26393 26040 26042 +f 26393 26042 26394 +f 26394 26042 26044 +f 26394 26044 26395 +f 26395 26044 26046 +f 26395 26046 26396 +f 26396 26046 26048 +f 26396 26048 26397 +f 26397 26048 26050 +f 26397 26050 26398 +f 26398 26050 26052 +f 26398 26052 26399 +f 26399 26052 26054 +f 26399 26054 26400 +f 26400 26054 26056 +f 26400 26056 26401 +f 26401 26056 25958 +f 26401 25958 25960 +f 26033 26038 26402 +f 26402 26038 26393 +f 26402 26393 26403 +f 26403 26393 26394 +f 26403 26394 26404 +f 26404 26394 26395 +f 26404 26395 26405 +f 26405 26395 26396 +f 26405 26396 26406 +f 26406 26396 26397 +f 26406 26397 26407 +f 26407 26397 26398 +f 26407 26398 26408 +f 26408 26398 26399 +f 26408 26399 26409 +f 26409 26399 26400 +f 26409 26400 26410 +f 26410 26400 26401 +f 26410 26401 26411 +f 26411 26401 25960 +f 26411 25960 25962 +f 25968 26034 26036 +f 26035 26033 26412 +f 26412 26033 26402 +f 26412 26402 26413 +f 26413 26402 26403 +f 26413 26403 26414 +f 26414 26403 26404 +f 26414 26404 26415 +f 26415 26404 26405 +f 26415 26405 26416 +f 26416 26405 26406 +f 26416 26406 26417 +f 26417 26406 26407 +f 26417 26407 26418 +f 26418 26407 26408 +f 26418 26408 26419 +f 26419 26408 26409 +f 26419 26409 26420 +f 26420 26409 26410 +f 26420 26410 26421 +f 26421 26410 26411 +f 26421 26411 26422 +f 26422 26411 25962 +f 26422 25962 25964 +f 26016 26014 26219 +f 26219 26014 26031 +f 26016 26219 26220 +f 25972 25971 26352 +f 26352 25971 25991 +f 25972 26352 26353 +f 26131 26133 26371 +f 26371 26133 25891 +f 26131 26371 26372 +f 26018 26016 26220 +f 26018 26220 26221 +f 25973 25972 26353 +f 25973 26353 26354 +f 26129 26131 26372 +f 26129 26372 26373 +f 26020 26018 26221 +f 26020 26221 26222 +f 25974 25973 26354 +f 25974 26354 26355 +f 26127 26129 26373 +f 26127 26373 26374 +f 26022 26020 26222 +f 26022 26222 26223 +f 25975 25974 26355 +f 25975 26355 26356 +f 26125 26127 26374 +f 26125 26374 26375 +f 26024 26022 26223 +f 26024 26223 26224 +f 25976 25975 26356 +f 25976 26356 26357 +f 26123 26125 26375 +f 26123 26375 26376 +f 26026 26024 26224 +f 26026 26224 26225 +f 25977 25976 26357 +f 25977 26357 26358 +f 26121 26123 26376 +f 26121 26376 26377 +f 26028 26026 26225 +f 26028 26225 25965 +f 25978 25977 26358 +f 25978 26358 26359 +f 26119 26121 26377 +f 26119 26377 26378 +f 25964 25966 26208 +f 25963 26028 25965 +f 25979 25978 26359 +f 25979 26359 26360 +f 26117 26119 26378 +f 26117 26378 26379 +f 26422 25964 26208 +f 26422 26208 26209 +f 25980 25979 26360 +f 25980 26360 26361 +f 26115 26117 26379 +f 26115 26379 26380 +f 26421 26422 26209 +f 26421 26209 26210 +f 25981 25980 26361 +f 25981 26361 26362 +f 26113 26115 26380 +f 26113 26380 26381 +f 26420 26421 26210 +f 26420 26210 26211 +f 25982 25981 26362 +f 25982 26362 26363 +f 26111 26113 26381 +f 26111 26381 26382 +f 26419 26420 26211 +f 26419 26211 26212 +f 25983 25982 26363 +f 25983 26363 26364 +f 26109 26111 26382 +f 26109 26382 26383 +f 26418 26419 26212 +f 26418 26212 26213 +f 25984 25983 26364 +f 25984 26364 26365 +f 26107 26109 26383 +f 26107 26383 26384 +f 26417 26418 26213 +f 26417 26213 26214 +f 25985 25984 26365 +f 25985 26365 26366 +f 26105 26107 26384 +f 26105 26384 26385 +f 26416 26417 26214 +f 26416 26214 26215 +f 25986 25985 26366 +f 25986 26366 26367 +f 26103 26105 26385 +f 26103 26385 26386 +f 26415 26416 26215 +f 26415 26215 26216 +f 25987 25986 26367 +f 25987 26367 26368 +f 26101 26103 26386 +f 26101 26386 26387 +f 26414 26415 26216 +f 26414 26216 26217 +f 25946 25948 26082 +f 25988 25987 26368 +f 25988 26368 26369 +f 26099 26101 26387 +f 26099 26387 26388 +f 26413 26414 26217 +f 26413 26217 26218 +f 25946 26082 26423 +f 26423 26082 26081 +f 26423 26081 26392 +f 26392 26081 26080 +f 25989 25988 26369 +f 25989 26369 26370 +f 26097 26099 26388 +f 26097 26388 26389 +f 26412 26413 26218 +f 26412 26218 26037 +f 25946 26423 25944 +f 25944 26423 26391 +f 25944 26391 25942 +f 26391 26423 26392 +f 25990 25989 26370 +f 25990 26370 25941 +f 26095 26097 26389 +f 26095 26389 26390 +f 26035 26412 26037 +f 26424 26425 26426 +f 26426 26425 26427 +f 26427 26425 26428 +f 26427 26428 26429 +f 26427 26429 26430 +f 26430 26429 26431 +f 26430 26431 26432 +f 26432 26431 26433 +f 26432 26433 26434 +f 26434 26433 26435 +f 26435 26433 26436 +f 26435 26436 26437 +f 26435 26437 26438 +f 26438 26437 26439 +f 26438 26439 26440 +f 26440 26439 26441 +f 26440 26441 26442 +f 26443 26444 26439 +f 26439 26444 26445 +f 26439 26445 26446 +f 26447 26448 26443 +f 26443 26448 26449 +f 26443 26449 26450 +f 26451 26452 26447 +f 26447 26452 26453 +f 26447 26453 26448 +f 26451 26454 26452 +f 26452 26454 26455 +f 26455 26454 26456 +f 26456 26454 26457 +f 26456 26457 26458 +f 26458 26459 26456 +f 26456 26459 26460 +f 26460 26459 26461 +f 26450 26444 26443 +f 26446 26441 26439 +f 26442 26462 26440 +f 26440 26462 26463 +f 26440 26463 26464 +f 26464 26463 26465 +f 26464 26465 26466 +f 26466 26467 26464 +f 26464 26467 26468 +f 26468 26467 26469 +f 26468 26469 26470 +f 26471 26472 26470 +f 26470 26472 26473 +f 26470 26473 26468 +f 26471 26474 26472 +f 26472 26474 26475 +f 26475 26474 26476 +f 26476 26474 26477 +f 26477 26474 26478 +f 26477 26478 26479 +f 25683 26004 25682 +f 25682 26004 26002 +f 25682 26002 26480 +f 26480 26002 26481 +f 26480 26481 26482 +f 26482 26481 26483 +f 26482 26483 26484 +f 26484 26483 26485 +f 26484 26485 26486 +f 26486 26485 26487 +f 26486 26487 26488 +f 26488 26487 26489 +f 26488 26489 26490 +f 26490 26489 26491 +f 26490 26491 26492 +f 26492 26491 26493 +f 26492 26493 26494 +f 26494 26493 26495 +f 26494 26495 26496 +f 26496 26495 26497 +f 26496 26497 26498 +f 26498 26497 26499 +f 26498 26499 26500 +f 26500 26499 26501 +f 26500 26501 26502 +f 26502 26501 26503 +f 26502 26503 26504 +f 26504 26503 26505 +f 26504 26505 26447 +f 26447 26505 26451 +f 26451 26505 26506 +f 26451 26506 26507 +f 26507 26506 26508 +f 26507 26508 26509 +f 26509 26508 26510 +f 26509 26510 26511 +f 26511 26510 26512 +f 26511 26512 26513 +f 26513 26512 26514 +f 26513 26514 26515 +f 26515 26514 26516 +f 26515 26516 26517 +f 26517 26516 26518 +f 26517 26518 26519 +f 26519 26518 26520 +f 26519 26520 26521 +f 26521 26520 26522 +f 26521 26522 26523 +f 26523 26522 26524 +f 26523 26524 26525 +f 26525 26524 26526 +f 26525 26526 26527 +f 26527 26526 26528 +f 26527 26528 26529 +f 26529 26528 26530 +f 26529 26530 26531 +f 26531 26530 25885 +f 26531 25885 25883 +f 25683 25685 26004 +f 26004 25685 26006 +f 26006 25685 25687 +f 26006 25687 26008 +f 26008 25687 25636 +f 26008 25636 26010 +f 26010 25636 25635 +f 26010 25635 25968 +f 26002 26000 26481 +f 26481 26000 26532 +f 26481 26532 26483 +f 26483 26532 26533 +f 26483 26533 26485 +f 26485 26533 26534 +f 26485 26534 26487 +f 26487 26534 26535 +f 26487 26535 26489 +f 26489 26535 26536 +f 26489 26536 26491 +f 26491 26536 26537 +f 26491 26537 26493 +f 26493 26537 26538 +f 26493 26538 26495 +f 26495 26538 26539 +f 26495 26539 26497 +f 26497 26539 26540 +f 26497 26540 26499 +f 26499 26540 26541 +f 26499 26541 26501 +f 26501 26541 26542 +f 26501 26542 26503 +f 26503 26542 26543 +f 26503 26543 26505 +f 26505 26543 26506 +f 26532 26000 26544 +f 26544 26000 25998 +f 26544 25998 26545 +f 26545 25998 26546 +f 26545 26546 26547 +f 26547 26546 26548 +f 26547 26548 26549 +f 26549 26548 26550 +f 26549 26550 26551 +f 26551 26550 26552 +f 26551 26552 26553 +f 26553 26552 26554 +f 26553 26554 26555 +f 26555 26554 26556 +f 26555 26556 26557 +f 26557 26556 26558 +f 26557 26558 26559 +f 26559 26558 26560 +f 26559 26560 26561 +f 26561 26560 26562 +f 26561 26562 26563 +f 26563 26562 26512 +f 26563 26512 26510 +f 25998 25996 26546 +f 26546 25996 25994 +f 26546 25994 26564 +f 26564 25994 25992 +f 26564 25992 26565 +f 26565 25992 26566 +f 26565 26566 26567 +f 26567 26566 26568 +f 26567 26568 26569 +f 26569 26568 26570 +f 26569 26570 26571 +f 26571 26570 26572 +f 26571 26572 26573 +f 26573 26572 26574 +f 26573 26574 26575 +f 26575 26574 26576 +f 26575 26576 26577 +f 26577 26576 26518 +f 26577 26518 26516 +f 25992 25969 26566 +f 26566 25969 26578 +f 26566 26578 26568 +f 26568 26578 26579 +f 26568 26579 26570 +f 26570 26579 26580 +f 26570 26580 26572 +f 26572 26580 26581 +f 26572 26581 26574 +f 26574 26581 26582 +f 26574 26582 26576 +f 26576 26582 26520 +f 26576 26520 26518 +f 25892 26583 25969 +f 25969 26583 26584 +f 25969 26584 26578 +f 26578 26584 26579 +f 26583 25892 26585 +f 26585 25892 25890 +f 26585 25890 26586 +f 26586 25890 25888 +f 26586 25888 26530 +f 26530 25888 25887 +f 26530 25887 25885 +f 26531 25883 26587 +f 26587 25883 25881 +f 26587 25881 26588 +f 26588 25881 25879 +f 26588 25879 26589 +f 26589 25879 26590 +f 26589 26590 26591 +f 26591 26590 26592 +f 26591 26592 26593 +f 26593 26592 26594 +f 26593 26594 26595 +f 26595 26594 26596 +f 26595 26596 26597 +f 26597 26596 26598 +f 26597 26598 26599 +f 26599 26598 26600 +f 26599 26600 26601 +f 26601 26600 26602 +f 26601 26602 26603 +f 26603 26602 26604 +f 26603 26604 26605 +f 26605 26604 26606 +f 26605 26606 26607 +f 26607 26606 26608 +f 26607 26608 26609 +f 26609 26608 26610 +f 26609 26610 26611 +f 26611 26610 26612 +f 26611 26612 26613 +f 26613 26612 26614 +f 26613 26614 26441 +f 26441 26614 26442 +f 26442 26614 26615 +f 26442 26615 26616 +f 26616 26615 26617 +f 26616 26617 26618 +f 26618 26617 26619 +f 26618 26619 26620 +f 26620 26619 26621 +f 26620 26621 26622 +f 26622 26621 26623 +f 26622 26623 26624 +f 26624 26623 26625 +f 26624 26625 26626 +f 26626 26625 26627 +f 26626 26627 26628 +f 26628 26627 26629 +f 26628 26629 26630 +f 26630 26629 26631 +f 26630 26631 26632 +f 26632 26631 26633 +f 26632 26633 26634 +f 26634 26633 26635 +f 26634 26635 26636 +f 26636 26635 26637 +f 26636 26637 26638 +f 26638 26637 26639 +f 26638 26639 26640 +f 26640 26639 26088 +f 26640 26088 26086 +f 25879 25878 26590 +f 26590 25878 26641 +f 26590 26641 26592 +f 26592 26641 26642 +f 26592 26642 26594 +f 26594 26642 26643 +f 26594 26643 26596 +f 26596 26643 26644 +f 26596 26644 26598 +f 26598 26644 26645 +f 26598 26645 26600 +f 26600 26645 26646 +f 26600 26646 26602 +f 26602 26646 26647 +f 26602 26647 26604 +f 26604 26647 26648 +f 26604 26648 26606 +f 26606 26648 26649 +f 26606 26649 26608 +f 26608 26649 26650 +f 26608 26650 26610 +f 26610 26650 26651 +f 26610 26651 26612 +f 26612 26651 26652 +f 26612 26652 26614 +f 26614 26652 26615 +f 25878 26201 26641 +f 26641 26201 26653 +f 26641 26653 26642 +f 26642 26653 26654 +f 26642 26654 26643 +f 26643 26654 26655 +f 26643 26655 26644 +f 26644 26655 26656 +f 26644 26656 26645 +f 26645 26656 26657 +f 26645 26657 26646 +f 26646 26657 26658 +f 26646 26658 26647 +f 26647 26658 26659 +f 26647 26659 26648 +f 26648 26659 26660 +f 26648 26660 26649 +f 26649 26660 26661 +f 26649 26661 26650 +f 26650 26661 26662 +f 26650 26662 26651 +f 26651 26662 26663 +f 26651 26663 26652 +f 26652 26663 26617 +f 26652 26617 26615 +f 26201 26179 26653 +f 26653 26179 26664 +f 26653 26664 26654 +f 26654 26664 26665 +f 26654 26665 26655 +f 26655 26665 26666 +f 26655 26666 26656 +f 26656 26666 26667 +f 26656 26667 26657 +f 26657 26667 26668 +f 26657 26668 26658 +f 26658 26668 26669 +f 26658 26669 26659 +f 26659 26669 26670 +f 26659 26670 26660 +f 26660 26670 26671 +f 26660 26671 26661 +f 26661 26671 26672 +f 26661 26672 26662 +f 26662 26672 26673 +f 26662 26673 26663 +f 26663 26673 26619 +f 26663 26619 26617 +f 26179 26157 26664 +f 26664 26157 26674 +f 26664 26674 26665 +f 26665 26674 26675 +f 26665 26675 26666 +f 26666 26675 26676 +f 26666 26676 26667 +f 26667 26676 26677 +f 26667 26677 26668 +f 26668 26677 26678 +f 26668 26678 26669 +f 26669 26678 26679 +f 26669 26679 26670 +f 26670 26679 26680 +f 26670 26680 26671 +f 26671 26680 26681 +f 26671 26681 26672 +f 26672 26681 26682 +f 26672 26682 26673 +f 26673 26682 26621 +f 26673 26621 26619 +f 26157 26135 26674 +f 26674 26135 26683 +f 26674 26683 26675 +f 26675 26683 26684 +f 26675 26684 26676 +f 26676 26684 26685 +f 26676 26685 26677 +f 26677 26685 26686 +f 26677 26686 26678 +f 26678 26686 26687 +f 26678 26687 26679 +f 26679 26687 26688 +f 26679 26688 26680 +f 26680 26688 26689 +f 26680 26689 26681 +f 26681 26689 26690 +f 26681 26690 26682 +f 26682 26690 26623 +f 26682 26623 26621 +f 26135 26092 26683 +f 26683 26092 26691 +f 26683 26691 26684 +f 26684 26691 26692 +f 26684 26692 26685 +f 26685 26692 26693 +f 26685 26693 26686 +f 26686 26693 26694 +f 26686 26694 26687 +f 26687 26694 26695 +f 26687 26695 26688 +f 26688 26695 26696 +f 26688 26696 26689 +f 26689 26696 26697 +f 26689 26697 26690 +f 26690 26697 26625 +f 26690 26625 26623 +f 26092 25937 26691 +f 26691 25937 26698 +f 26691 26698 26692 +f 26692 26698 26699 +f 26692 26699 26693 +f 26693 26699 26700 +f 26693 26700 26694 +f 26694 26700 26701 +f 26694 26701 26695 +f 26695 26701 26702 +f 26695 26702 26696 +f 26696 26702 26703 +f 26696 26703 26697 +f 26697 26703 26627 +f 26697 26627 26625 +f 26698 25937 26704 +f 26704 25937 25938 +f 26704 25938 26705 +f 26705 25938 26706 +f 26705 26706 26707 +f 26707 26706 26708 +f 26707 26708 26709 +f 26709 26708 26710 +f 26709 26710 26711 +f 26711 26710 26633 +f 26711 26633 26631 +f 25938 26090 26706 +f 26706 26090 26712 +f 26706 26712 26708 +f 26708 26712 26713 +f 26708 26713 26710 +f 26710 26713 26635 +f 26710 26635 26633 +f 26712 26090 26714 +f 26714 26090 26088 +f 26714 26088 26639 +f 26086 26084 26640 +f 26640 26084 26715 +f 26640 26715 26716 +f 26716 26715 26717 +f 26716 26717 26718 +f 26718 26717 26719 +f 26718 26719 26720 +f 26720 26719 26721 +f 26720 26721 26722 +f 26722 26721 26723 +f 26722 26723 26724 +f 26724 26723 26725 +f 26724 26725 26726 +f 26726 26725 26727 +f 26726 26727 26728 +f 26728 26727 26729 +f 26728 26729 26730 +f 26730 26729 26731 +f 26730 26731 26732 +f 26732 26731 26733 +f 26732 26733 26734 +f 26734 26733 26735 +f 26734 26735 26736 +f 26736 26735 26737 +f 26736 26737 26738 +f 26738 26737 26739 +f 26738 26739 26475 +f 26475 26739 26740 +f 26475 26740 26472 +f 26472 26740 26741 +f 26472 26741 26473 +f 26473 26741 26742 +f 26473 26742 26468 +f 26468 26742 26743 +f 26468 26743 26464 +f 26464 26743 26744 +f 26464 26744 26440 +f 26440 26744 25761 +f 26440 25761 26438 +f 26438 25761 25760 +f 26438 25760 26435 +f 26435 25760 25759 +f 26435 25759 26434 +f 26434 25759 26432 +f 26432 25759 25758 +f 26432 25758 26430 +f 26430 25758 26427 +f 26427 25758 25653 +f 26427 25653 26426 +f 26426 25653 26424 +f 26715 26084 26745 +f 26745 26084 26083 +f 26745 26083 26746 +f 26746 26083 26078 +f 26746 26078 26747 +f 26747 26078 26748 +f 26747 26748 26749 +f 26749 26748 26750 +f 26749 26750 26751 +f 26751 26750 26752 +f 26751 26752 26753 +f 26753 26752 26754 +f 26753 26754 26755 +f 26755 26754 26756 +f 26755 26756 26757 +f 26757 26756 26758 +f 26757 26758 26759 +f 26759 26758 26760 +f 26759 26760 26761 +f 26761 26760 26762 +f 26761 26762 26763 +f 26763 26762 26764 +f 26763 26764 26765 +f 26765 26764 26766 +f 26765 26766 26767 +f 26767 26766 26768 +f 26767 26768 26769 +f 26769 26768 26770 +f 26769 26770 26742 +f 26742 26770 26743 +f 26078 26072 26748 +f 26748 26072 26771 +f 26748 26771 26750 +f 26750 26771 26772 +f 26750 26772 26752 +f 26752 26772 26773 +f 26752 26773 26754 +f 26754 26773 26774 +f 26754 26774 26756 +f 26756 26774 26775 +f 26756 26775 26758 +f 26758 26775 26776 +f 26758 26776 26760 +f 26760 26776 26777 +f 26760 26777 26762 +f 26762 26777 26778 +f 26762 26778 26764 +f 26764 26778 26779 +f 26764 26779 26766 +f 26766 26779 26780 +f 26766 26780 26768 +f 26768 26780 26781 +f 26768 26781 26770 +f 26770 26781 26782 +f 26770 26782 26743 +f 26743 26782 26744 +f 26771 26072 25711 +f 25711 26072 26065 +f 25711 26065 25712 +f 25712 26065 26057 +f 25712 26057 26039 +f 25712 26039 25742 +f 25742 26039 26032 +f 25742 26032 25635 +f 25635 26032 26034 +f 25635 26034 25968 +f 25711 25713 26771 +f 26771 25713 26772 +f 25713 25715 26772 +f 26772 25715 26773 +f 25715 25716 26773 +f 26773 25716 26774 +f 26774 25716 26775 +f 26775 25716 25717 +f 26775 25717 26776 +f 26776 25717 26777 +f 25717 25719 26777 +f 26777 25719 25720 +f 26777 25720 26778 +f 26778 25720 25722 +f 26778 25722 25723 +f 25725 26780 25723 +f 25723 26780 26779 +f 25723 26779 26778 +f 25727 26782 25725 +f 25725 26782 26781 +f 25725 26781 26780 +f 26782 25727 26744 +f 26744 25727 25761 +f 26475 26476 26738 +f 26738 26476 26477 +f 26738 26477 26783 +f 26783 26477 26479 +f 26783 26479 26784 +f 26784 26479 26478 +f 26784 26478 26785 +f 26785 26478 26474 +f 26785 26474 26786 +f 26786 26474 26471 +f 26786 26471 26787 +f 26787 26471 26788 +f 26787 26788 26789 +f 26789 26788 26790 +f 26789 26790 26791 +f 26791 26790 26792 +f 26791 26792 26793 +f 26793 26792 26794 +f 26793 26794 26795 +f 26795 26794 26796 +f 26795 26796 26797 +f 26797 26796 26798 +f 26797 26798 26799 +f 26799 26798 26628 +f 26799 26628 26630 +f 26471 26470 26788 +f 26788 26470 26800 +f 26788 26800 26790 +f 26790 26800 26801 +f 26790 26801 26792 +f 26792 26801 26802 +f 26792 26802 26794 +f 26794 26802 26803 +f 26794 26803 26796 +f 26796 26803 26804 +f 26796 26804 26798 +f 26798 26804 26626 +f 26798 26626 26628 +f 26470 26469 26800 +f 26800 26469 26805 +f 26800 26805 26801 +f 26801 26805 26806 +f 26801 26806 26802 +f 26802 26806 26807 +f 26802 26807 26803 +f 26803 26807 26808 +f 26803 26808 26804 +f 26804 26808 26624 +f 26804 26624 26626 +f 26469 26467 26805 +f 26805 26467 26809 +f 26805 26809 26806 +f 26806 26809 26810 +f 26806 26810 26807 +f 26807 26810 26811 +f 26807 26811 26808 +f 26808 26811 26622 +f 26808 26622 26624 +f 26467 26466 26809 +f 26809 26466 26812 +f 26809 26812 26810 +f 26810 26812 26813 +f 26810 26813 26811 +f 26811 26813 26620 +f 26811 26620 26622 +f 26466 26465 26812 +f 26812 26465 26814 +f 26812 26814 26813 +f 26813 26814 26618 +f 26813 26618 26620 +f 26465 26463 26814 +f 26814 26463 26616 +f 26814 26616 26618 +f 26463 26462 26616 +f 26616 26462 26442 +f 26441 26446 26613 +f 26613 26446 26815 +f 26613 26815 26611 +f 26611 26815 26816 +f 26611 26816 26609 +f 26609 26816 26817 +f 26609 26817 26607 +f 26607 26817 26818 +f 26607 26818 26605 +f 26605 26818 26819 +f 26605 26819 26603 +f 26603 26819 26820 +f 26603 26820 26601 +f 26601 26820 26821 +f 26601 26821 26599 +f 26599 26821 26822 +f 26599 26822 26597 +f 26597 26822 26823 +f 26597 26823 26595 +f 26595 26823 26824 +f 26595 26824 26593 +f 26593 26824 26825 +f 26593 26825 26591 +f 26591 26825 26826 +f 26591 26826 26589 +f 26589 26826 26588 +f 26446 26445 26815 +f 26815 26445 26827 +f 26815 26827 26816 +f 26816 26827 26828 +f 26816 26828 26817 +f 26817 26828 26829 +f 26817 26829 26818 +f 26818 26829 26830 +f 26818 26830 26819 +f 26819 26830 26831 +f 26819 26831 26820 +f 26820 26831 26832 +f 26820 26832 26821 +f 26821 26832 26833 +f 26821 26833 26822 +f 26822 26833 26834 +f 26822 26834 26823 +f 26823 26834 26835 +f 26823 26835 26824 +f 26824 26835 26836 +f 26824 26836 26825 +f 26825 26836 26837 +f 26825 26837 26826 +f 26826 26837 26838 +f 26826 26838 26588 +f 26588 26838 26587 +f 26445 26444 26827 +f 26827 26444 26839 +f 26827 26839 26828 +f 26828 26839 26840 +f 26828 26840 26829 +f 26829 26840 26841 +f 26829 26841 26830 +f 26830 26841 26842 +f 26830 26842 26831 +f 26831 26842 26843 +f 26831 26843 26832 +f 26832 26843 26844 +f 26832 26844 26833 +f 26833 26844 26845 +f 26833 26845 26834 +f 26834 26845 26846 +f 26834 26846 26835 +f 26835 26846 26847 +f 26835 26847 26836 +f 26836 26847 26848 +f 26836 26848 26837 +f 26837 26848 26849 +f 26837 26849 26838 +f 26838 26849 26850 +f 26838 26850 26587 +f 26587 26850 26531 +f 26444 26450 26839 +f 26839 26450 26851 +f 26839 26851 26840 +f 26840 26851 26852 +f 26840 26852 26841 +f 26841 26852 26853 +f 26841 26853 26842 +f 26842 26853 26854 +f 26842 26854 26843 +f 26843 26854 26855 +f 26843 26855 26844 +f 26844 26855 26856 +f 26844 26856 26845 +f 26845 26856 26857 +f 26845 26857 26846 +f 26846 26857 26858 +f 26846 26858 26847 +f 26847 26858 26859 +f 26847 26859 26848 +f 26848 26859 26860 +f 26848 26860 26849 +f 26849 26860 26861 +f 26849 26861 26850 +f 26850 26861 26529 +f 26850 26529 26531 +f 26450 26449 26851 +f 26851 26449 26448 +f 26851 26448 26862 +f 26862 26448 26453 +f 26862 26453 26863 +f 26863 26453 26452 +f 26863 26452 26864 +f 26864 26452 26455 +f 26864 26455 26865 +f 26865 26455 26866 +f 26865 26866 26867 +f 26867 26866 26868 +f 26867 26868 26869 +f 26869 26868 26870 +f 26869 26870 26871 +f 26871 26870 26872 +f 26871 26872 26873 +f 26873 26872 26874 +f 26873 26874 26875 +f 26875 26874 26876 +f 26875 26876 26877 +f 26877 26876 26519 +f 26877 26519 26521 +f 26455 26456 26866 +f 26866 26456 26878 +f 26866 26878 26868 +f 26868 26878 26879 +f 26868 26879 26870 +f 26870 26879 26880 +f 26870 26880 26872 +f 26872 26880 26881 +f 26872 26881 26874 +f 26874 26881 26882 +f 26874 26882 26876 +f 26876 26882 26517 +f 26876 26517 26519 +f 26456 26460 26878 +f 26878 26460 26883 +f 26878 26883 26879 +f 26879 26883 26884 +f 26879 26884 26880 +f 26880 26884 26885 +f 26880 26885 26881 +f 26881 26885 26886 +f 26881 26886 26882 +f 26882 26886 26515 +f 26882 26515 26517 +f 26460 26461 26883 +f 26883 26461 26887 +f 26883 26887 26884 +f 26884 26887 26888 +f 26884 26888 26885 +f 26885 26888 26889 +f 26885 26889 26886 +f 26886 26889 26513 +f 26886 26513 26515 +f 26461 26459 26887 +f 26887 26459 26890 +f 26887 26890 26888 +f 26888 26890 26891 +f 26888 26891 26889 +f 26889 26891 26511 +f 26889 26511 26513 +f 26459 26458 26890 +f 26890 26458 26457 +f 26890 26457 26892 +f 26892 26457 26454 +f 26892 26454 26507 +f 26507 26454 26451 +f 26447 26443 26504 +f 26504 26443 26893 +f 26504 26893 26502 +f 26502 26893 26894 +f 26502 26894 26500 +f 26500 26894 26895 +f 26500 26895 26498 +f 26498 26895 26896 +f 26498 26896 26496 +f 26496 26896 26897 +f 26496 26897 26494 +f 26494 26897 26898 +f 26494 26898 26492 +f 26492 26898 26899 +f 26492 26899 26490 +f 26490 26899 26900 +f 26490 26900 26488 +f 26488 26900 26901 +f 26488 26901 26486 +f 26486 26901 26902 +f 26486 26902 26484 +f 26484 26902 26903 +f 26484 26903 25680 +f 25680 26903 25678 +f 25678 26903 26902 +f 25678 26902 26901 +f 26443 26439 26893 +f 26893 26439 25664 +f 26893 25664 25665 +f 26439 26437 25664 +f 25664 26437 25662 +f 25662 26437 26436 +f 25662 26436 26433 +f 25662 26433 25660 +f 25660 26433 26431 +f 25660 26431 25659 +f 25659 26431 26429 +f 25659 26429 25657 +f 25657 26429 26428 +f 25657 26428 25655 +f 25655 26428 26425 +f 25655 26425 25653 +f 25653 26425 26424 +f 25665 25666 26893 +f 26893 25666 26894 +f 25666 25668 26894 +f 26894 25668 26895 +f 25668 25670 26895 +f 26895 25670 26896 +f 25672 26898 25670 +f 25670 26898 26897 +f 25670 26897 26896 +f 25672 25673 26898 +f 26898 25673 25675 +f 26898 25675 26899 +f 26899 25675 25676 +f 26899 25676 26900 +f 26900 25676 25678 +f 26900 25678 26901 +f 26484 25680 26482 +f 26482 25680 25681 +f 26482 25681 26480 +f 26480 25681 25682 +f 26746 26747 26904 +f 26904 26747 26749 +f 26904 26749 26905 +f 26905 26749 26751 +f 26905 26751 26906 +f 26906 26751 26753 +f 26906 26753 26907 +f 26907 26753 26755 +f 26907 26755 26908 +f 26908 26755 26757 +f 26908 26757 26909 +f 26909 26757 26759 +f 26909 26759 26910 +f 26910 26759 26761 +f 26910 26761 26911 +f 26911 26761 26763 +f 26911 26763 26912 +f 26912 26763 26765 +f 26912 26765 26913 +f 26913 26765 26767 +f 26913 26767 26914 +f 26914 26767 26769 +f 26914 26769 26741 +f 26741 26769 26742 +f 26717 26715 26745 +f 26745 26746 26915 +f 26915 26746 26904 +f 26915 26904 26916 +f 26916 26904 26905 +f 26916 26905 26917 +f 26917 26905 26906 +f 26917 26906 26918 +f 26918 26906 26907 +f 26918 26907 26919 +f 26919 26907 26908 +f 26919 26908 26920 +f 26920 26908 26909 +f 26920 26909 26921 +f 26921 26909 26910 +f 26921 26910 26922 +f 26922 26910 26911 +f 26922 26911 26923 +f 26923 26911 26912 +f 26923 26912 26924 +f 26924 26912 26913 +f 26924 26913 26925 +f 26925 26913 26914 +f 26925 26914 26740 +f 26740 26914 26741 +f 26638 26640 26716 +f 26713 26712 26714 +f 26713 26714 26637 +f 26637 26714 26639 +f 26699 26698 26704 +f 26704 26705 26926 +f 26926 26705 26707 +f 26926 26707 26927 +f 26927 26707 26709 +f 26927 26709 26928 +f 26928 26709 26711 +f 26928 26711 26929 +f 26929 26711 26631 +f 26929 26631 26629 +f 26530 26528 26586 +f 26586 26528 26930 +f 26586 26930 26585 +f 26585 26930 26931 +f 26585 26931 26583 +f 26583 26931 26932 +f 26583 26932 26584 +f 26584 26932 26579 +f 26548 26546 26564 +f 26564 26565 26933 +f 26933 26565 26567 +f 26933 26567 26934 +f 26934 26567 26569 +f 26934 26569 26935 +f 26935 26569 26571 +f 26935 26571 26936 +f 26936 26571 26573 +f 26936 26573 26937 +f 26937 26573 26575 +f 26937 26575 26938 +f 26938 26575 26577 +f 26938 26577 26939 +f 26939 26577 26516 +f 26939 26516 26514 +f 26533 26532 26544 +f 26544 26545 26940 +f 26940 26545 26547 +f 26940 26547 26941 +f 26941 26547 26549 +f 26941 26549 26942 +f 26942 26549 26551 +f 26942 26551 26943 +f 26943 26551 26553 +f 26943 26553 26944 +f 26944 26553 26555 +f 26944 26555 26945 +f 26945 26555 26557 +f 26945 26557 26946 +f 26946 26557 26559 +f 26946 26559 26947 +f 26947 26559 26561 +f 26947 26561 26948 +f 26948 26561 26563 +f 26948 26563 26949 +f 26949 26563 26510 +f 26949 26510 26508 +f 26719 26717 26915 +f 26915 26717 26745 +f 26719 26915 26916 +f 26638 26716 26950 +f 26950 26716 26718 +f 26950 26718 26951 +f 26951 26718 26720 +f 26951 26720 26952 +f 26952 26720 26722 +f 26952 26722 26953 +f 26953 26722 26724 +f 26953 26724 26954 +f 26954 26724 26726 +f 26954 26726 26955 +f 26955 26726 26728 +f 26955 26728 26956 +f 26956 26728 26730 +f 26956 26730 26957 +f 26957 26730 26732 +f 26957 26732 26958 +f 26958 26732 26734 +f 26958 26734 26959 +f 26959 26734 26736 +f 26959 26736 26783 +f 26783 26736 26738 +f 26635 26713 26637 +f 26700 26699 26926 +f 26926 26699 26704 +f 26700 26926 26927 +f 26527 26529 26861 +f 26528 26526 26930 +f 26930 26526 26960 +f 26930 26960 26931 +f 26931 26960 26961 +f 26931 26961 26932 +f 26932 26961 26580 +f 26932 26580 26579 +f 26550 26548 26933 +f 26933 26548 26564 +f 26550 26933 26934 +f 26534 26533 26940 +f 26940 26533 26544 +f 26534 26940 26941 +f 26721 26719 26916 +f 26721 26916 26917 +f 26638 26950 26636 +f 26636 26950 26962 +f 26636 26962 26634 +f 26634 26962 26963 +f 26634 26963 26632 +f 26632 26963 26964 +f 26632 26964 26630 +f 26630 26964 26799 +f 26962 26950 26951 +f 26701 26700 26927 +f 26701 26927 26928 +f 26527 26861 26965 +f 26965 26861 26860 +f 26965 26860 26966 +f 26966 26860 26859 +f 26966 26859 26967 +f 26967 26859 26858 +f 26967 26858 26968 +f 26968 26858 26857 +f 26968 26857 26969 +f 26969 26857 26856 +f 26969 26856 26970 +f 26970 26856 26855 +f 26970 26855 26971 +f 26971 26855 26854 +f 26971 26854 26972 +f 26972 26854 26853 +f 26972 26853 26973 +f 26973 26853 26852 +f 26973 26852 26862 +f 26862 26852 26851 +f 26526 26524 26960 +f 26960 26524 26974 +f 26960 26974 26961 +f 26961 26974 26581 +f 26961 26581 26580 +f 26552 26550 26934 +f 26552 26934 26935 +f 26535 26534 26941 +f 26535 26941 26942 +f 26721 26917 26723 +f 26723 26917 26918 +f 26723 26918 26725 +f 26725 26918 26919 +f 26725 26919 26727 +f 26727 26919 26920 +f 26727 26920 26729 +f 26729 26920 26921 +f 26729 26921 26731 +f 26731 26921 26922 +f 26731 26922 26733 +f 26733 26922 26923 +f 26733 26923 26735 +f 26735 26923 26924 +f 26735 26924 26737 +f 26737 26924 26925 +f 26737 26925 26739 +f 26739 26925 26740 +f 26962 26951 26975 +f 26975 26951 26952 +f 26975 26952 26976 +f 26976 26952 26953 +f 26976 26953 26977 +f 26977 26953 26954 +f 26977 26954 26978 +f 26978 26954 26955 +f 26978 26955 26979 +f 26979 26955 26956 +f 26979 26956 26980 +f 26980 26956 26957 +f 26980 26957 26981 +f 26981 26957 26958 +f 26981 26958 26982 +f 26982 26958 26959 +f 26982 26959 26784 +f 26784 26959 26783 +f 26962 26975 26963 +f 26963 26975 26983 +f 26963 26983 26964 +f 26964 26983 26984 +f 26964 26984 26799 +f 26799 26984 26797 +f 26983 26975 26976 +f 26701 26928 26702 +f 26702 26928 26929 +f 26702 26929 26703 +f 26703 26929 26629 +f 26703 26629 26627 +f 26966 26985 26965 +f 26965 26985 26525 +f 26965 26525 26527 +f 26525 26985 26523 +f 26523 26985 26986 +f 26523 26986 26521 +f 26521 26986 26877 +f 26985 26966 26987 +f 26987 26966 26967 +f 26987 26967 26988 +f 26988 26967 26968 +f 26988 26968 26989 +f 26989 26968 26969 +f 26989 26969 26990 +f 26990 26969 26970 +f 26990 26970 26991 +f 26991 26970 26971 +f 26991 26971 26992 +f 26992 26971 26972 +f 26992 26972 26993 +f 26993 26972 26973 +f 26993 26973 26863 +f 26863 26973 26862 +f 26974 26524 26522 +f 26581 26974 26582 +f 26582 26974 26522 +f 26582 26522 26520 +f 26552 26935 26554 +f 26554 26935 26936 +f 26554 26936 26556 +f 26556 26936 26937 +f 26556 26937 26558 +f 26558 26937 26938 +f 26558 26938 26560 +f 26560 26938 26939 +f 26560 26939 26562 +f 26562 26939 26514 +f 26562 26514 26512 +f 26535 26942 26536 +f 26536 26942 26943 +f 26536 26943 26537 +f 26537 26943 26944 +f 26537 26944 26538 +f 26538 26944 26945 +f 26538 26945 26539 +f 26539 26945 26946 +f 26539 26946 26540 +f 26540 26946 26947 +f 26540 26947 26541 +f 26541 26947 26948 +f 26541 26948 26542 +f 26542 26948 26949 +f 26542 26949 26543 +f 26543 26949 26508 +f 26543 26508 26506 +f 26983 26976 26994 +f 26994 26976 26977 +f 26994 26977 26995 +f 26995 26977 26978 +f 26995 26978 26996 +f 26996 26978 26979 +f 26996 26979 26997 +f 26997 26979 26980 +f 26997 26980 26998 +f 26998 26980 26981 +f 26998 26981 26999 +f 26999 26981 26982 +f 26999 26982 26785 +f 26785 26982 26784 +f 26983 26994 26984 +f 26984 26994 27000 +f 26984 27000 26797 +f 26797 27000 26795 +f 27000 26994 26995 +f 26988 27001 26987 +f 26987 27001 26986 +f 26987 26986 26985 +f 26875 26877 27001 +f 27001 26877 26986 +f 27001 26988 27002 +f 27002 26988 26989 +f 27002 26989 27003 +f 27003 26989 26990 +f 27003 26990 27004 +f 27004 26990 26991 +f 27004 26991 27005 +f 27005 26991 26992 +f 27005 26992 27006 +f 27006 26992 26993 +f 27006 26993 26864 +f 26864 26993 26863 +f 27000 26995 27007 +f 27007 26995 26996 +f 27007 26996 27008 +f 27008 26996 26997 +f 27008 26997 27009 +f 27009 26997 26998 +f 27009 26998 27010 +f 27010 26998 26999 +f 27010 26999 26786 +f 26786 26999 26785 +f 26873 26875 27002 +f 27002 26875 27001 +f 26873 27002 27003 +f 26793 26795 27007 +f 27007 26795 27000 +f 26793 27007 27008 +f 26871 26873 27003 +f 26871 27003 27004 +f 27010 26789 27009 +f 27009 26789 26791 +f 27009 26791 27008 +f 27008 26791 26793 +f 26786 26787 27010 +f 27010 26787 26789 +f 27006 26867 27005 +f 27005 26867 26869 +f 27005 26869 27004 +f 27004 26869 26871 +f 26864 26865 27006 +f 27006 26865 26867 +f 26511 26891 26509 +f 26509 26891 26892 +f 26509 26892 26507 +f 26892 26891 26890 +f 6823 6820 27011 +f 27011 6820 6819 +f 27011 6819 6818 +f 27011 6818 27012 +f 27012 6818 6817 +f 27012 6817 6816 +f 6816 6815 27012 +f 27012 6815 6814 +f 27012 6814 6805 +f 6805 6806 27012 +f 27012 6806 27013 +f 27012 27013 27011 +f 27011 27013 27014 +f 27011 27014 27015 +f 27015 27014 27016 +f 27015 27016 6838 +f 6838 27016 6840 +f 6840 27016 27017 +f 6840 27017 6843 +f 6843 27017 6845 +f 6845 27017 6846 +f 6846 27017 6848 +f 6848 27017 6863 +f 6863 27017 6864 +f 6864 27017 6865 +f 6865 27017 27018 +f 6865 27018 6866 +f 6866 27018 5413 +f 5413 27018 5414 +f 5414 27018 6813 +f 6813 27018 27019 +f 6813 27019 6812 +f 6812 27019 6811 +f 6811 27019 6810 +f 6810 27019 6809 +f 6809 27019 6808 +f 6808 27019 6807 +f 6807 27019 27013 +f 6807 27013 6806 +f 6838 6836 27015 +f 27015 6836 6834 +f 27015 6834 6832 +f 6832 6831 27015 +f 27015 6831 6828 +f 27015 6828 6826 +f 6826 6824 27015 +f 27015 6824 27011 +f 6824 6823 27011 +f 27013 27019 27014 +f 27014 27019 27018 +f 27014 27018 27016 +f 27016 27018 27017 +f 3287 27020 3286 +f 3286 27020 27021 +f 3286 27021 3285 +f 3285 27021 27022 +f 3285 27022 3284 +f 3284 27022 3283 +f 3283 27022 3282 +f 3282 27022 3281 +f 3281 27022 3280 +f 3280 27022 3279 +f 3279 27022 27023 +f 3279 27023 3278 +f 3278 27023 6869 +f 6869 27023 6870 +f 6870 27023 6871 +f 6871 27023 27024 +f 6871 27024 6872 +f 6872 27024 6873 +f 6873 27024 6880 +f 6873 6880 6876 +f 6876 6880 6878 +f 3287 3288 27020 +f 27020 3288 3289 +f 27020 3289 3290 +f 3290 3291 27020 +f 27020 3291 3292 +f 27020 3292 27025 +f 27025 3292 3293 +f 27025 3293 6868 +f 6868 6867 27025 +f 27025 6867 6901 +f 27025 6901 27026 +f 27026 6901 6900 +f 27026 6900 6898 +f 6898 6896 27026 +f 27026 6896 6894 +f 27026 6894 6892 +f 6892 6889 27026 +f 27026 6889 6885 +f 27026 6885 27027 +f 27027 6885 6884 +f 27027 6884 27024 +f 27024 6884 6883 +f 27024 6883 6880 +f 27023 27022 27021 +f 27021 27020 27028 +f 27028 27020 27025 +f 27028 27025 27027 +f 27027 27025 27026 +f 27024 27023 27028 +f 27028 27023 27021 +f 27024 27028 27027 +f 6885 6840 6884 +f 6824 15922 6823 +f 6823 15922 15917 +f 6823 15917 15916 +f 15916 15917 15927 +f 15916 15927 15914 +f 15914 15927 15913 +f 6896 15913 6894 +f 6894 15912 6892 +f 6892 15923 6889 +f 6889 15923 6885 +f 6885 15923 15910 +f 6885 15910 15909 +f 15909 15910 15924 +f 15909 15924 15921 +f 15921 15924 15920 +f 15921 15920 6832 +f 15921 15908 15909 +f 15909 15908 6836 +f 15909 6836 6885 +f 6885 6836 6838 +f 6834 6836 15908 +f 15914 15915 15916 +f 15916 15915 6901 +f 15916 6901 6823 +f 6823 6901 6867 +f 15917 15922 15918 +f 15918 15922 15919 +f 15918 15919 15925 +f 15925 15919 15920 +f 15925 15920 15924 +f 15917 15918 15927 +f 15927 15918 15926 +f 15927 15926 15913 +f 15913 15926 15912 +f 15926 15918 15925 +f 15926 15925 15911 +f 15911 15925 15924 +f 15911 15924 15910 +f 15923 15912 15911 +f 15911 15912 15926 +f 15923 15911 15910 +f 6868 6823 6867 +f 6805 15942 6806 +f 6806 15942 15937 +f 6806 15937 15936 +f 15936 15937 15947 +f 15936 15947 15934 +f 15934 15947 15933 +f 15934 15933 3289 +f 3291 15932 3292 +f 3292 15932 15943 +f 3292 15943 3293 +f 3293 15943 6868 +f 6868 15943 15930 +f 6868 15930 15929 +f 15929 15930 15944 +f 15929 15944 15941 +f 15941 15944 15940 +f 15941 15940 6817 +f 6816 15940 6815 +f 6815 15940 15939 +f 15941 15928 15929 +f 15929 15928 6819 +f 15929 6819 6868 +f 6868 6819 6820 +f 6818 6819 15928 +f 3289 3288 15934 +f 15934 3288 15935 +f 15934 15935 15936 +f 15936 15935 3287 +f 15936 3287 6806 +f 6806 3287 3286 +f 3288 3287 15935 +f 15937 15942 15938 +f 15938 15942 15939 +f 15938 15939 15945 +f 15945 15939 15940 +f 15945 15940 15944 +f 15937 15938 15947 +f 15947 15938 15946 +f 15947 15946 15933 +f 15933 15946 15932 +f 15946 15938 15945 +f 15946 15945 15931 +f 15931 15945 15944 +f 15931 15944 15930 +f 15943 15932 15931 +f 15931 15932 15946 +f 15943 15931 15930 +f 5414 15962 5413 +f 5413 15962 15957 +f 5413 15957 15956 +f 15956 15957 15967 +f 15956 15967 15954 +f 15954 15967 15953 +f 3280 15953 3281 +f 3281 15953 3282 +f 3282 15953 15952 +f 3284 15963 3285 +f 3285 15963 15950 +f 3285 15950 15949 +f 15949 15950 15964 +f 15949 15964 15961 +f 15961 15964 15960 +f 15961 15960 6810 +f 6813 15962 5414 +f 15961 6809 15948 +f 15961 15948 15949 +f 15949 15948 6808 +f 15949 6808 3285 +f 3285 6808 6807 +f 15954 3279 15955 +f 15954 15955 15956 +f 15956 15955 3278 +f 15956 3278 5413 +f 5413 3278 6869 +f 15957 15962 15958 +f 15958 15962 15959 +f 15958 15959 15965 +f 15965 15959 15960 +f 15965 15960 15964 +f 15957 15958 15967 +f 15967 15958 15966 +f 15967 15966 15953 +f 15953 15966 15952 +f 15966 15958 15965 +f 15966 15965 15951 +f 15951 15965 15964 +f 15951 15964 15950 +f 15963 15952 15951 +f 15951 15952 15966 +f 15963 15951 15950 +f 5413 6869 6866 +f 6843 15982 6840 +f 6840 15982 15977 +f 6840 15977 15976 +f 15976 15977 15987 +f 15976 15987 15974 +f 15974 15987 15973 +f 6873 15973 15972 +f 6873 15972 6872 +f 6871 15983 6870 +f 6870 15983 15970 +f 6870 15970 15969 +f 15969 15970 15984 +f 15969 15984 15981 +f 15981 15984 15980 +f 6846 15980 15979 +f 6845 15979 15982 +f 15981 15968 15969 +f 15969 15968 6865 +f 15969 6865 6870 +f 6870 6865 6866 +f 15974 6880 15975 +f 15974 15975 15976 +f 15976 15975 6883 +f 15976 6883 6840 +f 6840 6883 6884 +f 15977 15982 15978 +f 15978 15982 15979 +f 15978 15979 15985 +f 15985 15979 15980 +f 15985 15980 15984 +f 15977 15978 15987 +f 15987 15978 15986 +f 15987 15986 15973 +f 15973 15986 15972 +f 15986 15978 15985 +f 15986 15985 15971 +f 15971 15985 15984 +f 15971 15984 15970 +f 15983 15972 15971 +f 15971 15972 15986 +f 15983 15971 15970 +f 6904 6903 27029 +f 27029 6903 6825 +f 27029 6825 6827 +f 27029 6827 27030 +f 27030 6827 6829 +f 27030 6829 6830 +f 6830 6833 27030 +f 27030 6833 6835 +f 27030 6835 6837 +f 6837 6839 27030 +f 27030 6839 27031 +f 27030 27031 27029 +f 27029 27031 27032 +f 27029 27032 27033 +f 27033 27032 27034 +f 27033 27034 6917 +f 6917 27034 6919 +f 6919 27034 27035 +f 6919 27035 6922 +f 6922 27035 6924 +f 6924 27035 6925 +f 6925 27035 6860 +f 6860 27035 6859 +f 6859 27035 6858 +f 6858 27035 6857 +f 6857 27035 27036 +f 6857 27036 6855 +f 6855 27036 6854 +f 6854 27036 6853 +f 6853 27036 6852 +f 6852 27036 27037 +f 6852 27037 6851 +f 6851 27037 6849 +f 6849 27037 6847 +f 6847 27037 6844 +f 6844 27037 6842 +f 6842 27037 6841 +f 6841 27037 27031 +f 6841 27031 6839 +f 6917 6915 27033 +f 27033 6915 6913 +f 27033 6913 6911 +f 6911 6910 27033 +f 27033 6910 6907 +f 27033 6907 6906 +f 6906 6905 27033 +f 27033 6905 27029 +f 6905 6904 27029 +f 27031 27037 27032 +f 27032 27037 27036 +f 27032 27036 27034 +f 27034 27036 27035 +f 6890 27038 6888 +f 6888 27038 27039 +f 6888 27039 6887 +f 6887 27039 27040 +f 6887 27040 6882 +f 6882 27040 6881 +f 6881 27040 6877 +f 6877 27040 6875 +f 6875 27040 6874 +f 6874 27040 6928 +f 6928 27040 27041 +f 6928 27041 6929 +f 6929 27041 6931 +f 6931 27041 6932 +f 6932 27041 6933 +f 6933 27041 27042 +f 6933 27042 6993 +f 6993 27042 6994 +f 6994 27042 7002 +f 6994 7002 6996 +f 6996 7002 6998 +f 6890 6891 27038 +f 27038 6891 6893 +f 27038 6893 6895 +f 6895 6897 27038 +f 27038 6897 6899 +f 27038 6899 27043 +f 27043 6899 6902 +f 27043 6902 6927 +f 6927 6926 27043 +f 27043 6926 7022 +f 27043 7022 27044 +f 27044 7022 7021 +f 27044 7021 7019 +f 7019 7017 27044 +f 27044 7017 7015 +f 27044 7015 7013 +f 7013 7010 27044 +f 27044 7010 7006 +f 27044 7006 27045 +f 27045 7006 7005 +f 27045 7005 27042 +f 27042 7005 7004 +f 27042 7004 7002 +f 27041 27040 27039 +f 27039 27038 27046 +f 27046 27038 27043 +f 27046 27043 27045 +f 27045 27043 27044 +f 27042 27041 27046 +f 27046 27041 27039 +f 27042 27046 27045 +f 6917 6919 7006 +f 7006 6919 7005 +f 6905 16002 6904 +f 6904 16002 15997 +f 6904 15997 15996 +f 15996 15997 16007 +f 15996 16007 15994 +f 15994 16007 15993 +f 7017 15993 7015 +f 7015 15993 15992 +f 7013 15992 16003 +f 7013 16003 7010 +f 7010 16003 7006 +f 7006 16003 15990 +f 7006 15990 15989 +f 15989 15990 16004 +f 15989 16004 16001 +f 16001 16004 16000 +f 6907 16000 15999 +f 6906 16002 6905 +f 16001 15988 15989 +f 15989 15988 6915 +f 15989 6915 7006 +f 7006 6915 6917 +f 6913 6915 15988 +f 7019 7021 15994 +f 15994 15995 15996 +f 15996 15995 7022 +f 15996 7022 6904 +f 6904 7022 6926 +f 7021 7022 15995 +f 15997 16002 15998 +f 15998 16002 15999 +f 15998 15999 16005 +f 16005 15999 16000 +f 16005 16000 16004 +f 15997 15998 16007 +f 16007 15998 16006 +f 16007 16006 15993 +f 15993 16006 15992 +f 16006 15998 16005 +f 16006 16005 15991 +f 15991 16005 16004 +f 15991 16004 15990 +f 16003 15992 15991 +f 15991 15992 16006 +f 16003 15991 15990 +f 6837 16022 6839 +f 6839 16022 16017 +f 6839 16017 16016 +f 16016 16017 16027 +f 16016 16027 16014 +f 16014 16027 16013 +f 6893 16013 6895 +f 6895 16013 6897 +f 6897 16013 16012 +f 6897 16012 6899 +f 6899 16012 16023 +f 6899 16023 6902 +f 6902 16023 6927 +f 6927 16023 16010 +f 6927 16010 16009 +f 16009 16010 16024 +f 16009 16024 16021 +f 16021 16024 16020 +f 6835 16019 16022 +f 16021 16008 16009 +f 16009 16008 6825 +f 16009 6825 6927 +f 6927 6825 6903 +f 16014 6891 16015 +f 16014 16015 16016 +f 16016 16015 6890 +f 16016 6890 6839 +f 6839 6890 6888 +f 16017 16022 16018 +f 16018 16022 16019 +f 16018 16019 16025 +f 16025 16019 16020 +f 16025 16020 16024 +f 16017 16018 16027 +f 16027 16018 16026 +f 16027 16026 16013 +f 16013 16026 16012 +f 16026 16018 16025 +f 16026 16025 16011 +f 16011 16025 16024 +f 16011 16024 16010 +f 16023 16012 16011 +f 16011 16012 16026 +f 16023 16011 16010 +f 6839 6888 6841 +f 6853 16042 6854 +f 6854 16042 16037 +f 6854 16037 16036 +f 16036 16037 16047 +f 16036 16047 16034 +f 16034 16047 16033 +f 6874 16033 6875 +f 6877 16032 6881 +f 6882 16043 6887 +f 6887 16043 16030 +f 6887 16030 16029 +f 16029 16030 16044 +f 16029 16044 16041 +f 16041 16044 16040 +f 6852 16039 16042 +f 6852 16042 6853 +f 16041 16028 16029 +f 16029 16028 6842 +f 16029 6842 6887 +f 6887 6842 6841 +f 6844 6842 16028 +f 6874 6928 16034 +f 16034 16035 16036 +f 16036 16035 6929 +f 16036 6929 6854 +f 6854 6929 6931 +f 16037 16042 16038 +f 16038 16042 16039 +f 16038 16039 16045 +f 16045 16039 16040 +f 16045 16040 16044 +f 16037 16038 16047 +f 16047 16038 16046 +f 16047 16046 16033 +f 16033 16046 16032 +f 16046 16038 16045 +f 16046 16045 16031 +f 16031 16045 16044 +f 16031 16044 16030 +f 16043 16032 16031 +f 16031 16032 16046 +f 16043 16031 16030 +f 6854 6931 6855 +f 6855 6931 6932 +f 6922 16062 6919 +f 6919 16062 16057 +f 6919 16057 16056 +f 16056 16057 16067 +f 16056 16067 16054 +f 16054 16067 16053 +f 6933 16063 6932 +f 6932 16063 16050 +f 6932 16050 16049 +f 16049 16050 16064 +f 16049 16064 16061 +f 16061 16064 16060 +f 6924 16059 16062 +f 6924 16062 6922 +f 16061 6858 16048 +f 16061 16048 16049 +f 16049 16048 6857 +f 16049 6857 6932 +f 6932 6857 6855 +f 6998 7002 16054 +f 16054 16055 16056 +f 16056 16055 7004 +f 16056 7004 6919 +f 6919 7004 7005 +f 16057 16062 16058 +f 16058 16062 16059 +f 16058 16059 16065 +f 16065 16059 16060 +f 16065 16060 16064 +f 16057 16058 16067 +f 16067 16058 16066 +f 16067 16066 16053 +f 16053 16066 16052 +f 16066 16058 16065 +f 16066 16065 16051 +f 16051 16065 16064 +f 16051 16064 16050 +f 16063 16052 16051 +f 16051 16052 16066 +f 16063 16051 16050 +f 7111 7110 27047 +f 27047 7110 7030 +f 27047 7030 7029 +f 27047 7029 27048 +f 27048 7029 7037 +f 27048 7037 7039 +f 7039 7041 27048 +f 27048 7041 7042 +f 27048 7042 7047 +f 7047 7050 27048 +f 27048 7050 27049 +f 27048 27049 27047 +f 27047 27049 27050 +f 27047 27050 27051 +f 27051 27050 27052 +f 27051 27052 7143 +f 7143 27052 7146 +f 7146 27052 27053 +f 7146 27053 7149 +f 7149 27053 7153 +f 7153 27053 7154 +f 7154 27053 7155 +f 7155 27053 7164 +f 7164 27053 7165 +f 7165 27053 7166 +f 7166 27053 27054 +f 7166 27054 7167 +f 7167 27054 5658 +f 5658 27054 5657 +f 5657 27054 5656 +f 5656 27054 27055 +f 5656 27055 5654 +f 5654 27055 5653 +f 5653 27055 7057 +f 7057 27055 7054 +f 7054 27055 7052 +f 7052 27055 7053 +f 7053 27055 27049 +f 7053 27049 7050 +f 7143 7142 27051 +f 27051 7142 7141 +f 27051 7141 7140 +f 7140 7137 27051 +f 27051 7137 7115 +f 27051 7115 7114 +f 7114 7113 27051 +f 27051 7113 27047 +f 7113 7111 27047 +f 27049 27055 27050 +f 27050 27055 27054 +f 27050 27054 27052 +f 27052 27054 27053 +f 7091 27056 7089 +f 7089 27056 27057 +f 7089 27057 7088 +f 7088 27057 27058 +f 7088 27058 7081 +f 7081 27058 7080 +f 7080 27058 7078 +f 7078 27058 7076 +f 7076 27058 7074 +f 7074 27058 7169 +f 7169 27058 27059 +f 7169 27059 7175 +f 7175 27059 7176 +f 7176 27059 7177 +f 7177 27059 7179 +f 7179 27059 27060 +f 7179 27060 7180 +f 7180 27060 7182 +f 7182 27060 7192 +f 7182 7192 7184 +f 7184 7192 7186 +f 7091 7092 27056 +f 27056 7092 7094 +f 27056 7094 7096 +f 7096 7101 27056 +f 27056 7101 7168 +f 27056 7168 27061 +f 27061 7168 7103 +f 27061 7103 7104 +f 7104 7105 27061 +f 27061 7105 7106 +f 27061 7106 27062 +f 27062 7106 7207 +f 27062 7207 7206 +f 7206 7205 27062 +f 27062 7205 7204 +f 27062 7204 7202 +f 7202 7200 27062 +f 27062 7200 7199 +f 27062 7199 27063 +f 27063 7199 7195 +f 27063 7195 27060 +f 27060 7195 7193 +f 27060 7193 7192 +f 27059 27058 27057 +f 27057 27056 27064 +f 27064 27056 27061 +f 27064 27061 27063 +f 27063 27061 27062 +f 27060 27059 27064 +f 27064 27059 27057 +f 27060 27064 27063 +f 7143 7146 7199 +f 7113 16162 7111 +f 7111 16162 16157 +f 7111 16157 16156 +f 16156 16157 16167 +f 16156 16167 16154 +f 16154 16167 16153 +f 7205 16153 7204 +f 7204 16152 7202 +f 7202 16152 16163 +f 7202 16163 7200 +f 7200 16163 7199 +f 7199 16163 16150 +f 7199 16150 16149 +f 16149 16150 16164 +f 16149 16164 16161 +f 16161 16164 16160 +f 16161 16160 7140 +f 7140 16160 7137 +f 7115 16159 7114 +f 7114 16159 16162 +f 7114 16162 7113 +f 16161 16148 16149 +f 16149 16148 7142 +f 16149 7142 7199 +f 7199 7142 7143 +f 7206 7207 16154 +f 16154 7207 16155 +f 16154 16155 16156 +f 16156 16155 7106 +f 16156 7106 7111 +f 7111 7106 7105 +f 16157 16162 16158 +f 16158 16162 16159 +f 16158 16159 16165 +f 16165 16159 16160 +f 16165 16160 16164 +f 16157 16158 16167 +f 16167 16158 16166 +f 16167 16166 16153 +f 16153 16166 16152 +f 16166 16158 16165 +f 16166 16165 16151 +f 16151 16165 16164 +f 16151 16164 16150 +f 16163 16152 16151 +f 16151 16152 16166 +f 16163 16151 16150 +f 7047 16182 7050 +f 7050 16182 16177 +f 7050 16177 16176 +f 16176 16177 16187 +f 16176 16187 16174 +f 16174 16187 16173 +f 7101 16172 7168 +f 7168 16172 16183 +f 7168 16183 7103 +f 7103 16183 7104 +f 7104 16183 16170 +f 7104 16170 16169 +f 16169 16170 16184 +f 16169 16184 16181 +f 16181 16184 16180 +f 16181 16180 7037 +f 7037 16180 7039 +f 7039 16180 7041 +f 7037 7029 16181 +f 16181 16168 16169 +f 16169 16168 7030 +f 16169 7030 7104 +f 7104 7030 7110 +f 7029 7030 16168 +f 16174 7092 16175 +f 16174 16175 16176 +f 16176 16175 7091 +f 16176 7091 7050 +f 7050 7091 7089 +f 7092 7091 16175 +f 16177 16182 16178 +f 16178 16182 16179 +f 16178 16179 16185 +f 16185 16179 16180 +f 16185 16180 16184 +f 16177 16178 16187 +f 16187 16178 16186 +f 16187 16186 16173 +f 16173 16186 16172 +f 16186 16178 16185 +f 16186 16185 16171 +f 16171 16185 16184 +f 16171 16184 16170 +f 16183 16172 16171 +f 16171 16172 16186 +f 16183 16171 16170 +f 5657 16202 5658 +f 5658 16202 16197 +f 5658 16197 16196 +f 16196 16197 16207 +f 16196 16207 16194 +f 16194 16207 16193 +f 7074 16193 7076 +f 7076 16193 7078 +f 7078 16193 16192 +f 7081 16203 7088 +f 7088 16203 16190 +f 7088 16190 16189 +f 16189 16190 16204 +f 16189 16204 16201 +f 16201 16204 16200 +f 7057 16200 5653 +f 5653 16200 5654 +f 5656 16199 16202 +f 5656 16202 5657 +f 7057 7054 16201 +f 16201 16188 16189 +f 16189 16188 7052 +f 16189 7052 7088 +f 7088 7052 7053 +f 7054 7052 16188 +f 7074 7169 16194 +f 16194 16195 16196 +f 16196 16195 7175 +f 16196 7175 5658 +f 5658 7175 7176 +f 7169 7175 16195 +f 16197 16202 16198 +f 16198 16202 16199 +f 16198 16199 16205 +f 16205 16199 16200 +f 16205 16200 16204 +f 16197 16198 16207 +f 16207 16198 16206 +f 16207 16206 16193 +f 16193 16206 16192 +f 16206 16198 16205 +f 16206 16205 16191 +f 16191 16205 16204 +f 16191 16204 16190 +f 16203 16192 16191 +f 16191 16192 16206 +f 16203 16191 16190 +f 5658 7176 7167 +f 7149 16222 7146 +f 7146 16222 16217 +f 7146 16217 16216 +f 16216 16217 16227 +f 16216 16227 16214 +f 16214 16227 16213 +f 7186 16213 7184 +f 7184 16213 7182 +f 7180 16212 16223 +f 7180 16223 7179 +f 7179 16223 7177 +f 7177 16223 16210 +f 7177 16210 16209 +f 16209 16210 16224 +f 16209 16224 16221 +f 16221 16224 16220 +f 7153 16222 7149 +f 16221 16208 16209 +f 16209 16208 7166 +f 16209 7166 7177 +f 7177 7166 7167 +f 7186 7192 16214 +f 16214 7192 16215 +f 16214 16215 16216 +f 16216 16215 7193 +f 16216 7193 7146 +f 7146 7193 7195 +f 7192 7193 16215 +f 16217 16222 16218 +f 16218 16222 16219 +f 16218 16219 16225 +f 16225 16219 16220 +f 16225 16220 16224 +f 16217 16218 16227 +f 16227 16218 16226 +f 16227 16226 16213 +f 16213 16226 16212 +f 16226 16218 16225 +f 16226 16225 16211 +f 16211 16225 16224 +f 16211 16224 16210 +f 16223 16212 16211 +f 16211 16212 16226 +f 16223 16211 16210 +f 7213 7212 27065 +f 27065 7212 7211 +f 27065 7211 7210 +f 27065 7210 27066 +f 27066 7210 7209 +f 27066 7209 7208 +f 7208 7139 27066 +f 27066 7139 7138 +f 27066 7138 7145 +f 7145 7148 27066 +f 27066 7148 27067 +f 27066 27067 27065 +f 27065 27067 27068 +f 27065 27068 27069 +f 27069 27068 27070 +f 27069 27070 7133 +f 7133 27070 7136 +f 7136 27070 27071 +f 7136 27071 7217 +f 7217 27071 7221 +f 7221 27071 7222 +f 7222 27071 3102 +f 3102 27071 3101 +f 3101 27071 7162 +f 7162 27071 7161 +f 7161 27071 27072 +f 7161 27072 7160 +f 7160 27072 7159 +f 7159 27072 7224 +f 7224 27072 7225 +f 7225 27072 27073 +f 7225 27073 7226 +f 7226 27073 7227 +f 7227 27073 7228 +f 7228 27073 7152 +f 7152 27073 7150 +f 7150 27073 7151 +f 7151 27073 27067 +f 7151 27067 7148 +f 7133 7129 27069 +f 27069 7129 7127 +f 27069 7127 7125 +f 7125 7123 27069 +f 27069 7123 7121 +f 27069 7121 7215 +f 7215 7214 27069 +f 27069 7214 27065 +f 7214 7213 27065 +f 27067 27073 27068 +f 27068 27073 27072 +f 27068 27072 27070 +f 27070 27072 27071 +f 7201 27074 7198 +f 7198 27074 27075 +f 7198 27075 7196 +f 7196 27075 27076 +f 7196 27076 7194 +f 7194 27076 7190 +f 7190 27076 7187 +f 7187 27076 7185 +f 7185 27076 7183 +f 7183 27076 7232 +f 7232 27076 27077 +f 7232 27077 7242 +f 7242 27077 7243 +f 7243 27077 7245 +f 7245 27077 7246 +f 7246 27077 27078 +f 7246 27078 7247 +f 7247 27078 7289 +f 7289 27078 7300 +f 7289 7300 7291 +f 7291 7300 7293 +f 7201 7203 27074 +f 27074 7203 7231 +f 27074 7231 7230 +f 7230 7229 27074 +f 27074 7229 7109 +f 27074 7109 27079 +f 27079 7109 7108 +f 27079 7108 3425 +f 3425 3424 27079 +f 27079 3424 7334 +f 27079 7334 27080 +f 27080 7334 7333 +f 27080 7333 7332 +f 7332 7315 27080 +f 27080 7315 7313 +f 27080 7313 7311 +f 7311 7309 27080 +f 27080 7309 7303 +f 27080 7303 27081 +f 27081 7303 7299 +f 27081 7299 27078 +f 27078 7299 7298 +f 27078 7298 7300 +f 27077 27076 27075 +f 27075 27074 27082 +f 27082 27074 27079 +f 27082 27079 27081 +f 27081 27079 27080 +f 27078 27077 27082 +f 27082 27077 27075 +f 27078 27082 27081 +f 7133 7136 7303 +f 7303 7136 7299 +f 7214 16242 7213 +f 7213 16242 16237 +f 7213 16237 16236 +f 16236 16237 16247 +f 16236 16247 16234 +f 16234 16247 16233 +f 16234 16233 7332 +f 7332 16233 7315 +f 7315 16233 7313 +f 7313 16233 16232 +f 7313 16232 7311 +f 7309 16243 7303 +f 7303 16243 16230 +f 7303 16230 16229 +f 16229 16230 16244 +f 16229 16244 16241 +f 16241 16244 16240 +f 7123 16240 7121 +f 7121 16240 16239 +f 7121 16239 7215 +f 7215 16239 16242 +f 7125 7127 16241 +f 16241 7127 16228 +f 16241 16228 16229 +f 16229 16228 7129 +f 16229 7129 7303 +f 7303 7129 7133 +f 7332 7333 16234 +f 16234 7333 16235 +f 16234 16235 16236 +f 16236 16235 7334 +f 16236 7334 7213 +f 7213 7334 3424 +f 7333 7334 16235 +f 16237 16242 16238 +f 16238 16242 16239 +f 16238 16239 16245 +f 16245 16239 16240 +f 16245 16240 16244 +f 16237 16238 16247 +f 16247 16238 16246 +f 16247 16246 16233 +f 16233 16246 16232 +f 16246 16238 16245 +f 16246 16245 16231 +f 16231 16245 16244 +f 16231 16244 16230 +f 16243 16232 16231 +f 16231 16232 16246 +f 16243 16231 16230 +f 7212 7213 3425 +f 3425 7213 3424 +f 7145 16262 7148 +f 7148 16262 16257 +f 7148 16257 16256 +f 16256 16257 16267 +f 16256 16267 16254 +f 16254 16267 16253 +f 7230 16253 7229 +f 7229 16252 7109 +f 7108 16263 3425 +f 3425 16263 16250 +f 3425 16250 16249 +f 16249 16250 16264 +f 16249 16264 16261 +f 16261 16264 16260 +f 16261 16260 7209 +f 7208 16260 7139 +f 7139 16260 16259 +f 7139 16259 7138 +f 7138 16259 16262 +f 7209 7210 16261 +f 16261 7210 16248 +f 16261 16248 16249 +f 16249 16248 7211 +f 16249 7211 3425 +f 3425 7211 7212 +f 7210 7211 16248 +f 16254 7203 16255 +f 16254 16255 16256 +f 16256 16255 7201 +f 16256 7201 7148 +f 7148 7201 7198 +f 16257 16262 16258 +f 16258 16262 16259 +f 16258 16259 16265 +f 16265 16259 16260 +f 16265 16260 16264 +f 16257 16258 16267 +f 16267 16258 16266 +f 16267 16266 16253 +f 16253 16266 16252 +f 16266 16258 16265 +f 16266 16265 16251 +f 16251 16265 16264 +f 16251 16264 16250 +f 16263 16252 16251 +f 16251 16252 16266 +f 16263 16251 16250 +f 7148 7198 7151 +f 7151 7198 7196 +f 7224 16276 7159 +f 7159 16276 16275 +f 7159 16275 16274 +f 16274 16275 16273 +f 16274 16273 7232 +f 7232 16273 7183 +f 7183 16272 7185 +f 7185 16272 7187 +f 7187 16272 16271 +f 7187 16271 7190 +f 7190 16271 16270 +f 7190 16270 7194 +f 7194 16270 7196 +f 7196 16270 16269 +f 7196 16269 16268 +f 16268 16269 16279 +f 16268 16279 7152 +f 7227 16278 7226 +f 7226 16277 7225 +f 7225 16277 16276 +f 16268 7150 7196 +f 7150 7151 7196 +f 7232 7242 16274 +f 16274 7242 7159 +f 7242 7243 7159 +f 16275 16276 16282 +f 16282 16276 16277 +f 16282 16277 16281 +f 16281 16277 16278 +f 16281 16278 16280 +f 16280 16278 16279 +f 16280 16279 16269 +f 16272 16273 16282 +f 16282 16273 16275 +f 16272 16282 16281 +f 16271 16272 16281 +f 16271 16281 16280 +f 16270 16271 16280 +f 16270 16280 16269 +f 7159 7243 7160 +f 7160 7243 7245 +f 7217 16291 7136 +f 7136 16291 16290 +f 7136 16290 16289 +f 16289 16290 16288 +f 16289 16288 7300 +f 7293 16288 16287 +f 7293 16287 7291 +f 7291 16287 7289 +f 7289 16287 16286 +f 7289 16286 7247 +f 7247 16286 16285 +f 7247 16285 7246 +f 7246 16285 7245 +f 7245 16285 16284 +f 7245 16284 16283 +f 16283 16284 16294 +f 7162 16294 3101 +f 3101 16294 16293 +f 7222 16293 16292 +f 7221 16291 7217 +f 7162 7161 16283 +f 16283 7161 7245 +f 7161 7160 7245 +f 7300 7298 16289 +f 16289 7298 7136 +f 7298 7299 7136 +f 16290 16291 16297 +f 16297 16291 16292 +f 16297 16292 16296 +f 16296 16292 16293 +f 16296 16293 16295 +f 16295 16293 16294 +f 16295 16294 16284 +f 16287 16288 16297 +f 16297 16288 16290 +f 16287 16297 16296 +f 16286 16287 16296 +f 16286 16296 16295 +f 16285 16286 16295 +f 16285 16295 16284 +f 7339 7337 27083 +f 27083 7337 7336 +f 27083 7336 7335 +f 27083 7335 27084 +f 27084 7335 7122 +f 27084 7122 7124 +f 7124 7126 27084 +f 27084 7126 7128 +f 27084 7128 7130 +f 7130 7132 27084 +f 27084 7132 27085 +f 27084 27085 27083 +f 27083 27085 27086 +f 27083 27086 27087 +f 27087 27086 27088 +f 27087 27088 7356 +f 7356 27088 7359 +f 7359 27088 27089 +f 7359 27089 7361 +f 7361 27089 7365 +f 7365 27089 7366 +f 7366 27089 3116 +f 3116 27089 3115 +f 3115 27089 3114 +f 3114 27089 3113 +f 3113 27089 27090 +f 3113 27090 3111 +f 3111 27090 3109 +f 3109 27090 3107 +f 3107 27090 3106 +f 3106 27090 27091 +f 3106 27091 3105 +f 3105 27091 3104 +f 3104 27091 7223 +f 7223 27091 7220 +f 7220 27091 7218 +f 7218 27091 7219 +f 7219 27091 27085 +f 7219 27085 7132 +f 7356 7352 27087 +f 27087 7352 7350 +f 27087 7350 7348 +f 7348 7346 27087 +f 27087 7346 7342 +f 27087 7342 7341 +f 7341 7340 27087 +f 27087 7340 27083 +f 7340 7339 27083 +f 27085 27091 27086 +f 27086 27091 27090 +f 27086 27090 27088 +f 27088 27090 27089 +f 7310 27092 7307 +f 7307 27092 27093 +f 7307 27093 7306 +f 7306 27093 27094 +f 7306 27094 7297 +f 7297 27094 7296 +f 7296 27094 7294 +f 7294 27094 7292 +f 7292 27094 7290 +f 7290 27094 7371 +f 7371 27094 27095 +f 7371 27095 7372 +f 7372 27095 7373 +f 7373 27095 7375 +f 7375 27095 7376 +f 7376 27095 27096 +f 7376 27096 7377 +f 7377 27096 7422 +f 7422 27096 7433 +f 7422 7433 7424 +f 7424 7433 7426 +f 7310 7312 27092 +f 27092 7312 7314 +f 27092 7314 7316 +f 7316 7318 27092 +f 27092 7318 7319 +f 27092 7319 27097 +f 27097 7319 7320 +f 27097 7320 7321 +f 7321 7322 27097 +f 27097 7322 7323 +f 27097 7323 27098 +f 27098 7323 7325 +f 27098 7325 7326 +f 7326 7327 27098 +f 27098 7327 7329 +f 27098 7329 7444 +f 7444 7442 27098 +f 27098 7442 7436 +f 27098 7436 27099 +f 27099 7436 7432 +f 27099 7432 27096 +f 27096 7432 7431 +f 27096 7431 7433 +f 27095 27094 27093 +f 27093 27092 27100 +f 27100 27092 27097 +f 27100 27097 27099 +f 27099 27097 27098 +f 27096 27095 27100 +f 27100 27095 27093 +f 27096 27100 27099 +f 7340 16312 7339 +f 7339 16312 16307 +f 7339 16307 16306 +f 16306 16307 16317 +f 16306 16317 16304 +f 16304 16317 16303 +f 7326 16303 7327 +f 7327 16303 7329 +f 7329 16303 16302 +f 7444 16302 16313 +f 7444 16313 7442 +f 7442 16313 7436 +f 7436 16313 16300 +f 7436 16300 16299 +f 16299 16300 16314 +f 16299 16314 16311 +f 16311 16314 16310 +f 7342 16310 16309 +f 7341 16312 7340 +f 16311 7350 16298 +f 16311 16298 16299 +f 16299 16298 7352 +f 16299 7352 7436 +f 7436 7352 7356 +f 7326 7325 16304 +f 16304 16305 16306 +f 16306 16305 7323 +f 16306 7323 7339 +f 7339 7323 7322 +f 16307 16312 16308 +f 16308 16312 16309 +f 16308 16309 16315 +f 16315 16309 16310 +f 16315 16310 16314 +f 16307 16308 16317 +f 16317 16308 16316 +f 16317 16316 16303 +f 16303 16316 16302 +f 16316 16308 16315 +f 16316 16315 16301 +f 16301 16315 16314 +f 16301 16314 16300 +f 16313 16302 16301 +f 16301 16302 16316 +f 16313 16301 16300 +f 7130 16332 7132 +f 7132 16332 16327 +f 7132 16327 16326 +f 16326 16327 16337 +f 16326 16337 16324 +f 16324 16337 16323 +f 16324 16323 7314 +f 7318 16323 16322 +f 7319 16322 16333 +f 7319 16333 7320 +f 7320 16333 7321 +f 7321 16333 16320 +f 7321 16320 16319 +f 16319 16320 16334 +f 16319 16334 16331 +f 16331 16334 16330 +f 16331 16330 7122 +f 7122 16330 7124 +f 7126 16330 16329 +f 7128 16329 16332 +f 7128 16332 7130 +f 7122 7335 16331 +f 16331 16318 16319 +f 16319 16318 7336 +f 16319 7336 7321 +f 7321 7336 7337 +f 7335 7336 16318 +f 16324 7312 16325 +f 16324 16325 16326 +f 16326 16325 7310 +f 16326 7310 7132 +f 7132 7310 7307 +f 7312 7310 16325 +f 16327 16332 16328 +f 16328 16332 16329 +f 16328 16329 16335 +f 16335 16329 16330 +f 16335 16330 16334 +f 16327 16328 16337 +f 16337 16328 16336 +f 16337 16336 16323 +f 16323 16336 16322 +f 16336 16328 16335 +f 16336 16335 16321 +f 16321 16335 16334 +f 16321 16334 16320 +f 16333 16322 16321 +f 16321 16322 16336 +f 16333 16321 16320 +f 7132 7307 7219 +f 7219 7307 7306 +f 3107 16346 3109 +f 3109 16346 16345 +f 3109 16345 16344 +f 16344 16345 16343 +f 7371 16343 7290 +f 7290 16342 7292 +f 7294 16342 16341 +f 7294 16341 7296 +f 7296 16341 16340 +f 7296 16340 7297 +f 7297 16340 7306 +f 7306 16340 16339 +f 7306 16339 16338 +f 16338 16339 16349 +f 3105 16347 3106 +f 3106 16346 3107 +f 7220 7218 16338 +f 16338 7218 7306 +f 7218 7219 7306 +f 7371 7372 16344 +f 16344 7372 3109 +f 7372 7373 3109 +f 16345 16346 16352 +f 16352 16346 16347 +f 16352 16347 16351 +f 16351 16347 16348 +f 16351 16348 16350 +f 16350 16348 16349 +f 16350 16349 16339 +f 16342 16343 16352 +f 16352 16343 16345 +f 16342 16352 16351 +f 16341 16342 16351 +f 16341 16351 16350 +f 16340 16341 16350 +f 16340 16350 16339 +f 3109 7373 3111 +f 3111 7373 7375 +f 7361 16361 7359 +f 7359 16361 16360 +f 7359 16360 16359 +f 16359 16360 16358 +f 7376 16355 7375 +f 7375 16355 16354 +f 7375 16354 16353 +f 16353 16354 16364 +f 16353 16364 3114 +f 3114 16364 3115 +f 3115 16364 16363 +f 7365 16361 7361 +f 3114 3113 16353 +f 16353 3113 7375 +f 3113 3111 7375 +f 7433 7431 16359 +f 16359 7431 7359 +f 7431 7432 7359 +f 16360 16361 16367 +f 16367 16361 16362 +f 16367 16362 16366 +f 16366 16362 16363 +f 16366 16363 16365 +f 16365 16363 16364 +f 16365 16364 16354 +f 16357 16358 16367 +f 16367 16358 16360 +f 16357 16367 16366 +f 16356 16357 16366 +f 16356 16366 16365 +f 16355 16356 16365 +f 16355 16365 16354 +f 7448 7446 27101 +f 27101 7446 7445 +f 27101 7445 7345 +f 27101 7345 27102 +f 27102 7345 7344 +f 27102 7344 7347 +f 7347 7349 27102 +f 27102 7349 7351 +f 27102 7351 7353 +f 7353 7355 27102 +f 27102 7355 27103 +f 27102 27103 27101 +f 27101 27103 27104 +f 27101 27104 27105 +f 27105 27104 27106 +f 27105 27106 7487 +f 7487 27106 7490 +f 7490 27106 27107 +f 7490 27107 7492 +f 7492 27107 7496 +f 7496 27107 7497 +f 7497 27107 7499 +f 7499 27107 3127 +f 3127 27107 3126 +f 3126 27107 3124 +f 3124 27107 27108 +f 3124 27108 3123 +f 3123 27108 3122 +f 3122 27108 3120 +f 3120 27108 7370 +f 7370 27108 27109 +f 7370 27109 7369 +f 7369 27109 7368 +f 7368 27109 7367 +f 7367 27109 7364 +f 7364 27109 7362 +f 7362 27109 7363 +f 7363 27109 27103 +f 7363 27103 7355 +f 7487 7483 27105 +f 27105 7483 7481 +f 27105 7481 7479 +f 7479 7477 27105 +f 27105 7477 7474 +f 27105 7474 7450 +f 7450 7449 27105 +f 27105 7449 27101 +f 7449 7448 27101 +f 27103 27109 27104 +f 27104 27109 27108 +f 27104 27108 27106 +f 27106 27108 27107 +f 7443 27110 7440 +f 7440 27110 27111 +f 7440 27111 7439 +f 7439 27111 27112 +f 7439 27112 7430 +f 7430 27112 7429 +f 7429 27112 7427 +f 7427 27112 7425 +f 7425 27112 7423 +f 7423 27112 7517 +f 7517 27112 27113 +f 7517 27113 7518 +f 7518 27113 7520 +f 7520 27113 7521 +f 7521 27113 7522 +f 7522 27113 27114 +f 7522 27114 7523 +f 7523 27114 7528 +f 7528 27114 7540 +f 7528 7540 7531 +f 7531 7540 7533 +f 7443 7331 27110 +f 27110 7331 7330 +f 27110 7330 7328 +f 7328 7516 27110 +f 27110 7516 7515 +f 27110 7515 27115 +f 27115 7515 7503 +f 27115 7503 7504 +f 7504 7505 27115 +f 27115 7505 7506 +f 27115 7506 27116 +f 27116 7506 7508 +f 27116 7508 7509 +f 7509 7510 27116 +f 27116 7510 7512 +f 27116 7512 7551 +f 7551 7549 27116 +f 27116 7549 7543 +f 27116 7543 27117 +f 27117 7543 7539 +f 27117 7539 27114 +f 27114 7539 7538 +f 27114 7538 7540 +f 27113 27112 27111 +f 27111 27110 27118 +f 27118 27110 27115 +f 27118 27115 27117 +f 27117 27115 27116 +f 27114 27113 27118 +f 27118 27113 27111 +f 27114 27118 27117 +f 7449 16382 7448 +f 7448 16382 16377 +f 7448 16377 16376 +f 16376 16377 16387 +f 16376 16387 16374 +f 16374 16387 16373 +f 7512 16372 7551 +f 7551 16372 16383 +f 7551 16383 7549 +f 7549 16383 7543 +f 7543 16383 16370 +f 7543 16370 16369 +f 16369 16370 16384 +f 16369 16384 16381 +f 16381 16384 16380 +f 7479 7481 16381 +f 16381 16368 16369 +f 16369 16368 7483 +f 16369 7483 7543 +f 7543 7483 7487 +f 16374 16375 16376 +f 16376 16375 7506 +f 16376 7506 7448 +f 7448 7506 7505 +f 7508 7506 16375 +f 16377 16382 16378 +f 16378 16382 16379 +f 16378 16379 16385 +f 16385 16379 16380 +f 16385 16380 16384 +f 16377 16378 16387 +f 16387 16378 16386 +f 16387 16386 16373 +f 16373 16386 16372 +f 16386 16378 16385 +f 16386 16385 16371 +f 16371 16385 16384 +f 16371 16384 16370 +f 16383 16372 16371 +f 16371 16372 16386 +f 16383 16371 16370 +f 7504 7448 7505 +f 7353 16402 7355 +f 7355 16402 16397 +f 7355 16397 16396 +f 16396 16397 16407 +f 16396 16407 16394 +f 16394 16407 16393 +f 16394 16393 7330 +f 7516 16393 16392 +f 7516 16392 7515 +f 7515 16392 16403 +f 7503 16403 7504 +f 7504 16403 16390 +f 7504 16390 16389 +f 16389 16390 16404 +f 16389 16404 16401 +f 16401 16404 16400 +f 16401 16400 7344 +f 7351 16399 16402 +f 7344 7345 16401 +f 16401 16388 16389 +f 16389 16388 7445 +f 16389 7445 7504 +f 7504 7445 7446 +f 16394 16395 16396 +f 16396 16395 7443 +f 16396 7443 7355 +f 7355 7443 7440 +f 16397 16402 16398 +f 16398 16402 16399 +f 16398 16399 16405 +f 16405 16399 16400 +f 16405 16400 16404 +f 16397 16398 16407 +f 16407 16398 16406 +f 16407 16406 16393 +f 16393 16406 16392 +f 16406 16398 16405 +f 16406 16405 16391 +f 16391 16405 16404 +f 16391 16404 16390 +f 16403 16392 16391 +f 16391 16392 16406 +f 16403 16391 16390 +f 7363 7440 7439 +f 3120 16416 3122 +f 3122 16416 16415 +f 3122 16415 16414 +f 16414 16415 16413 +f 7429 16411 16410 +f 7430 16410 7439 +f 7439 16410 16409 +f 7439 16409 16408 +f 16408 16409 16419 +f 7367 16419 16418 +f 7367 16418 7368 +f 7368 16418 7369 +f 7369 16417 7370 +f 7370 16417 16416 +f 7364 7362 16408 +f 16408 7362 7439 +f 7362 7363 7439 +f 7517 7518 16414 +f 16414 7518 3122 +f 7518 7520 3122 +f 16415 16416 16422 +f 16422 16416 16417 +f 16422 16417 16421 +f 16421 16417 16418 +f 16421 16418 16420 +f 16420 16418 16419 +f 16420 16419 16409 +f 16412 16413 16422 +f 16422 16413 16415 +f 16412 16422 16421 +f 16411 16412 16421 +f 16411 16421 16420 +f 16410 16411 16420 +f 16410 16420 16409 +f 3123 7520 7521 +f 7492 16431 7490 +f 7490 16431 16430 +f 7490 16430 16429 +f 16429 16430 16428 +f 16429 16428 7540 +f 7533 16427 7531 +f 7531 16427 7528 +f 7528 16427 16426 +f 7528 16426 7523 +f 7523 16426 16425 +f 7522 16425 7521 +f 7521 16425 16424 +f 7521 16424 16423 +f 16423 16424 16434 +f 7497 16433 16432 +f 7496 16432 16431 +f 3126 3124 16423 +f 16423 3124 7521 +f 3124 3123 7521 +f 16429 7538 7490 +f 7538 7539 7490 +f 16430 16431 16437 +f 16437 16431 16432 +f 16437 16432 16436 +f 16436 16432 16433 +f 16436 16433 16435 +f 16435 16433 16434 +f 16435 16434 16424 +f 16427 16428 16437 +f 16437 16428 16430 +f 16427 16437 16436 +f 16426 16427 16436 +f 16426 16436 16435 +f 16425 16426 16435 +f 16425 16435 16424 +f 7554 7553 27119 +f 27119 7553 7552 +f 27119 7552 7476 +f 27119 7476 27120 +f 27120 7476 7475 +f 27120 7475 7478 +f 7478 7480 27120 +f 27120 7480 7482 +f 27120 7482 7484 +f 7484 7486 27120 +f 27120 7486 27121 +f 27120 27121 27119 +f 27119 27121 27122 +f 27119 27122 27123 +f 27123 27122 27124 +f 27123 27124 7470 +f 7470 27124 7473 +f 7473 27124 27125 +f 7473 27125 7557 +f 7557 27125 7561 +f 7561 27125 7562 +f 7562 27125 7564 +f 7564 27125 7570 +f 7570 27125 7573 +f 7573 27125 3135 +f 3135 27125 27126 +f 3135 27126 3134 +f 3134 27126 3133 +f 3133 27126 3131 +f 3131 27126 7502 +f 7502 27126 27127 +f 7502 27127 7501 +f 7501 27127 7500 +f 7500 27127 7498 +f 7498 27127 7495 +f 7495 27127 7493 +f 7493 27127 7494 +f 7494 27127 27121 +f 7494 27121 7486 +f 7470 7466 27123 +f 27123 7466 7464 +f 27123 7464 7462 +f 7462 7460 27123 +f 27123 7460 7458 +f 27123 7458 7456 +f 7456 7555 27123 +f 27123 7555 27119 +f 7555 7554 27119 +f 27121 27127 27122 +f 27122 27127 27126 +f 27122 27126 27124 +f 27124 27126 27125 +f 7550 27128 7547 +f 7547 27128 27129 +f 7547 27129 7546 +f 7546 27129 27130 +f 7546 27130 7537 +f 7537 27130 7536 +f 7536 27130 7534 +f 7534 27130 7532 +f 7532 27130 7529 +f 7529 27130 7530 +f 7530 27130 27131 +f 7530 27131 7588 +f 7588 27131 7624 +f 7624 27131 7625 +f 7625 27131 7626 +f 7626 27131 27132 +f 7626 27132 7627 +f 7627 27132 7644 +f 7644 27132 7655 +f 7644 7655 7646 +f 7646 7655 7648 +f 7550 7514 27128 +f 27128 7514 7513 +f 27128 7513 7511 +f 7511 7587 27128 +f 27128 7587 7586 +f 27128 7586 27133 +f 27133 7586 7574 +f 27133 7574 7575 +f 7575 7576 27133 +f 27133 7576 7577 +f 27133 7577 27134 +f 27134 7577 7579 +f 27134 7579 7580 +f 7580 7581 27134 +f 27134 7581 7583 +f 27134 7583 7666 +f 7666 7664 27134 +f 27134 7664 7658 +f 27134 7658 27135 +f 27135 7658 7654 +f 27135 7654 27132 +f 27132 7654 7653 +f 27132 7653 7655 +f 27131 27130 27129 +f 27129 27128 27136 +f 27136 27128 27133 +f 27136 27133 27135 +f 27135 27133 27134 +f 27132 27131 27136 +f 27136 27131 27129 +f 27132 27136 27135 +f 7555 16452 7554 +f 7554 16452 16447 +f 7554 16447 16446 +f 16446 16447 16457 +f 16446 16457 16444 +f 16444 16457 16443 +f 7581 16443 7583 +f 7666 16442 16453 +f 7666 16453 7664 +f 7664 16453 7658 +f 7658 16453 16440 +f 7658 16440 16439 +f 16439 16440 16454 +f 16439 16454 16451 +f 16451 16454 16450 +f 16451 16450 7462 +f 7460 16450 7458 +f 7458 16450 16449 +f 7458 16449 7456 +f 7456 16449 16452 +f 7462 7464 16451 +f 16451 7464 16438 +f 16451 16438 16439 +f 16439 16438 7466 +f 16439 7466 7658 +f 7658 7466 7470 +f 7580 7579 16444 +f 16444 7579 16445 +f 16444 16445 16446 +f 16446 16445 7577 +f 16446 7577 7554 +f 7554 7577 7576 +f 16447 16452 16448 +f 16448 16452 16449 +f 16448 16449 16455 +f 16455 16449 16450 +f 16455 16450 16454 +f 16447 16448 16457 +f 16457 16448 16456 +f 16457 16456 16443 +f 16443 16456 16442 +f 16456 16448 16455 +f 16456 16455 16441 +f 16441 16455 16454 +f 16441 16454 16440 +f 16453 16442 16441 +f 16441 16442 16456 +f 16453 16441 16440 +f 7553 7554 7575 +f 7575 7554 7576 +f 7484 16472 7486 +f 7486 16472 16467 +f 7486 16467 16466 +f 16466 16467 16477 +f 16466 16477 16464 +f 16464 16477 16463 +f 16464 16463 7513 +f 7513 16463 7511 +f 7587 16463 16462 +f 7587 16462 7586 +f 7574 16473 7575 +f 7575 16473 16460 +f 7575 16460 16459 +f 16459 16460 16474 +f 16459 16474 16471 +f 16471 16474 16470 +f 16471 16470 7475 +f 7475 16470 7478 +f 7480 16469 7482 +f 7482 16469 16472 +f 7475 7476 16471 +f 16471 7476 16458 +f 16471 16458 16459 +f 16459 16458 7552 +f 16459 7552 7575 +f 7575 7552 7553 +f 16464 16465 16466 +f 16466 16465 7550 +f 16466 7550 7486 +f 7486 7550 7547 +f 16467 16472 16468 +f 16468 16472 16469 +f 16468 16469 16475 +f 16475 16469 16470 +f 16475 16470 16474 +f 16467 16468 16477 +f 16477 16468 16476 +f 16477 16476 16463 +f 16463 16476 16462 +f 16476 16468 16475 +f 16476 16475 16461 +f 16461 16475 16474 +f 16461 16474 16460 +f 16473 16462 16461 +f 16461 16462 16476 +f 16473 16461 16460 +f 7486 7547 7494 +f 3131 16486 3133 +f 3133 16486 16485 +f 3133 16485 16484 +f 16484 16485 16483 +f 16484 16483 7530 +f 7529 16483 16482 +f 7534 16481 7536 +f 7536 16481 16480 +f 7536 16480 7537 +f 7537 16480 7546 +f 7546 16480 16479 +f 7546 16479 16478 +f 16478 16479 16489 +f 16478 16489 7495 +f 7495 16489 7498 +f 7498 16489 16488 +f 7498 16488 7500 +f 7500 16488 7501 +f 7501 16488 16487 +f 7501 16487 7502 +f 7502 16487 16486 +f 7495 7493 16478 +f 16478 7493 7546 +f 7493 7494 7546 +f 16484 7588 3133 +f 7588 7624 3133 +f 16485 16486 16492 +f 16492 16486 16487 +f 16492 16487 16491 +f 16491 16487 16488 +f 16491 16488 16490 +f 16490 16488 16489 +f 16490 16489 16479 +f 16482 16483 16492 +f 16492 16483 16485 +f 16482 16492 16491 +f 16481 16482 16491 +f 16481 16491 16490 +f 16480 16481 16490 +f 16480 16490 16479 +f 3133 7624 3134 +f 3134 7624 7625 +f 7557 16501 7473 +f 7473 16501 16500 +f 7473 16500 16499 +f 16499 16500 16498 +f 7648 16497 7646 +f 7646 16497 7644 +f 7644 16497 16496 +f 7644 16496 7627 +f 7627 16496 16495 +f 7626 16495 7625 +f 7625 16495 16494 +f 7625 16494 16493 +f 16493 16494 16504 +f 7573 16504 7570 +f 7570 16504 16503 +f 7570 16503 7564 +f 7562 16503 16502 +f 7562 16502 7561 +f 16493 3135 7625 +f 3135 3134 7625 +f 16499 7653 7473 +f 7653 7654 7473 +f 16500 16501 16507 +f 16507 16501 16502 +f 16507 16502 16506 +f 16506 16502 16503 +f 16506 16503 16505 +f 16505 16503 16504 +f 16505 16504 16494 +f 16497 16498 16507 +f 16507 16498 16500 +f 16497 16507 16506 +f 16496 16497 16506 +f 16496 16506 16505 +f 16495 16496 16505 +f 16495 16505 16494 +f 7677 7676 27137 +f 27137 7676 7667 +f 27137 7667 7457 +f 27137 7457 27138 +f 27138 7457 7459 +f 27138 7459 7461 +f 7461 7463 27138 +f 27138 7463 7465 +f 27138 7465 7467 +f 7467 7469 27138 +f 27138 7469 27139 +f 27138 27139 27137 +f 27137 27139 27140 +f 27137 27140 27141 +f 27141 27140 27142 +f 27141 27142 7693 +f 7693 27142 7696 +f 7696 27142 27143 +f 7696 27143 7698 +f 7698 27143 7702 +f 7702 27143 7703 +f 7703 27143 7705 +f 7705 27143 7715 +f 7715 27143 7719 +f 7719 27143 7717 +f 7717 27143 27144 +f 7717 27144 7720 +f 7720 27144 7722 +f 7722 27144 7569 +f 7569 27144 7568 +f 7568 27144 27145 +f 7568 27145 7567 +f 7567 27145 7565 +f 7565 27145 7563 +f 7563 27145 7560 +f 7560 27145 7558 +f 7558 27145 7559 +f 7559 27145 27139 +f 7559 27139 7469 +f 7693 7689 27141 +f 27141 7689 7687 +f 27141 7687 7685 +f 7685 7683 27141 +f 27141 7683 7681 +f 27141 7681 7679 +f 7679 7678 27141 +f 27141 7678 27137 +f 7678 7677 27137 +f 27139 27145 27140 +f 27140 27145 27144 +f 27140 27144 27142 +f 27142 27144 27143 +f 7665 27146 7662 +f 7662 27146 27147 +f 7662 27147 7661 +f 7661 27147 27148 +f 7661 27148 7652 +f 7652 27148 7651 +f 7651 27148 7649 +f 7649 27148 7647 +f 7647 27148 7645 +f 7645 27148 7735 +f 7735 27148 27149 +f 7735 27149 7736 +f 7736 27149 7738 +f 7738 27149 7739 +f 7739 27149 7740 +f 7740 27149 27150 +f 7740 27150 7741 +f 7741 27150 7746 +f 7746 27150 7762 +f 7746 7762 7753 +f 7753 7762 7755 +f 7665 7585 27146 +f 27146 7585 7584 +f 27146 7584 7582 +f 7582 7734 27146 +f 27146 7734 7733 +f 27146 7733 27151 +f 27151 7733 7723 +f 27151 7723 7724 +f 7724 7725 27151 +f 27151 7725 7727 +f 27151 7727 27152 +f 27152 7727 7728 +f 27152 7728 7729 +f 7729 7730 27152 +f 27152 7730 7775 +f 27152 7775 7773 +f 7773 7771 27152 +f 27152 7771 7765 +f 27152 7765 27153 +f 27153 7765 7761 +f 27153 7761 27150 +f 27150 7761 7760 +f 27150 7760 7762 +f 27149 27148 27147 +f 27147 27146 27154 +f 27154 27146 27151 +f 27154 27151 27153 +f 27153 27151 27152 +f 27150 27149 27154 +f 27154 27149 27147 +f 27150 27154 27153 +f 7678 16522 7677 +f 7677 16522 16517 +f 7677 16517 16516 +f 16516 16517 16527 +f 16516 16527 16514 +f 16514 16527 16513 +f 7730 16513 7775 +f 7775 16513 16512 +f 7775 16512 7773 +f 7773 16523 7771 +f 7771 16523 7765 +f 7765 16523 16510 +f 7765 16510 16509 +f 16509 16510 16524 +f 16509 16524 16521 +f 16521 16524 16520 +f 16521 16520 7685 +f 7683 16520 7681 +f 7681 16520 16519 +f 7681 16519 7679 +f 7685 7687 16521 +f 16521 16508 16509 +f 16509 16508 7689 +f 16509 7689 7765 +f 7765 7689 7693 +f 7729 7728 16514 +f 16514 7728 16515 +f 16514 16515 16516 +f 16516 16515 7727 +f 16516 7727 7677 +f 7677 7727 7725 +f 7728 7727 16515 +f 16517 16522 16518 +f 16518 16522 16519 +f 16518 16519 16525 +f 16525 16519 16520 +f 16525 16520 16524 +f 16517 16518 16527 +f 16527 16518 16526 +f 16527 16526 16513 +f 16513 16526 16512 +f 16526 16518 16525 +f 16526 16525 16511 +f 16511 16525 16524 +f 16511 16524 16510 +f 16523 16512 16511 +f 16511 16512 16526 +f 16523 16511 16510 +f 7676 7677 7724 +f 7724 7677 7725 +f 7467 16542 7469 +f 7469 16542 16537 +f 7469 16537 16536 +f 16536 16537 16547 +f 16536 16547 16534 +f 16534 16547 16533 +f 7582 16533 7734 +f 7734 16533 16532 +f 7734 16532 7733 +f 7733 16543 7723 +f 7723 16543 7724 +f 7724 16543 16530 +f 7724 16530 16529 +f 16529 16530 16544 +f 16529 16544 16541 +f 16541 16544 16540 +f 16541 16540 7459 +f 7459 16540 7461 +f 7461 16540 7463 +f 7463 16540 16539 +f 7459 7457 16541 +f 16541 7457 16528 +f 16541 16528 16529 +f 16529 16528 7667 +f 16529 7667 7724 +f 7724 7667 7676 +f 7457 7667 16528 +f 7584 7585 16534 +f 16534 7585 16535 +f 16534 16535 16536 +f 16536 16535 7665 +f 16536 7665 7469 +f 7469 7665 7662 +f 16537 16542 16538 +f 16538 16542 16539 +f 16538 16539 16545 +f 16545 16539 16540 +f 16545 16540 16544 +f 16537 16538 16547 +f 16547 16538 16546 +f 16547 16546 16533 +f 16533 16546 16532 +f 16546 16538 16545 +f 16546 16545 16531 +f 16531 16545 16544 +f 16531 16544 16530 +f 16543 16532 16531 +f 16531 16532 16546 +f 16543 16531 16530 +f 7569 16556 7722 +f 7722 16556 16555 +f 7722 16555 16554 +f 16554 16555 16553 +f 16554 16553 7735 +f 7735 16553 7645 +f 7645 16553 16552 +f 7647 16552 7649 +f 7649 16551 7651 +f 7651 16551 16550 +f 7651 16550 7652 +f 7652 16550 7661 +f 7661 16550 16549 +f 7661 16549 16548 +f 16548 16549 16559 +f 16548 16559 7560 +f 7563 16559 16558 +f 7567 16558 16557 +f 7568 16556 7569 +f 16548 7558 7661 +f 7558 7559 7661 +f 7735 7736 16554 +f 16554 7736 7722 +f 7736 7738 7722 +f 16555 16556 16562 +f 16562 16556 16557 +f 16562 16557 16561 +f 16561 16557 16558 +f 16561 16558 16560 +f 16560 16558 16559 +f 16560 16559 16549 +f 16552 16553 16562 +f 16562 16553 16555 +f 16552 16562 16561 +f 16551 16552 16561 +f 16551 16561 16560 +f 16550 16551 16560 +f 16550 16560 16549 +f 7698 16571 7696 +f 7696 16571 16570 +f 7696 16570 16569 +f 16569 16570 16568 +f 7762 16568 7755 +f 7755 16568 16567 +f 7755 16567 7753 +f 7753 16567 7746 +f 7741 16566 16565 +f 7740 16565 7739 +f 7739 16565 16564 +f 7739 16564 16563 +f 16563 16564 16574 +f 16563 16574 7719 +f 7719 16574 7715 +f 7715 16573 7705 +f 7705 16573 7703 +f 7703 16573 16572 +f 7703 16572 7702 +f 7702 16571 7698 +f 16563 7717 7739 +f 7717 7720 7739 +f 7762 7760 16569 +f 16569 7760 7696 +f 7760 7761 7696 +f 16570 16571 16577 +f 16577 16571 16572 +f 16577 16572 16576 +f 16576 16572 16573 +f 16576 16573 16575 +f 16575 16573 16574 +f 16575 16574 16564 +f 16567 16568 16577 +f 16577 16568 16570 +f 16567 16577 16576 +f 16566 16567 16576 +f 16566 16576 16575 +f 16565 16566 16575 +f 16565 16575 16564 +f 7778 7777 27155 +f 27155 7777 7776 +f 27155 7776 7680 +f 27155 7680 27156 +f 27156 7680 7682 +f 27156 7682 7684 +f 7684 7686 27156 +f 27156 7686 7688 +f 27156 7688 7690 +f 7690 7692 27156 +f 27156 7692 27157 +f 27156 27157 27155 +f 27155 27157 27158 +f 27155 27158 27159 +f 27159 27158 27160 +f 27159 27160 7794 +f 7794 27160 7796 +f 7796 27160 27161 +f 7796 27161 7799 +f 7799 27161 7801 +f 7801 27161 7802 +f 7802 27161 7804 +f 7804 27161 7811 +f 7811 27161 7812 +f 7812 27161 7813 +f 7813 27161 27162 +f 7813 27162 7814 +f 7814 27162 7816 +f 7816 27162 7710 +f 7710 27162 7709 +f 7709 27162 27163 +f 7709 27163 7708 +f 7708 27163 7706 +f 7706 27163 7704 +f 7704 27163 7701 +f 7701 27163 7699 +f 7699 27163 7700 +f 7700 27163 27157 +f 7700 27157 7692 +f 7794 7789 27159 +f 27159 7789 7787 +f 27159 7787 7785 +f 7785 7783 27159 +f 27159 7783 7781 +f 27159 7781 7780 +f 7780 7779 27159 +f 27159 7779 27155 +f 7779 7778 27155 +f 27157 27163 27158 +f 27158 27163 27162 +f 27158 27162 27160 +f 27160 27162 27161 +f 7772 27164 7769 +f 7769 27164 27165 +f 7769 27165 7768 +f 7768 27165 27166 +f 7768 27166 7759 +f 7759 27166 7758 +f 7758 27166 7756 +f 7756 27166 7754 +f 7754 27166 7747 +f 7747 27166 7748 +f 7748 27166 27167 +f 7748 27167 7749 +f 7749 27167 7751 +f 7751 27167 7752 +f 7752 27167 7840 +f 7840 27167 27168 +f 7840 27168 7841 +f 7841 27168 7850 +f 7850 27168 7861 +f 7850 7861 7853 +f 7853 7861 7855 +f 7772 7774 27164 +f 27164 7774 7732 +f 27164 7732 7731 +f 7731 7839 27164 +f 27164 7839 7838 +f 27164 7838 27169 +f 27169 7838 7817 +f 27169 7817 7818 +f 7818 7819 27169 +f 27169 7819 7821 +f 27169 7821 27170 +f 27170 7821 7822 +f 27170 7822 7823 +f 7823 7824 27170 +f 27170 7824 7826 +f 27170 7826 7828 +f 7828 7830 27170 +f 27170 7830 7834 +f 27170 7834 27171 +f 27171 7834 7837 +f 27171 7837 27168 +f 27168 7837 7860 +f 27168 7860 7861 +f 27167 27166 27165 +f 27165 27164 27172 +f 27172 27164 27169 +f 27172 27169 27171 +f 27171 27169 27170 +f 27168 27167 27172 +f 27172 27167 27165 +f 27168 27172 27171 +f 7794 7796 7834 +f 7834 7796 7837 +f 7779 16592 7778 +f 7778 16592 16587 +f 7778 16587 16586 +f 16586 16587 16597 +f 16586 16597 16584 +f 16584 16597 16583 +f 7823 16583 7824 +f 7824 16583 7826 +f 7826 16582 7828 +f 7830 16593 7834 +f 7834 16593 16580 +f 7834 16580 16579 +f 16579 16580 16594 +f 16579 16594 16591 +f 16591 16594 16590 +f 7781 16590 16589 +f 7781 16589 7780 +f 7780 16589 16592 +f 7780 16592 7779 +f 7785 7787 16591 +f 16591 16578 16579 +f 16579 16578 7789 +f 16579 7789 7834 +f 7834 7789 7794 +f 7823 7822 16584 +f 16584 7822 16585 +f 16584 16585 16586 +f 16586 16585 7821 +f 16586 7821 7778 +f 7778 7821 7819 +f 16587 16592 16588 +f 16588 16592 16589 +f 16588 16589 16595 +f 16595 16589 16590 +f 16595 16590 16594 +f 16587 16588 16597 +f 16597 16588 16596 +f 16597 16596 16583 +f 16583 16596 16582 +f 16596 16588 16595 +f 16596 16595 16581 +f 16581 16595 16594 +f 16581 16594 16580 +f 16593 16582 16581 +f 16581 16582 16596 +f 16593 16581 16580 +f 7777 7778 7818 +f 7818 7778 7819 +f 7690 16612 7692 +f 7692 16612 16607 +f 7692 16607 16606 +f 16606 16607 16617 +f 16606 16617 16604 +f 16604 16617 16603 +f 7732 16603 7731 +f 7731 16603 7839 +f 7839 16603 16602 +f 7817 16613 7818 +f 7818 16613 16600 +f 7818 16600 16599 +f 16599 16600 16614 +f 16599 16614 16611 +f 16611 16614 16610 +f 7682 7680 16611 +f 16611 16598 16599 +f 16599 16598 7776 +f 16599 7776 7818 +f 7818 7776 7777 +f 7680 7776 16598 +f 16604 16605 16606 +f 16606 16605 7772 +f 16606 7772 7692 +f 7692 7772 7769 +f 16607 16612 16608 +f 16608 16612 16609 +f 16608 16609 16615 +f 16615 16609 16610 +f 16615 16610 16614 +f 16607 16608 16617 +f 16617 16608 16616 +f 16617 16616 16603 +f 16603 16616 16602 +f 16616 16608 16615 +f 16616 16615 16601 +f 16601 16615 16614 +f 16601 16614 16600 +f 16613 16602 16601 +f 16601 16602 16616 +f 16613 16601 16600 +f 7710 16626 7816 +f 7816 16626 16625 +f 7816 16625 16624 +f 16624 16625 16623 +f 16624 16623 7748 +f 7747 16623 16622 +f 7747 16622 7754 +f 7756 16622 16621 +f 7756 16621 7758 +f 7758 16621 16620 +f 7759 16620 7768 +f 7768 16620 16619 +f 7768 16619 16618 +f 16618 16619 16629 +f 16618 16629 7701 +f 7708 16628 16627 +f 7708 16627 7709 +f 7709 16626 7710 +f 7701 7699 16618 +f 16618 7699 7768 +f 7699 7700 7768 +f 7748 7749 16624 +f 16624 7749 7816 +f 7749 7751 7816 +f 16625 16626 16632 +f 16632 16626 16627 +f 16632 16627 16631 +f 16631 16627 16628 +f 16631 16628 16630 +f 16630 16628 16629 +f 16630 16629 16619 +f 16622 16623 16632 +f 16632 16623 16625 +f 16622 16632 16631 +f 16621 16622 16631 +f 16621 16631 16630 +f 16620 16621 16630 +f 16620 16630 16619 +f 7816 7751 7814 +f 7799 16641 7796 +f 7796 16641 16640 +f 7796 16640 16639 +f 16639 16640 16638 +f 7855 16638 16637 +f 7850 16636 7841 +f 7841 16635 7840 +f 7840 16635 7752 +f 7752 16635 16634 +f 7752 16634 16633 +f 16633 16634 16644 +f 16633 16644 7812 +f 7812 16644 7811 +f 7811 16644 16643 +f 7804 16643 7802 +f 7802 16643 16642 +f 7802 16642 7801 +f 7801 16642 16641 +f 7801 16641 7799 +f 7812 7813 16633 +f 16633 7813 7752 +f 7813 7814 7752 +f 7861 7860 16639 +f 16639 7860 7796 +f 7860 7837 7796 +f 16640 16641 16647 +f 16647 16641 16642 +f 16647 16642 16646 +f 16646 16642 16643 +f 16646 16643 16645 +f 16645 16643 16644 +f 16645 16644 16634 +f 16637 16638 16647 +f 16647 16638 16640 +f 16637 16647 16646 +f 16636 16637 16646 +f 16636 16646 16645 +f 16635 16636 16645 +f 16635 16645 16634 +f 7875 7864 27173 +f 27173 7864 7675 +f 27173 7675 7674 +f 27173 7674 27174 +f 27174 7674 7782 +f 27174 7782 7784 +f 7784 7786 27174 +f 27174 7786 7788 +f 27174 7788 7790 +f 7790 7793 27174 +f 27174 7793 27175 +f 27174 27175 27173 +f 27173 27175 27176 +f 27173 27176 27177 +f 27177 27176 27178 +f 27177 27178 7888 +f 7888 27178 7890 +f 7890 27178 27179 +f 7890 27179 7893 +f 7893 27179 7895 +f 7895 27179 7896 +f 7896 27179 7898 +f 7898 27179 7903 +f 7903 27179 7902 +f 7902 27179 7901 +f 7901 27179 27180 +f 7901 27180 7904 +f 7904 27180 7917 +f 7917 27180 7808 +f 7808 27180 7809 +f 7809 27180 27181 +f 7809 27181 7924 +f 7924 27181 7805 +f 7805 27181 7803 +f 7803 27181 7800 +f 7800 27181 7798 +f 7798 27181 7797 +f 7797 27181 27175 +f 7797 27175 7793 +f 7888 7884 27177 +f 27177 7884 7882 +f 27177 7882 7881 +f 7881 7880 27177 +f 27177 7880 7878 +f 27177 7878 7877 +f 7877 7876 27177 +f 27177 7876 27173 +f 7876 7875 27173 +f 27175 27181 27176 +f 27176 27181 27180 +f 27176 27180 27178 +f 27178 27180 27179 +f 7831 27182 7833 +f 7833 27182 27183 +f 7833 27183 7930 +f 7930 27183 27184 +f 7930 27184 7859 +f 7859 27184 7858 +f 7858 27184 7856 +f 7856 27184 7854 +f 7854 27184 7851 +f 7851 27184 7852 +f 7852 27184 27185 +f 7852 27185 7931 +f 7931 27185 7948 +f 7948 27185 7949 +f 7949 27185 7950 +f 7950 27185 27186 +f 7950 27186 7951 +f 7951 27186 7958 +f 7958 27186 7963 +f 7958 7963 7960 +f 7960 7963 7961 +f 7831 7829 27182 +f 27182 7829 7827 +f 27182 7827 7825 +f 7825 7929 27182 +f 27182 7929 7928 +f 27182 7928 27187 +f 27187 7928 7926 +f 27187 7926 7927 +f 7927 7984 27187 +f 27187 7984 7983 +f 27187 7983 27188 +f 27188 7983 7982 +f 27188 7982 7981 +f 7981 7979 27188 +f 27188 7979 7978 +f 27188 7978 7976 +f 7976 7974 27188 +f 27188 7974 7972 +f 27188 7972 27189 +f 27189 7972 7968 +f 27189 7968 27186 +f 27186 7968 7966 +f 27186 7966 7963 +f 27185 27184 27183 +f 27183 27182 27190 +f 27190 27182 27187 +f 27190 27187 27189 +f 27189 27187 27188 +f 27186 27185 27190 +f 27190 27185 27183 +f 27186 27190 27189 +f 7972 7890 7968 +f 7876 16662 7875 +f 7875 16662 16657 +f 7875 16657 16656 +f 16656 16657 16667 +f 16656 16667 16654 +f 16654 16667 16653 +f 7978 16653 16652 +f 7978 16652 7976 +f 7974 16663 7972 +f 7972 16663 16650 +f 7972 16650 16649 +f 16649 16650 16664 +f 16649 16664 16661 +f 16661 16664 16660 +f 7878 16659 7877 +f 7877 16659 16662 +f 7877 16662 7876 +f 16661 16648 16649 +f 16649 16648 7884 +f 16649 7884 7972 +f 7972 7884 7888 +f 7882 7884 16648 +f 7981 7982 16654 +f 16654 7982 16655 +f 16654 16655 16656 +f 16656 16655 7983 +f 16656 7983 7875 +f 7875 7983 7984 +f 7982 7983 16655 +f 16657 16662 16658 +f 16658 16662 16659 +f 16658 16659 16665 +f 16665 16659 16660 +f 16665 16660 16664 +f 16657 16658 16667 +f 16667 16658 16666 +f 16667 16666 16653 +f 16653 16666 16652 +f 16666 16658 16665 +f 16666 16665 16651 +f 16651 16665 16664 +f 16651 16664 16650 +f 16663 16652 16651 +f 16651 16652 16666 +f 16663 16651 16650 +f 7927 7875 7984 +f 7790 16682 7793 +f 7793 16682 16677 +f 7793 16677 16676 +f 16676 16677 16687 +f 16676 16687 16674 +f 16674 16687 16673 +f 7827 16673 7825 +f 7929 16673 16672 +f 7928 16672 16683 +f 7926 16683 7927 +f 7927 16683 16670 +f 7927 16670 16669 +f 16669 16670 16684 +f 16669 16684 16681 +f 16681 16684 16680 +f 7782 16680 7784 +f 16681 16668 16669 +f 16669 16668 7675 +f 16669 7675 7927 +f 7927 7675 7864 +f 7674 7675 16668 +f 16674 16675 16676 +f 16676 16675 7831 +f 16676 7831 7793 +f 7793 7831 7833 +f 16677 16682 16678 +f 16678 16682 16679 +f 16678 16679 16685 +f 16685 16679 16680 +f 16685 16680 16684 +f 16677 16678 16687 +f 16687 16678 16686 +f 16687 16686 16673 +f 16673 16686 16672 +f 16686 16678 16685 +f 16686 16685 16671 +f 16671 16685 16684 +f 16671 16684 16670 +f 16683 16672 16671 +f 16671 16672 16686 +f 16683 16671 16670 +f 7793 7833 7797 +f 7797 7833 7930 +f 7808 16696 7917 +f 7917 16696 16695 +f 7917 16695 16694 +f 16694 16695 16693 +f 7856 16691 7858 +f 7858 16691 16690 +f 7858 16690 7859 +f 7859 16690 7930 +f 7930 16690 16689 +f 7930 16689 16688 +f 16688 16689 16699 +f 16688 16699 7800 +f 7800 16699 7803 +f 7924 16697 7809 +f 7809 16696 7808 +f 7800 7798 16688 +f 16688 7798 7930 +f 7798 7797 7930 +f 16694 7931 7917 +f 7931 7948 7917 +f 16695 16696 16702 +f 16702 16696 16697 +f 16702 16697 16701 +f 16701 16697 16698 +f 16701 16698 16700 +f 16700 16698 16699 +f 16700 16699 16689 +f 16692 16693 16702 +f 16702 16693 16695 +f 16692 16702 16701 +f 16691 16692 16701 +f 16691 16701 16700 +f 16690 16691 16700 +f 16690 16700 16689 +f 7917 7948 7904 +f 7904 7948 7949 +f 7893 16711 7890 +f 7890 16711 16710 +f 7890 16710 16709 +f 16709 16710 16708 +f 16709 16708 7963 +f 7963 16708 7961 +f 7961 16708 16707 +f 7961 16707 7960 +f 7960 16707 7958 +f 7958 16707 16706 +f 7958 16706 7951 +f 7951 16705 7950 +f 7950 16705 7949 +f 7949 16705 16704 +f 7949 16704 16703 +f 16703 16704 16714 +f 7896 16712 7895 +f 7895 16712 16711 +f 7895 16711 7893 +f 16703 7901 7949 +f 7901 7904 7949 +f 7963 7966 16709 +f 16709 7966 7890 +f 7966 7968 7890 +f 16710 16711 16717 +f 16717 16711 16712 +f 16717 16712 16716 +f 16716 16712 16713 +f 16716 16713 16715 +f 16715 16713 16714 +f 16715 16714 16704 +f 16707 16708 16717 +f 16717 16708 16710 +f 16707 16717 16716 +f 16706 16707 16716 +f 16706 16716 16715 +f 16705 16706 16715 +f 16705 16715 16704 +f 7990 7989 27191 +f 27191 7989 7988 +f 27191 7988 7987 +f 27191 7987 27192 +f 27192 7987 7986 +f 27192 7986 7985 +f 7985 7879 27192 +f 27192 7879 7883 +f 27192 7883 7885 +f 7885 7887 27192 +f 27192 7887 27193 +f 27192 27193 27191 +f 27191 27193 27194 +f 27191 27194 27195 +f 27195 27194 27196 +f 27195 27196 8006 +f 8006 27196 8008 +f 8008 27196 27197 +f 8008 27197 8010 +f 8010 27197 8012 +f 8012 27197 8014 +f 8014 27197 8016 +f 8016 27197 8018 +f 8018 27197 8019 +f 8019 27197 7912 +f 7912 27197 27198 +f 7912 27198 7911 +f 7911 27198 7909 +f 7909 27198 7907 +f 7907 27198 8020 +f 8020 27198 27199 +f 8020 27199 8022 +f 8022 27199 8023 +f 8023 27199 7897 +f 7897 27199 7894 +f 7894 27199 7892 +f 7892 27199 7891 +f 7891 27199 27193 +f 7891 27193 7887 +f 8006 8004 27195 +f 27195 8004 8002 +f 27195 8002 8000 +f 8000 7998 27195 +f 27195 7998 7996 +f 27195 7996 7994 +f 7994 7991 27195 +f 27195 7991 27191 +f 7991 7990 27191 +f 27193 27199 27194 +f 27194 27199 27198 +f 27194 27198 27196 +f 27196 27198 27197 +f 7973 27200 7971 +f 7971 27200 27201 +f 7971 27201 7969 +f 7969 27201 27202 +f 7969 27202 7967 +f 7967 27202 7962 +f 7962 27202 7959 +f 7959 27202 8029 +f 8029 27202 8030 +f 8030 27202 8031 +f 8031 27202 27203 +f 8031 27203 8032 +f 8032 27203 8033 +f 8033 27203 8034 +f 8034 27203 8035 +f 8035 27203 27204 +f 8035 27204 8036 +f 8036 27204 3458 +f 3458 27204 3456 +f 3456 27204 3454 +f 3454 27204 3453 +f 3453 27204 3449 +f 3449 27204 3448 +f 3448 27204 27205 +f 3448 27205 3444 +f 3444 27205 27206 +f 3444 27206 3442 +f 3442 27206 3440 +f 3440 27206 3438 +f 3438 27206 3436 +f 3436 27206 3434 +f 3434 27206 3432 +f 3432 27206 3430 +f 3430 27206 27207 +f 3430 27207 3428 +f 3428 27207 8024 +f 8024 27207 8025 +f 8025 27207 8026 +f 8026 27207 27200 +f 8026 27200 8027 +f 8027 27200 8028 +f 8028 27200 7977 +f 7977 27200 7975 +f 7975 27200 7973 +f 27203 27202 27201 +f 27201 27200 27208 +f 27208 27200 27207 +f 27208 27207 27205 +f 27205 27207 27206 +f 27204 27203 27208 +f 27208 27203 27201 +f 27204 27208 27205 +f 7991 16726 7990 +f 7990 16726 16725 +f 7990 16725 16724 +f 16724 16725 16723 +f 16724 16723 3432 +f 3434 16722 3436 +f 3436 16722 3438 +f 3438 16722 16721 +f 3442 16720 3444 +f 3444 16720 16719 +f 3444 16719 16718 +f 16718 16719 16729 +f 8000 16729 16728 +f 8000 16728 7998 +f 7994 16726 7991 +f 16718 8004 3444 +f 8004 8006 3444 +f 16724 3430 7990 +f 3430 3428 7990 +f 16725 16726 16732 +f 16732 16726 16727 +f 16732 16727 16731 +f 16731 16727 16728 +f 16731 16728 16730 +f 16730 16728 16729 +f 16730 16729 16719 +f 16722 16723 16732 +f 16732 16723 16725 +f 16722 16732 16731 +f 16721 16722 16731 +f 16721 16731 16730 +f 16720 16721 16730 +f 16720 16730 16719 +f 7989 7990 8024 +f 8024 7990 3428 +f 7885 16741 7887 +f 7887 16741 16740 +f 7887 16740 16739 +f 16739 16740 16738 +f 7975 16738 7977 +f 7977 16738 16737 +f 8028 16737 8027 +f 8027 16736 8026 +f 8026 16736 16735 +f 8025 16735 8024 +f 8024 16735 16734 +f 8024 16734 16733 +f 16733 16734 16744 +f 7987 16744 7986 +f 7986 16744 16743 +f 7987 7988 16733 +f 16733 7988 8024 +f 7988 7989 8024 +f 7975 7973 16739 +f 16739 7973 7887 +f 7973 7971 7887 +f 16740 16741 16747 +f 16747 16741 16742 +f 16747 16742 16746 +f 16746 16742 16743 +f 16746 16743 16745 +f 16745 16743 16744 +f 16745 16744 16734 +f 16737 16738 16747 +f 16747 16738 16740 +f 16737 16747 16746 +f 16736 16737 16746 +f 16736 16746 16745 +f 16735 16736 16745 +f 16735 16745 16734 +f 7887 7971 7891 +f 7891 7971 7969 +f 7907 16756 7909 +f 7909 16756 16755 +f 7909 16755 16754 +f 16754 16755 16753 +f 16754 16753 8031 +f 8031 16753 8030 +f 8030 16752 8029 +f 7962 16750 7967 +f 7967 16750 7969 +f 7969 16750 16749 +f 7969 16749 16748 +f 16748 16749 16759 +f 7897 16759 16758 +f 7897 16758 8023 +f 8023 16758 8022 +f 8022 16758 16757 +f 8020 16757 16756 +f 8020 16756 7907 +f 16748 7892 7969 +f 7892 7891 7969 +f 16754 8032 7909 +f 8032 8033 7909 +f 16755 16756 16762 +f 16762 16756 16757 +f 16762 16757 16761 +f 16761 16757 16758 +f 16761 16758 16760 +f 16760 16758 16759 +f 16760 16759 16749 +f 16752 16753 16762 +f 16762 16753 16755 +f 16752 16762 16761 +f 16751 16752 16761 +f 16751 16761 16760 +f 16750 16751 16760 +f 16750 16760 16749 +f 7909 8033 7911 +f 8010 16771 8008 +f 8008 16771 16770 +f 8008 16770 16769 +f 16769 16770 16768 +f 8035 16765 8034 +f 8034 16765 16764 +f 8034 16764 16763 +f 16763 16764 16774 +f 16763 16774 8019 +f 8018 16773 8016 +f 8014 16773 16772 +f 8012 16772 16771 +f 16763 7912 8034 +f 7912 7911 8034 +f 3453 3449 16769 +f 16769 3449 8008 +f 3449 3448 8008 +f 16770 16771 16777 +f 16777 16771 16772 +f 16777 16772 16776 +f 16776 16772 16773 +f 16776 16773 16775 +f 16775 16773 16774 +f 16775 16774 16764 +f 16767 16768 16777 +f 16777 16768 16770 +f 16767 16777 16776 +f 16766 16767 16776 +f 16766 16776 16775 +f 16765 16766 16775 +f 16765 16775 16764 +f 8037 7993 27209 +f 27209 7993 7992 +f 27209 7992 7995 +f 27209 7995 27210 +f 27210 7995 7997 +f 27210 7997 7999 +f 7999 8001 27210 +f 27210 8001 8003 +f 27210 8003 8005 +f 8005 8007 27210 +f 27210 8007 27211 +f 27210 27211 27209 +f 27209 27211 27212 +f 27209 27212 27213 +f 27213 27212 27214 +f 27213 27214 8052 +f 8052 27214 8054 +f 8054 27214 27215 +f 8054 27215 8056 +f 8056 27215 8058 +f 8058 27215 8060 +f 8060 27215 8070 +f 8070 27215 8071 +f 8071 27215 8072 +f 8072 27215 8066 +f 8066 27215 27216 +f 8066 27216 8068 +f 8068 27216 8069 +f 8069 27216 7913 +f 7913 27216 7915 +f 7915 27216 27217 +f 7915 27217 7916 +f 7916 27217 8017 +f 8017 27217 8015 +f 8015 27217 8013 +f 8013 27217 8011 +f 8011 27217 8009 +f 8009 27217 27211 +f 8009 27211 8007 +f 8052 8050 27213 +f 27213 8050 8048 +f 27213 8048 8046 +f 8046 8044 27213 +f 27213 8044 8042 +f 27213 8042 8040 +f 8040 8038 27213 +f 27213 8038 27209 +f 8038 8037 27209 +f 27211 27217 27212 +f 27212 27217 27216 +f 27212 27216 27214 +f 27214 27216 27215 +f 3443 27218 3445 +f 3445 27218 27219 +f 3445 27219 3447 +f 3447 27219 27220 +f 3447 27220 3450 +f 3450 27220 3452 +f 3452 27220 3455 +f 3455 27220 3457 +f 3457 27220 3459 +f 3459 27220 3461 +f 3461 27220 27221 +f 3461 27221 3462 +f 3462 27221 8077 +f 8077 27221 8082 +f 8082 27221 8083 +f 8083 27221 27222 +f 8083 27222 8084 +f 8084 27222 8085 +f 8085 27222 8089 +f 8089 27222 8091 +f 8091 27222 8093 +f 8093 27222 8095 +f 8095 27222 8098 +f 8098 27222 27223 +f 8098 27223 8100 +f 8100 27223 27224 +f 8100 27224 8103 +f 8103 27224 8105 +f 8105 27224 8107 +f 8107 27224 8109 +f 8109 27224 8111 +f 8111 27224 8113 +f 8113 27224 8115 +f 8115 27224 27225 +f 8115 27225 8116 +f 8116 27225 3429 +f 3429 27225 3431 +f 3431 27225 3433 +f 3433 27225 27218 +f 3433 27218 3435 +f 3435 27218 3437 +f 3437 27218 3439 +f 3439 27218 3441 +f 3441 27218 3443 +f 27221 27220 27219 +f 27219 27218 27226 +f 27226 27218 27225 +f 27226 27225 27223 +f 27223 27225 27224 +f 27222 27221 27226 +f 27226 27221 27219 +f 27222 27226 27223 +f 8100 8054 8098 +f 8038 16786 8037 +f 8037 16786 16785 +f 8037 16785 16784 +f 16784 16785 16783 +f 8113 16783 8111 +f 8107 16781 8105 +f 8103 16780 8100 +f 8100 16780 16779 +f 8100 16779 16778 +f 16778 16779 16789 +f 8046 16788 8044 +f 8044 16788 8042 +f 8042 16788 16787 +f 8042 16787 8040 +f 8048 8050 16778 +f 16778 8050 8100 +f 8050 8052 8100 +f 8113 8115 16784 +f 16784 8115 8037 +f 8115 8116 8037 +f 16785 16786 16792 +f 16792 16786 16787 +f 16792 16787 16791 +f 16791 16787 16788 +f 16791 16788 16790 +f 16790 16788 16789 +f 16790 16789 16779 +f 16782 16783 16792 +f 16792 16783 16785 +f 16782 16792 16791 +f 16781 16782 16791 +f 16781 16791 16790 +f 16780 16781 16790 +f 16780 16790 16779 +f 3429 8037 8116 +f 8005 16801 8007 +f 8007 16801 16800 +f 8007 16800 16799 +f 16799 16800 16798 +f 16799 16798 3441 +f 3433 16795 3431 +f 3431 16795 3429 +f 3429 16795 16794 +f 3429 16794 16793 +f 16793 16794 16804 +f 16793 16804 7995 +f 7997 16803 7999 +f 7995 7992 16793 +f 16793 7992 3429 +f 7992 7993 3429 +f 16799 3443 8007 +f 3443 3445 8007 +f 16800 16801 16807 +f 16807 16801 16802 +f 16807 16802 16806 +f 16806 16802 16803 +f 16806 16803 16805 +f 16805 16803 16804 +f 16805 16804 16794 +f 16797 16798 16807 +f 16807 16798 16800 +f 16797 16807 16806 +f 16796 16797 16806 +f 16796 16806 16805 +f 16795 16796 16805 +f 16795 16805 16794 +f 7913 16816 8069 +f 8069 16816 16815 +f 8069 16815 16814 +f 16814 16815 16813 +f 3459 16812 3457 +f 3457 16812 3455 +f 3455 16812 16811 +f 3455 16811 3452 +f 3452 16811 16810 +f 3452 16810 3450 +f 3450 16810 3447 +f 3447 16810 16809 +f 3447 16809 16808 +f 16808 16809 16819 +f 8013 16819 8015 +f 8015 16819 16818 +f 8015 16818 8017 +f 8017 16818 7916 +f 7916 16817 7915 +f 7915 16817 16816 +f 8013 8011 16808 +f 16808 8011 3447 +f 8011 8009 3447 +f 3461 3462 16814 +f 16814 3462 8069 +f 3462 8077 8069 +f 16815 16816 16822 +f 16822 16816 16817 +f 16822 16817 16821 +f 16821 16817 16818 +f 16821 16818 16820 +f 16820 16818 16819 +f 16820 16819 16809 +f 16812 16813 16822 +f 16822 16813 16815 +f 16812 16822 16821 +f 16811 16812 16821 +f 16811 16821 16820 +f 16810 16811 16820 +f 16810 16820 16809 +f 8068 8077 8082 +f 8056 16831 8054 +f 8054 16831 16830 +f 8054 16830 16829 +f 16829 16830 16828 +f 8093 16828 8091 +f 8091 16828 16827 +f 8091 16827 8089 +f 8089 16827 8085 +f 8085 16826 8084 +f 8084 16825 8083 +f 8083 16825 8082 +f 8082 16825 16824 +f 8082 16824 16823 +f 16823 16824 16834 +f 8072 16834 8071 +f 8071 16834 16833 +f 8071 16833 8070 +f 8060 16833 16832 +f 8058 16831 8056 +f 8072 8066 16823 +f 16823 8066 8082 +f 8066 8068 8082 +f 16829 8095 8054 +f 8095 8098 8054 +f 16830 16831 16837 +f 16837 16831 16832 +f 16837 16832 16836 +f 16836 16832 16833 +f 16836 16833 16835 +f 16835 16833 16834 +f 16835 16834 16824 +f 16827 16828 16837 +f 16837 16828 16830 +f 16827 16837 16836 +f 16826 16827 16836 +f 16826 16836 16835 +f 16825 16826 16835 +f 16825 16835 16824 +f 8118 8117 27227 +f 27227 8117 8039 +f 27227 8039 8041 +f 27227 8041 27228 +f 27228 8041 8043 +f 27228 8043 8045 +f 8045 8047 27228 +f 27228 8047 8049 +f 27228 8049 8051 +f 8051 8053 27228 +f 27228 8053 27229 +f 27228 27229 27227 +f 27227 27229 27230 +f 27227 27230 27231 +f 27231 27230 27232 +f 27231 27232 8132 +f 8132 27232 8134 +f 8134 27232 27233 +f 8134 27233 8136 +f 8136 27233 8138 +f 8138 27233 8140 +f 8140 27233 8148 +f 8148 27233 8149 +f 8149 27233 8146 +f 8146 27233 8147 +f 8147 27233 27234 +f 8147 27234 8150 +f 8150 27234 8154 +f 8154 27234 8155 +f 8155 27234 8065 +f 8065 27234 27235 +f 8065 27235 8064 +f 8064 27235 8063 +f 8063 27235 8061 +f 8061 27235 8059 +f 8059 27235 8057 +f 8057 27235 8055 +f 8055 27235 27229 +f 8055 27229 8053 +f 8132 8130 27231 +f 27231 8130 8128 +f 27231 8128 8126 +f 8126 8124 27231 +f 27231 8124 8122 +f 27231 8122 8121 +f 8121 8119 27231 +f 27231 8119 27227 +f 8119 8118 27227 +f 27229 27235 27230 +f 27230 27235 27234 +f 27230 27234 27232 +f 27232 27234 27233 +f 8102 27236 8101 +f 8101 27236 27237 +f 8101 27237 8097 +f 8097 27237 27238 +f 8097 27238 8096 +f 8096 27238 8092 +f 8092 27238 8090 +f 8090 27238 8088 +f 8088 27238 8086 +f 8086 27238 8087 +f 8087 27238 27239 +f 8087 27239 8163 +f 8163 27239 8164 +f 8164 27239 8166 +f 8166 27239 8167 +f 8167 27239 27240 +f 8167 27240 8168 +f 8168 27240 8175 +f 8175 27240 8179 +f 8179 27240 8181 +f 8181 27240 8183 +f 8183 27240 8203 +f 8203 27240 8187 +f 8187 27240 27241 +f 8187 27241 8189 +f 8189 27241 27242 +f 8189 27242 8192 +f 8192 27242 8194 +f 8194 27242 8196 +f 8196 27242 8198 +f 8198 27242 8200 +f 8200 27242 8204 +f 8204 27242 8205 +f 8205 27242 27243 +f 8205 27243 8161 +f 8161 27243 8162 +f 8162 27243 8114 +f 8114 27243 8112 +f 8112 27243 27236 +f 8112 27236 8110 +f 8110 27236 8108 +f 8108 27236 8106 +f 8106 27236 8104 +f 8104 27236 8102 +f 27239 27238 27237 +f 27237 27236 27244 +f 27244 27236 27243 +f 27244 27243 27241 +f 27241 27243 27242 +f 27240 27239 27244 +f 27244 27239 27237 +f 27240 27244 27241 +f 8119 16846 8118 +f 8118 16846 16845 +f 8118 16845 16844 +f 16844 16845 16843 +f 16844 16843 8204 +f 8198 16842 8196 +f 8196 16842 16841 +f 8192 16840 8189 +f 8189 16840 16839 +f 8189 16839 16838 +f 16838 16839 16849 +f 16838 16849 8128 +f 8128 16849 8126 +f 8126 16849 16848 +f 8126 16848 8124 +f 8124 16848 8122 +f 8122 16848 16847 +f 8122 16847 8121 +f 8121 16847 16846 +f 8121 16846 8119 +f 8128 8130 16838 +f 16838 8130 8189 +f 8130 8132 8189 +f 8204 8205 16844 +f 16844 8205 8118 +f 8205 8161 8118 +f 16845 16846 16852 +f 16852 16846 16847 +f 16852 16847 16851 +f 16851 16847 16848 +f 16851 16848 16850 +f 16850 16848 16849 +f 16850 16849 16839 +f 16842 16843 16852 +f 16852 16843 16845 +f 16842 16852 16851 +f 16841 16842 16851 +f 16841 16851 16850 +f 16840 16841 16850 +f 16840 16850 16839 +f 8117 8118 8162 +f 8051 16861 8053 +f 8053 16861 16860 +f 8053 16860 16859 +f 16859 16860 16858 +f 8104 16858 8106 +f 8112 16856 16855 +f 8114 16855 8162 +f 8162 16855 16854 +f 8162 16854 16853 +f 16853 16854 16864 +f 16853 16864 8041 +f 8041 16864 8043 +f 8043 16863 8045 +f 8045 16863 8047 +f 8047 16863 16862 +f 8041 8039 16853 +f 16853 8039 8162 +f 8039 8117 8162 +f 16859 8102 8053 +f 8102 8101 8053 +f 16860 16861 16867 +f 16867 16861 16862 +f 16867 16862 16866 +f 16866 16862 16863 +f 16866 16863 16865 +f 16865 16863 16864 +f 16865 16864 16854 +f 16857 16858 16867 +f 16867 16858 16860 +f 16857 16867 16866 +f 16856 16857 16866 +f 16856 16866 16865 +f 16855 16856 16865 +f 16855 16865 16854 +f 8155 16876 8154 +f 8154 16876 16875 +f 8154 16875 16874 +f 16874 16875 16873 +f 8086 16873 16872 +f 8086 16872 8088 +f 8088 16872 8090 +f 8090 16872 16871 +f 8090 16871 8092 +f 8092 16871 16870 +f 8092 16870 8096 +f 8096 16870 8097 +f 8097 16870 16869 +f 8097 16869 16868 +f 16868 16869 16879 +f 8064 16877 8065 +f 16868 8057 8097 +f 8057 8055 8097 +f 8087 8163 16874 +f 16874 8163 8154 +f 8163 8164 8154 +f 16875 16876 16882 +f 16882 16876 16877 +f 16882 16877 16881 +f 16881 16877 16878 +f 16881 16878 16880 +f 16880 16878 16879 +f 16880 16879 16869 +f 16872 16873 16882 +f 16882 16873 16875 +f 16872 16882 16881 +f 16871 16872 16881 +f 16871 16881 16880 +f 16870 16871 16880 +f 16870 16880 16869 +f 8150 8164 8166 +f 8136 16891 8134 +f 8134 16891 16890 +f 8134 16890 16889 +f 16889 16890 16888 +f 16889 16888 8183 +f 8181 16887 8179 +f 8179 16887 8175 +f 8167 16885 8166 +f 8166 16885 16884 +f 8166 16884 16883 +f 16883 16884 16894 +f 16883 16894 8146 +f 8146 16894 8149 +f 8149 16894 16893 +f 8149 16893 8148 +f 8148 16893 8140 +f 8140 16893 16892 +f 8138 16892 16891 +f 16883 8147 8166 +f 8147 8150 8166 +f 8183 8203 16889 +f 16889 8203 8134 +f 8203 8187 8134 +f 16890 16891 16897 +f 16897 16891 16892 +f 16897 16892 16896 +f 16896 16892 16893 +f 16896 16893 16895 +f 16895 16893 16894 +f 16895 16894 16884 +f 16887 16888 16897 +f 16897 16888 16890 +f 16887 16897 16896 +f 16886 16887 16896 +f 16886 16896 16895 +f 16885 16886 16895 +f 16885 16895 16884 +f 8208 8207 27245 +f 27245 8207 8206 +f 27245 8206 8120 +f 27245 8120 27246 +f 27246 8120 8123 +f 27246 8123 8125 +f 8125 8127 27246 +f 27246 8127 8129 +f 27246 8129 8131 +f 8131 8133 27246 +f 27246 8133 27247 +f 27246 27247 27245 +f 27245 27247 27248 +f 27245 27248 27249 +f 27249 27248 27250 +f 27249 27250 8216 +f 8216 27250 8218 +f 8218 27250 27251 +f 8218 27251 8219 +f 8219 27251 8222 +f 8222 27251 8223 +f 8223 27251 8224 +f 8224 27251 8227 +f 8227 27251 8228 +f 8228 27251 8229 +f 8229 27251 27252 +f 8229 27252 8246 +f 8246 27252 8247 +f 8247 27252 8152 +f 8152 27252 8145 +f 8145 27252 27253 +f 8145 27253 8144 +f 8144 27253 8143 +f 8143 27253 8141 +f 8141 27253 8139 +f 8139 27253 8137 +f 8137 27253 8135 +f 8135 27253 27247 +f 8135 27247 8133 +f 8216 8215 27249 +f 27249 8215 8213 +f 27249 8213 8211 +f 8211 8210 27249 +f 27249 8210 7874 +f 27249 7874 7873 +f 7873 8209 27249 +f 27249 8209 27245 +f 8209 8208 27245 +f 27247 27253 27248 +f 27248 27253 27252 +f 27248 27252 27250 +f 27250 27252 27251 +f 8191 27254 8190 +f 8190 27254 27255 +f 8190 27255 8186 +f 8186 27255 27256 +f 8186 27256 8184 +f 8184 27256 8182 +f 8182 27256 8180 +f 8180 27256 8178 +f 8178 27256 8176 +f 8176 27256 8177 +f 8177 27256 27257 +f 8177 27257 8171 +f 8171 27257 8173 +f 8173 27257 8174 +f 8174 27257 8262 +f 8262 27257 27258 +f 8262 27258 8268 +f 8268 27258 8266 +f 8266 27258 8267 +f 8267 27258 3474 +f 3474 27258 3475 +f 3475 27258 8270 +f 8270 27258 3470 +f 3470 27258 27259 +f 3470 27259 3465 +f 3465 27259 27260 +f 3465 27260 3469 +f 3469 27260 3468 +f 3468 27260 3467 +f 3467 27260 3463 +f 3463 27260 3464 +f 3464 27260 8273 +f 8273 27260 8274 +f 8274 27260 27261 +f 8274 27261 8260 +f 8260 27261 8261 +f 8261 27261 8202 +f 8202 27261 8201 +f 8201 27261 27254 +f 8201 27254 8199 +f 8199 27254 8197 +f 8197 27254 8195 +f 8195 27254 8193 +f 8193 27254 8191 +f 27257 27256 27255 +f 27255 27254 27262 +f 27262 27254 27261 +f 27262 27261 27259 +f 27259 27261 27260 +f 27258 27257 27262 +f 27262 27257 27255 +f 27258 27262 27259 +f 8216 8218 3465 +f 3465 8218 3470 +f 8209 16906 8208 +f 8208 16906 16905 +f 8208 16905 16904 +f 16904 16905 16903 +f 3464 16903 16902 +f 3464 16902 3463 +f 3467 16902 16901 +f 3467 16901 3468 +f 3468 16901 16900 +f 3469 16900 3465 +f 3465 16900 16899 +f 3465 16899 16898 +f 16898 16899 16909 +f 8213 16909 8211 +f 8211 16909 16908 +f 8211 16908 8210 +f 8210 16908 7874 +f 7874 16908 16907 +f 7874 16907 7873 +f 7873 16906 8209 +f 8213 8215 16898 +f 16898 8215 3465 +f 8215 8216 3465 +f 8273 8274 16904 +f 16904 8274 8208 +f 8274 8260 8208 +f 16905 16906 16912 +f 16912 16906 16907 +f 16912 16907 16911 +f 16911 16907 16908 +f 16911 16908 16910 +f 16910 16908 16909 +f 16910 16909 16899 +f 16902 16903 16912 +f 16912 16903 16905 +f 16902 16912 16911 +f 16901 16902 16911 +f 16901 16911 16910 +f 16900 16901 16910 +f 16900 16910 16899 +f 8207 8208 8261 +f 8131 16921 8133 +f 8133 16921 16920 +f 8133 16920 16919 +f 16919 16920 16918 +f 16919 16918 8193 +f 8201 16916 16915 +f 8202 16915 8261 +f 8261 16915 16914 +f 8261 16914 16913 +f 16913 16914 16924 +f 8123 16924 16923 +f 8123 16923 8125 +f 8125 16923 8127 +f 8127 16923 16922 +f 8127 16922 8129 +f 8129 16922 16921 +f 8120 8206 16913 +f 16913 8206 8261 +f 8206 8207 8261 +f 16919 8191 8133 +f 8191 8190 8133 +f 16920 16921 16927 +f 16927 16921 16922 +f 16927 16922 16926 +f 16926 16922 16923 +f 16926 16923 16925 +f 16925 16923 16924 +f 16925 16924 16914 +f 16917 16918 16927 +f 16927 16918 16920 +f 16917 16927 16926 +f 16916 16917 16926 +f 16916 16926 16925 +f 16915 16916 16925 +f 16915 16925 16914 +f 8133 8190 8135 +f 8135 8190 8186 +f 8152 16936 8247 +f 8247 16936 16935 +f 8247 16935 16934 +f 16934 16935 16933 +f 16934 16933 8177 +f 8184 16930 8186 +f 8186 16930 16929 +f 8186 16929 16928 +f 16928 16929 16939 +f 16928 16939 8139 +f 8139 16939 8141 +f 8141 16939 16938 +f 8141 16938 8143 +f 8143 16938 8144 +f 8144 16938 16937 +f 8144 16937 8145 +f 8145 16937 16936 +f 8145 16936 8152 +f 16928 8137 8186 +f 8137 8135 8186 +f 8177 8171 16934 +f 16934 8171 8247 +f 8171 8173 8247 +f 16935 16936 16942 +f 16942 16936 16937 +f 16942 16937 16941 +f 16941 16937 16938 +f 16941 16938 16940 +f 16940 16938 16939 +f 16940 16939 16929 +f 16932 16933 16942 +f 16942 16933 16935 +f 16932 16942 16941 +f 16931 16932 16941 +f 16931 16941 16940 +f 16930 16931 16940 +f 16930 16940 16929 +f 8219 16951 8218 +f 8218 16951 16950 +f 8218 16950 16949 +f 16949 16950 16948 +f 3475 16948 3474 +f 3474 16948 16947 +f 3474 16947 8267 +f 8267 16947 8266 +f 8266 16947 16946 +f 8262 16945 8174 +f 8174 16945 16944 +f 8174 16944 16943 +f 16943 16944 16954 +f 8228 16954 8227 +f 8224 16953 8223 +f 8223 16953 16952 +f 8222 16952 16951 +f 16943 8229 8174 +f 8229 8246 8174 +f 3475 8270 16949 +f 16949 8270 8218 +f 8270 3470 8218 +f 16950 16951 16957 +f 16957 16951 16952 +f 16957 16952 16956 +f 16956 16952 16953 +f 16956 16953 16955 +f 16955 16953 16954 +f 16955 16954 16944 +f 16947 16948 16957 +f 16957 16948 16950 +f 16947 16957 16956 +f 16946 16947 16956 +f 16946 16956 16955 +f 16945 16946 16955 +f 16945 16955 16944 +f 7033 7032 27263 +f 27263 7032 7031 +f 27263 7031 7023 +f 27263 7023 27264 +f 27264 7023 6908 +f 27264 6908 6909 +f 6909 6912 27264 +f 27264 6912 6914 +f 27264 6914 6916 +f 6916 6918 27264 +f 27264 6918 27265 +f 27264 27265 27263 +f 27263 27265 27266 +f 27263 27266 27267 +f 27267 27266 27268 +f 27267 27268 7045 +f 7045 27268 7048 +f 7048 27268 27269 +f 7048 27269 7051 +f 7051 27269 7055 +f 7055 27269 7056 +f 7056 27269 5651 +f 5651 27269 5650 +f 5650 27269 5649 +f 5649 27269 5648 +f 5648 27269 27270 +f 5648 27270 5646 +f 5646 27270 7058 +f 7058 27270 5497 +f 5497 27270 5498 +f 5498 27270 27271 +f 5498 27271 7059 +f 7059 27271 6861 +f 6861 27271 6862 +f 6862 27271 6923 +f 6923 27271 6921 +f 6921 27271 6920 +f 6920 27271 27265 +f 6920 27265 6918 +f 7045 7044 27267 +f 27267 7044 7043 +f 27267 7043 7040 +f 7040 7038 27267 +f 27267 7038 7036 +f 27267 7036 7035 +f 7035 7034 27267 +f 27267 7034 27263 +f 7034 7033 27263 +f 27265 27271 27266 +f 27266 27271 27270 +f 27266 27270 27268 +f 27268 27270 27269 +f 7011 27272 7009 +f 7009 27272 27273 +f 7009 27273 7008 +f 7008 27273 27274 +f 7008 27274 7003 +f 7003 27274 7001 +f 7001 27274 6999 +f 6999 27274 6997 +f 6997 27274 6995 +f 6995 27274 7064 +f 7064 27274 27275 +f 7064 27275 7065 +f 7065 27275 7067 +f 7067 27275 7068 +f 7068 27275 7070 +f 7070 27275 27276 +f 7070 27276 7071 +f 7071 27276 7073 +f 7073 27276 7085 +f 7073 7085 7075 +f 7075 7085 7077 +f 7011 7012 27272 +f 27272 7012 7014 +f 27272 7014 7016 +f 7016 7018 27272 +f 27272 7018 7063 +f 27272 7063 27277 +f 27277 7063 7062 +f 27277 7062 7061 +f 7061 7060 27277 +f 27277 7060 7102 +f 27277 7102 27278 +f 27278 7102 7099 +f 27278 7099 7098 +f 7098 7097 27278 +f 27278 7097 7095 +f 27278 7095 7093 +f 7093 7090 27278 +f 27278 7090 7086 +f 27278 7086 27279 +f 27279 7086 7083 +f 27279 7083 27276 +f 27276 7083 7082 +f 27276 7082 7085 +f 27275 27274 27273 +f 27273 27272 27280 +f 27280 27272 27277 +f 27280 27277 27279 +f 27279 27277 27278 +f 27276 27275 27280 +f 27280 27275 27273 +f 27276 27280 27279 +f 7034 16082 7033 +f 7033 16082 16077 +f 7033 16077 16076 +f 16076 16077 16087 +f 16076 16087 16074 +f 16074 16087 16073 +f 7093 16072 16083 +f 7093 16083 7090 +f 7090 16083 7086 +f 7086 16083 16070 +f 7086 16070 16069 +f 16069 16070 16084 +f 16069 16084 16081 +f 16081 16084 16080 +f 16081 16080 7040 +f 7040 16080 7038 +f 7035 16079 16082 +f 7040 7043 16081 +f 16081 16068 16069 +f 16069 16068 7044 +f 16069 7044 7086 +f 7086 7044 7045 +f 7043 7044 16068 +f 16074 7099 16075 +f 16074 16075 16076 +f 16076 16075 7102 +f 16076 7102 7033 +f 7033 7102 7060 +f 7099 7102 16075 +f 16077 16082 16078 +f 16078 16082 16079 +f 16078 16079 16085 +f 16085 16079 16080 +f 16085 16080 16084 +f 16077 16078 16087 +f 16087 16078 16086 +f 16087 16086 16073 +f 16073 16086 16072 +f 16086 16078 16085 +f 16086 16085 16071 +f 16071 16085 16084 +f 16071 16084 16070 +f 16083 16072 16071 +f 16071 16072 16086 +f 16083 16071 16070 +f 7032 7033 7061 +f 7061 7033 7060 +f 6916 16102 6918 +f 6918 16102 16097 +f 6918 16097 16096 +f 16096 16097 16107 +f 16096 16107 16094 +f 16094 16107 16093 +f 16094 16093 7014 +f 7014 16093 7016 +f 7016 16093 7018 +f 7018 16093 16092 +f 7018 16092 7063 +f 7063 16092 16103 +f 7063 16103 7062 +f 7062 16103 7061 +f 7061 16103 16090 +f 7061 16090 16089 +f 16089 16090 16104 +f 16089 16104 16101 +f 16101 16104 16100 +f 6912 16099 6914 +f 6914 16099 16102 +f 16101 16088 16089 +f 16089 16088 7031 +f 16089 7031 7061 +f 7061 7031 7032 +f 7023 7031 16088 +f 7014 7012 16094 +f 16094 7012 16095 +f 16094 16095 16096 +f 16096 16095 7011 +f 16096 7011 6918 +f 6918 7011 7009 +f 7012 7011 16095 +f 16097 16102 16098 +f 16098 16102 16099 +f 16098 16099 16105 +f 16105 16099 16100 +f 16105 16100 16104 +f 16097 16098 16107 +f 16107 16098 16106 +f 16107 16106 16093 +f 16093 16106 16092 +f 16106 16098 16105 +f 16106 16105 16091 +f 16091 16105 16104 +f 16091 16104 16090 +f 16103 16092 16091 +f 16091 16092 16106 +f 16103 16091 16090 +f 5497 16122 7058 +f 7058 16122 16117 +f 7058 16117 16116 +f 16116 16117 16127 +f 16116 16127 16114 +f 16114 16127 16113 +f 16114 16113 6995 +f 6995 16113 6997 +f 6997 16113 6999 +f 6999 16113 16112 +f 6999 16112 7001 +f 7001 16112 16123 +f 7003 16123 7008 +f 7008 16123 16110 +f 7008 16110 16109 +f 16109 16110 16124 +f 16109 16124 16121 +f 16121 16124 16120 +f 16121 16120 6862 +f 6862 16120 6861 +f 6861 16120 7059 +f 7059 16119 5498 +f 5498 16119 16122 +f 5498 16122 5497 +f 6862 6923 16121 +f 16121 16108 16109 +f 16109 16108 6921 +f 16109 6921 7008 +f 7008 6921 6920 +f 6995 7064 16114 +f 16114 7064 16115 +f 16114 16115 16116 +f 16116 16115 7065 +f 16116 7065 7058 +f 7058 7065 7067 +f 16117 16122 16118 +f 16118 16122 16119 +f 16118 16119 16125 +f 16125 16119 16120 +f 16125 16120 16124 +f 16117 16118 16127 +f 16127 16118 16126 +f 16127 16126 16113 +f 16113 16126 16112 +f 16126 16118 16125 +f 16126 16125 16111 +f 16111 16125 16124 +f 16111 16124 16110 +f 16123 16112 16111 +f 16111 16112 16126 +f 16123 16111 16110 +f 7051 16142 7048 +f 7048 16142 16137 +f 7048 16137 16136 +f 16136 16137 16147 +f 16136 16147 16134 +f 16134 16147 16133 +f 16134 16133 7077 +f 7077 16133 7075 +f 7075 16133 7073 +f 7073 16132 7071 +f 7071 16132 16143 +f 7070 16143 7068 +f 7068 16143 16130 +f 7068 16130 16129 +f 16129 16130 16144 +f 16129 16144 16141 +f 16141 16144 16140 +f 16141 16140 5650 +f 5650 16140 5651 +f 5651 16140 7056 +f 7056 16140 16139 +f 7056 16139 7055 +f 7055 16142 7051 +f 5650 5649 16141 +f 16141 16128 16129 +f 16129 16128 5648 +f 16129 5648 7068 +f 7068 5648 5646 +f 16134 16135 16136 +f 16136 16135 7082 +f 16136 7082 7048 +f 7048 7082 7083 +f 16137 16142 16138 +f 16138 16142 16139 +f 16138 16139 16145 +f 16145 16139 16140 +f 16145 16140 16144 +f 16137 16138 16147 +f 16147 16138 16146 +f 16147 16146 16133 +f 16133 16146 16132 +f 16146 16138 16145 +f 16146 16145 16131 +f 16131 16145 16144 +f 16131 16144 16130 +f 16143 16132 16131 +f 16131 16132 16146 +f 16143 16131 16130 +f 1319 27281 1321 +f 1321 27281 27282 +f 1321 27282 1447 +f 1447 27282 27283 +f 1447 27283 1587 +f 1587 27283 1585 +f 1585 27283 1583 +f 1583 27283 1581 +f 1581 27283 1579 +f 1579 27283 1577 +f 1577 27283 1573 +f 1573 27283 1449 +f 1449 27283 27284 +f 1449 27284 1451 +f 1451 27284 649 +f 649 27284 842 +f 842 27284 840 +f 840 27284 838 +f 838 27284 27285 +f 838 27285 836 +f 836 27285 834 +f 834 27285 832 +f 832 27285 830 +f 830 27285 828 +f 828 27285 626 +f 626 27285 628 +f 628 27285 27286 +f 628 27286 1198 +f 1198 27286 27287 +f 1198 27287 1265 +f 1265 27287 1263 +f 1263 27287 1261 +f 1261 27287 1259 +f 1259 27287 1257 +f 1257 27287 1255 +f 1255 27287 1253 +f 1253 27287 27288 +f 1253 27288 1200 +f 1200 27288 1202 +f 1202 27288 1317 +f 1317 27288 1373 +f 1373 27288 27281 +f 1373 27281 1371 +f 1371 27281 1370 +f 1370 27281 1368 +f 1368 27281 1366 +f 1366 27281 1364 +f 1364 27281 1362 +f 1362 27281 1360 +f 1360 27281 1319 +f 27284 27283 27282 +f 27282 27281 27289 +f 27289 27281 27288 +f 27289 27288 27286 +f 27286 27288 27287 +f 27285 27284 27289 +f 27289 27284 27282 +f 27285 27289 27286 +f 1238 1318 27290 +f 27290 1318 1389 +f 27290 1389 27291 +f 27291 1389 1397 +f 27291 1397 1399 +f 1399 1400 27291 +f 27291 1400 1402 +f 27291 1402 1387 +f 1387 1388 27291 +f 27291 1388 1404 +f 27291 1404 1357 +f 1357 1358 27291 +f 27291 1358 27292 +f 27291 27292 27293 +f 27293 27292 27294 +f 27293 27294 27295 +f 27295 27294 27296 +f 27295 27296 711 +f 711 27296 794 +f 794 27296 795 +f 795 27296 797 +f 797 27296 799 +f 799 27296 801 +f 801 27296 803 +f 803 27296 805 +f 805 27296 27294 +f 805 27294 807 +f 807 27294 809 +f 809 27294 732 +f 732 27294 1524 +f 1524 27294 1558 +f 1558 27294 27297 +f 1558 27297 1623 +f 1623 27297 1621 +f 1621 27297 1619 +f 1619 27297 1617 +f 1617 27297 1615 +f 1615 27297 1613 +f 1613 27297 1602 +f 1602 27297 1448 +f 1448 27297 27292 +f 1448 27292 1358 +f 711 1199 27295 +f 27295 1199 27298 +f 27295 27298 27293 +f 27293 27298 27290 +f 27293 27290 27291 +f 1199 1279 27298 +f 27298 1279 1285 +f 27298 1285 1287 +f 1287 1288 27298 +f 27298 1288 1277 +f 27298 1277 1278 +f 1278 1290 27298 +f 27298 1290 27290 +f 1290 1236 27290 +f 27290 1236 1238 +f 27297 27294 27292 +f 1451 649 1524 +f 1524 649 732 +f 1587 1586 1447 +f 1447 1586 1468 +f 1447 1468 1469 +f 1469 1468 1466 +f 1469 1466 1467 +f 1467 1466 1464 +f 1467 1464 1465 +f 1465 1464 1462 +f 1465 1462 1463 +f 1463 1462 1460 +f 1463 1460 1461 +f 1461 1460 1458 +f 1461 1458 1459 +f 1459 1458 1456 +f 1459 1456 1457 +f 1457 1456 1454 +f 1457 1454 1455 +f 1455 1454 1452 +f 1455 1452 1453 +f 1453 1451 1711 +f 1711 1710 1727 +f 1727 1710 1720 +f 1727 1720 1703 +f 1703 1720 1702 +f 1703 1702 1723 +f 1723 1702 1733 +f 1723 1733 1478 +f 1478 1733 1479 +f 1478 1479 1676 +f 1676 1479 1738 +f 1676 1738 1737 +f 1737 1738 1666 +f 1737 1666 1665 +f 1665 1666 1652 +f 1665 1652 1650 +f 1650 1652 1649 +f 1650 1649 1447 +f 1447 1649 1504 +f 1505 1504 1502 +f 1505 1502 1503 +f 1503 1502 1500 +f 1503 1500 1501 +f 1501 1500 1498 +f 1501 1498 1499 +f 1499 1498 1496 +f 1499 1496 1497 +f 1497 1496 1494 +f 1497 1494 1495 +f 1495 1494 1492 +f 1495 1492 1493 +f 1493 1492 1490 +f 1493 1490 1491 +f 1491 1490 1488 +f 1491 1488 1489 +f 1695 1694 1757 +f 1757 1694 1758 +f 1757 1758 1754 +f 1754 1758 1629 +f 1754 1629 1631 +f 1631 1629 1632 +f 1631 1632 1514 +f 1514 1632 1515 +f 1514 1515 1761 +f 1761 1515 1595 +f 1761 1595 1594 +f 1594 1595 1645 +f 1594 1645 1643 +f 1643 1645 1642 +f 1643 1642 1640 +f 1640 1642 1770 +f 1640 1770 1448 +f 1448 1770 1541 +f 1542 1541 1539 +f 1542 1539 1540 +f 1540 1539 1537 +f 1540 1537 1538 +f 1538 1537 1535 +f 1538 1535 1536 +f 1536 1535 1533 +f 1536 1533 1534 +f 1534 1533 1531 +f 1534 1531 1532 +f 1532 1531 1529 +f 1532 1529 1530 +f 1530 1529 1527 +f 1530 1527 1528 +f 1528 1527 1525 +f 1528 1525 1526 +f 1526 1525 1524 +f 1689 1524 1688 +f 1689 1688 1756 +f 1756 1688 1682 +f 1756 1682 1683 +f 1683 1682 1565 +f 1683 1565 1566 +f 1566 1565 1780 +f 1566 1780 1551 +f 1551 1780 1552 +f 1551 1552 1611 +f 1611 1552 1610 +f 1611 1610 1608 +f 1608 1610 1616 +f 1608 1616 1614 +f 1614 1616 1615 +f 1614 1615 1613 +f 1587 1585 1586 +f 1586 1585 1584 +f 1586 1584 1468 +f 1468 1584 1466 +f 1585 1583 1584 +f 1584 1583 1582 +f 1584 1582 1466 +f 1466 1582 1464 +f 1582 1580 1464 +f 1464 1580 1462 +f 1581 1579 1580 +f 1580 1579 1578 +f 1580 1578 1462 +f 1462 1578 1460 +f 1579 1577 1578 +f 1578 1577 1576 +f 1578 1576 1460 +f 1460 1576 1458 +f 1577 1573 1576 +f 1576 1573 1574 +f 1576 1574 1458 +f 1458 1574 1456 +f 1573 1449 1574 +f 1574 1449 1575 +f 1574 1575 1456 +f 1456 1575 1454 +f 1575 1449 1450 +f 1450 1449 1451 +f 1624 1451 1524 +f 1624 1524 1625 +f 1625 1626 1628 +f 1628 1626 1693 +f 1628 1693 1766 +f 1766 1693 1518 +f 1766 1518 1517 +f 1517 1518 1763 +f 1517 1763 1597 +f 1597 1763 1598 +f 1597 1598 1646 +f 1646 1598 1772 +f 1646 1772 1771 +f 1771 1772 1537 +f 1771 1537 1539 +f 1558 1559 1524 +f 1524 1560 1561 +f 1561 1560 1713 +f 1561 1713 1562 +f 1562 1713 1555 +f 1562 1555 1781 +f 1781 1555 1554 +f 1781 1554 1553 +f 1553 1554 1612 +f 1553 1612 1552 +f 1552 1612 1610 +f 1558 1557 1559 +f 1559 1557 1560 +f 1622 1621 1620 +f 1620 1619 1618 +f 1616 1617 1615 +f 1603 1602 1448 +f 1590 1589 1759 +f 1590 1759 1591 +f 1591 1759 1511 +f 1591 1511 1760 +f 1760 1511 1512 +f 1760 1512 1513 +f 1513 1512 1633 +f 1513 1633 1514 +f 1514 1633 1631 +f 1680 1679 1563 +f 1680 1563 1681 +f 1681 1563 1564 +f 1681 1564 1565 +f 1565 1564 1780 +f 1755 1680 1681 +f 1755 1681 1682 +f 1682 1681 1565 +f 1690 1522 1521 +f 1690 1521 1520 +f 1520 1521 1764 +f 1520 1764 1519 +f 1519 1764 1599 +f 1519 1599 1763 +f 1763 1599 1598 +f 1524 1690 1691 +f 1691 1690 1520 +f 1691 1520 1768 +f 1768 1520 1519 +f 1768 1519 1518 +f 1518 1519 1763 +f 1486 1487 1663 +f 1486 1663 1485 +f 1485 1663 1661 +f 1485 1661 1662 +f 1662 1661 1659 +f 1662 1659 1660 +f 1660 1659 1657 +f 1660 1657 1658 +f 1658 1657 1655 +f 1658 1655 1656 +f 1656 1655 1653 +f 1656 1653 1654 +f 1654 1653 1651 +f 1654 1651 1652 +f 1652 1651 1649 +f 1729 1486 1485 +f 1729 1485 1484 +f 1484 1485 1662 +f 1484 1662 1483 +f 1483 1662 1660 +f 1483 1660 1669 +f 1669 1660 1658 +f 1669 1658 1668 +f 1668 1658 1656 +f 1668 1656 1667 +f 1667 1656 1654 +f 1667 1654 1666 +f 1666 1654 1652 +f 1699 1698 1725 +f 1699 1725 1700 +f 1700 1725 1734 +f 1700 1734 1724 +f 1724 1734 1480 +f 1724 1480 1733 +f 1733 1480 1479 +f 1719 1699 1700 +f 1719 1700 1701 +f 1701 1700 1724 +f 1701 1724 1702 +f 1702 1724 1733 +f 1605 1448 1634 +f 1634 1448 1635 +f 1634 1635 1637 +f 1637 1635 1546 +f 1637 1546 1547 +f 1547 1546 1777 +f 1547 1777 1570 +f 1570 1777 1571 +f 1570 1571 1687 +f 1687 1571 1534 +f 1687 1534 1532 +f 1544 1448 1543 +f 1543 1542 1540 +f 1643 1640 1641 +f 1641 1448 1647 +f 1647 1448 1767 +f 1647 1767 1592 +f 1592 1767 1591 +f 1592 1591 1760 +f 1591 1767 1590 +f 1590 1767 1448 +f 1588 1447 1507 +f 1507 1506 1740 +f 1740 1506 1503 +f 1740 1503 1501 +f 1736 1447 1670 +f 1670 1447 1671 +f 1670 1671 1673 +f 1673 1671 1678 +f 1673 1678 1475 +f 1475 1678 1474 +f 1475 1474 1728 +f 1728 1474 1721 +f 1728 1721 1706 +f 1706 1721 1707 +f 1706 1707 1717 +f 1717 1707 1459 +f 1717 1459 1457 +f 1731 1447 1471 +f 1471 1447 1470 +f 1471 1470 1714 +f 1714 1470 1467 +f 1714 1467 1465 +f 1454 1575 1450 +f 1452 1454 1450 +f 1614 1603 1606 +f 1606 1603 1604 +f 1606 1604 1607 +f 1607 1604 1605 +f 1607 1605 1636 +f 1636 1605 1634 +f 1636 1634 1637 +f 1616 1610 1618 +f 1618 1610 1612 +f 1618 1612 1620 +f 1620 1612 1554 +f 1620 1554 1622 +f 1622 1554 1555 +f 1622 1555 1556 +f 1556 1555 1713 +f 1556 1713 1557 +f 1557 1713 1560 +f 1614 1606 1608 +f 1608 1606 1609 +f 1608 1609 1611 +f 1611 1609 1550 +f 1611 1550 1551 +f 1551 1550 1779 +f 1551 1779 1566 +f 1566 1779 1567 +f 1566 1567 1683 +f 1683 1567 1684 +f 1683 1684 1756 +f 1756 1684 1776 +f 1756 1776 1689 +f 1689 1776 1526 +f 1609 1606 1607 +f 1609 1607 1638 +f 1638 1607 1636 +f 1638 1636 1548 +f 1548 1636 1637 +f 1548 1637 1547 +f 1552 1780 1553 +f 1553 1780 1564 +f 1553 1564 1781 +f 1781 1564 1563 +f 1781 1563 1562 +f 1562 1563 1679 +f 1562 1679 1561 +f 1682 1688 1755 +f 1755 1688 1524 +f 1609 1638 1550 +f 1550 1638 1549 +f 1550 1549 1779 +f 1779 1549 1568 +f 1779 1568 1567 +f 1567 1568 1685 +f 1567 1685 1684 +f 1684 1685 1775 +f 1684 1775 1776 +f 1776 1775 1528 +f 1776 1528 1526 +f 1549 1638 1548 +f 1549 1548 1778 +f 1778 1548 1547 +f 1778 1547 1570 +f 1523 1525 1527 +f 1523 1527 1765 +f 1765 1527 1529 +f 1765 1529 1601 +f 1601 1529 1531 +f 1601 1531 1600 +f 1600 1531 1533 +f 1600 1533 1773 +f 1773 1533 1535 +f 1773 1535 1772 +f 1772 1535 1537 +f 1546 1635 1639 +f 1639 1635 1448 +f 1639 1448 1544 +f 1546 1639 1545 +f 1545 1639 1544 +f 1545 1544 1774 +f 1774 1544 1543 +f 1774 1543 1540 +f 1549 1778 1568 +f 1568 1778 1569 +f 1568 1569 1685 +f 1685 1569 1686 +f 1685 1686 1775 +f 1775 1686 1530 +f 1775 1530 1528 +f 1569 1778 1570 +f 1524 1523 1522 +f 1522 1523 1765 +f 1522 1765 1521 +f 1521 1765 1601 +f 1521 1601 1764 +f 1764 1601 1600 +f 1764 1600 1599 +f 1599 1600 1773 +f 1599 1773 1598 +f 1598 1773 1772 +f 1546 1545 1777 +f 1777 1545 1572 +f 1777 1572 1571 +f 1571 1572 1536 +f 1571 1536 1534 +f 1572 1545 1774 +f 1686 1569 1687 +f 1687 1569 1570 +f 1692 1691 1768 +f 1692 1768 1693 +f 1693 1768 1518 +f 1540 1538 1774 +f 1774 1538 1572 +f 1538 1536 1572 +f 1530 1686 1532 +f 1532 1686 1687 +f 1693 1626 1692 +f 1539 1541 1769 +f 1769 1541 1770 +f 1769 1770 1642 +f 1758 1694 1624 +f 1539 1769 1771 +f 1771 1769 1644 +f 1771 1644 1646 +f 1646 1644 1596 +f 1646 1596 1597 +f 1597 1596 1762 +f 1597 1762 1517 +f 1517 1762 1516 +f 1517 1516 1766 +f 1766 1516 1630 +f 1766 1630 1628 +f 1628 1630 1627 +f 1628 1627 1625 +f 1625 1627 1624 +f 1644 1769 1642 +f 1487 1451 1488 +f 1596 1644 1645 +f 1645 1644 1642 +f 1643 1641 1648 +f 1648 1641 1647 +f 1648 1647 1592 +f 1762 1596 1595 +f 1595 1596 1645 +f 1451 1729 1697 +f 1697 1729 1484 +f 1697 1484 1730 +f 1730 1484 1483 +f 1730 1483 1482 +f 1482 1483 1669 +f 1482 1669 1481 +f 1481 1669 1668 +f 1481 1668 1739 +f 1739 1668 1667 +f 1739 1667 1738 +f 1738 1667 1666 +f 1643 1648 1594 +f 1594 1648 1593 +f 1594 1593 1761 +f 1761 1593 1513 +f 1761 1513 1514 +f 1593 1648 1592 +f 1516 1762 1515 +f 1515 1762 1595 +f 1451 1697 1698 +f 1698 1697 1730 +f 1698 1730 1725 +f 1725 1730 1482 +f 1725 1482 1734 +f 1734 1482 1481 +f 1734 1481 1480 +f 1480 1481 1739 +f 1480 1739 1479 +f 1479 1739 1738 +f 1513 1593 1760 +f 1760 1593 1592 +f 1630 1516 1632 +f 1632 1516 1515 +f 1709 1719 1701 +f 1709 1701 1720 +f 1720 1701 1702 +f 1627 1630 1629 +f 1629 1630 1632 +f 1720 1710 1709 +f 1759 1589 1509 +f 1509 1589 1588 +f 1509 1588 1508 +f 1508 1588 1507 +f 1508 1507 1740 +f 1511 1759 1510 +f 1510 1759 1509 +f 1510 1509 1742 +f 1742 1509 1508 +f 1742 1508 1741 +f 1741 1508 1740 +f 1741 1740 1501 +f 1512 1511 1745 +f 1745 1511 1510 +f 1745 1510 1744 +f 1744 1510 1742 +f 1744 1742 1743 +f 1743 1742 1741 +f 1743 1741 1499 +f 1499 1741 1501 +f 1633 1512 1748 +f 1748 1512 1745 +f 1748 1745 1747 +f 1747 1745 1744 +f 1747 1744 1746 +f 1746 1744 1743 +f 1746 1743 1497 +f 1497 1743 1499 +f 1631 1633 1751 +f 1751 1633 1748 +f 1751 1748 1750 +f 1750 1748 1747 +f 1750 1747 1749 +f 1749 1747 1746 +f 1749 1746 1495 +f 1495 1746 1497 +f 1624 1627 1758 +f 1758 1627 1629 +f 1631 1751 1754 +f 1754 1751 1753 +f 1754 1753 1757 +f 1757 1753 1696 +f 1757 1696 1695 +f 1695 1696 1489 +f 1753 1751 1750 +f 1753 1750 1752 +f 1752 1750 1749 +f 1752 1749 1493 +f 1493 1749 1495 +f 1505 1503 1506 +f 1753 1752 1696 +f 1696 1752 1491 +f 1696 1491 1489 +f 1491 1752 1493 +f 1649 1651 1504 +f 1504 1651 1502 +f 1651 1653 1502 +f 1502 1653 1500 +f 1653 1655 1500 +f 1500 1655 1498 +f 1655 1657 1498 +f 1498 1657 1496 +f 1657 1659 1496 +f 1496 1659 1494 +f 1659 1661 1494 +f 1494 1661 1492 +f 1487 1488 1490 +f 1661 1663 1492 +f 1492 1663 1490 +f 1663 1487 1490 +f 1665 1650 1664 +f 1665 1664 1735 +f 1735 1664 1736 +f 1735 1736 1672 +f 1672 1736 1670 +f 1672 1670 1673 +f 1665 1735 1737 +f 1737 1735 1674 +f 1737 1674 1676 +f 1676 1674 1477 +f 1676 1477 1478 +f 1478 1477 1732 +f 1478 1732 1723 +f 1723 1732 1704 +f 1723 1704 1703 +f 1703 1704 1726 +f 1703 1726 1727 +f 1727 1726 1712 +f 1727 1712 1711 +f 1711 1712 1453 +f 1674 1735 1672 +f 1674 1672 1675 +f 1675 1672 1673 +f 1675 1673 1475 +f 1674 1675 1477 +f 1477 1675 1476 +f 1477 1476 1732 +f 1732 1476 1722 +f 1732 1722 1704 +f 1704 1722 1705 +f 1704 1705 1726 +f 1726 1705 1718 +f 1726 1718 1712 +f 1712 1718 1455 +f 1712 1455 1453 +f 1476 1675 1475 +f 1678 1671 1677 +f 1677 1447 1731 +f 1678 1677 1473 +f 1473 1677 1731 +f 1473 1731 1472 +f 1472 1731 1471 +f 1472 1471 1714 +f 1722 1476 1728 +f 1728 1476 1475 +f 1678 1473 1474 +f 1474 1473 1716 +f 1474 1716 1721 +f 1721 1716 1708 +f 1721 1708 1707 +f 1707 1708 1461 +f 1707 1461 1459 +f 1716 1473 1472 +f 1705 1722 1706 +f 1706 1722 1728 +f 1716 1472 1715 +f 1715 1472 1714 +f 1715 1714 1465 +f 1718 1705 1717 +f 1717 1705 1706 +f 1469 1467 1470 +f 1716 1715 1708 +f 1708 1715 1463 +f 1708 1463 1461 +f 1463 1715 1465 +f 1455 1718 1457 +f 1457 1718 1717 +f 1321 1447 1358 +f 1358 1447 1448 +f 1339 1338 1336 +f 1339 1336 1337 +f 1337 1336 1334 +f 1337 1334 1335 +f 1335 1334 1332 +f 1335 1332 1333 +f 1333 1332 1330 +f 1333 1330 1331 +f 1331 1330 1328 +f 1331 1328 1329 +f 1329 1328 1326 +f 1329 1326 1327 +f 1327 1326 1324 +f 1327 1324 1325 +f 1325 1324 1322 +f 1325 1322 1323 +f 1323 1322 1321 +f 1323 1321 1418 +f 1418 1321 1417 +f 1418 1417 1441 +f 1441 1417 1439 +f 1441 1439 1437 +f 1437 1439 1438 +f 1437 1438 1434 +f 1434 1438 1412 +f 1434 1412 1348 +f 1348 1412 1349 +f 1348 1349 1444 +f 1444 1349 1382 +f 1444 1382 1381 +f 1381 1382 1395 +f 1381 1395 1393 +f 1393 1395 1396 +f 1393 1396 1390 +f 1390 1396 1389 +f 1372 1373 1371 +f 1365 1366 1364 +f 1365 1364 1363 +f 1363 1364 1362 +f 1363 1362 1361 +f 1361 1362 1360 +f 1361 1360 1359 +f 1359 1360 1319 +f 1359 1319 1320 +f 1320 1321 1322 +f 1416 1321 1358 +f 1416 1358 1405 +f 1405 1406 1408 +f 1408 1406 1409 +f 1408 1409 1411 +f 1411 1409 1352 +f 1411 1352 1351 +f 1351 1352 1420 +f 1351 1420 1384 +f 1384 1420 1385 +f 1384 1385 1401 +f 1401 1385 1400 +f 1401 1400 1399 +f 1357 1356 1358 +f 1358 1356 1414 +f 1358 1414 1415 +f 1415 1414 1354 +f 1415 1354 1446 +f 1446 1354 1353 +f 1446 1353 1352 +f 1352 1353 1420 +f 1357 1404 1356 +f 1356 1404 1355 +f 1356 1355 1414 +f 1414 1355 1354 +f 1404 1388 1355 +f 1355 1388 1403 +f 1355 1403 1354 +f 1354 1403 1353 +f 1388 1387 1403 +f 1403 1387 1386 +f 1403 1386 1353 +f 1353 1386 1420 +f 1387 1402 1386 +f 1386 1402 1385 +f 1386 1385 1420 +f 1402 1400 1385 +f 1401 1399 1398 +f 1398 1397 1396 +f 1396 1397 1389 +f 1317 1376 1318 +f 1318 1376 1377 +f 1413 1377 1378 +f 1413 1378 1379 +f 1379 1378 1443 +f 1379 1443 1380 +f 1380 1443 1347 +f 1380 1347 1444 +f 1444 1347 1348 +f 1409 1406 1407 +f 1407 1358 1415 +f 1439 1417 1416 +f 1393 1390 1391 +f 1391 1390 1318 +f 1392 1318 1413 +f 1392 1413 1379 +f 1341 1340 1421 +f 1421 1340 1337 +f 1421 1337 1335 +f 1322 1324 1320 +f 1320 1324 1359 +f 1324 1326 1359 +f 1359 1326 1361 +f 1326 1328 1361 +f 1361 1328 1363 +f 1328 1330 1363 +f 1363 1330 1365 +f 1330 1332 1365 +f 1365 1332 1367 +f 1332 1334 1367 +f 1367 1334 1369 +f 1338 1374 1372 +f 1334 1336 1369 +f 1369 1336 1372 +f 1336 1338 1372 +f 1396 1395 1398 +f 1398 1395 1383 +f 1398 1383 1401 +f 1401 1383 1384 +f 1393 1391 1394 +f 1394 1391 1392 +f 1394 1392 1379 +f 1395 1382 1383 +f 1383 1382 1445 +f 1383 1445 1384 +f 1384 1445 1351 +f 1393 1394 1381 +f 1381 1394 1380 +f 1381 1380 1444 +f 1380 1394 1379 +f 1382 1349 1445 +f 1445 1349 1350 +f 1445 1350 1351 +f 1351 1350 1411 +f 1407 1415 1446 +f 1407 1446 1409 +f 1409 1446 1352 +f 1349 1412 1350 +f 1350 1412 1410 +f 1350 1410 1411 +f 1411 1410 1408 +f 1378 1377 1442 +f 1442 1377 1376 +f 1442 1376 1343 +f 1343 1376 1375 +f 1343 1375 1342 +f 1342 1375 1341 +f 1342 1341 1421 +f 1443 1378 1345 +f 1345 1378 1442 +f 1345 1442 1344 +f 1344 1442 1343 +f 1344 1343 1423 +f 1423 1343 1342 +f 1423 1342 1422 +f 1422 1342 1421 +f 1422 1421 1335 +f 1347 1443 1346 +f 1346 1443 1345 +f 1346 1345 1426 +f 1426 1345 1344 +f 1426 1344 1425 +f 1425 1344 1423 +f 1425 1423 1424 +f 1424 1423 1422 +f 1424 1422 1333 +f 1333 1422 1335 +f 1348 1347 1430 +f 1430 1347 1346 +f 1430 1346 1429 +f 1429 1346 1426 +f 1429 1426 1428 +f 1428 1426 1425 +f 1428 1425 1427 +f 1427 1425 1424 +f 1427 1424 1331 +f 1331 1424 1333 +f 1412 1438 1410 +f 1410 1438 1440 +f 1410 1440 1408 +f 1408 1440 1405 +f 1348 1430 1434 +f 1434 1430 1433 +f 1434 1433 1437 +f 1437 1433 1436 +f 1437 1436 1441 +f 1441 1436 1419 +f 1441 1419 1418 +f 1418 1419 1323 +f 1433 1430 1429 +f 1416 1405 1440 +f 1416 1440 1439 +f 1439 1440 1438 +f 1317 1375 1376 +f 1433 1429 1432 +f 1432 1429 1428 +f 1432 1428 1431 +f 1431 1428 1427 +f 1431 1427 1329 +f 1329 1427 1331 +f 1433 1432 1436 +f 1436 1432 1435 +f 1436 1435 1419 +f 1419 1435 1325 +f 1419 1325 1323 +f 1435 1432 1431 +f 1339 1337 1340 +f 1329 1327 1431 +f 1431 1327 1435 +f 1327 1325 1435 +f 1202 1317 1238 +f 1238 1317 1318 +f 1220 1219 1217 +f 1220 1217 1218 +f 1218 1217 1215 +f 1218 1215 1216 +f 1216 1215 1213 +f 1216 1213 1214 +f 1214 1213 1211 +f 1214 1211 1212 +f 1212 1211 1209 +f 1212 1209 1210 +f 1210 1209 1207 +f 1210 1207 1208 +f 1208 1207 1205 +f 1208 1205 1206 +f 1206 1205 1203 +f 1206 1203 1204 +f 1204 1202 1296 +f 1296 1295 1310 +f 1310 1295 1309 +f 1310 1309 1311 +f 1311 1309 1244 +f 1311 1244 1245 +f 1245 1244 1301 +f 1245 1301 1229 +f 1229 1301 1230 +f 1229 1230 1306 +f 1306 1230 1274 +f 1306 1274 1273 +f 1273 1274 1286 +f 1273 1286 1284 +f 1284 1286 1285 +f 1284 1285 1279 +f 1262 1261 1260 +f 1260 1259 1258 +f 1258 1259 1257 +f 1256 1257 1255 +f 1254 1255 1253 +f 1254 1253 1252 +f 1252 1253 1200 +f 1252 1200 1201 +f 1292 1293 1242 +f 1242 1293 1241 +f 1242 1241 1300 +f 1300 1241 1233 +f 1300 1233 1232 +f 1232 1233 1289 +f 1232 1289 1276 +f 1276 1289 1277 +f 1276 1277 1288 +f 1236 1237 1238 +f 1238 1237 1239 +f 1238 1239 1240 +f 1240 1239 1298 +f 1240 1298 1241 +f 1241 1298 1233 +f 1237 1236 1235 +f 1235 1236 1290 +f 1235 1290 1234 +f 1234 1290 1278 +f 1234 1278 1289 +f 1289 1278 1277 +f 1276 1288 1275 +f 1275 1288 1287 +f 1275 1287 1286 +f 1286 1287 1285 +f 1284 1279 1280 +f 1280 1279 1199 +f 1280 1199 1281 +f 1281 1282 1271 +f 1271 1282 1270 +f 1271 1270 1307 +f 1307 1270 1226 +f 1307 1226 1227 +f 1227 1226 1303 +f 1227 1303 1247 +f 1247 1303 1248 +f 1247 1248 1314 +f 1314 1248 1316 +f 1314 1316 1313 +f 1313 1316 1208 +f 1313 1208 1206 +f 1198 1267 1199 +f 1199 1267 1268 +f 1199 1268 1269 +f 1269 1268 1308 +f 1269 1308 1270 +f 1270 1308 1226 +f 1270 1282 1269 +f 1267 1198 1222 +f 1222 1198 1221 +f 1222 1221 1305 +f 1305 1221 1218 +f 1305 1218 1216 +f 1203 1205 1201 +f 1201 1205 1252 +f 1205 1207 1252 +f 1252 1207 1254 +f 1207 1209 1254 +f 1254 1209 1256 +f 1209 1211 1256 +f 1256 1211 1258 +f 1211 1213 1258 +f 1258 1213 1260 +f 1213 1215 1260 +f 1260 1215 1262 +f 1219 1266 1264 +f 1215 1217 1262 +f 1262 1217 1264 +f 1217 1219 1264 +f 1284 1280 1283 +f 1283 1280 1281 +f 1283 1281 1271 +f 1286 1274 1275 +f 1275 1274 1299 +f 1275 1299 1276 +f 1276 1299 1232 +f 1289 1233 1234 +f 1234 1233 1298 +f 1234 1298 1235 +f 1235 1298 1239 +f 1235 1239 1237 +f 1218 1221 1220 +f 1206 1204 1297 +f 1297 1204 1296 +f 1297 1296 1310 +f 1208 1316 1210 +f 1210 1316 1315 +f 1210 1315 1212 +f 1212 1315 1250 +f 1212 1250 1214 +f 1214 1250 1251 +f 1214 1251 1216 +f 1216 1251 1305 +f 1206 1297 1313 +f 1313 1297 1312 +f 1313 1312 1314 +f 1314 1312 1246 +f 1314 1246 1247 +f 1247 1246 1302 +f 1247 1302 1227 +f 1227 1302 1228 +f 1227 1228 1307 +f 1307 1228 1272 +f 1307 1272 1271 +f 1271 1272 1283 +f 1312 1297 1310 +f 1316 1248 1315 +f 1315 1248 1249 +f 1315 1249 1250 +f 1250 1249 1304 +f 1250 1304 1251 +f 1251 1304 1223 +f 1251 1223 1305 +f 1305 1223 1222 +f 1246 1312 1311 +f 1311 1312 1310 +f 1248 1303 1249 +f 1249 1303 1225 +f 1249 1225 1304 +f 1304 1225 1224 +f 1304 1224 1223 +f 1223 1224 1267 +f 1223 1267 1222 +f 1295 1291 1309 +f 1309 1291 1294 +f 1309 1294 1244 +f 1244 1294 1243 +f 1244 1243 1301 +f 1301 1243 1231 +f 1301 1231 1230 +f 1230 1231 1299 +f 1230 1299 1274 +f 1302 1246 1245 +f 1245 1246 1311 +f 1303 1226 1225 +f 1225 1226 1308 +f 1225 1308 1224 +f 1224 1308 1268 +f 1224 1268 1267 +f 1291 1292 1294 +f 1294 1292 1242 +f 1294 1242 1243 +f 1243 1242 1300 +f 1243 1300 1231 +f 1231 1300 1232 +f 1231 1232 1299 +f 1228 1302 1229 +f 1229 1302 1245 +f 1240 1241 1293 +f 1272 1228 1306 +f 1306 1228 1229 +f 1283 1272 1273 +f 1273 1272 1306 +f 1284 1283 1273 +f 1198 1199 628 +f 649 844 647 +f 649 647 648 +f 648 647 645 +f 648 645 646 +f 646 645 643 +f 646 643 644 +f 644 643 641 +f 644 641 642 +f 642 641 639 +f 642 639 640 +f 640 639 637 +f 640 637 638 +f 638 637 635 +f 638 635 636 +f 636 635 633 +f 636 633 634 +f 634 633 631 +f 634 631 632 +f 632 631 629 +f 632 629 630 +f 630 628 1082 +f 1082 628 1081 +f 1082 1081 1194 +f 1194 1081 1193 +f 1194 1193 1074 +f 1074 1193 1073 +f 1074 1073 1061 +f 1061 1073 1060 +f 1061 1060 1187 +f 1187 1060 660 +f 1187 660 659 +f 659 660 1157 +f 659 1157 1156 +f 1156 1157 952 +f 1156 952 951 +f 951 952 939 +f 951 939 937 +f 937 939 936 +f 937 936 934 +f 934 936 1139 +f 934 1139 649 +f 689 688 686 +f 689 686 687 +f 687 686 684 +f 687 684 685 +f 685 684 682 +f 685 682 683 +f 683 682 680 +f 683 680 681 +f 681 680 678 +f 681 678 679 +f 679 678 676 +f 679 676 677 +f 677 676 674 +f 677 674 675 +f 675 674 672 +f 675 672 673 +f 673 672 670 +f 673 670 671 +f 1052 1051 1181 +f 1181 1051 1045 +f 1181 1045 1046 +f 1046 1045 1176 +f 1046 1176 1172 +f 1172 1176 1031 +f 1172 1031 1032 +f 1032 1031 700 +f 1032 700 699 +f 699 700 927 +f 699 927 926 +f 926 927 917 +f 926 917 915 +f 915 917 914 +f 915 914 912 +f 912 914 849 +f 912 849 847 +f 847 849 846 +f 847 846 649 +f 649 845 732 +f 732 845 730 +f 731 730 728 +f 731 728 729 +f 729 728 726 +f 729 726 727 +f 727 726 724 +f 727 724 725 +f 725 724 722 +f 725 722 723 +f 723 722 720 +f 723 720 721 +f 721 720 718 +f 721 718 719 +f 719 718 716 +f 719 716 717 +f 717 716 714 +f 717 714 715 +f 715 714 712 +f 715 712 713 +f 713 712 711 +f 713 711 1022 +f 1022 711 1021 +f 1022 1021 1150 +f 1150 1021 1149 +f 1150 1149 1014 +f 1014 1149 1013 +f 1014 1013 1001 +f 1001 1013 1000 +f 1001 1000 1134 +f 1134 1000 743 +f 1134 743 742 +f 742 743 1121 +f 742 1121 1120 +f 1120 1121 898 +f 1120 898 897 +f 897 898 885 +f 897 885 883 +f 883 885 882 +f 883 882 880 +f 880 882 1104 +f 732 771 772 +f 772 771 769 +f 772 769 770 +f 770 769 767 +f 770 767 768 +f 768 767 765 +f 768 765 766 +f 766 765 763 +f 766 763 764 +f 764 763 761 +f 764 761 762 +f 762 761 759 +f 762 759 760 +f 760 759 757 +f 760 757 758 +f 758 757 755 +f 758 755 756 +f 756 755 753 +f 756 753 754 +f 754 711 992 +f 992 711 991 +f 992 991 1123 +f 1123 991 985 +f 1123 985 986 +f 986 985 1113 +f 986 1113 1100 +f 1100 1113 971 +f 1100 971 972 +f 972 971 783 +f 972 783 782 +f 782 783 873 +f 782 873 872 +f 872 873 866 +f 872 866 865 +f 865 866 818 +f 865 818 816 +f 816 818 815 +f 816 815 813 +f 813 815 812 +f 813 812 732 +f 732 812 811 +f 809 811 810 +f 808 810 1090 +f 808 1090 1089 +f 1089 1090 819 +f 1089 819 821 +f 821 819 822 +f 821 822 824 +f 824 822 868 +f 824 868 786 +f 786 868 785 +f 786 785 968 +f 968 785 969 +f 968 969 1097 +f 1097 969 1098 +f 1097 1098 982 +f 982 1098 983 +f 982 983 711 +f 991 1122 985 +f 844 843 647 +f 841 840 839 +f 839 840 838 +f 839 838 837 +f 833 834 832 +f 833 832 831 +f 831 832 830 +f 831 830 829 +f 627 626 628 +f 708 709 862 +f 708 862 707 +f 707 862 860 +f 707 860 861 +f 861 860 858 +f 861 858 859 +f 859 858 856 +f 859 856 857 +f 857 856 854 +f 857 854 855 +f 855 854 852 +f 855 852 853 +f 853 852 850 +f 853 850 851 +f 851 850 848 +f 851 848 849 +f 849 848 846 +f 711 793 792 +f 711 792 791 +f 791 792 1084 +f 791 1084 790 +f 790 1084 1085 +f 790 1085 827 +f 827 1085 1086 +f 827 1086 825 +f 825 1086 1087 +f 825 1087 823 +f 823 1087 1088 +f 823 1088 821 +f 821 1088 1089 +f 794 795 793 +f 793 796 792 +f 792 796 1084 +f 796 798 1084 +f 1084 798 1085 +f 798 799 800 +f 798 800 1085 +f 1085 800 1086 +f 799 801 800 +f 800 801 802 +f 800 802 1086 +f 1086 802 1087 +f 801 803 802 +f 802 803 804 +f 802 804 1087 +f 1087 804 1088 +f 803 805 804 +f 804 805 806 +f 804 806 1088 +f 1088 806 1089 +f 805 807 806 +f 806 807 808 +f 806 808 1089 +f 807 809 808 +f 965 964 789 +f 965 789 966 +f 966 789 788 +f 966 788 787 +f 787 788 826 +f 787 826 786 +f 786 826 824 +f 1096 965 966 +f 1096 966 967 +f 967 966 787 +f 967 787 968 +f 968 787 786 +f 711 751 993 +f 993 751 750 +f 993 750 749 +f 749 750 894 +f 749 894 748 +f 748 894 892 +f 748 892 893 +f 893 892 890 +f 893 890 891 +f 891 890 888 +f 891 888 889 +f 889 888 886 +f 889 886 887 +f 887 886 884 +f 887 884 885 +f 885 884 882 +f 711 993 994 +f 994 993 749 +f 994 749 1127 +f 1127 749 748 +f 1127 748 747 +f 747 748 893 +f 747 893 746 +f 746 893 891 +f 746 891 900 +f 900 891 889 +f 900 889 899 +f 899 889 887 +f 899 887 898 +f 898 887 885 +f 1010 1009 997 +f 1010 997 1011 +f 1011 997 998 +f 1011 998 999 +f 999 998 1133 +f 999 1133 1000 +f 1000 1133 743 +f 1148 1010 1011 +f 1148 1011 1012 +f 1012 1011 999 +f 1012 999 1013 +f 1013 999 1000 +f 628 1024 1025 +f 1025 1024 706 +f 1025 706 1026 +f 1026 706 705 +f 1026 705 704 +f 704 705 922 +f 704 922 703 +f 703 922 920 +f 703 920 921 +f 921 920 918 +f 921 918 919 +f 919 918 916 +f 919 916 917 +f 917 916 914 +f 1168 1025 1026 +f 1168 1026 1027 +f 1027 1026 704 +f 1027 704 1028 +f 1028 704 703 +f 1028 703 702 +f 702 703 921 +f 702 921 701 +f 701 921 919 +f 701 919 927 +f 927 919 917 +f 628 1042 1043 +f 1043 1042 1170 +f 1043 1170 1044 +f 1044 1170 1171 +f 1044 1171 1176 +f 1176 1171 1031 +f 628 1043 1180 +f 1180 1043 1044 +f 1180 1044 1045 +f 1045 1044 1176 +f 1053 668 667 +f 1053 667 666 +f 666 667 948 +f 666 948 665 +f 665 948 946 +f 665 946 947 +f 947 946 944 +f 947 944 945 +f 945 944 942 +f 945 942 943 +f 943 942 940 +f 943 940 941 +f 941 940 938 +f 941 938 939 +f 939 938 936 +f 1054 1053 666 +f 1054 666 1184 +f 1184 666 665 +f 1184 665 664 +f 664 665 947 +f 664 947 663 +f 663 947 945 +f 663 945 954 +f 954 945 943 +f 954 943 953 +f 953 943 941 +f 953 941 952 +f 952 941 939 +f 628 1069 1070 +f 1070 1069 1057 +f 1070 1057 1071 +f 1071 1057 1058 +f 1071 1058 1059 +f 1059 1058 1186 +f 1059 1186 1060 +f 1060 1186 660 +f 1192 1070 1071 +f 1192 1071 1072 +f 1072 1071 1059 +f 1072 1059 1073 +f 1073 1059 1060 +f 813 732 814 +f 814 732 863 +f 814 863 864 +f 864 863 870 +f 864 870 871 +f 871 870 1094 +f 871 1094 1095 +f 1095 1094 780 +f 1095 780 781 +f 781 780 974 +f 781 974 973 +f 973 974 1101 +f 973 1101 1114 +f 1114 1101 988 +f 1114 988 987 +f 987 988 1125 +f 987 1125 1124 +f 1124 1125 756 +f 1124 756 754 +f 1092 732 874 +f 874 732 875 +f 874 875 877 +f 877 875 776 +f 877 776 777 +f 777 776 978 +f 777 978 977 +f 977 978 1103 +f 977 1103 1116 +f 1116 1103 764 +f 1116 764 762 +f 774 732 773 +f 773 732 772 +f 773 772 770 +f 883 880 881 +f 881 880 732 +f 881 732 895 +f 895 1117 1118 +f 1118 1117 903 +f 1118 903 905 +f 905 903 906 +f 905 906 740 +f 740 906 739 +f 740 739 1135 +f 1135 739 1004 +f 1135 1004 1003 +f 1003 1004 1017 +f 1003 1017 1016 +f 1016 1017 1152 +f 1016 1152 1158 +f 1158 1152 717 +f 1158 717 715 +f 1117 732 901 +f 901 732 902 +f 901 902 904 +f 904 902 909 +f 904 909 738 +f 738 909 737 +f 738 737 1136 +f 1136 737 1006 +f 1136 1006 1005 +f 1005 1006 1019 +f 1005 1019 1018 +f 1018 1019 721 +f 1018 721 719 +f 734 733 1138 +f 1138 733 729 +f 1138 729 727 +f 847 649 910 +f 910 649 911 +f 910 911 913 +f 913 911 924 +f 913 924 925 +f 925 924 1130 +f 925 1130 1131 +f 1131 1130 697 +f 1131 697 698 +f 698 697 1034 +f 698 1034 1033 +f 1033 1034 1173 +f 1033 1173 1177 +f 1177 1173 1048 +f 1177 1048 1047 +f 1047 1048 1183 +f 1047 1183 1182 +f 1182 1183 673 +f 1182 673 671 +f 1128 649 928 +f 928 649 929 +f 928 929 931 +f 931 929 693 +f 931 693 694 +f 694 693 1038 +f 694 1038 1037 +f 1037 1038 1175 +f 1037 1175 1179 +f 1179 1175 681 +f 1179 681 679 +f 690 689 687 +f 937 934 935 +f 935 934 649 +f 935 649 949 +f 949 1153 1154 +f 1154 1153 957 +f 1154 957 959 +f 959 957 960 +f 959 960 657 +f 657 960 656 +f 657 656 1188 +f 1188 656 1064 +f 1188 1064 1063 +f 1063 1064 1077 +f 1063 1077 1076 +f 1076 1077 1196 +f 1076 1196 1197 +f 1197 1196 634 +f 1197 634 632 +f 955 649 956 +f 955 956 958 +f 958 956 963 +f 958 963 655 +f 655 963 654 +f 655 654 1189 +f 1189 654 1066 +f 1189 1066 1065 +f 1065 1066 1079 +f 1065 1079 1078 +f 1078 1079 638 +f 1078 638 636 +f 1159 649 651 +f 651 649 650 +f 651 650 1191 +f 1191 650 646 +f 1191 646 644 +f 629 631 627 +f 627 631 829 +f 631 633 829 +f 829 633 831 +f 633 635 831 +f 831 635 833 +f 635 637 833 +f 833 637 835 +f 637 639 835 +f 835 639 837 +f 639 641 837 +f 837 641 839 +f 641 643 839 +f 839 643 841 +f 643 645 841 +f 841 645 843 +f 650 649 648 +f 645 647 843 +f 810 811 1091 +f 1091 811 812 +f 1091 812 815 +f 964 711 791 +f 628 629 627 +f 646 650 648 +f 632 630 1083 +f 1083 630 1082 +f 1083 1082 1194 +f 1078 636 1196 +f 1196 636 634 +f 638 1079 640 +f 640 1079 1067 +f 640 1067 642 +f 642 1067 1068 +f 642 1068 644 +f 644 1068 1191 +f 649 1159 962 +f 962 1159 653 +f 962 653 963 +f 963 653 654 +f 632 1083 1197 +f 1197 1083 1195 +f 1197 1195 1076 +f 1076 1195 1075 +f 1076 1075 1063 +f 1063 1075 1062 +f 1063 1062 1188 +f 1188 1062 658 +f 1188 658 657 +f 657 658 961 +f 657 961 959 +f 959 961 1155 +f 959 1155 1154 +f 1154 1155 950 +f 1154 950 949 +f 949 950 935 +f 1195 1083 1194 +f 1065 1078 1077 +f 1077 1078 1196 +f 1079 1066 1067 +f 1067 1066 1190 +f 1067 1190 1068 +f 1068 1190 652 +f 1068 652 1191 +f 1191 652 651 +f 963 956 962 +f 962 956 649 +f 1075 1195 1074 +f 1074 1195 1194 +f 1189 1065 1064 +f 1064 1065 1077 +f 1066 654 1190 +f 1190 654 653 +f 1190 653 652 +f 652 653 1159 +f 652 1159 651 +f 1193 1081 1080 +f 1080 1081 628 +f 1192 1072 1080 +f 1080 1072 1193 +f 1072 1073 1193 +f 1062 1075 1061 +f 1061 1075 1074 +f 655 1189 656 +f 656 1189 1064 +f 658 1062 1187 +f 1187 1062 1061 +f 958 655 960 +f 960 655 656 +f 961 658 659 +f 659 658 1187 +f 955 958 957 +f 957 958 960 +f 1057 1069 1056 +f 1056 1069 1055 +f 1056 1055 1184 +f 1184 1055 1054 +f 1058 1057 1185 +f 1185 1057 1056 +f 1185 1056 664 +f 664 1056 1184 +f 1186 1058 662 +f 662 1058 1185 +f 662 1185 663 +f 663 1185 664 +f 660 1186 661 +f 661 1186 662 +f 661 662 954 +f 954 662 663 +f 1155 961 1156 +f 1156 961 659 +f 1153 955 957 +f 933 691 692 +f 933 692 693 +f 693 692 1038 +f 1055 1069 628 +f 660 661 1157 +f 1157 661 953 +f 1157 953 952 +f 953 661 954 +f 950 1155 951 +f 951 1155 1156 +f 693 929 933 +f 933 929 649 +f 1054 1055 628 +f 935 950 937 +f 937 950 951 +f 649 1128 923 +f 923 1128 1129 +f 923 1129 924 +f 924 1129 1130 +f 924 911 923 +f 667 668 1147 +f 1147 668 669 +f 1147 669 672 +f 672 669 670 +f 948 667 1146 +f 1146 667 1147 +f 1146 1147 674 +f 674 1147 672 +f 946 948 1145 +f 1145 948 1146 +f 1145 1146 676 +f 676 1146 674 +f 944 946 1144 +f 1144 946 1145 +f 1144 1145 678 +f 678 1145 676 +f 942 944 1143 +f 1143 944 1144 +f 1143 1144 680 +f 680 1144 678 +f 940 942 1142 +f 1142 942 1143 +f 1142 1143 682 +f 682 1143 680 +f 938 940 1141 +f 1141 940 1142 +f 1141 1142 684 +f 684 1142 682 +f 936 938 1140 +f 1140 938 1141 +f 1140 1141 686 +f 686 1141 684 +f 669 668 628 +f 688 1139 1140 +f 1140 1139 936 +f 688 1140 686 +f 670 669 628 +f 673 1183 675 +f 675 1183 1049 +f 675 1049 677 +f 677 1049 1050 +f 677 1050 679 +f 679 1050 1179 +f 681 1175 683 +f 683 1175 1039 +f 683 1039 685 +f 685 1039 1040 +f 685 1040 687 +f 687 1040 690 +f 729 733 731 +f 671 1052 1182 +f 1182 1052 1181 +f 1182 1181 1047 +f 1047 1181 1046 +f 1047 1046 1177 +f 1177 1046 1172 +f 1177 1172 1033 +f 1033 1172 1032 +f 1033 1032 698 +f 698 1032 699 +f 698 699 1131 +f 1131 699 926 +f 1131 926 925 +f 925 926 915 +f 925 915 913 +f 913 915 912 +f 913 912 910 +f 910 912 847 +f 1183 1048 1049 +f 1049 1048 1178 +f 1049 1178 1050 +f 1050 1178 1174 +f 1050 1174 1179 +f 1179 1174 1037 +f 1175 1038 1039 +f 1039 1038 692 +f 1039 692 1040 +f 1040 692 691 +f 1040 691 690 +f 908 1126 736 +f 908 736 909 +f 909 736 737 +f 1180 1045 1051 +f 1048 1173 1178 +f 1178 1173 1035 +f 1178 1035 1174 +f 1174 1035 1036 +f 1174 1036 1037 +f 1037 1036 694 +f 909 902 908 +f 908 902 732 +f 1173 1034 1035 +f 1035 1034 696 +f 1035 696 1036 +f 1036 696 695 +f 1036 695 694 +f 694 695 931 +f 1034 697 696 +f 696 697 932 +f 696 932 695 +f 695 932 930 +f 695 930 931 +f 931 930 928 +f 1170 1042 1169 +f 1169 1042 1041 +f 1169 1041 1027 +f 1027 1041 1168 +f 1171 1170 1029 +f 1029 1170 1169 +f 1029 1169 1028 +f 1028 1169 1027 +f 1031 1171 1030 +f 1030 1171 1029 +f 1030 1029 702 +f 702 1029 1028 +f 697 1130 932 +f 932 1130 1129 +f 932 1129 930 +f 930 1129 1128 +f 930 1128 928 +f 1041 1042 628 +f 1031 1030 700 +f 700 1030 701 +f 700 701 927 +f 701 1030 702 +f 1168 1041 628 +f 879 774 775 +f 879 775 776 +f 776 775 978 +f 776 875 879 +f 708 707 1024 +f 1024 707 706 +f 707 861 706 +f 706 861 705 +f 861 859 705 +f 705 859 922 +f 859 857 922 +f 922 857 920 +f 857 855 920 +f 920 855 918 +f 855 853 918 +f 918 853 916 +f 853 851 916 +f 916 851 914 +f 851 849 914 +f 732 1092 869 +f 869 1092 1093 +f 869 1093 870 +f 870 1093 1094 +f 708 1024 628 +f 870 863 869 +f 869 863 732 +f 862 709 1160 +f 1160 709 710 +f 1160 710 714 +f 714 710 712 +f 860 862 1161 +f 1161 862 1160 +f 1161 1160 716 +f 716 1160 714 +f 858 860 1162 +f 1162 860 1161 +f 1162 1161 718 +f 718 1161 716 +f 856 858 1163 +f 1163 858 1162 +f 1163 1162 720 +f 720 1162 718 +f 854 856 1164 +f 1164 856 1163 +f 1164 1163 722 +f 722 1163 720 +f 852 854 1165 +f 1165 854 1164 +f 1165 1164 724 +f 724 1164 722 +f 850 852 1166 +f 1166 852 1165 +f 1166 1165 726 +f 726 1165 724 +f 845 846 848 +f 848 850 1167 +f 1167 850 1166 +f 1167 1166 728 +f 728 1166 726 +f 730 845 1167 +f 1167 845 848 +f 730 1167 728 +f 711 712 710 +f 715 713 1023 +f 1023 713 1022 +f 1023 1022 1150 +f 1018 719 1152 +f 1152 719 717 +f 721 1019 723 +f 723 1019 1007 +f 723 1007 725 +f 725 1007 1008 +f 725 1008 727 +f 727 1008 1138 +f 715 1023 1158 +f 1158 1023 1151 +f 1158 1151 1016 +f 1016 1151 1015 +f 1016 1015 1003 +f 1003 1015 1002 +f 1003 1002 1135 +f 1135 1002 741 +f 1135 741 740 +f 740 741 907 +f 740 907 905 +f 905 907 1119 +f 905 1119 1118 +f 1118 1119 896 +f 1118 896 895 +f 895 896 881 +f 1151 1023 1150 +f 1005 1018 1017 +f 1017 1018 1152 +f 1019 1006 1007 +f 1007 1006 1137 +f 1007 1137 1008 +f 1008 1137 735 +f 1008 735 1138 +f 1138 735 734 +f 1015 1151 1014 +f 1014 1151 1150 +f 1136 1005 1004 +f 1004 1005 1017 +f 1006 737 1137 +f 1137 737 736 +f 1137 736 735 +f 735 736 1126 +f 735 1126 734 +f 1149 1021 1020 +f 1020 1021 711 +f 1148 1012 1020 +f 1020 1012 1149 +f 1012 1013 1149 +f 1002 1015 1001 +f 1001 1015 1014 +f 738 1136 739 +f 739 1136 1004 +f 741 1002 1134 +f 1134 1002 1001 +f 904 738 906 +f 906 738 739 +f 907 741 742 +f 742 741 1134 +f 901 904 903 +f 903 904 906 +f 997 1009 996 +f 996 1009 995 +f 996 995 1127 +f 1127 995 994 +f 998 997 1132 +f 1132 997 996 +f 1132 996 747 +f 747 996 1127 +f 1133 998 745 +f 745 998 1132 +f 745 1132 746 +f 746 1132 747 +f 743 1133 744 +f 744 1133 745 +f 744 745 900 +f 900 745 746 +f 1119 907 1120 +f 1120 907 742 +f 1117 901 903 +f 995 1009 711 +f 743 744 1121 +f 1121 744 899 +f 1121 899 898 +f 899 744 900 +f 896 1119 897 +f 897 1119 1120 +f 994 995 711 +f 881 896 883 +f 883 896 897 +f 750 751 1112 +f 1112 751 752 +f 1112 752 755 +f 755 752 753 +f 894 750 1111 +f 1111 750 1112 +f 1111 1112 757 +f 757 1112 755 +f 892 894 1110 +f 1110 894 1111 +f 1110 1111 759 +f 759 1111 757 +f 890 892 1109 +f 1109 892 1110 +f 1109 1110 761 +f 761 1110 759 +f 888 890 1108 +f 1108 890 1109 +f 1108 1109 763 +f 763 1109 761 +f 886 888 1107 +f 1107 888 1108 +f 1107 1108 765 +f 765 1108 763 +f 884 886 1106 +f 1106 886 1107 +f 1106 1107 767 +f 767 1107 765 +f 882 884 1105 +f 1105 884 1106 +f 1105 1106 769 +f 769 1106 767 +f 752 751 711 +f 771 1104 1105 +f 1105 1104 882 +f 771 1105 769 +f 756 1125 758 +f 758 1125 989 +f 758 989 760 +f 760 989 990 +f 760 990 762 +f 762 990 1116 +f 764 1103 766 +f 766 1103 979 +f 766 979 768 +f 768 979 980 +f 768 980 770 +f 770 980 773 +f 754 992 1124 +f 1124 992 1123 +f 1124 1123 987 +f 987 1123 986 +f 987 986 1114 +f 1114 986 1100 +f 1114 1100 973 +f 973 1100 972 +f 973 972 781 +f 781 972 782 +f 781 782 1095 +f 1095 782 872 +f 1095 872 871 +f 871 872 865 +f 871 865 864 +f 864 865 816 +f 864 816 814 +f 814 816 813 +f 1125 988 989 +f 989 988 1115 +f 989 1115 990 +f 990 1115 1102 +f 990 1102 1116 +f 1116 1102 977 +f 1103 978 979 +f 979 978 775 +f 979 775 980 +f 980 775 774 +f 980 774 773 +f 988 1101 1115 +f 1115 1101 975 +f 1115 975 1102 +f 1102 975 976 +f 1102 976 977 +f 977 976 777 +f 985 1122 984 +f 984 1122 983 +f 984 983 1098 +f 1101 974 975 +f 975 974 779 +f 975 779 976 +f 976 779 778 +f 976 778 777 +f 777 778 877 +f 985 984 1113 +f 1113 984 1099 +f 1113 1099 971 +f 971 1099 970 +f 971 970 783 +f 783 970 784 +f 783 784 873 +f 873 784 867 +f 873 867 866 +f 866 867 820 +f 866 820 818 +f 818 820 817 +f 818 817 815 +f 815 817 1091 +f 1099 984 1098 +f 974 780 779 +f 779 780 878 +f 779 878 778 +f 778 878 876 +f 778 876 877 +f 877 876 874 +f 970 1099 969 +f 969 1099 1098 +f 780 1094 878 +f 878 1094 1093 +f 878 1093 876 +f 876 1093 1092 +f 876 1092 874 +f 1097 982 981 +f 981 982 711 +f 1096 967 981 +f 981 967 1097 +f 967 968 1097 +f 784 970 785 +f 785 970 969 +f 867 784 868 +f 868 784 785 +f 820 867 822 +f 822 867 868 +f 791 790 964 +f 964 790 789 +f 790 827 789 +f 789 827 788 +f 827 825 788 +f 788 825 826 +f 825 823 826 +f 826 823 824 +f 823 821 824 +f 817 820 819 +f 819 820 822 +f 1091 817 1090 +f 1090 817 819 +f 810 1091 1090 +f 2148 27299 2150 +f 2150 27299 27300 +f 2150 27300 2214 +f 2214 27300 27301 +f 2214 27301 2248 +f 2248 27301 2246 +f 2246 27301 2244 +f 2244 27301 2242 +f 2242 27301 2240 +f 2240 27301 2238 +f 2238 27301 2236 +f 2236 27301 27302 +f 2236 27302 2216 +f 2216 27302 2218 +f 2218 27302 2037 +f 2037 27302 2059 +f 2059 27302 2057 +f 2057 27302 27303 +f 2057 27303 2055 +f 2055 27303 2053 +f 2053 27303 2051 +f 2051 27303 2049 +f 2049 27303 2018 +f 2018 27303 2020 +f 2020 27303 27304 +f 2020 27304 2100 +f 2100 27304 27305 +f 2100 27305 2134 +f 2134 27305 2132 +f 2132 27305 2130 +f 2130 27305 2128 +f 2128 27305 2126 +f 2126 27305 2124 +f 2124 27305 27306 +f 2124 27306 2102 +f 2102 27306 2104 +f 2104 27306 2146 +f 2146 27306 2180 +f 2180 27306 2178 +f 2178 27306 27299 +f 2178 27299 2176 +f 2176 27299 2174 +f 2174 27299 2172 +f 2172 27299 2170 +f 2170 27299 2168 +f 2168 27299 2148 +f 27302 27301 27300 +f 27300 27299 27307 +f 27307 27299 27306 +f 27307 27306 27304 +f 27304 27306 27305 +f 27303 27302 27307 +f 27307 27302 27300 +f 27303 27307 27304 +f 2145 2147 27308 +f 27308 2147 2181 +f 27308 2181 2200 +f 27308 2200 27309 +f 27309 2200 2202 +f 27309 2202 2204 +f 2204 2206 27309 +f 27309 2206 2208 +f 27309 2208 2210 +f 2210 2212 27309 +f 27309 2212 2199 +f 27309 2199 27310 +f 27310 2199 2215 +f 27310 2215 27311 +f 27311 2215 2249 +f 27311 2249 2260 +f 2260 2262 27311 +f 27311 2262 2264 +f 27311 2264 2266 +f 2266 2268 27311 +f 27311 2268 2270 +f 27311 2270 27312 +f 27312 2270 2272 +f 27312 2272 2259 +f 2259 2039 27312 +f 27312 2039 2062 +f 27312 2062 2047 +f 27312 2047 27313 +f 27313 2047 2048 +f 27313 2048 2067 +f 2067 2069 27313 +f 27313 2069 2071 +f 27313 2071 2072 +f 2072 2074 27313 +f 27313 2074 27314 +f 27313 27314 27312 +f 27312 27314 27315 +f 27312 27315 27311 +f 27311 27315 27310 +f 2074 2101 27314 +f 27314 2101 27316 +f 27314 27316 27315 +f 27315 27316 27308 +f 27315 27308 27310 +f 27310 27308 27309 +f 2101 2120 27316 +f 27316 2120 2122 +f 27316 2122 2123 +f 2123 2137 27316 +f 27316 2137 2139 +f 27316 2139 2142 +f 27316 2142 27308 +f 27308 2142 2144 +f 27308 2144 2145 +f 2218 2037 2259 +f 2259 2037 2039 +f 2248 2247 2214 +f 2214 2247 2233 +f 2214 2233 2234 +f 2234 2233 2231 +f 2234 2231 2232 +f 2232 2231 2229 +f 2232 2229 2230 +f 2230 2229 2227 +f 2230 2227 2228 +f 2228 2227 2225 +f 2228 2225 2226 +f 2226 2225 2223 +f 2226 2223 2224 +f 2224 2223 2221 +f 2224 2221 2222 +f 2222 2221 2219 +f 2222 2219 2220 +f 2220 2219 2218 +f 2220 2218 2259 +f 2248 2246 2247 +f 2247 2245 2233 +f 2233 2245 2231 +f 2245 2244 2243 +f 2245 2243 2231 +f 2231 2243 2229 +f 2243 2241 2229 +f 2229 2241 2227 +f 2242 2240 2241 +f 2241 2240 2239 +f 2241 2239 2227 +f 2227 2239 2225 +f 2240 2238 2239 +f 2239 2238 2237 +f 2239 2237 2225 +f 2225 2237 2223 +f 2238 2236 2237 +f 2237 2236 2235 +f 2237 2235 2223 +f 2223 2235 2221 +f 2236 2216 2235 +f 2235 2217 2221 +f 2221 2217 2219 +f 2216 2218 2217 +f 2217 2218 2219 +f 2272 2273 2259 +f 2259 2258 2220 +f 2220 2258 2257 +f 2220 2257 2222 +f 2222 2257 2256 +f 2222 2256 2224 +f 2224 2256 2255 +f 2224 2255 2226 +f 2226 2255 2254 +f 2226 2254 2228 +f 2228 2254 2253 +f 2228 2253 2230 +f 2230 2253 2252 +f 2230 2252 2232 +f 2232 2252 2251 +f 2232 2251 2234 +f 2271 2272 2270 +f 2271 2270 2269 +f 2269 2270 2268 +f 2269 2268 2267 +f 2267 2268 2266 +f 2265 2266 2264 +f 2265 2264 2263 +f 2263 2264 2262 +f 2263 2262 2261 +f 2261 2262 2260 +f 2261 2260 2250 +f 2250 2260 2249 +f 2250 2249 2215 +f 2250 2215 2251 +f 2251 2252 2250 +f 2250 2252 2261 +f 2252 2253 2261 +f 2261 2253 2263 +f 2253 2254 2263 +f 2263 2254 2265 +f 2254 2255 2265 +f 2265 2255 2267 +f 2255 2256 2267 +f 2267 2256 2269 +f 2258 2273 2271 +f 2256 2257 2269 +f 2269 2257 2271 +f 2257 2258 2271 +f 2150 2214 2199 +f 2199 2214 2215 +f 2146 2179 2165 +f 2166 2165 2163 +f 2166 2163 2164 +f 2164 2163 2161 +f 2164 2161 2162 +f 2162 2161 2159 +f 2162 2159 2160 +f 2160 2159 2157 +f 2160 2157 2158 +f 2158 2157 2155 +f 2158 2155 2156 +f 2156 2155 2153 +f 2156 2153 2154 +f 2154 2153 2151 +f 2154 2151 2152 +f 2152 2150 2199 +f 2180 2178 2179 +f 2179 2178 2177 +f 2179 2177 2165 +f 2165 2177 2163 +f 2178 2176 2177 +f 2177 2176 2175 +f 2177 2175 2163 +f 2163 2175 2161 +f 2176 2174 2175 +f 2175 2174 2173 +f 2175 2173 2161 +f 2161 2173 2159 +f 2174 2172 2173 +f 2173 2172 2171 +f 2173 2171 2159 +f 2159 2171 2157 +f 2172 2170 2171 +f 2171 2170 2169 +f 2171 2169 2157 +f 2157 2169 2155 +f 2169 2167 2155 +f 2155 2167 2153 +f 2168 2148 2167 +f 2167 2148 2149 +f 2167 2149 2153 +f 2153 2149 2151 +f 2199 2213 2197 +f 2199 2197 2198 +f 2198 2197 2195 +f 2198 2195 2196 +f 2196 2195 2193 +f 2196 2193 2194 +f 2194 2193 2191 +f 2194 2191 2192 +f 2192 2191 2189 +f 2192 2189 2190 +f 2190 2189 2187 +f 2190 2187 2188 +f 2188 2187 2185 +f 2188 2185 2186 +f 2186 2185 2183 +f 2186 2183 2184 +f 2184 2147 2146 +f 2213 2212 2211 +f 2211 2212 2210 +f 2211 2210 2209 +f 2209 2210 2208 +f 2209 2208 2207 +f 2207 2206 2205 +f 2205 2204 2202 +f 2205 2202 2203 +f 2203 2202 2200 +f 2203 2200 2201 +f 2201 2182 2185 +f 2185 2182 2183 +f 2200 2181 2182 +f 2184 2146 2166 +f 2185 2187 2201 +f 2201 2187 2203 +f 2187 2189 2203 +f 2203 2189 2205 +f 2189 2191 2205 +f 2205 2191 2207 +f 2191 2193 2207 +f 2207 2193 2209 +f 2197 2213 2211 +f 2193 2195 2209 +f 2209 2195 2211 +f 2152 2199 2198 +f 2195 2197 2211 +f 2166 2164 2184 +f 2184 2164 2186 +f 2164 2162 2186 +f 2186 2162 2188 +f 2162 2160 2188 +f 2188 2160 2190 +f 2160 2158 2190 +f 2190 2158 2192 +f 2158 2156 2192 +f 2192 2156 2194 +f 2152 2198 2196 +f 2156 2154 2194 +f 2194 2154 2196 +f 2154 2152 2196 +f 2104 2146 2145 +f 2145 2146 2147 +f 2100 2135 2117 +f 2100 2117 2118 +f 2118 2117 2115 +f 2118 2115 2116 +f 2116 2115 2113 +f 2116 2113 2114 +f 2114 2113 2111 +f 2114 2111 2112 +f 2112 2111 2109 +f 2112 2109 2110 +f 2110 2109 2107 +f 2110 2107 2108 +f 2108 2107 2105 +f 2108 2105 2106 +f 2106 2105 2145 +f 2106 2145 2143 +f 2143 2145 2144 +f 2143 2144 2142 +f 2135 2134 2133 +f 2133 2132 2131 +f 2131 2132 2130 +f 2131 2130 2129 +f 2127 2128 2126 +f 2127 2126 2125 +f 2125 2126 2124 +f 2125 2124 2103 +f 2103 2124 2102 +f 2103 2102 2104 +f 2103 2104 2105 +f 2105 2104 2145 +f 2141 2142 2139 +f 2141 2139 2140 +f 2140 2139 2137 +f 2140 2137 2138 +f 2138 2137 2123 +f 2138 2123 2136 +f 2136 2123 2122 +f 2136 2122 2121 +f 2121 2122 2120 +f 2119 2120 2101 +f 2119 2101 2118 +f 2118 2101 2100 +f 2105 2107 2103 +f 2103 2107 2125 +f 2107 2109 2125 +f 2125 2109 2127 +f 2109 2111 2127 +f 2127 2111 2129 +f 2111 2113 2129 +f 2129 2113 2131 +f 2117 2135 2133 +f 2113 2115 2131 +f 2131 2115 2133 +f 2115 2117 2133 +f 2118 2116 2119 +f 2119 2116 2121 +f 2116 2114 2121 +f 2121 2114 2136 +f 2114 2112 2136 +f 2136 2112 2138 +f 2112 2110 2138 +f 2138 2110 2140 +f 2106 2143 2141 +f 2110 2108 2140 +f 2140 2108 2141 +f 2108 2106 2141 +f 2059 2061 2037 +f 2037 2061 2035 +f 2037 2035 2036 +f 2036 2035 2033 +f 2036 2033 2034 +f 2034 2033 2031 +f 2034 2031 2032 +f 2032 2031 2029 +f 2032 2029 2030 +f 2030 2029 2027 +f 2030 2027 2028 +f 2028 2027 2025 +f 2028 2025 2026 +f 2026 2025 2023 +f 2026 2023 2024 +f 2024 2023 2021 +f 2024 2021 2022 +f 2022 2021 2020 +f 2083 2020 2074 +f 2083 2074 2082 +f 2082 2076 2077 +f 2077 2076 2084 +f 2077 2084 2085 +f 2085 2084 2068 +f 2085 2068 2066 +f 2066 2067 2048 +f 2057 2058 2059 +f 2059 2058 2060 +f 2061 2060 2035 +f 2058 2057 2056 +f 2056 2057 2055 +f 2052 2051 2050 +f 2050 2051 2049 +f 2019 2049 2018 +f 2074 2073 2075 +f 2076 2075 2084 +f 2072 2071 2073 +f 2073 2071 2070 +f 2073 2070 2075 +f 2075 2070 2084 +f 2071 2069 2070 +f 2070 2068 2084 +f 2046 2048 2047 +f 2045 2062 2065 +f 2065 2062 2063 +f 2065 2063 2043 +f 2043 2063 2064 +f 2043 2064 2042 +f 2042 2064 2041 +f 2042 2041 2095 +f 2095 2041 2040 +f 2095 2040 2099 +f 2099 2040 2038 +f 2099 2038 2034 +f 2034 2038 2036 +f 2062 2039 2063 +f 2063 2039 2064 +f 2037 2040 2039 +f 2039 2040 2041 +f 2039 2041 2064 +f 2019 2021 2023 +f 2019 2023 2050 +f 2050 2023 2025 +f 2050 2025 2052 +f 2052 2025 2027 +f 2052 2027 2054 +f 2054 2027 2029 +f 2054 2029 2056 +f 2056 2029 2031 +f 2056 2031 2058 +f 2058 2031 2033 +f 2058 2033 2060 +f 2060 2033 2035 +f 2036 2038 2037 +f 2037 2038 2040 +f 2045 2065 2044 +f 2044 2065 2043 +f 2044 2043 2094 +f 2094 2043 2042 +f 2094 2042 2096 +f 2096 2042 2095 +f 2096 2095 2097 +f 2097 2095 2099 +f 2097 2099 2032 +f 2032 2099 2034 +f 2046 2045 2090 +f 2090 2045 2044 +f 2090 2044 2091 +f 2091 2044 2094 +f 2091 2094 2092 +f 2092 2094 2096 +f 2092 2096 2093 +f 2093 2096 2097 +f 2093 2097 2030 +f 2030 2097 2032 +f 2066 2046 2087 +f 2087 2046 2090 +f 2087 2090 2088 +f 2088 2090 2091 +f 2088 2091 2089 +f 2089 2091 2092 +f 2089 2092 2081 +f 2081 2092 2093 +f 2081 2093 2028 +f 2028 2093 2030 +f 2024 2022 2098 +f 2098 2022 2083 +f 2098 2083 2078 +f 2078 2083 2082 +f 2078 2082 2077 +f 2081 2028 2026 +f 2026 2024 2080 +f 2080 2024 2098 +f 2080 2098 2079 +f 2079 2098 2078 +f 2079 2078 2086 +f 2086 2078 2077 +f 2086 2077 2085 +f 2089 2081 2080 +f 2080 2081 2026 +f 2089 2080 2079 +f 2088 2089 2079 +f 2088 2079 2086 +f 2087 2088 2086 +f 2087 2086 2085 +f 2066 2087 2085 +f 4246 27317 4249 +f 4249 27317 27318 +f 4249 27318 4253 +f 4253 27318 4254 +f 4254 27318 27319 +f 4254 27319 4255 +f 4255 27319 4260 +f 4260 27319 4261 +f 4261 27319 4265 +f 4265 27319 4266 +f 4266 27319 4268 +f 4268 27319 4270 +f 4270 27319 27320 +f 4270 27320 4271 +f 4271 27320 4272 +f 4272 27320 4273 +f 4273 27320 4274 +f 4274 27320 4276 +f 4276 27320 27321 +f 4276 27321 4277 +f 4277 27321 4278 +f 4278 27321 4279 +f 4279 27321 4281 +f 4281 27321 4282 +f 4282 27321 4283 +f 4283 27321 27322 +f 4283 27322 4289 +f 4289 27322 4285 +f 4285 27322 27323 +f 4285 27323 4287 +f 4287 27323 4288 +f 4288 27323 4290 +f 4290 27323 4291 +f 4291 27323 4292 +f 4292 27323 4293 +f 4293 27323 27324 +f 4293 27324 4294 +f 4294 27324 4229 +f 4229 27324 4230 +f 4230 27324 4232 +f 4232 27324 4234 +f 4234 27324 27317 +f 4234 27317 4237 +f 4237 27317 4238 +f 4238 27317 4245 +f 4238 4245 4240 +f 4240 4245 4247 +f 4246 4245 27317 +f 27320 27319 27318 +f 27318 27317 27325 +f 27325 27317 27324 +f 27325 27324 27322 +f 27322 27324 27323 +f 27321 27320 27325 +f 27325 27320 27318 +f 27321 27325 27322 +f 4322 4321 27326 +f 27326 4321 4320 +f 27326 4320 4319 +f 27326 4319 27327 +f 27327 4319 4318 +f 27327 4318 4316 +f 4316 4314 27327 +f 27327 4314 4312 +f 27327 4312 4309 +f 4309 4295 27327 +f 27327 4295 4297 +f 27327 4297 27328 +f 27328 4297 4301 +f 27328 4301 4303 +f 27328 4303 27329 +f 27329 4303 4305 +f 27329 4305 4526 +f 4526 4524 27329 +f 27329 4524 4522 +f 27329 4522 4520 +f 4520 4516 27329 +f 27329 4516 4469 +f 27329 4469 27330 +f 27330 4469 4468 +f 27330 4468 4467 +f 4467 4466 27330 +f 27330 4466 4419 +f 27330 4419 4418 +f 27330 4418 27331 +f 27331 4418 4417 +f 27331 4417 4416 +f 4416 4415 27331 +f 27331 4415 4339 +f 27331 4339 4338 +f 4338 4337 27331 +f 27331 4337 27332 +f 27331 27332 27330 +f 27330 27332 27333 +f 27330 27333 27329 +f 27329 27333 27328 +f 4337 4335 27332 +f 27332 4335 4333 +f 27332 4333 27334 +f 27334 4333 4332 +f 27334 4332 4330 +f 4330 4329 27334 +f 27334 4329 4328 +f 27334 4328 4327 +f 4327 4326 27334 +f 27334 4326 27326 +f 27334 27326 27333 +f 27333 27326 27328 +f 4326 4323 27326 +f 27326 4323 4322 +f 27327 27328 27326 +f 27334 27333 27332 +f 4255 11971 4254 +f 4254 11971 11963 +f 4254 11963 11964 +f 11964 11963 11961 +f 11964 11961 11962 +f 11962 11961 11959 +f 11962 11959 11960 +f 11960 11959 11957 +f 11960 11957 11958 +f 11958 11957 11955 +f 11958 11955 11956 +f 11956 11955 11953 +f 11956 11953 11954 +f 11954 11953 11951 +f 11954 11951 11952 +f 11952 11951 11949 +f 11952 11949 11950 +f 4255 4260 11971 +f 11971 4260 11970 +f 11971 11970 11963 +f 11963 11970 11961 +f 4260 4261 11970 +f 11970 4261 11969 +f 11970 11969 11961 +f 11961 11969 11959 +f 4261 4265 11969 +f 11969 4265 11968 +f 11969 11968 11959 +f 11959 11968 11957 +f 4265 4266 11968 +f 11968 4266 11967 +f 11968 11967 11957 +f 11957 11967 11955 +f 11967 4268 11966 +f 11967 11966 11955 +f 11955 11966 11953 +f 4268 4270 11966 +f 11966 4270 11965 +f 11966 11965 11953 +f 11953 11965 11951 +f 4270 4271 11965 +f 11965 4271 11948 +f 11965 11948 11951 +f 11951 11948 11949 +f 4271 4272 11948 +f 11948 4272 11949 +f 4467 11987 11980 +f 4467 11980 11950 +f 11950 11980 11979 +f 11950 11979 11952 +f 11952 11979 11978 +f 11952 11978 11954 +f 11954 11978 11977 +f 11954 11977 11956 +f 11956 11977 11976 +f 11956 11976 11958 +f 11958 11976 11975 +f 11958 11975 11960 +f 11960 11975 11974 +f 11960 11974 11962 +f 11962 11974 11973 +f 11962 11973 11964 +f 11964 4303 4254 +f 11986 4468 4469 +f 11986 4469 11985 +f 11984 4516 4520 +f 11984 4520 4522 +f 11984 4522 11983 +f 11983 4522 4524 +f 11983 4524 11982 +f 11982 11981 11975 +f 11975 11981 11974 +f 11981 4526 4305 +f 11981 4305 11972 +f 11972 4303 11973 +f 11974 11981 11972 +f 11973 11974 11972 +f 11975 11976 11982 +f 11982 11976 11983 +f 11976 11977 11983 +f 11983 11977 11984 +f 11977 11978 11984 +f 11984 11978 11985 +f 11980 11987 11986 +f 11978 11979 11985 +f 11985 11979 11986 +f 11979 11980 11986 +f 4249 4253 4297 +f 4297 4253 4301 +f 4230 12011 12003 +f 4230 12003 12004 +f 12004 12003 12001 +f 12004 12001 12002 +f 12002 12001 11999 +f 12002 11999 12000 +f 12000 11999 11997 +f 12000 11997 11998 +f 11998 11997 11995 +f 11998 11995 11996 +f 11996 11995 11993 +f 11996 11993 11994 +f 11994 11993 11991 +f 11994 11991 11992 +f 11992 11991 11989 +f 11992 11989 11990 +f 11990 11989 4249 +f 11990 4249 4297 +f 12011 4234 12010 +f 12011 12010 12003 +f 12003 12010 12001 +f 12010 12009 12001 +f 12001 12009 11999 +f 12009 4238 12008 +f 12009 12008 11999 +f 11999 12008 11997 +f 4238 4240 12008 +f 12008 12007 11997 +f 11997 12007 11995 +f 12007 12006 11995 +f 11995 12006 11993 +f 12006 12005 11993 +f 11993 12005 11991 +f 12005 11988 11991 +f 11991 11988 11989 +f 4246 4249 11988 +f 4297 12035 12027 +f 12028 12027 12025 +f 12028 12025 12026 +f 12026 12025 12023 +f 12026 12023 12024 +f 12024 12023 12021 +f 12024 12021 12022 +f 12022 12021 12019 +f 12022 12019 12020 +f 12020 12019 12017 +f 12020 12017 12018 +f 12018 12017 12015 +f 12018 12015 12016 +f 12016 12015 12013 +f 12016 12013 12014 +f 12014 4321 4230 +f 12035 4295 12034 +f 12033 4312 12032 +f 12032 4312 4314 +f 12031 4314 4316 +f 12031 4316 4318 +f 12031 4318 12030 +f 12030 4318 4319 +f 12030 4319 12029 +f 12029 4319 12012 +f 12029 12012 12015 +f 12015 12012 12013 +f 12012 4320 4321 +f 12012 4321 12013 +f 12014 4230 12004 +f 12015 12017 12029 +f 12029 12017 12030 +f 12017 12019 12030 +f 12030 12019 12031 +f 12019 12021 12031 +f 12031 12021 12032 +f 12021 12023 12032 +f 12032 12023 12033 +f 12027 12035 12034 +f 12023 12025 12033 +f 12033 12025 12034 +f 11990 4297 12028 +f 12025 12027 12034 +f 12004 12002 12014 +f 12014 12002 12016 +f 12002 12000 12016 +f 12016 12000 12018 +f 12000 11998 12018 +f 12018 11998 12020 +f 11998 11996 12020 +f 12020 11996 12022 +f 11996 11994 12022 +f 12022 11994 12024 +f 11990 12028 12026 +f 11994 11992 12024 +f 12024 11992 12026 +f 11992 11990 12026 +f 4229 4230 4322 +f 4322 4230 4321 +f 4285 12049 12050 +f 12050 12049 12047 +f 12050 12047 12048 +f 12048 12047 12045 +f 12048 12045 12046 +f 12046 12045 12043 +f 12046 12043 12044 +f 12044 12043 12041 +f 12044 12041 12042 +f 12042 12041 12039 +f 12042 12039 12040 +f 12040 12039 12037 +f 12040 12037 12038 +f 12038 12037 4322 +f 12057 4288 12056 +f 12056 4288 4290 +f 12055 4291 12054 +f 12036 4293 4294 +f 12036 4294 4322 +f 4322 4294 4229 +f 12063 4326 12062 +f 12062 4326 4327 +f 12062 4327 12061 +f 12061 4327 4328 +f 12061 4328 12060 +f 12060 4328 4329 +f 12060 4329 12059 +f 12059 4329 4330 +f 12059 4330 12052 +f 12052 4332 12051 +f 12050 4333 4285 +f 12037 12039 12036 +f 12036 12039 12053 +f 12039 12041 12053 +f 12053 12041 12054 +f 12041 12043 12054 +f 12054 12043 12055 +f 12043 12045 12055 +f 12055 12045 12056 +f 12049 12058 12057 +f 12045 12047 12056 +f 12056 12047 12057 +f 12047 12049 12057 +f 12037 12036 4322 +f 12050 12048 12051 +f 12051 12048 12052 +f 12048 12046 12052 +f 12052 12046 12059 +f 12046 12044 12059 +f 12059 12044 12060 +f 12044 12042 12060 +f 12060 12042 12061 +f 12038 12063 12062 +f 12042 12040 12061 +f 12061 12040 12062 +f 12040 12038 12062 +f 4283 4289 4337 +f 4335 4289 4333 +f 4333 4289 4285 +f 4273 12079 12080 +f 12080 12079 12077 +f 12080 12077 12078 +f 12078 12077 12075 +f 12078 12075 12076 +f 12076 12075 12073 +f 12076 12073 12074 +f 12074 12073 12071 +f 12074 12071 12072 +f 12072 12071 12069 +f 12072 12069 12070 +f 12070 12069 12067 +f 12070 12067 12068 +f 12068 12067 12065 +f 12068 12065 12066 +f 12066 12065 4283 +f 12066 4283 12111 +f 12111 4283 4337 +f 12111 4337 12110 +f 12110 12104 12105 +f 12105 12104 12112 +f 12105 12112 12113 +f 12113 12112 12100 +f 12113 12100 12099 +f 12099 12100 4416 +f 12099 4416 4417 +f 4274 12093 12094 +f 12095 12094 12079 +f 12091 4277 4278 +f 12091 4278 12090 +f 12090 4279 12089 +f 12089 4279 4281 +f 12089 4281 12064 +f 12064 4282 4283 +f 4338 12102 4337 +f 4337 12102 12103 +f 4337 12103 12104 +f 12104 12103 12112 +f 4338 4339 12102 +f 12102 4339 12101 +f 12102 12101 12103 +f 12103 12101 12112 +f 4339 4415 12101 +f 12101 12100 12112 +f 4415 4416 12100 +f 12099 4417 12088 +f 12088 4418 12087 +f 12087 4419 12098 +f 12098 4419 12096 +f 12098 12096 12085 +f 12085 12096 12097 +f 12085 12097 12084 +f 12084 12097 12083 +f 12084 12083 12123 +f 12123 12083 12082 +f 12123 12082 12127 +f 12127 12082 12081 +f 12127 12081 12078 +f 12078 12081 12080 +f 4273 12082 4466 +f 12064 12065 12067 +f 12064 12067 12089 +f 12089 12067 12069 +f 12089 12069 12090 +f 12090 12069 12071 +f 12090 12071 12091 +f 12091 12071 12073 +f 12091 12073 12092 +f 12092 12073 12075 +f 12092 12075 12093 +f 12093 12075 12077 +f 12093 12077 12094 +f 12094 12077 12079 +f 12080 12081 4273 +f 4273 12081 12082 +f 12087 12098 12086 +f 12086 12098 12085 +f 12086 12085 12122 +f 12122 12085 12084 +f 12122 12084 12124 +f 12124 12084 12123 +f 12124 12123 12125 +f 12125 12123 12127 +f 12125 12127 12076 +f 12076 12127 12078 +f 12088 12087 12118 +f 12118 12087 12086 +f 12118 12086 12119 +f 12119 12086 12122 +f 12119 12122 12120 +f 12120 12122 12124 +f 12120 12124 12121 +f 12121 12124 12125 +f 12121 12125 12074 +f 12074 12125 12076 +f 12099 12088 12115 +f 12115 12088 12118 +f 12115 12118 12116 +f 12116 12118 12119 +f 12116 12119 12117 +f 12117 12119 12120 +f 12117 12120 12109 +f 12109 12120 12121 +f 12109 12121 12072 +f 12072 12121 12074 +f 12068 12066 12126 +f 12126 12066 12111 +f 12126 12111 12106 +f 12106 12111 12110 +f 12106 12110 12105 +f 12109 12072 12070 +f 12070 12068 12108 +f 12108 12068 12126 +f 12108 12126 12107 +f 12107 12126 12106 +f 12107 12106 12114 +f 12114 12106 12105 +f 12114 12105 12113 +f 12117 12109 12108 +f 12108 12109 12070 +f 12117 12108 12107 +f 12116 12117 12107 +f 12116 12107 12114 +f 12115 12116 12114 +f 12115 12114 12113 +f 12099 12115 12113 +f 4540 27335 4542 +f 4542 27335 27336 +f 4542 27336 4544 +f 4544 27336 27337 +f 4544 27337 4548 +f 4548 27337 4594 +f 4594 27337 4595 +f 4595 27337 4596 +f 4596 27337 4597 +f 4597 27337 4598 +f 4598 27337 4599 +f 4599 27337 27338 +f 4599 27338 4600 +f 4600 27338 4601 +f 4601 27338 4602 +f 4602 27338 4603 +f 4603 27338 4604 +f 4604 27338 27339 +f 4604 27339 4605 +f 4605 27339 4264 +f 4264 27339 4262 +f 4262 27339 4263 +f 4263 27339 4259 +f 4259 27339 4258 +f 4258 27339 27340 +f 4258 27340 4252 +f 4252 27340 4250 +f 4250 27340 27341 +f 4250 27341 4248 +f 4248 27341 4244 +f 4244 27341 4243 +f 4243 27341 4241 +f 4241 27341 4239 +f 4239 27341 4236 +f 4236 27341 27342 +f 4236 27342 4235 +f 4235 27342 4527 +f 4527 27342 4528 +f 4528 27342 4529 +f 4529 27342 4530 +f 4530 27342 27335 +f 4530 27335 4532 +f 4532 27335 4534 +f 4534 27335 4537 +f 4534 4537 4535 +f 4535 4537 4536 +f 4540 4537 27335 +f 27338 27337 27336 +f 27336 27335 27343 +f 27343 27335 27342 +f 27343 27342 27340 +f 27340 27342 27341 +f 27339 27338 27343 +f 27343 27338 27336 +f 27339 27343 27340 +f 4644 4643 27344 +f 27344 4643 4642 +f 27344 4642 4641 +f 27344 4641 27345 +f 27345 4641 4640 +f 27345 4640 4624 +f 4624 4622 27345 +f 27345 4622 4620 +f 27345 4620 4618 +f 4618 4606 27345 +f 27345 4606 4608 +f 27345 4608 27346 +f 27346 4608 4612 +f 27346 4612 27347 +f 27347 4612 4614 +f 27347 4614 4662 +f 4662 4657 27347 +f 27347 4657 4656 +f 27347 4656 4655 +f 4655 4653 27347 +f 27347 4653 4651 +f 27347 4651 27348 +f 27348 4651 4650 +f 27348 4650 4649 +f 4649 4648 27348 +f 27348 4648 4518 +f 27348 4518 4517 +f 27348 4517 27349 +f 27349 4517 4519 +f 27349 4519 4647 +f 4647 4525 27349 +f 27349 4525 4307 +f 27349 4307 4306 +f 4306 4304 27349 +f 27349 4304 27350 +f 27349 27350 27348 +f 27348 27350 27351 +f 27348 27351 27347 +f 27347 27351 27346 +f 4304 4300 27350 +f 27350 4300 4298 +f 27350 4298 27352 +f 27352 4298 4296 +f 27352 4296 4310 +f 4310 4311 27352 +f 27352 4311 4313 +f 27352 4313 4315 +f 4315 4646 27352 +f 27352 4646 27344 +f 27352 27344 27351 +f 27351 27344 27346 +f 4646 4645 27344 +f 27344 4645 4644 +f 27345 27346 27344 +f 27352 27351 27350 +f 4602 4648 4601 +f 4601 4648 4649 +f 4544 12151 12143 +f 12144 12143 12141 +f 12144 12141 12142 +f 12142 12141 12139 +f 12142 12139 12140 +f 12140 12139 12137 +f 12140 12137 12138 +f 12138 12137 12135 +f 12138 12135 12136 +f 12136 12135 12133 +f 12136 12133 12134 +f 12134 12133 12131 +f 12134 12131 12132 +f 12132 12131 12129 +f 12132 12129 12130 +f 12130 4601 4649 +f 12151 12150 12143 +f 12143 12150 12141 +f 12150 4595 12149 +f 12150 12149 12141 +f 12141 12149 12139 +f 4595 4596 12149 +f 12149 4596 12148 +f 12149 12148 12139 +f 12139 12148 12137 +f 12148 12147 12137 +f 12137 12147 12135 +f 12147 4598 12146 +f 12147 12146 12135 +f 12135 12146 12133 +f 4598 4599 12146 +f 12146 4599 12145 +f 12146 12145 12133 +f 12133 12145 12131 +f 12145 4600 12128 +f 12145 12128 12131 +f 12131 12128 12129 +f 4649 12160 12130 +f 12130 12160 12159 +f 12130 12159 12132 +f 12132 12159 12158 +f 12132 12158 12134 +f 12134 12158 12157 +f 12134 12157 12136 +f 12136 12157 12156 +f 12136 12156 12138 +f 12138 12156 12155 +f 12138 12155 12140 +f 12140 12155 12154 +f 12140 12154 12142 +f 12142 12154 12153 +f 12142 12153 12144 +f 12144 12153 4612 +f 12144 4612 4544 +f 12166 4651 12165 +f 12165 4651 4653 +f 12164 4653 4655 +f 12164 4655 4656 +f 12164 4656 12163 +f 12163 4656 4657 +f 12163 4657 12162 +f 12162 4657 12161 +f 12162 12161 12155 +f 12155 12161 12154 +f 12161 4662 4614 +f 12161 4614 12152 +f 12152 4612 12153 +f 12154 12161 12152 +f 12153 12154 12152 +f 12155 12156 12162 +f 12162 12156 12163 +f 12156 12157 12163 +f 12163 12157 12164 +f 12157 12158 12164 +f 12164 12158 12165 +f 12160 12167 12166 +f 12158 12159 12165 +f 12165 12159 12166 +f 12159 12160 12166 +f 4542 4544 4608 +f 4608 4544 4612 +f 12184 12183 12181 +f 12184 12181 12182 +f 12182 12181 12179 +f 12182 12179 12180 +f 12180 12179 12177 +f 12180 12177 12178 +f 12178 12177 12175 +f 12178 12175 12176 +f 12176 12175 12173 +f 12176 12173 12174 +f 12174 12173 12171 +f 12174 12171 12172 +f 12172 12171 12169 +f 12172 12169 12170 +f 12170 4542 4608 +f 12191 12190 12183 +f 12183 12190 12181 +f 4530 4532 12190 +f 12190 12189 12181 +f 12181 12189 12179 +f 4532 4534 12189 +f 12189 4534 12188 +f 12189 12188 12179 +f 12179 12188 12177 +f 12188 12187 12177 +f 12177 12187 12175 +f 12187 12186 12175 +f 12175 12186 12173 +f 12186 4537 12185 +f 12186 12185 12173 +f 12173 12185 12171 +f 4537 4540 12185 +f 12185 4540 12168 +f 12185 12168 12171 +f 12171 12168 12169 +f 4608 12207 12208 +f 12208 12207 12205 +f 12208 12205 12206 +f 12206 12205 12203 +f 12206 12203 12204 +f 12204 12203 12201 +f 12204 12201 12202 +f 12202 12201 12199 +f 12202 12199 12200 +f 12200 12199 12197 +f 12200 12197 12198 +f 12198 12197 12195 +f 12198 12195 12196 +f 12196 12195 12193 +f 12196 12193 12194 +f 12194 12193 4643 +f 12194 4643 4528 +f 12215 4606 12214 +f 12213 4620 4622 +f 12213 4622 12212 +f 12212 4622 4624 +f 12212 4624 12211 +f 12211 4624 4640 +f 12211 4640 12210 +f 12210 4640 4641 +f 12210 4641 12209 +f 12209 4641 12192 +f 12209 12192 12195 +f 12195 12192 12193 +f 12192 4642 4643 +f 12192 4643 12193 +f 12194 4528 12184 +f 12195 12197 12209 +f 12209 12197 12210 +f 12197 12199 12210 +f 12210 12199 12211 +f 12199 12201 12211 +f 12211 12201 12212 +f 12201 12203 12212 +f 12212 12203 12213 +f 12207 12215 12214 +f 12203 12205 12213 +f 12213 12205 12214 +f 12170 4608 12208 +f 12205 12207 12214 +f 12184 12182 12194 +f 12194 12182 12196 +f 12182 12180 12196 +f 12196 12180 12198 +f 12180 12178 12198 +f 12198 12178 12200 +f 12178 12176 12200 +f 12200 12176 12202 +f 12176 12174 12202 +f 12202 12174 12204 +f 12170 12208 12206 +f 12174 12172 12204 +f 12204 12172 12206 +f 12172 12170 12206 +f 4527 4528 4644 +f 4644 4528 4643 +f 4250 12229 12230 +f 12230 12229 12227 +f 12230 12227 12228 +f 12228 12227 12225 +f 12228 12225 12226 +f 12226 12225 12223 +f 12226 12223 12224 +f 12224 12223 12221 +f 12224 12221 12222 +f 12222 12221 12219 +f 12222 12219 12220 +f 12220 12219 12217 +f 12220 12217 12218 +f 12218 12217 4644 +f 12218 4644 12243 +f 12238 4248 12237 +f 12237 4248 4244 +f 12235 4241 12234 +f 12234 4241 4239 +f 12216 4235 4644 +f 4644 4235 4527 +f 12242 4646 4315 +f 12241 4315 4313 +f 12241 4313 12240 +f 12240 4313 4311 +f 12240 4311 12239 +f 12239 4311 4310 +f 12239 4310 12232 +f 12230 4298 4250 +f 12217 12219 12216 +f 12216 12219 12233 +f 12219 12221 12233 +f 12233 12221 12234 +f 12221 12223 12234 +f 12234 12223 12235 +f 12223 12225 12235 +f 12235 12225 12236 +f 12229 12238 12237 +f 12225 12227 12236 +f 12236 12227 12237 +f 12227 12229 12237 +f 12217 12216 4644 +f 12230 12228 12231 +f 12231 12228 12232 +f 12228 12226 12232 +f 12232 12226 12239 +f 12226 12224 12239 +f 12239 12224 12240 +f 12224 12222 12240 +f 12240 12222 12241 +f 12218 12243 12242 +f 12222 12220 12241 +f 12241 12220 12242 +f 12220 12218 12242 +f 4298 4252 4250 +f 4603 12275 4602 +f 4602 12275 12259 +f 4602 12259 12260 +f 12260 12259 12257 +f 12260 12257 12258 +f 12258 12257 12255 +f 12258 12255 12256 +f 12256 12255 12253 +f 12256 12253 12254 +f 12254 12253 12251 +f 12254 12251 12252 +f 12252 12251 12249 +f 12252 12249 12250 +f 12250 12249 12247 +f 12250 12247 12248 +f 12248 12247 12245 +f 12248 12245 12246 +f 12246 12245 4258 +f 12291 4258 4304 +f 12291 4304 12290 +f 12290 12284 12285 +f 12285 12284 12292 +f 12285 12292 12293 +f 12293 12292 12280 +f 12293 12280 12279 +f 12279 12280 4647 +f 12279 4647 4519 +f 4604 12273 4603 +f 4603 12274 12275 +f 12275 12274 12259 +f 12272 4604 4605 +f 12271 4264 12270 +f 12270 4262 12269 +f 12284 12283 12292 +f 4306 4307 12282 +f 12282 4307 12281 +f 12282 12281 12283 +f 12283 12281 12292 +f 12281 4525 12280 +f 12281 12280 12292 +f 4525 4647 12280 +f 12279 4519 12268 +f 12267 4518 12278 +f 12278 4518 12276 +f 12278 12276 12265 +f 12265 12276 12277 +f 12265 12277 12264 +f 12264 12277 12263 +f 12264 12263 12303 +f 12303 12263 12262 +f 12303 12262 12307 +f 12307 12262 12261 +f 12307 12261 12258 +f 12258 12261 12260 +f 4602 12262 4648 +f 4648 12262 12263 +f 4258 12245 12244 +f 12244 12245 12247 +f 12244 12247 12269 +f 12269 12247 12249 +f 12269 12249 12270 +f 12270 12249 12251 +f 12270 12251 12271 +f 12271 12251 12253 +f 12271 12253 12272 +f 12272 12253 12255 +f 12272 12255 12273 +f 12273 12255 12257 +f 12273 12257 12274 +f 12274 12257 12259 +f 4602 12261 12262 +f 12267 12278 12266 +f 12266 12278 12265 +f 12266 12265 12302 +f 12302 12265 12264 +f 12302 12264 12304 +f 12304 12264 12303 +f 12304 12303 12305 +f 12305 12303 12307 +f 12305 12307 12256 +f 12256 12307 12258 +f 12268 12267 12298 +f 12298 12267 12266 +f 12298 12266 12299 +f 12299 12266 12302 +f 12299 12302 12300 +f 12300 12302 12304 +f 12300 12304 12301 +f 12301 12304 12305 +f 12301 12305 12254 +f 12254 12305 12256 +f 12279 12268 12295 +f 12295 12268 12298 +f 12295 12298 12296 +f 12296 12298 12299 +f 12296 12299 12297 +f 12297 12299 12300 +f 12297 12300 12289 +f 12289 12300 12301 +f 12289 12301 12252 +f 12252 12301 12254 +f 12248 12246 12306 +f 12306 12246 12291 +f 12306 12291 12286 +f 12286 12291 12290 +f 12286 12290 12285 +f 12289 12252 12250 +f 12250 12248 12288 +f 12288 12248 12306 +f 12288 12306 12287 +f 12287 12306 12286 +f 12287 12286 12294 +f 12294 12286 12285 +f 12294 12285 12293 +f 12297 12289 12288 +f 12288 12289 12250 +f 12297 12288 12287 +f 12296 12297 12287 +f 12296 12287 12294 +f 12295 12296 12294 +f 12295 12294 12293 +f 12279 12295 12293 +f 4681 27353 4685 +f 4685 27353 27354 +f 4685 27354 4690 +f 4690 27354 27355 +f 4690 27355 4692 +f 4692 27355 4694 +f 4694 27355 4711 +f 4711 27355 4712 +f 4712 27355 4713 +f 4713 27355 4714 +f 4714 27355 4715 +f 4715 27355 27356 +f 4715 27356 4716 +f 4716 27356 4751 +f 4751 27356 4752 +f 4752 27356 4753 +f 4753 27356 4754 +f 4754 27356 27357 +f 4754 27357 4755 +f 4755 27357 4756 +f 4756 27357 4550 +f 4550 27357 4549 +f 4549 27357 4547 +f 4547 27357 4545 +f 4545 27357 27358 +f 4545 27358 4543 +f 4543 27358 27359 +f 4543 27359 4541 +f 4541 27359 4539 +f 4539 27359 4538 +f 4538 27359 4757 +f 4757 27359 4758 +f 4758 27359 4759 +f 4759 27359 27360 +f 4759 27360 4531 +f 4531 27360 4663 +f 4663 27360 4664 +f 4664 27360 4666 +f 4666 27360 4668 +f 4668 27360 27353 +f 4668 27353 4669 +f 4669 27353 4670 +f 4670 27353 4671 +f 4671 27353 4672 +f 4672 27353 4673 +f 4673 27353 4681 +f 27356 27355 27354 +f 27354 27353 27361 +f 27361 27353 27360 +f 27361 27360 27358 +f 27358 27360 27359 +f 27357 27356 27361 +f 27361 27356 27354 +f 27357 27361 27358 +f 4629 4630 27362 +f 27362 4630 4631 +f 27362 4631 4632 +f 27362 4632 27363 +f 27363 4632 4633 +f 27363 4633 4635 +f 4635 4772 27363 +f 27363 4772 4771 +f 27363 4771 4769 +f 4769 4760 27363 +f 27363 4760 4762 +f 27363 4762 27364 +f 27364 4762 4766 +f 27364 4766 27365 +f 27365 4766 4795 +f 27365 4795 4794 +f 4794 4791 27365 +f 27365 4791 4788 +f 27365 4788 4786 +f 4786 4785 27365 +f 27365 4785 4780 +f 27365 4780 27366 +f 27366 4780 4779 +f 27366 4779 4778 +f 4778 4776 27366 +f 27366 4776 4775 +f 27366 4775 4654 +f 27366 4654 27367 +f 27367 4654 4660 +f 27367 4660 4659 +f 4659 4774 27367 +f 27367 4774 4616 +f 27367 4616 4615 +f 4615 4613 27367 +f 27367 4613 27368 +f 27367 27368 27366 +f 27366 27368 27369 +f 27366 27369 27365 +f 27365 27369 27364 +f 4613 4609 27368 +f 27368 4609 27370 +f 27368 27370 27369 +f 27369 27370 27362 +f 27369 27362 27364 +f 27364 27362 27363 +f 4609 4607 27370 +f 27370 4607 4617 +f 27370 4617 4773 +f 4773 4621 27370 +f 27370 4621 4623 +f 27370 4623 4625 +f 27370 4625 27362 +f 27362 4625 4627 +f 27362 4627 4629 +f 4692 12331 4690 +f 12324 12323 12321 +f 12324 12321 12322 +f 12322 12321 12319 +f 12322 12319 12320 +f 12320 12319 12317 +f 12320 12317 12318 +f 12318 12317 12315 +f 12318 12315 12316 +f 12316 12315 12313 +f 12316 12313 12314 +f 12314 12313 12311 +f 12314 12311 12312 +f 12312 12311 12309 +f 12312 12309 12310 +f 12310 12309 4751 +f 4692 4694 12331 +f 12331 4694 12330 +f 12331 12330 12323 +f 12323 12330 12321 +f 4694 4711 12330 +f 12330 4711 12329 +f 12330 12329 12321 +f 12321 12329 12319 +f 12329 4712 12328 +f 12329 12328 12319 +f 12319 12328 12317 +f 12328 12327 12317 +f 12317 12327 12315 +f 12327 4714 12326 +f 12327 12326 12315 +f 12315 12326 12313 +f 12326 4715 12325 +f 12326 12325 12313 +f 12313 12325 12311 +f 4715 4716 12325 +f 12325 12308 12311 +f 12311 12308 12309 +f 4716 4751 12308 +f 12308 4751 12309 +f 12310 12340 12339 +f 12310 12339 12312 +f 12312 12339 12338 +f 12312 12338 12314 +f 12314 12338 12337 +f 12314 12337 12316 +f 12316 12337 12336 +f 12316 12336 12318 +f 12318 12336 12335 +f 12318 12335 12320 +f 12320 12335 12334 +f 12320 12334 12322 +f 12322 12334 12333 +f 12322 12333 12324 +f 12324 4766 4690 +f 12345 4785 12344 +f 12344 4786 4788 +f 12344 4788 12343 +f 12343 4788 4791 +f 12343 4791 12342 +f 12342 4791 12341 +f 12342 12341 12335 +f 12335 12341 12334 +f 12341 4794 4795 +f 12341 4795 12332 +f 12332 4795 4766 +f 12332 4766 12333 +f 12334 12341 12332 +f 12333 12334 12332 +f 12335 12336 12342 +f 12342 12336 12343 +f 12336 12337 12343 +f 12343 12337 12344 +f 12337 12338 12344 +f 12344 12338 12345 +f 12340 12347 12346 +f 12338 12339 12345 +f 12345 12339 12346 +f 12339 12340 12346 +f 4685 4690 4762 +f 4664 12371 12363 +f 12364 12363 12361 +f 12364 12361 12362 +f 12362 12361 12359 +f 12362 12359 12360 +f 12360 12359 12357 +f 12360 12357 12358 +f 12358 12357 12355 +f 12358 12355 12356 +f 12356 12355 12353 +f 12356 12353 12354 +f 12354 12353 12351 +f 12354 12351 12352 +f 12352 12351 12349 +f 12352 12349 12350 +f 12350 4685 4762 +f 12371 4668 12370 +f 12371 12370 12363 +f 12363 12370 12361 +f 12370 12369 12361 +f 12361 12369 12359 +f 12369 12368 12359 +f 12359 12368 12357 +f 12368 12367 12357 +f 12357 12367 12355 +f 12367 12366 12355 +f 12355 12366 12353 +f 4672 4673 12366 +f 12366 4673 12365 +f 12366 12365 12353 +f 12353 12365 12351 +f 4673 4681 12365 +f 12365 4681 12348 +f 12365 12348 12351 +f 12351 12348 12349 +f 4762 12395 12387 +f 12388 12387 12385 +f 12388 12385 12386 +f 12386 12385 12383 +f 12386 12383 12384 +f 12384 12383 12381 +f 12384 12381 12382 +f 12382 12381 12379 +f 12382 12379 12380 +f 12380 12379 12377 +f 12380 12377 12378 +f 12378 12377 12375 +f 12378 12375 12376 +f 12376 12375 12373 +f 12376 12373 12374 +f 12374 12373 4630 +f 12374 4630 4664 +f 12394 4769 12393 +f 12393 4771 12392 +f 12392 4772 12391 +f 12391 4635 4633 +f 12391 4633 12390 +f 12390 4633 4632 +f 12390 4632 12389 +f 12389 4632 12372 +f 12389 12372 12375 +f 12375 12372 12373 +f 4632 4631 12372 +f 12374 4664 12364 +f 12375 12377 12389 +f 12389 12377 12390 +f 12377 12379 12390 +f 12390 12379 12391 +f 12379 12381 12391 +f 12391 12381 12392 +f 12381 12383 12392 +f 12392 12383 12393 +f 12387 12395 12394 +f 12383 12385 12393 +f 12393 12385 12394 +f 12350 4762 12388 +f 12385 12387 12394 +f 12364 12362 12374 +f 12374 12362 12376 +f 12362 12360 12376 +f 12376 12360 12378 +f 12360 12358 12378 +f 12378 12358 12380 +f 12358 12356 12380 +f 12380 12356 12382 +f 12356 12354 12382 +f 12382 12354 12384 +f 12350 12388 12386 +f 12354 12352 12384 +f 12384 12352 12386 +f 12352 12350 12386 +f 4663 4664 4629 +f 4629 4664 4630 +f 4543 12409 12410 +f 12410 12409 12407 +f 12410 12407 12408 +f 12408 12407 12405 +f 12408 12405 12406 +f 12406 12405 12403 +f 12406 12403 12404 +f 12404 12403 12401 +f 12404 12401 12402 +f 12402 12401 12399 +f 12402 12399 12400 +f 12400 12399 12397 +f 12400 12397 12398 +f 12398 12397 4629 +f 12418 4541 12417 +f 12417 4541 4539 +f 12416 4538 12415 +f 12415 4538 4757 +f 12414 4757 4758 +f 12414 4758 12413 +f 12413 4758 4759 +f 12413 4759 12396 +f 12396 4759 4531 +f 12396 4531 4629 +f 4629 4531 4663 +f 12421 4623 4621 +f 12421 4621 12420 +f 12420 4621 4773 +f 12420 4773 12419 +f 12419 4773 4617 +f 12419 4617 12412 +f 12412 4607 12411 +f 12410 4609 4543 +f 12397 12399 12396 +f 12396 12399 12413 +f 12399 12401 12413 +f 12413 12401 12414 +f 12401 12403 12414 +f 12414 12403 12415 +f 12403 12405 12415 +f 12415 12405 12416 +f 12409 12418 12417 +f 12405 12407 12416 +f 12416 12407 12417 +f 12407 12409 12417 +f 12397 12396 4629 +f 12410 12408 12411 +f 12411 12408 12412 +f 12408 12406 12412 +f 12412 12406 12419 +f 12406 12404 12419 +f 12419 12404 12420 +f 12404 12402 12420 +f 12420 12402 12421 +f 12398 12423 12422 +f 12402 12400 12421 +f 12421 12400 12422 +f 12400 12398 12422 +f 4543 4609 4545 +f 4545 4609 4613 +f 4753 12455 4752 +f 12440 12439 12437 +f 12440 12437 12438 +f 12438 12437 12435 +f 12438 12435 12436 +f 12436 12435 12433 +f 12436 12433 12434 +f 12434 12433 12431 +f 12434 12431 12432 +f 12432 12431 12429 +f 12432 12429 12430 +f 12430 12429 12427 +f 12430 12427 12428 +f 12428 12427 12425 +f 12428 12425 12426 +f 12471 4545 4613 +f 12471 4613 12470 +f 12470 4613 12464 +f 12470 12464 12465 +f 12465 12464 12472 +f 12465 12472 12473 +f 12473 12472 12460 +f 12473 12460 12459 +f 12459 4659 4660 +f 4754 12453 4753 +f 12455 12454 12439 +f 12452 4754 4755 +f 12451 4755 4756 +f 12450 4756 4550 +f 12450 4550 12449 +f 12449 4550 4549 +f 12449 4549 12424 +f 12424 4547 4545 +f 4615 12462 4613 +f 4613 12462 12463 +f 4613 12463 12464 +f 12464 12463 12472 +f 4615 4616 12462 +f 12462 4616 12461 +f 12462 12461 12463 +f 12463 12461 12472 +f 4616 4774 12461 +f 12461 4774 12460 +f 12461 12460 12472 +f 4774 4659 12460 +f 12459 4660 12448 +f 12448 4660 4654 +f 12448 4654 12447 +f 12458 12456 12445 +f 12445 12456 12457 +f 12445 12457 12444 +f 12444 12457 12443 +f 12444 12443 12483 +f 12483 12443 12442 +f 12483 12442 12487 +f 12487 12442 12441 +f 12487 12441 12438 +f 12438 12441 12440 +f 4752 12442 4776 +f 4545 12425 12424 +f 12424 12425 12427 +f 12424 12427 12449 +f 12449 12427 12429 +f 12449 12429 12450 +f 12450 12429 12431 +f 12450 12431 12451 +f 12451 12431 12433 +f 12451 12433 12452 +f 12452 12433 12435 +f 12452 12435 12453 +f 12453 12435 12437 +f 12453 12437 12454 +f 12454 12437 12439 +f 4752 12441 12442 +f 12447 12458 12446 +f 12446 12458 12445 +f 12446 12445 12482 +f 12482 12445 12444 +f 12482 12444 12484 +f 12484 12444 12483 +f 12484 12483 12485 +f 12485 12483 12487 +f 12485 12487 12436 +f 12436 12487 12438 +f 12448 12447 12478 +f 12478 12447 12446 +f 12478 12446 12479 +f 12479 12446 12482 +f 12479 12482 12480 +f 12480 12482 12484 +f 12480 12484 12481 +f 12481 12484 12485 +f 12481 12485 12434 +f 12434 12485 12436 +f 12459 12448 12475 +f 12475 12448 12478 +f 12475 12478 12476 +f 12476 12478 12479 +f 12476 12479 12477 +f 12477 12479 12480 +f 12477 12480 12469 +f 12469 12480 12481 +f 12469 12481 12432 +f 12432 12481 12434 +f 12428 12426 12486 +f 12486 12426 12471 +f 12486 12471 12466 +f 12466 12471 12470 +f 12466 12470 12465 +f 12469 12432 12430 +f 12430 12428 12468 +f 12468 12428 12486 +f 12468 12486 12467 +f 12467 12486 12466 +f 12467 12466 12474 +f 12474 12466 12465 +f 12474 12465 12473 +f 12477 12469 12468 +f 12468 12469 12430 +f 12477 12468 12467 +f 12476 12477 12467 +f 12476 12467 12474 +f 12475 12476 12474 +f 12475 12474 12473 +f 12459 12475 12473 +f 4812 27371 4813 +f 4813 27371 27372 +f 4813 27372 4815 +f 4815 27372 27373 +f 4815 27373 4818 +f 4818 27373 4820 +f 4820 27373 4822 +f 4822 27373 4824 +f 4824 27373 4825 +f 4825 27373 4827 +f 4827 27373 4828 +f 4828 27373 27374 +f 4828 27374 4705 +f 4705 27374 4704 +f 4704 27374 4702 +f 4702 27374 4701 +f 4701 27374 4700 +f 4700 27374 27375 +f 4700 27375 4699 +f 4699 27375 4697 +f 4697 27375 4695 +f 4695 27375 4693 +f 4693 27375 4691 +f 4691 27375 4688 +f 4688 27375 27376 +f 4688 27376 4686 +f 4686 27376 27377 +f 4686 27377 4682 +f 4682 27377 4683 +f 4683 27377 4684 +f 4684 27377 4829 +f 4829 27377 4830 +f 4830 27377 4831 +f 4831 27377 27378 +f 4831 27378 4832 +f 4832 27378 4797 +f 4797 27378 4798 +f 4798 27378 4799 +f 4799 27378 4800 +f 4800 27378 27371 +f 4800 27371 4801 +f 4801 27371 4802 +f 4802 27371 4803 +f 4803 27371 4804 +f 4804 27371 4807 +f 4807 27371 4812 +f 27374 27373 27372 +f 27372 27371 27379 +f 27379 27371 27378 +f 27379 27378 27376 +f 27376 27378 27377 +f 27375 27374 27379 +f 27379 27374 27372 +f 27375 27379 27376 +f 4857 4856 27380 +f 27380 4856 4853 +f 27380 4853 4852 +f 27380 4852 27381 +f 27381 4852 4850 +f 27381 4850 4855 +f 4855 4854 27381 +f 27381 4854 4844 +f 27381 4844 4842 +f 4842 4833 27381 +f 27381 4833 4835 +f 27381 4835 27382 +f 27382 4835 4839 +f 27382 4839 27383 +f 27383 4839 4925 +f 27383 4925 4926 +f 4926 4921 27383 +f 27383 4921 4919 +f 27383 4919 4917 +f 4917 4916 27383 +f 27383 4916 4865 +f 27383 4865 27384 +f 27384 4865 4864 +f 27384 4864 4863 +f 4863 4861 27384 +f 27384 4861 4860 +f 27384 4860 4859 +f 27384 4859 27385 +f 27385 4859 4787 +f 27385 4787 4789 +f 4789 4790 27385 +f 27385 4790 4796 +f 27385 4796 4768 +f 4768 4767 27385 +f 27385 4767 27386 +f 27385 27386 27384 +f 27384 27386 27387 +f 27384 27387 27383 +f 27383 27387 27382 +f 4767 4763 27386 +f 27386 4763 27388 +f 27386 27388 27387 +f 27387 27388 27380 +f 27387 27380 27382 +f 27382 27380 27381 +f 4763 4761 27388 +f 27388 4761 4770 +f 27388 4770 4639 +f 4639 4638 27388 +f 27388 4638 4636 +f 27388 4636 4634 +f 27388 4634 27380 +f 27380 4634 4858 +f 27380 4858 4857 +f 4702 4861 4704 +f 4704 4861 4863 +f 4818 12511 4815 +f 4815 12511 12503 +f 4815 12503 12504 +f 12504 12503 12501 +f 12504 12501 12502 +f 12502 12501 12499 +f 12502 12499 12500 +f 12500 12499 12497 +f 12500 12497 12498 +f 12498 12497 12495 +f 12498 12495 12496 +f 12496 12495 12493 +f 12496 12493 12494 +f 12494 12493 12491 +f 12494 12491 12492 +f 12492 12491 12489 +f 12492 12489 12490 +f 12490 12489 4704 +f 4818 4820 12511 +f 12511 4820 12510 +f 12511 12510 12503 +f 12503 12510 12501 +f 4820 4822 12510 +f 12510 4822 12509 +f 12510 12509 12501 +f 12501 12509 12499 +f 4822 4824 12509 +f 12509 4824 12508 +f 12509 12508 12499 +f 12499 12508 12497 +f 4824 4825 12508 +f 12508 4825 12507 +f 12508 12507 12497 +f 12497 12507 12495 +f 12507 12506 12495 +f 12495 12506 12493 +f 12506 12505 12493 +f 12493 12505 12491 +f 12505 4705 12488 +f 12505 12488 12491 +f 12491 12488 12489 +f 12488 4704 12489 +f 4864 12527 4863 +f 4863 12527 12520 +f 12490 12520 12519 +f 12490 12519 12492 +f 12492 12519 12518 +f 12492 12518 12494 +f 12494 12518 12517 +f 12494 12517 12496 +f 12496 12517 12516 +f 12496 12516 12498 +f 12498 12516 12515 +f 12498 12515 12500 +f 12500 12515 12514 +f 12500 12514 12502 +f 12502 12514 12513 +f 12502 12513 12504 +f 12504 12513 4839 +f 12504 4839 4815 +f 12527 4864 12526 +f 12524 4916 4917 +f 12524 4917 4919 +f 12524 4919 12523 +f 12523 4919 4921 +f 12523 4921 12522 +f 12522 12521 12515 +f 12515 12521 12514 +f 4921 4926 12521 +f 12521 4926 4925 +f 12521 4925 12512 +f 12514 12521 12512 +f 12513 12514 12512 +f 12515 12516 12522 +f 12522 12516 12523 +f 12516 12517 12523 +f 12523 12517 12524 +f 12517 12518 12524 +f 12524 12518 12525 +f 12520 12527 12526 +f 12518 12519 12525 +f 12525 12519 12526 +f 12519 12520 12526 +f 4835 4815 4839 +f 12544 12543 12541 +f 12544 12541 12542 +f 12542 12541 12539 +f 12542 12539 12540 +f 12540 12539 12537 +f 12540 12537 12538 +f 12538 12537 12535 +f 12538 12535 12536 +f 12536 12535 12533 +f 12536 12533 12534 +f 12534 12533 12531 +f 12534 12531 12532 +f 12532 12531 12529 +f 12532 12529 12530 +f 12530 12529 4813 +f 12530 4813 4835 +f 4799 4800 12551 +f 12551 12550 12543 +f 12543 12550 12541 +f 4800 4801 12550 +f 12550 4801 12549 +f 12550 12549 12541 +f 12541 12549 12539 +f 12549 12548 12539 +f 12539 12548 12537 +f 4802 4803 12548 +f 12548 12547 12537 +f 12537 12547 12535 +f 12547 12546 12535 +f 12535 12546 12533 +f 12546 4807 12545 +f 12546 12545 12533 +f 12533 12545 12531 +f 4807 4812 12545 +f 12545 4812 12528 +f 12545 12528 12531 +f 12531 12528 12529 +f 4812 4813 12528 +f 12528 4813 12529 +f 4833 12575 4835 +f 4835 12575 12567 +f 4835 12567 12568 +f 12568 12567 12565 +f 12568 12565 12566 +f 12566 12565 12563 +f 12566 12563 12564 +f 12564 12563 12561 +f 12564 12561 12562 +f 12562 12561 12559 +f 12562 12559 12560 +f 12560 12559 12557 +f 12560 12557 12558 +f 12558 12557 12555 +f 12558 12555 12556 +f 12556 12555 12553 +f 12556 12553 12554 +f 12554 12553 4856 +f 12554 4856 4798 +f 12575 4833 12574 +f 12573 4842 4844 +f 12572 4844 4854 +f 12572 4854 12571 +f 12571 4855 4850 +f 12571 4850 12570 +f 12570 4850 4852 +f 12570 4852 12569 +f 12569 12552 12555 +f 12555 12552 12553 +f 4852 4853 12552 +f 12552 4856 12553 +f 12554 4798 12544 +f 12555 12557 12569 +f 12569 12557 12570 +f 12557 12559 12570 +f 12570 12559 12571 +f 12559 12561 12571 +f 12571 12561 12572 +f 12561 12563 12572 +f 12572 12563 12573 +f 12567 12575 12574 +f 12563 12565 12573 +f 12573 12565 12574 +f 12530 4835 12568 +f 12565 12567 12574 +f 12544 12542 12554 +f 12554 12542 12556 +f 12542 12540 12556 +f 12556 12540 12558 +f 12540 12538 12558 +f 12558 12538 12560 +f 12538 12536 12560 +f 12560 12536 12562 +f 12536 12534 12562 +f 12562 12534 12564 +f 12530 12568 12566 +f 12534 12532 12564 +f 12564 12532 12566 +f 12532 12530 12566 +f 4686 12598 12589 +f 4686 12589 12590 +f 12590 12589 12587 +f 12590 12587 12588 +f 12588 12587 12585 +f 12588 12585 12586 +f 12586 12585 12583 +f 12586 12583 12584 +f 12584 12583 12581 +f 12584 12581 12582 +f 12582 12581 12579 +f 12582 12579 12580 +f 12580 12579 12577 +f 12580 12577 12578 +f 12578 12577 4857 +f 12578 4857 12603 +f 12595 4684 4829 +f 12594 4829 4830 +f 12594 4830 12593 +f 12593 4830 4831 +f 12593 4831 12576 +f 12576 4831 4832 +f 12576 4832 4857 +f 4857 4832 4797 +f 12601 4636 4638 +f 12601 4638 12600 +f 12600 4638 4639 +f 12600 4639 12599 +f 12599 4639 4770 +f 12599 4770 12592 +f 12590 4763 4686 +f 12577 12579 12576 +f 12576 12579 12593 +f 12579 12581 12593 +f 12593 12581 12594 +f 12581 12583 12594 +f 12594 12583 12595 +f 12583 12585 12595 +f 12595 12585 12596 +f 12589 12598 12597 +f 12585 12587 12596 +f 12596 12587 12597 +f 12587 12589 12597 +f 12577 12576 4857 +f 12590 12588 12591 +f 12591 12588 12592 +f 12588 12586 12592 +f 12592 12586 12599 +f 12586 12584 12599 +f 12599 12584 12600 +f 12584 12582 12600 +f 12600 12582 12601 +f 12578 12603 12602 +f 12582 12580 12601 +f 12601 12580 12602 +f 12580 12578 12602 +f 4686 4763 4688 +f 4701 12635 4702 +f 12620 12619 12617 +f 12620 12617 12618 +f 12618 12617 12615 +f 12618 12615 12616 +f 12616 12615 12613 +f 12616 12613 12614 +f 12614 12613 12611 +f 12614 12611 12612 +f 12612 12611 12609 +f 12612 12609 12610 +f 12610 12609 12607 +f 12610 12607 12608 +f 12608 12607 12605 +f 12608 12605 12606 +f 12651 4688 4767 +f 12651 4767 12650 +f 12650 12644 12645 +f 12645 12644 12652 +f 12645 12652 12653 +f 12653 12652 12640 +f 12653 12640 12639 +f 12639 12640 4789 +f 4700 12633 4701 +f 4701 12633 12634 +f 12635 12634 12619 +f 12630 4697 4695 +f 12630 4695 12629 +f 12629 4695 4693 +f 12604 4693 4691 +f 4768 12642 4767 +f 4767 12642 12643 +f 4767 12643 12644 +f 12644 12643 12652 +f 4768 4796 12642 +f 12642 4796 12641 +f 12642 12641 12643 +f 12643 12641 12652 +f 4796 4790 12641 +f 12641 12640 12652 +f 12628 4787 4859 +f 12627 4859 4860 +f 12638 4860 12636 +f 12638 12636 12625 +f 12625 12636 12637 +f 12625 12637 12624 +f 12624 12637 12623 +f 12624 12623 12663 +f 12663 12623 12622 +f 12663 12622 12667 +f 12667 12622 12621 +f 12667 12621 12618 +f 12618 12621 12620 +f 4860 4861 12636 +f 12636 4861 12637 +f 4702 12622 4861 +f 4861 12622 12623 +f 4861 12623 12637 +f 12604 12605 12607 +f 12604 12607 12629 +f 12629 12607 12609 +f 12629 12609 12630 +f 12630 12609 12611 +f 12630 12611 12631 +f 12631 12611 12613 +f 12631 12613 12632 +f 12632 12613 12615 +f 12632 12615 12633 +f 12633 12615 12617 +f 12633 12617 12634 +f 12634 12617 12619 +f 4702 12621 12622 +f 12627 12638 12626 +f 12626 12638 12625 +f 12626 12625 12662 +f 12662 12625 12624 +f 12662 12624 12664 +f 12664 12624 12663 +f 12664 12663 12665 +f 12665 12663 12667 +f 12665 12667 12616 +f 12616 12667 12618 +f 12628 12627 12658 +f 12658 12627 12626 +f 12658 12626 12659 +f 12659 12626 12662 +f 12659 12662 12660 +f 12660 12662 12664 +f 12660 12664 12661 +f 12661 12664 12665 +f 12661 12665 12614 +f 12614 12665 12616 +f 12639 12628 12655 +f 12655 12628 12658 +f 12655 12658 12656 +f 12656 12658 12659 +f 12656 12659 12657 +f 12657 12659 12660 +f 12657 12660 12649 +f 12649 12660 12661 +f 12649 12661 12612 +f 12612 12661 12614 +f 12608 12606 12666 +f 12666 12606 12651 +f 12666 12651 12646 +f 12646 12651 12650 +f 12646 12650 12645 +f 12649 12612 12610 +f 12610 12608 12648 +f 12648 12608 12666 +f 12648 12666 12647 +f 12647 12666 12646 +f 12647 12646 12654 +f 12654 12646 12645 +f 12654 12645 12653 +f 12657 12649 12648 +f 12648 12649 12610 +f 12657 12648 12647 +f 12656 12657 12647 +f 12656 12647 12654 +f 12655 12656 12654 +f 12655 12654 12653 +f 12639 12655 12653 +f 4942 27389 4943 +f 4943 27389 27390 +f 4943 27390 4945 +f 4945 27390 27391 +f 4945 27391 4948 +f 4948 27391 4950 +f 4950 27391 4952 +f 4952 27391 4959 +f 4959 27391 4958 +f 4958 27391 4957 +f 4957 27391 4956 +f 4956 27391 27392 +f 4956 27392 4955 +f 4955 27392 4960 +f 4960 27392 4965 +f 4965 27392 4708 +f 4708 27392 4709 +f 4709 27392 27393 +f 4709 27393 4966 +f 4966 27393 4823 +f 4823 27393 4821 +f 4821 27393 4819 +f 4819 27393 4817 +f 4817 27393 4816 +f 4816 27393 27394 +f 4816 27394 4814 +f 4814 27394 27395 +f 4814 27395 4811 +f 4811 27395 4808 +f 4808 27395 4809 +f 4809 27395 4810 +f 4810 27395 4805 +f 4805 27395 4806 +f 4806 27395 27396 +f 4806 27396 4967 +f 4967 27396 4927 +f 4927 27396 4928 +f 4928 27396 4929 +f 4929 27396 4930 +f 4930 27396 27389 +f 4930 27389 4931 +f 4931 27389 4932 +f 4932 27389 4933 +f 4933 27389 4934 +f 4934 27389 4937 +f 4937 27389 4942 +f 27392 27391 27390 +f 27390 27389 27397 +f 27397 27389 27396 +f 27397 27396 27394 +f 27394 27396 27395 +f 27393 27392 27397 +f 27397 27392 27390 +f 27393 27397 27394 +f 5003 5002 27398 +f 27398 5002 5001 +f 27398 5001 5000 +f 27398 5000 27399 +f 27399 5000 4999 +f 27399 4999 4998 +f 4998 4997 27399 +f 27399 4997 4978 +f 27399 4978 4976 +f 4976 4968 27399 +f 27399 4968 4970 +f 27399 4970 27400 +f 27400 4970 4972 +f 27400 4972 27401 +f 27401 4972 5138 +f 27401 5138 5135 +f 5135 5130 27401 +f 27401 5130 5129 +f 27401 5129 5128 +f 5128 5127 27401 +f 27401 5127 5126 +f 27401 5126 27402 +f 27402 5126 5125 +f 27402 5125 5124 +f 5124 5122 27402 +f 27402 5122 5121 +f 27402 5121 5120 +f 27402 5120 27403 +f 27403 5120 4918 +f 27403 4918 4920 +f 4920 4922 27403 +f 27403 4922 4924 +f 27403 4924 4841 +f 4841 4840 27403 +f 27403 4840 27404 +f 27403 27404 27402 +f 27402 27404 27405 +f 27402 27405 27401 +f 27401 27405 27400 +f 4840 4836 27404 +f 27404 4836 27406 +f 27404 27406 27405 +f 27405 27406 27398 +f 27405 27398 27400 +f 27400 27398 27399 +f 4836 4834 27406 +f 27406 4834 4843 +f 27406 4843 4845 +f 4845 4846 27406 +f 27406 4846 4848 +f 27406 4848 4849 +f 27406 4849 27398 +f 27398 4849 5004 +f 27398 5004 5003 +f 4965 5122 4960 +f 4960 5122 5124 +f 4945 12683 12684 +f 12684 12683 12681 +f 12684 12681 12682 +f 12682 12681 12679 +f 12682 12679 12680 +f 12680 12679 12677 +f 12680 12677 12678 +f 12678 12677 12675 +f 12678 12675 12676 +f 12676 12675 12673 +f 12676 12673 12674 +f 12674 12673 12671 +f 12674 12671 12672 +f 12672 12671 12669 +f 12672 12669 12670 +f 12670 4960 5124 +f 12691 4950 12690 +f 12691 12690 12683 +f 12683 12690 12681 +f 12690 12689 12681 +f 12681 12689 12679 +f 12689 12688 12679 +f 12679 12688 12677 +f 12688 12687 12677 +f 12677 12687 12675 +f 4958 4957 12687 +f 12687 4957 12686 +f 12687 12686 12675 +f 12675 12686 12673 +f 12686 12685 12673 +f 12673 12685 12671 +f 12685 12668 12671 +f 12671 12668 12669 +f 5125 12707 5124 +f 5124 12707 12700 +f 12670 12700 12699 +f 12670 12699 12672 +f 12672 12699 12698 +f 12672 12698 12674 +f 12674 12698 12697 +f 12674 12697 12676 +f 12676 12697 12696 +f 12676 12696 12678 +f 12678 12696 12695 +f 12678 12695 12680 +f 12680 12695 12694 +f 12680 12694 12682 +f 12682 12694 12693 +f 12682 12693 12684 +f 12684 4972 4945 +f 12707 5125 12706 +f 12705 5127 12704 +f 12704 5127 5128 +f 12704 5128 5129 +f 12704 5129 12703 +f 12703 5129 5130 +f 12703 5130 12702 +f 12702 5130 12701 +f 12702 12701 12695 +f 12695 12701 12694 +f 5130 5135 12701 +f 12701 5135 5138 +f 12701 5138 12692 +f 12692 5138 4972 +f 12692 4972 12693 +f 12694 12701 12692 +f 12693 12694 12692 +f 12695 12696 12702 +f 12702 12696 12703 +f 12696 12697 12703 +f 12703 12697 12704 +f 12697 12698 12704 +f 12704 12698 12705 +f 12700 12707 12706 +f 12698 12699 12705 +f 12705 12699 12706 +f 12699 12700 12706 +f 4928 12723 12724 +f 12724 12723 12721 +f 12724 12721 12722 +f 12722 12721 12719 +f 12722 12719 12720 +f 12720 12719 12717 +f 12720 12717 12718 +f 12718 12717 12715 +f 12718 12715 12716 +f 12716 12715 12713 +f 12716 12713 12714 +f 12714 12713 12711 +f 12714 12711 12712 +f 12712 12711 12709 +f 12712 12709 12710 +f 12710 4943 4970 +f 12731 4930 12730 +f 12731 12730 12723 +f 12723 12730 12721 +f 4930 4931 12730 +f 12730 4931 12729 +f 12730 12729 12721 +f 12721 12729 12719 +f 4931 4932 12729 +f 12729 4932 12728 +f 12729 12728 12719 +f 12719 12728 12717 +f 4932 4933 12728 +f 12728 4933 12727 +f 12728 12727 12717 +f 12717 12727 12715 +f 12727 4934 12726 +f 12727 12726 12715 +f 12715 12726 12713 +f 4934 4937 12726 +f 12726 4937 12725 +f 12726 12725 12713 +f 12713 12725 12711 +f 4937 4942 12725 +f 12725 4942 12708 +f 12725 12708 12711 +f 12711 12708 12709 +f 4942 4943 12708 +f 12748 12747 12745 +f 12748 12745 12746 +f 12746 12745 12743 +f 12746 12743 12744 +f 12744 12743 12741 +f 12744 12741 12742 +f 12742 12741 12739 +f 12742 12739 12740 +f 12740 12739 12737 +f 12740 12737 12738 +f 12738 12737 12735 +f 12738 12735 12736 +f 12736 12735 12733 +f 12736 12733 12734 +f 12734 5002 4928 +f 12755 4968 12754 +f 12754 4968 4976 +f 12754 4976 12753 +f 12753 4976 4978 +f 12753 4978 12752 +f 12752 4978 4997 +f 12752 4997 12751 +f 12751 4997 4998 +f 12751 4998 4999 +f 12751 4999 12750 +f 12750 4999 5000 +f 12750 5000 12749 +f 12749 5000 12732 +f 12749 12732 12735 +f 12735 12732 12733 +f 12734 4928 12724 +f 12735 12737 12749 +f 12749 12737 12750 +f 12737 12739 12750 +f 12750 12739 12751 +f 12739 12741 12751 +f 12751 12741 12752 +f 12741 12743 12752 +f 12752 12743 12753 +f 12747 12755 12754 +f 12743 12745 12753 +f 12753 12745 12754 +f 12710 4970 12748 +f 12745 12747 12754 +f 12724 12722 12734 +f 12734 12722 12736 +f 12722 12720 12736 +f 12736 12720 12738 +f 12720 12718 12738 +f 12738 12718 12740 +f 12718 12716 12740 +f 12740 12716 12742 +f 12716 12714 12742 +f 12742 12714 12744 +f 12710 12748 12746 +f 12714 12712 12744 +f 12744 12712 12746 +f 12712 12710 12746 +f 4814 12769 12770 +f 12770 12769 12767 +f 12770 12767 12768 +f 12768 12767 12765 +f 12768 12765 12766 +f 12766 12765 12763 +f 12766 12763 12764 +f 12764 12763 12761 +f 12764 12761 12762 +f 12762 12761 12759 +f 12762 12759 12760 +f 12760 12759 12757 +f 12760 12757 12758 +f 12758 12757 5003 +f 12758 5003 12783 +f 12783 5003 5004 +f 12777 4811 4808 +f 12777 4808 12776 +f 12776 4808 4809 +f 12775 4809 4810 +f 12775 4810 12774 +f 12774 4810 4805 +f 12773 4806 12756 +f 12756 4806 4967 +f 12756 4967 5003 +f 5003 4967 4927 +f 12782 4848 12781 +f 12781 4848 4846 +f 12781 4846 12780 +f 12780 4846 4845 +f 12780 4845 12779 +f 12779 4845 4843 +f 12779 4843 12772 +f 12772 4834 12771 +f 12771 4834 4836 +f 12770 4836 4814 +f 12757 12759 12756 +f 12756 12759 12773 +f 12759 12761 12773 +f 12773 12761 12774 +f 12761 12763 12774 +f 12774 12763 12775 +f 12763 12765 12775 +f 12775 12765 12776 +f 12769 12778 12777 +f 12765 12767 12776 +f 12776 12767 12777 +f 12767 12769 12777 +f 12757 12756 5003 +f 12770 12768 12771 +f 12771 12768 12772 +f 12768 12766 12772 +f 12772 12766 12779 +f 12766 12764 12779 +f 12779 12764 12780 +f 12764 12762 12780 +f 12780 12762 12781 +f 12758 12783 12782 +f 12762 12760 12781 +f 12781 12760 12782 +f 12760 12758 12782 +f 4816 4836 4840 +f 4708 12815 4965 +f 4965 12815 12799 +f 12800 12799 12797 +f 12800 12797 12798 +f 12798 12797 12795 +f 12798 12795 12796 +f 12796 12795 12793 +f 12796 12793 12794 +f 12794 12793 12791 +f 12794 12791 12792 +f 12792 12791 12789 +f 12792 12789 12790 +f 12790 12789 12787 +f 12790 12787 12788 +f 12788 12787 12785 +f 12788 12785 12786 +f 12831 4816 4840 +f 12831 4840 12830 +f 12830 4840 12824 +f 12830 12824 12825 +f 12825 12824 12832 +f 12825 12832 12833 +f 12833 12832 12820 +f 12833 12820 12819 +f 12819 12820 4920 +f 4709 12813 4708 +f 4708 12813 12814 +f 4708 12814 12815 +f 12815 12814 12799 +f 12811 4823 12810 +f 12810 4823 4821 +f 12810 4821 12809 +f 12809 4821 4819 +f 12824 12823 12832 +f 4841 4924 12822 +f 12822 4924 12821 +f 12822 12821 12823 +f 12823 12821 12832 +f 12821 12820 12832 +f 12819 4918 12808 +f 12818 12816 12805 +f 12805 12816 12817 +f 12805 12817 12804 +f 12804 12817 12803 +f 12804 12803 12843 +f 12843 12803 12802 +f 12843 12802 12847 +f 12847 12802 12801 +f 12847 12801 12798 +f 12798 12801 12800 +f 12816 5122 12817 +f 4965 12802 5122 +f 5122 12802 12803 +f 12784 12785 12787 +f 12784 12787 12809 +f 12809 12787 12789 +f 12809 12789 12810 +f 12810 12789 12791 +f 12810 12791 12811 +f 12811 12791 12793 +f 12811 12793 12812 +f 12812 12793 12795 +f 12812 12795 12813 +f 12813 12795 12797 +f 12813 12797 12814 +f 12814 12797 12799 +f 12800 12801 4965 +f 4965 12801 12802 +f 12807 12818 12806 +f 12806 12818 12805 +f 12806 12805 12842 +f 12842 12805 12804 +f 12842 12804 12844 +f 12844 12804 12843 +f 12844 12843 12845 +f 12845 12843 12847 +f 12845 12847 12796 +f 12796 12847 12798 +f 12808 12807 12838 +f 12838 12807 12806 +f 12838 12806 12839 +f 12839 12806 12842 +f 12839 12842 12840 +f 12840 12842 12844 +f 12840 12844 12841 +f 12841 12844 12845 +f 12841 12845 12794 +f 12794 12845 12796 +f 12819 12808 12835 +f 12835 12808 12838 +f 12835 12838 12836 +f 12836 12838 12839 +f 12836 12839 12837 +f 12837 12839 12840 +f 12837 12840 12829 +f 12829 12840 12841 +f 12829 12841 12792 +f 12792 12841 12794 +f 12788 12786 12846 +f 12846 12786 12831 +f 12846 12831 12826 +f 12826 12831 12830 +f 12826 12830 12825 +f 12829 12792 12790 +f 12790 12788 12828 +f 12828 12788 12846 +f 12828 12846 12827 +f 12827 12846 12826 +f 12827 12826 12834 +f 12834 12826 12825 +f 12834 12825 12833 +f 12837 12829 12828 +f 12828 12829 12790 +f 12837 12828 12827 +f 12836 12837 12827 +f 12836 12827 12834 +f 12835 12836 12834 +f 12835 12834 12833 +f 12819 12835 12833 +f 5152 27407 5154 +f 5154 27407 27408 +f 5154 27408 5155 +f 5155 27408 27409 +f 5155 27409 5156 +f 5156 27409 5160 +f 5160 27409 5162 +f 5162 27409 5163 +f 5163 27409 5164 +f 5164 27409 5195 +f 5195 27409 5196 +f 5196 27409 27410 +f 5196 27410 5197 +f 5197 27410 5201 +f 5201 27410 5202 +f 5202 27410 4963 +f 4963 27410 4964 +f 4964 27410 27411 +f 4964 27411 5203 +f 5203 27411 5204 +f 5204 27411 4951 +f 4951 27411 4949 +f 4949 27411 4947 +f 4947 27411 4946 +f 4946 27411 27412 +f 4946 27412 4944 +f 4944 27412 27413 +f 4944 27413 4941 +f 4941 27413 4938 +f 4938 27413 4939 +f 4939 27413 4940 +f 4940 27413 4935 +f 4935 27413 4936 +f 4936 27413 27414 +f 4936 27414 4679 +f 4679 27414 4680 +f 4680 27414 5139 +f 5139 27414 5140 +f 5140 27414 5141 +f 5141 27414 27407 +f 5141 27407 5142 +f 5142 27407 5143 +f 5143 27407 5144 +f 5144 27407 5145 +f 5145 27407 5150 +f 5150 27407 5152 +f 27410 27409 27408 +f 27408 27407 27415 +f 27415 27407 27414 +f 27415 27414 27412 +f 27412 27414 27413 +f 27411 27410 27415 +f 27415 27410 27408 +f 27411 27415 27412 +f 4987 4988 27416 +f 27416 4988 4989 +f 27416 4989 4990 +f 27416 4990 27417 +f 27417 4990 4992 +f 27417 4992 4993 +f 4993 4994 27417 +f 27417 4994 5215 +f 27417 5215 5213 +f 5213 5205 27417 +f 27417 5205 5207 +f 27417 5207 27418 +f 27418 5207 5209 +f 27418 5209 27419 +f 27419 5209 5281 +f 27419 5281 5278 +f 5278 5276 27419 +f 27419 5276 5226 +f 27419 5226 5225 +f 5225 5224 27419 +f 27419 5224 5223 +f 27419 5223 27420 +f 27420 5223 5222 +f 27420 5222 5221 +f 5221 5219 27420 +f 27420 5219 5218 +f 27420 5218 5217 +f 27420 5217 27421 +f 27421 5217 5133 +f 27421 5133 5132 +f 5132 5134 27421 +f 27421 5134 5136 +f 27421 5136 4974 +f 4974 4973 27421 +f 27421 4973 27422 +f 27421 27422 27420 +f 27420 27422 27423 +f 27420 27423 27419 +f 27419 27423 27418 +f 4973 4969 27422 +f 27422 4969 27424 +f 27422 27424 27423 +f 27423 27424 27416 +f 27423 27416 27418 +f 27418 27416 27417 +f 4969 4975 27424 +f 27424 4975 4977 +f 27424 4977 4979 +f 4979 4980 27424 +f 27424 4980 4982 +f 27424 4982 4983 +f 27424 4983 27416 +f 27416 4983 4985 +f 27416 4985 4987 +f 5156 12871 5155 +f 5155 12871 12863 +f 5155 12863 12864 +f 12864 12863 12861 +f 12864 12861 12862 +f 12862 12861 12859 +f 12862 12859 12860 +f 12860 12859 12857 +f 12860 12857 12858 +f 12858 12857 12855 +f 12858 12855 12856 +f 12856 12855 12853 +f 12856 12853 12854 +f 12854 12853 12851 +f 12854 12851 12852 +f 12852 12851 12849 +f 12852 12849 12850 +f 12850 12849 5201 +f 12850 5201 5221 +f 5156 5160 12871 +f 12871 5160 12870 +f 12871 12870 12863 +f 12863 12870 12861 +f 12870 5162 12869 +f 12870 12869 12861 +f 12861 12869 12859 +f 12869 12868 12859 +f 12859 12868 12857 +f 12868 5164 12867 +f 12868 12867 12857 +f 12857 12867 12855 +f 5164 5195 12867 +f 12867 5195 12866 +f 12867 12866 12855 +f 12855 12866 12853 +f 12866 5196 12865 +f 12866 12865 12853 +f 12853 12865 12851 +f 5196 5197 12865 +f 12865 5197 12848 +f 12865 12848 12851 +f 12851 12848 12849 +f 5197 5201 12848 +f 12848 5201 12849 +f 5221 12880 12850 +f 12850 12880 12879 +f 12850 12879 12852 +f 12852 12879 12878 +f 12852 12878 12854 +f 12854 12878 12877 +f 12854 12877 12856 +f 12856 12877 12876 +f 12856 12876 12858 +f 12858 12876 12875 +f 12858 12875 12860 +f 12860 12875 12874 +f 12860 12874 12862 +f 12862 12874 12873 +f 12862 12873 12864 +f 12864 12873 5209 +f 12887 5222 12886 +f 12886 5223 12885 +f 12881 5276 5278 +f 12881 5278 5281 +f 12881 5281 12872 +f 12872 5281 5209 +f 12872 5209 12873 +f 12873 12874 12872 +f 12872 12874 12881 +f 12874 12875 12881 +f 12881 12875 12882 +f 12875 12876 12882 +f 12882 12876 12883 +f 12876 12877 12883 +f 12883 12877 12884 +f 12877 12878 12884 +f 12884 12878 12885 +f 12880 12887 12886 +f 12878 12879 12885 +f 12885 12879 12886 +f 12879 12880 12886 +f 5154 5155 5207 +f 5207 5155 5209 +f 5140 12911 5139 +f 5139 12911 12903 +f 5139 12903 12904 +f 12904 12903 12901 +f 12904 12901 12902 +f 12902 12901 12899 +f 12902 12899 12900 +f 12900 12899 12897 +f 12900 12897 12898 +f 12898 12897 12895 +f 12898 12895 12896 +f 12896 12895 12893 +f 12896 12893 12894 +f 12894 12893 12891 +f 12894 12891 12892 +f 12892 12891 12889 +f 12892 12889 12890 +f 12890 12889 5154 +f 12890 5154 5207 +f 12911 5141 12910 +f 12911 12910 12903 +f 12903 12910 12901 +f 12910 12909 12901 +f 12901 12909 12899 +f 5142 5143 12909 +f 12909 5143 12908 +f 12909 12908 12899 +f 12899 12908 12897 +f 5143 5144 12908 +f 12908 5144 12907 +f 12908 12907 12897 +f 12897 12907 12895 +f 12907 12906 12895 +f 12895 12906 12893 +f 5145 5150 12906 +f 12906 5150 12905 +f 12906 12905 12893 +f 12893 12905 12891 +f 12905 5152 12888 +f 12905 12888 12891 +f 12891 12888 12889 +f 5205 12935 5207 +f 5207 12927 12928 +f 12928 12927 12925 +f 12928 12925 12926 +f 12926 12925 12923 +f 12926 12923 12924 +f 12924 12923 12921 +f 12924 12921 12922 +f 12922 12921 12919 +f 12922 12919 12920 +f 12920 12919 12917 +f 12920 12917 12918 +f 12918 12917 12915 +f 12918 12915 12916 +f 12916 12915 12913 +f 12916 12913 12914 +f 12914 4988 5139 +f 12935 5205 12934 +f 12934 5205 5213 +f 12934 5213 12933 +f 12933 5213 5215 +f 12932 5215 4994 +f 12931 4993 4992 +f 12931 4992 12930 +f 12930 4992 4990 +f 12930 4990 12929 +f 12929 4990 12912 +f 12929 12912 12915 +f 12915 12912 12913 +f 12914 5139 12904 +f 12915 12917 12929 +f 12929 12917 12930 +f 12917 12919 12930 +f 12930 12919 12931 +f 12919 12921 12931 +f 12931 12921 12932 +f 12921 12923 12932 +f 12932 12923 12933 +f 12927 12935 12934 +f 12923 12925 12933 +f 12933 12925 12934 +f 12890 5207 12928 +f 12925 12927 12934 +f 12904 12902 12914 +f 12914 12902 12916 +f 12902 12900 12916 +f 12916 12900 12918 +f 12900 12898 12918 +f 12918 12898 12920 +f 12898 12896 12920 +f 12920 12896 12922 +f 12896 12894 12922 +f 12922 12894 12924 +f 12890 12928 12926 +f 12894 12892 12924 +f 12924 12892 12926 +f 12892 12890 12926 +f 4680 5139 4987 +f 4944 12949 12950 +f 12950 12949 12947 +f 12950 12947 12948 +f 12948 12947 12945 +f 12948 12945 12946 +f 12946 12945 12943 +f 12946 12943 12944 +f 12944 12943 12941 +f 12944 12941 12942 +f 12942 12941 12939 +f 12942 12939 12940 +f 12940 12939 12937 +f 12940 12937 12938 +f 12938 12937 4987 +f 12938 4987 12963 +f 12963 4987 4985 +f 12963 4985 4983 +f 12956 4938 4939 +f 12956 4939 12955 +f 12954 4935 12953 +f 12953 4935 4936 +f 12936 4679 4987 +f 4987 4679 4680 +f 12963 4983 12962 +f 12962 4983 4982 +f 12962 4982 12961 +f 12961 4982 4980 +f 12961 4980 12960 +f 12960 4980 4979 +f 12960 4979 12959 +f 12959 4979 4977 +f 12959 4977 12952 +f 12952 4977 4975 +f 12952 4975 12951 +f 12951 4975 4969 +f 12950 4969 4944 +f 12937 12939 12936 +f 12936 12939 12953 +f 12939 12941 12953 +f 12953 12941 12954 +f 12941 12943 12954 +f 12954 12943 12955 +f 12943 12945 12955 +f 12955 12945 12956 +f 12949 12958 12957 +f 12945 12947 12956 +f 12956 12947 12957 +f 12947 12949 12957 +f 12937 12936 4987 +f 12950 12948 12951 +f 12951 12948 12952 +f 12948 12946 12952 +f 12952 12946 12959 +f 12946 12944 12959 +f 12959 12944 12960 +f 12944 12942 12960 +f 12960 12942 12961 +f 12938 12963 12962 +f 12942 12940 12961 +f 12961 12940 12962 +f 12940 12938 12962 +f 4944 4969 4946 +f 4946 4969 4973 +f 4963 12995 5202 +f 5202 12995 12979 +f 5202 12979 12980 +f 12980 12979 12977 +f 12980 12977 12978 +f 12978 12977 12975 +f 12978 12975 12976 +f 12976 12975 12973 +f 12976 12973 12974 +f 12974 12973 12971 +f 12974 12971 12972 +f 12972 12971 12969 +f 12972 12969 12970 +f 12970 12969 12967 +f 12970 12967 12968 +f 12968 12967 12965 +f 12968 12965 12966 +f 12966 12965 4946 +f 13011 4946 4973 +f 13011 4973 13010 +f 13010 13004 13005 +f 13005 13004 13012 +f 13005 13012 13013 +f 13013 13012 13000 +f 13013 13000 12999 +f 12999 5132 5133 +f 4963 12993 12994 +f 4963 12994 12995 +f 12995 12994 12979 +f 12993 4964 12992 +f 12992 5203 12991 +f 12991 5203 5204 +f 12990 4951 12989 +f 12989 4951 4949 +f 12989 4949 12964 +f 12964 4947 4946 +f 13004 13003 13012 +f 4974 5136 13002 +f 13002 5136 13001 +f 13002 13001 13003 +f 13003 13001 13012 +f 5136 5134 13001 +f 13001 13000 13012 +f 5134 5132 13000 +f 12988 5133 5217 +f 12988 5217 12987 +f 12987 5218 12998 +f 12998 5218 12996 +f 12998 12996 12985 +f 12985 12996 12997 +f 12985 12997 12984 +f 12984 12997 12983 +f 12984 12983 13023 +f 13023 12983 12982 +f 13023 12982 13027 +f 13027 12982 12981 +f 13027 12981 12978 +f 12978 12981 12980 +f 5202 12982 5219 +f 5219 12982 12983 +f 4946 12965 12964 +f 12964 12965 12967 +f 12964 12967 12989 +f 12989 12967 12969 +f 12989 12969 12990 +f 12990 12969 12971 +f 12990 12971 12991 +f 12991 12971 12973 +f 12991 12973 12992 +f 12992 12973 12975 +f 12992 12975 12993 +f 12993 12975 12977 +f 12993 12977 12994 +f 12994 12977 12979 +f 12980 12981 5202 +f 5202 12981 12982 +f 12987 12998 12986 +f 12986 12998 12985 +f 12986 12985 13022 +f 13022 12985 12984 +f 13022 12984 13024 +f 13024 12984 13023 +f 13024 13023 13025 +f 13025 13023 13027 +f 13025 13027 12976 +f 12976 13027 12978 +f 12988 12987 13018 +f 13018 12987 12986 +f 13018 12986 13019 +f 13019 12986 13022 +f 13019 13022 13020 +f 13020 13022 13024 +f 13020 13024 13021 +f 13021 13024 13025 +f 13021 13025 12974 +f 12974 13025 12976 +f 12999 12988 13015 +f 13015 12988 13018 +f 13015 13018 13016 +f 13016 13018 13019 +f 13016 13019 13017 +f 13017 13019 13020 +f 13017 13020 13009 +f 13009 13020 13021 +f 13009 13021 12972 +f 12972 13021 12974 +f 12968 12966 13026 +f 13026 12966 13011 +f 13026 13011 13006 +f 13006 13011 13010 +f 13006 13010 13005 +f 13009 12972 12970 +f 12970 12968 13008 +f 13008 12968 13026 +f 13008 13026 13007 +f 13007 13026 13006 +f 13007 13006 13014 +f 13014 13006 13005 +f 13014 13005 13013 +f 13017 13009 13008 +f 13008 13009 12970 +f 13017 13008 13007 +f 13016 13017 13007 +f 13016 13007 13014 +f 13015 13016 13014 +f 13015 13014 13013 +f 12999 13015 13013 +f 5297 27425 5299 +f 5299 27425 27426 +f 5299 27426 5300 +f 5300 27426 27427 +f 5300 27427 5301 +f 5301 27427 5305 +f 5305 27427 5307 +f 5307 27427 5309 +f 5309 27427 5311 +f 5311 27427 5312 +f 5312 27427 5313 +f 5313 27427 27428 +f 5313 27428 5314 +f 5314 27428 5335 +f 5335 27428 5336 +f 5336 27428 5170 +f 5170 27428 5169 +f 5169 27428 27429 +f 5169 27429 5168 +f 5168 27429 5167 +f 5167 27429 5161 +f 5161 27429 5159 +f 5159 27429 5157 +f 5157 27429 5158 +f 5158 27429 27430 +f 5158 27430 5153 +f 5153 27430 27431 +f 5153 27431 5151 +f 5151 27431 5149 +f 5149 27431 5146 +f 5146 27431 5147 +f 5147 27431 5148 +f 5148 27431 5337 +f 5337 27431 27432 +f 5337 27432 5338 +f 5338 27432 5282 +f 5282 27432 5283 +f 5283 27432 5285 +f 5285 27432 5286 +f 5286 27432 27425 +f 5286 27425 5287 +f 5287 27425 5288 +f 5288 27425 5289 +f 5289 27425 5290 +f 5290 27425 5295 +f 5295 27425 5297 +f 27428 27427 27426 +f 27426 27425 27433 +f 27433 27425 27432 +f 27433 27432 27430 +f 27430 27432 27431 +f 27429 27428 27433 +f 27433 27428 27426 +f 27429 27433 27430 +f 5379 5378 27434 +f 27434 5378 5377 +f 27434 5377 5376 +f 27434 5376 27435 +f 27435 5376 5375 +f 27435 5375 5374 +f 5374 5358 27435 +f 27435 5358 5356 +f 27435 5356 5354 +f 5354 5346 27435 +f 27435 5346 5348 +f 27435 5348 27436 +f 27436 5348 5350 +f 27436 5350 27437 +f 27437 5350 5427 +f 27437 5427 5424 +f 5424 5421 27437 +f 27437 5421 5420 +f 27437 5420 5419 +f 5419 5418 27437 +f 27437 5418 5417 +f 27437 5417 27438 +f 27438 5417 5416 +f 27438 5416 5415 +f 5415 5385 27438 +f 27438 5385 5384 +f 27438 5384 5383 +f 27438 5383 27439 +f 27439 5383 5382 +f 27439 5382 5275 +f 5275 5277 27439 +f 27439 5277 5279 +f 27439 5279 5211 +f 5211 5210 27439 +f 27439 5210 27440 +f 27439 27440 27438 +f 27438 27440 27441 +f 27438 27441 27437 +f 27437 27441 27436 +f 5210 5206 27440 +f 27440 5206 27442 +f 27440 27442 27441 +f 27441 27442 27434 +f 27441 27434 27436 +f 27436 27434 27435 +f 5206 5212 27442 +f 27442 5212 5214 +f 27442 5214 5216 +f 5216 4996 27442 +f 27442 4996 4995 +f 27442 4995 5381 +f 27442 5381 27434 +f 27434 5381 5380 +f 27434 5380 5379 +f 5335 5385 5415 +f 5301 13051 5300 +f 5300 13051 13043 +f 13044 13043 13041 +f 13044 13041 13042 +f 13042 13041 13039 +f 13042 13039 13040 +f 13040 13039 13037 +f 13040 13037 13038 +f 13038 13037 13035 +f 13038 13035 13036 +f 13036 13035 13033 +f 13036 13033 13034 +f 13034 13033 13031 +f 13034 13031 13032 +f 13032 13031 13029 +f 13032 13029 13030 +f 5301 5305 13051 +f 13051 5305 13050 +f 13051 13050 13043 +f 13043 13050 13041 +f 13050 5307 13049 +f 13050 13049 13041 +f 13041 13049 13039 +f 13049 5309 13048 +f 13049 13048 13039 +f 13039 13048 13037 +f 13048 13047 13037 +f 13037 13047 13035 +f 13047 5312 13046 +f 13047 13046 13035 +f 13035 13046 13033 +f 5312 5313 13046 +f 13046 13045 13033 +f 13033 13045 13031 +f 13045 5314 13028 +f 13045 13028 13031 +f 13031 13028 13029 +f 5416 13067 5415 +f 5415 13067 13060 +f 13030 13060 13059 +f 13030 13059 13032 +f 13032 13059 13058 +f 13032 13058 13034 +f 13034 13058 13057 +f 13034 13057 13036 +f 13036 13057 13056 +f 13036 13056 13038 +f 13038 13056 13055 +f 13038 13055 13040 +f 13040 13055 13054 +f 13040 13054 13042 +f 13042 13054 13053 +f 13042 13053 13044 +f 13044 13053 5350 +f 13066 5416 5417 +f 13063 5419 5420 +f 13063 5420 13062 +f 13061 5421 5424 +f 13061 5424 5427 +f 13061 5427 13052 +f 13052 5427 5350 +f 13052 5350 13053 +f 13053 13054 13052 +f 13052 13054 13061 +f 13054 13055 13061 +f 13061 13055 13062 +f 13055 13056 13062 +f 13062 13056 13063 +f 13056 13057 13063 +f 13063 13057 13064 +f 13057 13058 13064 +f 13064 13058 13065 +f 13060 13067 13066 +f 13058 13059 13065 +f 13065 13059 13066 +f 13059 13060 13066 +f 5283 13091 13083 +f 5283 13083 13084 +f 13084 13083 13081 +f 13084 13081 13082 +f 13082 13081 13079 +f 13082 13079 13080 +f 13080 13079 13077 +f 13080 13077 13078 +f 13078 13077 13075 +f 13078 13075 13076 +f 13076 13075 13073 +f 13076 13073 13074 +f 13074 13073 13071 +f 13074 13071 13072 +f 13072 13071 13069 +f 13072 13069 13070 +f 13070 13069 5299 +f 13070 5299 5348 +f 13091 5286 13090 +f 13091 13090 13083 +f 13083 13090 13081 +f 5286 5287 13090 +f 13090 5287 13089 +f 13090 13089 13081 +f 13081 13089 13079 +f 5287 5288 13089 +f 13089 5288 13088 +f 13089 13088 13079 +f 13079 13088 13077 +f 5288 5289 13088 +f 13088 13087 13077 +f 13077 13087 13075 +f 13087 13086 13075 +f 13075 13086 13073 +f 13086 5295 13085 +f 13086 13085 13073 +f 13073 13085 13071 +f 5295 5297 13085 +f 13085 13068 13071 +f 13071 13068 13069 +f 13068 5299 13069 +f 5346 13115 5348 +f 13108 13107 13105 +f 13108 13105 13106 +f 13106 13105 13103 +f 13106 13103 13104 +f 13104 13103 13101 +f 13104 13101 13102 +f 13102 13101 13099 +f 13102 13099 13100 +f 13100 13099 13097 +f 13100 13097 13098 +f 13098 13097 13095 +f 13098 13095 13096 +f 13096 13095 13093 +f 13096 13093 13094 +f 13094 13093 5378 +f 13094 5378 5283 +f 13115 5346 13114 +f 13114 5346 5354 +f 13114 5354 13113 +f 13113 5354 5356 +f 13113 5356 13112 +f 13112 5356 5358 +f 13111 5374 5375 +f 13111 5375 13110 +f 13110 5375 5376 +f 13110 5376 13109 +f 13109 13092 13095 +f 13095 13092 13093 +f 13092 5377 5378 +f 13092 5378 13093 +f 13094 5283 13084 +f 13095 13097 13109 +f 13109 13097 13110 +f 13097 13099 13110 +f 13110 13099 13111 +f 13099 13101 13111 +f 13111 13101 13112 +f 13101 13103 13112 +f 13112 13103 13113 +f 13107 13115 13114 +f 13103 13105 13113 +f 13113 13105 13114 +f 13070 5348 13108 +f 13105 13107 13114 +f 13084 13082 13094 +f 13094 13082 13096 +f 13082 13080 13096 +f 13096 13080 13098 +f 13080 13078 13098 +f 13098 13078 13100 +f 13078 13076 13100 +f 13100 13076 13102 +f 13076 13074 13102 +f 13102 13074 13104 +f 13070 13108 13106 +f 13074 13072 13104 +f 13104 13072 13106 +f 13072 13070 13106 +f 5282 5283 5379 +f 5151 13138 5153 +f 5153 13138 13129 +f 5153 13129 13130 +f 13130 13129 13127 +f 13130 13127 13128 +f 13128 13127 13125 +f 13128 13125 13126 +f 13126 13125 13123 +f 13126 13123 13124 +f 13124 13123 13121 +f 13124 13121 13122 +f 13122 13121 13119 +f 13122 13119 13120 +f 13120 13119 13117 +f 13120 13117 13118 +f 13118 13117 5379 +f 13138 5151 13137 +f 13136 5146 13135 +f 13135 5146 5147 +f 13135 5147 13134 +f 13134 5147 5148 +f 13134 5148 13133 +f 13133 5337 13116 +f 13116 5338 5379 +f 5379 5338 5282 +f 13143 5381 13142 +f 13142 5381 4995 +f 13142 4995 13141 +f 13141 4995 4996 +f 13141 4996 13140 +f 13140 4996 5216 +f 13140 5216 13139 +f 13139 5216 5214 +f 13139 5214 13132 +f 13132 5214 5212 +f 13132 5212 13131 +f 13131 5212 5206 +f 13130 5206 5153 +f 13117 13119 13116 +f 13116 13119 13133 +f 13119 13121 13133 +f 13133 13121 13134 +f 13121 13123 13134 +f 13134 13123 13135 +f 13123 13125 13135 +f 13135 13125 13136 +f 13129 13138 13137 +f 13125 13127 13136 +f 13136 13127 13137 +f 13127 13129 13137 +f 13117 13116 5379 +f 13130 13128 13131 +f 13131 13128 13132 +f 13128 13126 13132 +f 13132 13126 13139 +f 13126 13124 13139 +f 13139 13124 13140 +f 13124 13122 13140 +f 13140 13122 13141 +f 13118 13143 13142 +f 13122 13120 13141 +f 13141 13120 13142 +f 13120 13118 13142 +f 5158 5206 5210 +f 13160 13159 13157 +f 13160 13157 13158 +f 13158 13157 13155 +f 13158 13155 13156 +f 13156 13155 13153 +f 13156 13153 13154 +f 13154 13153 13151 +f 13154 13151 13152 +f 13152 13151 13149 +f 13152 13149 13150 +f 13150 13149 13147 +f 13150 13147 13148 +f 13148 13147 13145 +f 13148 13145 13146 +f 13191 5158 5210 +f 13191 5210 13190 +f 13190 5210 13184 +f 13190 13184 13185 +f 13185 13184 13192 +f 13185 13192 13193 +f 13193 13192 13180 +f 13193 13180 13179 +f 13179 13180 5275 +f 13179 5275 5382 +f 5170 13173 13174 +f 13175 13174 13159 +f 13173 5169 13172 +f 13172 5169 5168 +f 13172 5168 13171 +f 13170 5161 13169 +f 13169 5159 13144 +f 13144 5159 5157 +f 13144 5157 5158 +f 5210 13182 13183 +f 13184 13183 13192 +f 5211 5279 13182 +f 13182 5279 13181 +f 13182 13181 13183 +f 13183 13181 13192 +f 13181 13180 13192 +f 5277 5275 13180 +f 13168 5382 5383 +f 13167 5383 5384 +f 13178 5384 13176 +f 13178 13176 13165 +f 13165 13176 13177 +f 13165 13177 13164 +f 13164 13177 13163 +f 13164 13163 13203 +f 13203 13163 13162 +f 13203 13162 13207 +f 13207 13162 13161 +f 13207 13161 13158 +f 13158 13161 13160 +f 13176 5385 13177 +f 5336 13162 5385 +f 5385 13163 13177 +f 5158 13145 13144 +f 13144 13145 13147 +f 13144 13147 13169 +f 13169 13147 13149 +f 13169 13149 13170 +f 13170 13149 13151 +f 13170 13151 13171 +f 13171 13151 13153 +f 13171 13153 13172 +f 13172 13153 13155 +f 13172 13155 13173 +f 13173 13155 13157 +f 13173 13157 13174 +f 13174 13157 13159 +f 5336 13161 13162 +f 13167 13178 13166 +f 13166 13178 13165 +f 13166 13165 13202 +f 13202 13165 13164 +f 13202 13164 13204 +f 13204 13164 13203 +f 13204 13203 13205 +f 13205 13203 13207 +f 13205 13207 13156 +f 13156 13207 13158 +f 13168 13167 13198 +f 13198 13167 13166 +f 13198 13166 13199 +f 13199 13166 13202 +f 13199 13202 13200 +f 13200 13202 13204 +f 13200 13204 13201 +f 13201 13204 13205 +f 13201 13205 13154 +f 13154 13205 13156 +f 13179 13168 13195 +f 13195 13168 13198 +f 13195 13198 13196 +f 13196 13198 13199 +f 13196 13199 13197 +f 13197 13199 13200 +f 13197 13200 13189 +f 13189 13200 13201 +f 13189 13201 13152 +f 13152 13201 13154 +f 13148 13146 13206 +f 13206 13146 13191 +f 13206 13191 13186 +f 13186 13191 13190 +f 13186 13190 13185 +f 13189 13152 13150 +f 13150 13148 13188 +f 13188 13148 13206 +f 13188 13206 13187 +f 13187 13206 13186 +f 13187 13186 13194 +f 13194 13186 13185 +f 13194 13185 13193 +f 13197 13189 13188 +f 13188 13189 13150 +f 13197 13188 13187 +f 13196 13197 13187 +f 13196 13187 13194 +f 13195 13196 13194 +f 13195 13194 13193 +f 13179 13195 13193 +f 5446 27443 5447 +f 5447 27443 27444 +f 5447 27444 5332 +f 5332 27444 27445 +f 5332 27445 5330 +f 5330 27445 5328 +f 5328 27445 5326 +f 5326 27445 5325 +f 5325 27445 5324 +f 5324 27445 5323 +f 5323 27445 5322 +f 5322 27445 27446 +f 5322 27446 5320 +f 5320 27446 5319 +f 5319 27446 5318 +f 5318 27446 5316 +f 5316 27446 5448 +f 5448 27446 27447 +f 5448 27447 5449 +f 5449 27447 5450 +f 5450 27447 5306 +f 5306 27447 5304 +f 5304 27447 5302 +f 5302 27447 5303 +f 5303 27447 27448 +f 5303 27448 5298 +f 5298 27448 27449 +f 5298 27449 5296 +f 5296 27449 5294 +f 5294 27449 5291 +f 5291 27449 5292 +f 5292 27449 5293 +f 5293 27449 5432 +f 5432 27449 27450 +f 5432 27450 5431 +f 5431 27450 5430 +f 5430 27450 5429 +f 5429 27450 5428 +f 5428 27450 5434 +f 5434 27450 27443 +f 5434 27443 5436 +f 5436 27443 5438 +f 5438 27443 5440 +f 5440 27443 5442 +f 5442 27443 5444 +f 5444 27443 5446 +f 27446 27445 27444 +f 27444 27443 27451 +f 27451 27443 27450 +f 27451 27450 27448 +f 27448 27450 27449 +f 27447 27446 27451 +f 27451 27446 27444 +f 27447 27451 27448 +f 5365 5366 27452 +f 27452 5366 5368 +f 27452 5368 5369 +f 27452 5369 27453 +f 27453 5369 5371 +f 27453 5371 5465 +f 5465 5463 27453 +f 27453 5463 5461 +f 27453 5461 5459 +f 5459 5451 27453 +f 27453 5451 5453 +f 27453 5453 27454 +f 27454 5453 5455 +f 27454 5455 27455 +f 27455 5455 5512 +f 27455 5512 5509 +f 5509 5507 27455 +f 27455 5507 5506 +f 27455 5506 5503 +f 5503 5502 27455 +f 27455 5502 5501 +f 27455 5501 27456 +f 27456 5501 5500 +f 27456 5500 5499 +f 5499 5469 27456 +f 27456 5469 5468 +f 27456 5468 5467 +f 27456 5467 27457 +f 27457 5467 5466 +f 27457 5466 5422 +f 5422 5423 27457 +f 27457 5423 5425 +f 27457 5425 5352 +f 5352 5351 27457 +f 27457 5351 27458 +f 27457 27458 27456 +f 27456 27458 27459 +f 27456 27459 27455 +f 27455 27459 27454 +f 5351 5347 27458 +f 27458 5347 27460 +f 27458 27460 27459 +f 27459 27460 27452 +f 27459 27452 27454 +f 27454 27452 27453 +f 5347 5353 27460 +f 27460 5353 5355 +f 27460 5355 5357 +f 5357 5359 27460 +f 27460 5359 5360 +f 27460 5360 5362 +f 27460 5362 27452 +f 27452 5362 5363 +f 27452 5363 5365 +f 5499 5318 5469 +f 5330 13231 5332 +f 5332 13223 13224 +f 13224 13223 13221 +f 13224 13221 13222 +f 13222 13221 13219 +f 13222 13219 13220 +f 13220 13219 13217 +f 13220 13217 13218 +f 13218 13217 13215 +f 13218 13215 13216 +f 13216 13215 13213 +f 13216 13213 13214 +f 13214 13213 13211 +f 13214 13211 13212 +f 13212 13211 13209 +f 13212 13209 13210 +f 13231 13230 13223 +f 13223 13230 13221 +f 5328 5326 13230 +f 13230 5326 13229 +f 13230 13229 13221 +f 13221 13229 13219 +f 13229 13228 13219 +f 13219 13228 13217 +f 13228 5324 13227 +f 13228 13227 13217 +f 13217 13227 13215 +f 13227 13226 13215 +f 13215 13226 13213 +f 13226 13225 13213 +f 13213 13225 13211 +f 5322 5320 13225 +f 13225 13208 13211 +f 13211 13208 13209 +f 5500 13247 5499 +f 5499 13247 13240 +f 13210 13240 13239 +f 13210 13239 13212 +f 13212 13239 13238 +f 13212 13238 13214 +f 13214 13238 13237 +f 13214 13237 13216 +f 13216 13237 13236 +f 13216 13236 13218 +f 13218 13236 13235 +f 13218 13235 13220 +f 13220 13235 13234 +f 13220 13234 13222 +f 13222 13234 13233 +f 13222 13233 13224 +f 13247 5500 13246 +f 13246 5500 5501 +f 13246 5501 13245 +f 13245 5502 13244 +f 13244 5502 5503 +f 13243 5503 5506 +f 13242 5507 13241 +f 13241 5507 5509 +f 13241 5509 5512 +f 13241 5512 13232 +f 13232 5512 5455 +f 13233 13234 13232 +f 13232 13234 13241 +f 13234 13235 13241 +f 13241 13235 13242 +f 13235 13236 13242 +f 13242 13236 13243 +f 13236 13237 13243 +f 13243 13237 13244 +f 13237 13238 13244 +f 13244 13238 13245 +f 13240 13247 13246 +f 13238 13239 13245 +f 13245 13239 13246 +f 13239 13240 13246 +f 5447 5332 5453 +f 5428 13271 5429 +f 5429 13271 13263 +f 13264 13263 13261 +f 13264 13261 13262 +f 13262 13261 13259 +f 13262 13259 13260 +f 13260 13259 13257 +f 13260 13257 13258 +f 13258 13257 13255 +f 13258 13255 13256 +f 13256 13255 13253 +f 13256 13253 13254 +f 13254 13253 13251 +f 13254 13251 13252 +f 13252 13251 13249 +f 13252 13249 13250 +f 13250 13249 5447 +f 13250 5447 5453 +f 5428 5434 13271 +f 13271 5434 13270 +f 13271 13270 13263 +f 13263 13270 13261 +f 5434 5436 13270 +f 13270 5436 13269 +f 13270 13269 13261 +f 13261 13269 13259 +f 5436 5438 13269 +f 13269 5438 13268 +f 13269 13268 13259 +f 13259 13268 13257 +f 5438 5440 13268 +f 13268 5440 13267 +f 13268 13267 13257 +f 13257 13267 13255 +f 13267 5442 13266 +f 13267 13266 13255 +f 13255 13266 13253 +f 13266 5444 13265 +f 13266 13265 13253 +f 13253 13265 13251 +f 13265 5446 13248 +f 13265 13248 13251 +f 13251 13248 13249 +f 5446 5447 13248 +f 13248 5447 13249 +f 5451 13295 5453 +f 5453 13287 13288 +f 13288 13287 13285 +f 13288 13285 13286 +f 13286 13285 13283 +f 13286 13283 13284 +f 13284 13283 13281 +f 13284 13281 13282 +f 13282 13281 13279 +f 13282 13279 13280 +f 13280 13279 13277 +f 13280 13277 13278 +f 13278 13277 13275 +f 13278 13275 13276 +f 13276 13275 13273 +f 13276 13273 13274 +f 13274 13273 5366 +f 13274 5366 5429 +f 13294 5451 5459 +f 13294 5459 13293 +f 13293 5461 13292 +f 13291 5465 5371 +f 13291 5371 13290 +f 13290 5371 5369 +f 13290 5369 13289 +f 13289 5369 13272 +f 13289 13272 13275 +f 13275 13272 13273 +f 13272 5368 5366 +f 13272 5366 13273 +f 13274 5429 13264 +f 13275 13277 13289 +f 13289 13277 13290 +f 13277 13279 13290 +f 13290 13279 13291 +f 13279 13281 13291 +f 13291 13281 13292 +f 13281 13283 13292 +f 13292 13283 13293 +f 13287 13295 13294 +f 13283 13285 13293 +f 13293 13285 13294 +f 13250 5453 13288 +f 13285 13287 13294 +f 13264 13262 13274 +f 13274 13262 13276 +f 13262 13260 13276 +f 13276 13260 13278 +f 13260 13258 13278 +f 13278 13258 13280 +f 13258 13256 13280 +f 13280 13256 13282 +f 13256 13254 13282 +f 13282 13254 13284 +f 13250 13288 13286 +f 13254 13252 13284 +f 13284 13252 13286 +f 13252 13250 13286 +f 5430 5429 5365 +f 5365 5429 5366 +f 5298 13309 13310 +f 13310 13309 13307 +f 13310 13307 13308 +f 13308 13307 13305 +f 13308 13305 13306 +f 13306 13305 13303 +f 13306 13303 13304 +f 13304 13303 13301 +f 13304 13301 13302 +f 13302 13301 13299 +f 13302 13299 13300 +f 13300 13299 13297 +f 13300 13297 13298 +f 13298 13297 5365 +f 13323 5363 5362 +f 13318 5296 13317 +f 13317 5296 5294 +f 13317 5294 13316 +f 13315 5291 5292 +f 13314 5292 5293 +f 13313 5293 5432 +f 13313 5432 13296 +f 13296 5431 5365 +f 5365 5431 5430 +f 13322 5362 5360 +f 13321 5360 5359 +f 13321 5359 13320 +f 13320 5359 5357 +f 13320 5357 13319 +f 13319 5357 5355 +f 13319 5355 13312 +f 13312 5353 13311 +f 13311 5353 5347 +f 13311 5347 13310 +f 13310 5347 5298 +f 13297 13299 13296 +f 13296 13299 13313 +f 13299 13301 13313 +f 13313 13301 13314 +f 13301 13303 13314 +f 13314 13303 13315 +f 13303 13305 13315 +f 13315 13305 13316 +f 13309 13318 13317 +f 13305 13307 13316 +f 13316 13307 13317 +f 13307 13309 13317 +f 13297 13296 5365 +f 13310 13308 13311 +f 13311 13308 13312 +f 13308 13306 13312 +f 13312 13306 13319 +f 13306 13304 13319 +f 13319 13304 13320 +f 13304 13302 13320 +f 13320 13302 13321 +f 13298 13323 13322 +f 13302 13300 13321 +f 13321 13300 13322 +f 13300 13298 13322 +f 5303 5347 5351 +f 5318 13355 13339 +f 5318 13339 13340 +f 13340 13339 13337 +f 13340 13337 13338 +f 13338 13337 13335 +f 13338 13335 13336 +f 13336 13335 13333 +f 13336 13333 13334 +f 13334 13333 13331 +f 13334 13331 13332 +f 13332 13331 13329 +f 13332 13329 13330 +f 13330 13329 13327 +f 13330 13327 13328 +f 13328 13327 13325 +f 13328 13325 13326 +f 13326 13325 5303 +f 13371 5303 5351 +f 13371 5351 13370 +f 13370 13364 13365 +f 13365 13364 13372 +f 13365 13372 13373 +f 13373 13372 13360 +f 13373 13360 13359 +f 13359 13360 5422 +f 13359 5422 5466 +f 13355 13354 13339 +f 13353 5448 13352 +f 13352 5449 13351 +f 13351 5449 5450 +f 13349 5304 13324 +f 13364 13363 13372 +f 5352 5425 13362 +f 13362 5425 13361 +f 13362 13361 13363 +f 13363 13361 13372 +f 5425 5423 13361 +f 13361 13360 13372 +f 13359 5466 13348 +f 13358 13356 13345 +f 13345 13356 13357 +f 13345 13357 13344 +f 13344 13357 13343 +f 13344 13343 13383 +f 13383 13343 13342 +f 13383 13342 13387 +f 13387 13342 13341 +f 13387 13341 13338 +f 13338 13341 13340 +f 5318 13342 5469 +f 5303 13325 13324 +f 13324 13325 13327 +f 13324 13327 13349 +f 13349 13327 13329 +f 13349 13329 13350 +f 13350 13329 13331 +f 13350 13331 13351 +f 13351 13331 13333 +f 13351 13333 13352 +f 13352 13333 13335 +f 13352 13335 13353 +f 13353 13335 13337 +f 13353 13337 13354 +f 13354 13337 13339 +f 5318 13341 13342 +f 13347 13358 13346 +f 13346 13358 13345 +f 13346 13345 13382 +f 13382 13345 13344 +f 13382 13344 13384 +f 13384 13344 13383 +f 13384 13383 13385 +f 13385 13383 13387 +f 13385 13387 13336 +f 13336 13387 13338 +f 13348 13347 13378 +f 13378 13347 13346 +f 13378 13346 13379 +f 13379 13346 13382 +f 13379 13382 13380 +f 13380 13382 13384 +f 13380 13384 13381 +f 13381 13384 13385 +f 13381 13385 13334 +f 13334 13385 13336 +f 13359 13348 13375 +f 13375 13348 13378 +f 13375 13378 13376 +f 13376 13378 13379 +f 13376 13379 13377 +f 13377 13379 13380 +f 13377 13380 13369 +f 13369 13380 13381 +f 13369 13381 13332 +f 13332 13381 13334 +f 13328 13326 13386 +f 13386 13326 13371 +f 13386 13371 13366 +f 13366 13371 13370 +f 13366 13370 13365 +f 13369 13332 13330 +f 13330 13328 13368 +f 13368 13328 13386 +f 13368 13386 13367 +f 13367 13386 13366 +f 13367 13366 13374 +f 13374 13366 13365 +f 13374 13365 13373 +f 13377 13369 13368 +f 13368 13369 13330 +f 13377 13368 13367 +f 13376 13377 13367 +f 13376 13367 13374 +f 13375 13376 13374 +f 13375 13374 13373 +f 13359 13375 13373 +f 5530 27461 5532 +f 5532 27461 27462 +f 5532 27462 5533 +f 5533 27462 27463 +f 5533 27463 5534 +f 5534 27463 5538 +f 5538 27463 5540 +f 5540 27463 5542 +f 5542 27463 5543 +f 5543 27463 5545 +f 5545 27463 5546 +f 5546 27463 27464 +f 5546 27464 5547 +f 5547 27464 5550 +f 5550 27464 5551 +f 5551 27464 5552 +f 5552 27464 5553 +f 5553 27464 5554 +f 5554 27464 5555 +f 5555 27464 5327 +f 5327 27464 5329 +f 5329 27464 5331 +f 5331 27464 5333 +f 5333 27464 27465 +f 5333 27465 5334 +f 5334 27465 27466 +f 5334 27466 5445 +f 5445 27466 5443 +f 5443 27466 5441 +f 5441 27466 5439 +f 5439 27466 5437 +f 5437 27466 5435 +f 5435 27466 5433 +f 5433 27466 27461 +f 5433 27461 5513 +f 5513 27461 5514 +f 5514 27461 5515 +f 5515 27461 5516 +f 5516 27461 5517 +f 5517 27461 5518 +f 5518 27461 5524 +f 5524 27461 5526 +f 5526 27461 5528 +f 5528 27461 5530 +f 27462 27461 27466 +f 27466 27465 27462 +f 27462 27465 27463 +f 27465 27464 27463 +f 5587 5586 27467 +f 27467 5586 5585 +f 27467 5585 5584 +f 5584 5583 27467 +f 27467 5583 5570 +f 27467 5570 5568 +f 5568 5566 27467 +f 27467 5566 5564 +f 27467 5564 5556 +f 5556 5558 27467 +f 27467 5558 27468 +f 27467 27468 27469 +f 27469 27468 27470 +f 27469 27470 5452 +f 5452 27470 5456 +f 5456 27470 27471 +f 5456 27471 5457 +f 5457 27471 5510 +f 5510 27471 5508 +f 5508 27471 5505 +f 5505 27471 5504 +f 5504 27471 5588 +f 5588 27471 5589 +f 5589 27471 5591 +f 5591 27471 5592 +f 5592 27471 5593 +f 5593 27471 5594 +f 5594 27471 27472 +f 5594 27472 5595 +f 5595 27472 5596 +f 5596 27472 5688 +f 5688 27472 5693 +f 5693 27472 5695 +f 5695 27472 5698 +f 5698 27472 5560 +f 5560 27472 27468 +f 5560 27468 5558 +f 5452 5458 27469 +f 27469 5458 5460 +f 27469 5460 5462 +f 5462 5464 27469 +f 27469 5464 5373 +f 27469 5373 5372 +f 5372 5370 27469 +f 27469 5370 27467 +f 5370 5587 27467 +f 27468 27472 27470 +f 27470 27472 27471 +f 5592 5551 5591 +f 13404 13403 13401 +f 13404 13401 13402 +f 13402 13401 13399 +f 13402 13399 13400 +f 13400 13399 13397 +f 13400 13397 13398 +f 13398 13397 13395 +f 13398 13395 13396 +f 13396 13395 13393 +f 13396 13393 13394 +f 13394 13393 13391 +f 13394 13391 13392 +f 13392 13391 13389 +f 13392 13389 13390 +f 13390 13389 5550 +f 13390 5550 5592 +f 13411 13410 13403 +f 13403 13410 13401 +f 5538 5540 13410 +f 13410 5540 13409 +f 13410 13409 13401 +f 13401 13409 13399 +f 5540 5542 13409 +f 13409 5542 13408 +f 13409 13408 13399 +f 13399 13408 13397 +f 13408 13407 13397 +f 13397 13407 13395 +f 5543 5545 13407 +f 13407 13406 13395 +f 13395 13406 13393 +f 5545 5546 13406 +f 13406 5546 13405 +f 13406 13405 13393 +f 13393 13405 13391 +f 13405 5547 13388 +f 13405 13388 13391 +f 13391 13388 13389 +f 5547 5550 13388 +f 5592 13427 13420 +f 5592 13420 13390 +f 13390 13420 13419 +f 13390 13419 13392 +f 13392 13419 13418 +f 13392 13418 13394 +f 13394 13418 13417 +f 13394 13417 13396 +f 13396 13417 13416 +f 13396 13416 13398 +f 13398 13416 13415 +f 13398 13415 13400 +f 13400 13415 13414 +f 13400 13414 13402 +f 13402 13414 13413 +f 13402 13413 13404 +f 13404 5560 5533 +f 13427 5593 13426 +f 13426 5594 13425 +f 13425 5594 5595 +f 13425 5595 13424 +f 13424 5595 5596 +f 13423 5596 5688 +f 13423 5688 13422 +f 13422 5688 5693 +f 13422 5693 13421 +f 13421 5693 5695 +f 13421 5695 5698 +f 13421 5698 13412 +f 13412 5560 13413 +f 13413 13414 13412 +f 13412 13414 13421 +f 13414 13415 13421 +f 13421 13415 13422 +f 13415 13416 13422 +f 13422 13416 13423 +f 13416 13417 13423 +f 13423 13417 13424 +f 13417 13418 13424 +f 13424 13418 13425 +f 13420 13427 13426 +f 13418 13419 13425 +f 13425 13419 13426 +f 13419 13420 13426 +f 5515 13451 5514 +f 5514 13451 13443 +f 5514 13443 13444 +f 13444 13443 13441 +f 13444 13441 13442 +f 13442 13441 13439 +f 13442 13439 13440 +f 13440 13439 13437 +f 13440 13437 13438 +f 13438 13437 13435 +f 13438 13435 13436 +f 13436 13435 13433 +f 13436 13433 13434 +f 13434 13433 13431 +f 13434 13431 13432 +f 13432 13431 13429 +f 13432 13429 13430 +f 13430 13429 5532 +f 13430 5532 5558 +f 13451 5516 13450 +f 13451 13450 13443 +f 13443 13450 13441 +f 5516 5517 13450 +f 13450 5517 13449 +f 13450 13449 13441 +f 13441 13449 13439 +f 5517 5518 13449 +f 13449 5518 13448 +f 13449 13448 13439 +f 13439 13448 13437 +f 13448 5524 13447 +f 13448 13447 13437 +f 13437 13447 13435 +f 5524 5526 13447 +f 13447 5526 13446 +f 13447 13446 13435 +f 13435 13446 13433 +f 13446 5528 13445 +f 13446 13445 13433 +f 13433 13445 13431 +f 13445 5530 13428 +f 13445 13428 13431 +f 13431 13428 13429 +f 5530 5532 13428 +f 5556 13475 5558 +f 13468 13467 13465 +f 13468 13465 13466 +f 13466 13465 13463 +f 13466 13463 13464 +f 13464 13463 13461 +f 13464 13461 13462 +f 13462 13461 13459 +f 13462 13459 13460 +f 13460 13459 13457 +f 13460 13457 13458 +f 13458 13457 13455 +f 13458 13455 13456 +f 13456 13455 13453 +f 13456 13453 13454 +f 13454 13453 5586 +f 13454 5586 5514 +f 13474 5556 5564 +f 13473 5564 5566 +f 13473 5566 13472 +f 13472 5566 5568 +f 13472 5568 13471 +f 13471 5568 5570 +f 13471 5570 5583 +f 13471 5583 13470 +f 13470 5583 5584 +f 13470 5584 13469 +f 13469 5584 13452 +f 13469 13452 13455 +f 13455 13452 13453 +f 5584 5585 13452 +f 13452 5585 5586 +f 13452 5586 13453 +f 13454 5514 13444 +f 13455 13457 13469 +f 13469 13457 13470 +f 13457 13459 13470 +f 13470 13459 13471 +f 13459 13461 13471 +f 13471 13461 13472 +f 13461 13463 13472 +f 13472 13463 13473 +f 13467 13475 13474 +f 13463 13465 13473 +f 13473 13465 13474 +f 13430 5558 13468 +f 13465 13467 13474 +f 13444 13442 13454 +f 13454 13442 13456 +f 13442 13440 13456 +f 13456 13440 13458 +f 13440 13438 13458 +f 13458 13438 13460 +f 13438 13436 13460 +f 13460 13436 13462 +f 13436 13434 13462 +f 13462 13434 13464 +f 13430 13468 13466 +f 13434 13432 13464 +f 13464 13432 13466 +f 13432 13430 13466 +f 5513 5514 5587 +f 5587 5514 5586 +f 5334 13489 13490 +f 13490 13489 13487 +f 13490 13487 13488 +f 13488 13487 13485 +f 13488 13485 13486 +f 13486 13485 13483 +f 13486 13483 13484 +f 13484 13483 13481 +f 13484 13481 13482 +f 13482 13481 13479 +f 13482 13479 13480 +f 13480 13479 13477 +f 13480 13477 13478 +f 13478 13477 5587 +f 13478 5587 13503 +f 13503 5370 5372 +f 13497 5445 5443 +f 13495 5441 5439 +f 13495 5439 13494 +f 13494 5439 5437 +f 13494 5437 13493 +f 13493 5437 5435 +f 13493 5435 13476 +f 13476 5435 5433 +f 13476 5433 5587 +f 5587 5433 5513 +f 13501 5373 5464 +f 13501 5464 13500 +f 13500 5464 5462 +f 13500 5462 13499 +f 13499 5462 5460 +f 13499 5460 13492 +f 13492 5460 5458 +f 13492 5458 13491 +f 13491 5458 5452 +f 13490 5452 5334 +f 13477 13479 13476 +f 13476 13479 13493 +f 13479 13481 13493 +f 13493 13481 13494 +f 13481 13483 13494 +f 13494 13483 13495 +f 13483 13485 13495 +f 13495 13485 13496 +f 13489 13498 13497 +f 13485 13487 13496 +f 13496 13487 13497 +f 13487 13489 13497 +f 13477 13476 5587 +f 13490 13488 13491 +f 13491 13488 13492 +f 13488 13486 13492 +f 13492 13486 13499 +f 13486 13484 13499 +f 13499 13484 13500 +f 13484 13482 13500 +f 13500 13482 13501 +f 13478 13503 13502 +f 13482 13480 13501 +f 13501 13480 13502 +f 13480 13478 13502 +f 5334 5452 5333 +f 5333 5452 5456 +f 5551 13535 13519 +f 13520 13519 13517 +f 13520 13517 13518 +f 13518 13517 13515 +f 13518 13515 13516 +f 13516 13515 13513 +f 13516 13513 13514 +f 13514 13513 13511 +f 13514 13511 13512 +f 13512 13511 13509 +f 13512 13509 13510 +f 13510 13509 13507 +f 13510 13507 13508 +f 13508 13507 13505 +f 13508 13505 13506 +f 13506 13505 5333 +f 13506 5333 13551 +f 13551 5333 5456 +f 13551 5456 13550 +f 13550 13544 13545 +f 13545 13544 13552 +f 13545 13552 13553 +f 13553 13552 13540 +f 13553 13540 13539 +f 5552 13534 13535 +f 13535 13534 13519 +f 13533 5553 13532 +f 13532 5554 13531 +f 13531 5554 5555 +f 13529 5327 5329 +f 13504 5329 5331 +f 5457 13542 5456 +f 5456 13542 13543 +f 5456 13543 13544 +f 13544 13543 13552 +f 5457 5510 13542 +f 13542 5510 13541 +f 13542 13541 13543 +f 13543 13541 13552 +f 13541 13540 13552 +f 13528 5504 5588 +f 13528 5588 13527 +f 13527 5588 5589 +f 13527 5589 13538 +f 13538 5589 13536 +f 13538 13536 13525 +f 13525 13536 13537 +f 13525 13537 13524 +f 13524 13537 13523 +f 13524 13523 13563 +f 13563 13523 13522 +f 13563 13522 13567 +f 13567 13522 13521 +f 13567 13521 13518 +f 13518 13521 13520 +f 5551 13522 5591 +f 5591 13522 13523 +f 5333 13505 13504 +f 13504 13505 13507 +f 13504 13507 13529 +f 13529 13507 13509 +f 13529 13509 13530 +f 13530 13509 13511 +f 13530 13511 13531 +f 13531 13511 13513 +f 13531 13513 13532 +f 13532 13513 13515 +f 13532 13515 13533 +f 13533 13515 13517 +f 13533 13517 13534 +f 13534 13517 13519 +f 5551 13521 13522 +f 13527 13538 13526 +f 13526 13538 13525 +f 13526 13525 13562 +f 13562 13525 13524 +f 13562 13524 13564 +f 13564 13524 13563 +f 13564 13563 13565 +f 13565 13563 13567 +f 13565 13567 13516 +f 13516 13567 13518 +f 13528 13527 13558 +f 13558 13527 13526 +f 13558 13526 13559 +f 13559 13526 13562 +f 13559 13562 13560 +f 13560 13562 13564 +f 13560 13564 13561 +f 13561 13564 13565 +f 13561 13565 13514 +f 13514 13565 13516 +f 13539 13528 13555 +f 13555 13528 13558 +f 13555 13558 13556 +f 13556 13558 13559 +f 13556 13559 13557 +f 13557 13559 13560 +f 13557 13560 13549 +f 13549 13560 13561 +f 13549 13561 13512 +f 13512 13561 13514 +f 13508 13506 13566 +f 13566 13506 13551 +f 13566 13551 13546 +f 13546 13551 13550 +f 13546 13550 13545 +f 13549 13512 13510 +f 13510 13508 13548 +f 13548 13508 13566 +f 13548 13566 13547 +f 13547 13566 13546 +f 13547 13546 13554 +f 13554 13546 13545 +f 13554 13545 13553 +f 13557 13549 13548 +f 13548 13549 13510 +f 13557 13548 13547 +f 13556 13557 13547 +f 13556 13547 13554 +f 13555 13556 13554 +f 13555 13554 13553 +f 13539 13555 13553 +f 5715 27473 5717 +f 5717 27473 27474 +f 5717 27474 5718 +f 5718 27474 27475 +f 5718 27475 5719 +f 5719 27475 5723 +f 5723 27475 5725 +f 5725 27475 5727 +f 5727 27475 5728 +f 5728 27475 5729 +f 5729 27475 5730 +f 5730 27475 27476 +f 5730 27476 5731 +f 5731 27476 5733 +f 5733 27476 5734 +f 5734 27476 5735 +f 5735 27476 5736 +f 5736 27476 27477 +f 5736 27477 5737 +f 5737 27477 5738 +f 5738 27477 5539 +f 5539 27477 5537 +f 5537 27477 5535 +f 5535 27477 5536 +f 5536 27477 27478 +f 5536 27478 5531 +f 5531 27478 27479 +f 5531 27479 5529 +f 5529 27479 5527 +f 5527 27479 5525 +f 5525 27479 5523 +f 5523 27479 5522 +f 5522 27479 5521 +f 5521 27479 27480 +f 5521 27480 5520 +f 5520 27480 5519 +f 5519 27480 5701 +f 5701 27480 5699 +f 5699 27480 5702 +f 5702 27480 27473 +f 5702 27473 5705 +f 5705 27473 5707 +f 5707 27473 5709 +f 5709 27473 5711 +f 5711 27473 5713 +f 5713 27473 5715 +f 27476 27475 27474 +f 27474 27473 27481 +f 27481 27473 27480 +f 27481 27480 27478 +f 27478 27480 27479 +f 27477 27476 27481 +f 27481 27476 27474 +f 27477 27481 27478 +f 5575 5576 27482 +f 27482 5576 5578 +f 27482 5578 5580 +f 27482 5580 27483 +f 27483 5580 5755 +f 27483 5755 5753 +f 5753 5751 27483 +f 27483 5751 5749 +f 27483 5749 5747 +f 5747 5739 27483 +f 27483 5739 5741 +f 27483 5741 27484 +f 27484 5741 5743 +f 27484 5743 27485 +f 27485 5743 5772 +f 27485 5772 5769 +f 5769 5767 27485 +f 27485 5767 5766 +f 27485 5766 5762 +f 5762 5761 27485 +f 27485 5761 5760 +f 27485 5760 27486 +f 27486 5760 5759 +f 27486 5759 5758 +f 5758 5757 27486 +f 27486 5757 5692 +f 27486 5692 5691 +f 27486 5691 27487 +f 27487 5691 5690 +f 27487 5690 5689 +f 5689 5694 27487 +f 27487 5694 5696 +f 27487 5696 5562 +f 5562 5561 27487 +f 27487 5561 27488 +f 27487 27488 27486 +f 27486 27488 27489 +f 27486 27489 27485 +f 27485 27489 27484 +f 5561 5557 27488 +f 27488 5557 27490 +f 27488 27490 27489 +f 27489 27490 27482 +f 27489 27482 27484 +f 27484 27482 27483 +f 5557 5563 27490 +f 27490 5563 5565 +f 27490 5565 5567 +f 5567 5569 27490 +f 27490 5569 5571 +f 27490 5571 5572 +f 27490 5572 27482 +f 27482 5572 5574 +f 27482 5574 5575 +f 5758 5734 5757 +f 13584 13583 13581 +f 13584 13581 13582 +f 13582 13581 13579 +f 13582 13579 13580 +f 13580 13579 13577 +f 13580 13577 13578 +f 13578 13577 13575 +f 13578 13575 13576 +f 13576 13575 13573 +f 13576 13573 13574 +f 13574 13573 13571 +f 13574 13571 13572 +f 13572 13571 13569 +f 13572 13569 13570 +f 13570 13569 5733 +f 13570 5733 5758 +f 13591 13590 13583 +f 13583 13590 13581 +f 13590 13589 13581 +f 13581 13589 13579 +f 5725 5727 13589 +f 13589 5727 13588 +f 13589 13588 13579 +f 13579 13588 13577 +f 5727 5728 13588 +f 13588 13587 13577 +f 13577 13587 13575 +f 5728 5729 13587 +f 13587 5729 13586 +f 13587 13586 13575 +f 13575 13586 13573 +f 5729 5730 13586 +f 13586 13585 13573 +f 13573 13585 13571 +f 5730 5731 13585 +f 13585 5731 13568 +f 13585 13568 13571 +f 13571 13568 13569 +f 13568 5733 13569 +f 5759 13607 5758 +f 5758 13607 13600 +f 5758 13600 13570 +f 13570 13600 13599 +f 13570 13599 13572 +f 13572 13599 13598 +f 13572 13598 13574 +f 13574 13598 13597 +f 13574 13597 13576 +f 13576 13597 13596 +f 13576 13596 13578 +f 13578 13596 13595 +f 13578 13595 13580 +f 13580 13595 13594 +f 13580 13594 13582 +f 13582 13594 13593 +f 13582 13593 13584 +f 13584 5743 5718 +f 13604 5761 5762 +f 13604 5762 13603 +f 13603 5762 5766 +f 13601 5769 5772 +f 13601 5772 13592 +f 13593 13594 13592 +f 13592 13594 13601 +f 13594 13595 13601 +f 13601 13595 13602 +f 13595 13596 13602 +f 13602 13596 13603 +f 13596 13597 13603 +f 13603 13597 13604 +f 13597 13598 13604 +f 13604 13598 13605 +f 13600 13607 13606 +f 13598 13599 13605 +f 13605 13599 13606 +f 13599 13600 13606 +f 5701 13623 13624 +f 13624 13623 13621 +f 13624 13621 13622 +f 13622 13621 13619 +f 13622 13619 13620 +f 13620 13619 13617 +f 13620 13617 13618 +f 13618 13617 13615 +f 13618 13615 13616 +f 13616 13615 13613 +f 13616 13613 13614 +f 13614 13613 13611 +f 13614 13611 13612 +f 13612 13611 13609 +f 13612 13609 13610 +f 13610 13609 5717 +f 13610 5717 5741 +f 5699 5702 13631 +f 13631 5702 13630 +f 13631 13630 13623 +f 13623 13630 13621 +f 13630 5705 13629 +f 13630 13629 13621 +f 13621 13629 13619 +f 13629 13628 13619 +f 13619 13628 13617 +f 5707 5709 13628 +f 13628 13627 13617 +f 13617 13627 13615 +f 5709 5711 13627 +f 13627 5711 13626 +f 13627 13626 13615 +f 13615 13626 13613 +f 5711 5713 13626 +f 13626 5713 13625 +f 13626 13625 13613 +f 13613 13625 13611 +f 5713 5715 13625 +f 13625 5715 13608 +f 13625 13608 13611 +f 13611 13608 13609 +f 5715 5717 13608 +f 5739 13655 5741 +f 13648 13647 13645 +f 13648 13645 13646 +f 13646 13645 13643 +f 13646 13643 13644 +f 13644 13643 13641 +f 13644 13641 13642 +f 13642 13641 13639 +f 13642 13639 13640 +f 13640 13639 13637 +f 13640 13637 13638 +f 13638 13637 13635 +f 13638 13635 13636 +f 13636 13635 13633 +f 13636 13633 13634 +f 13634 13633 5576 +f 13634 5576 5701 +f 13655 5739 13654 +f 13654 5739 5747 +f 13653 5747 5749 +f 13653 5749 13652 +f 13652 5751 13651 +f 13651 5751 5753 +f 13651 5753 5755 +f 13651 5755 13650 +f 13650 5755 5580 +f 13650 5580 13649 +f 13649 13632 13635 +f 13635 13632 13633 +f 13632 5576 13633 +f 13634 5701 13624 +f 13635 13637 13649 +f 13649 13637 13650 +f 13637 13639 13650 +f 13650 13639 13651 +f 13639 13641 13651 +f 13651 13641 13652 +f 13641 13643 13652 +f 13652 13643 13653 +f 13647 13655 13654 +f 13643 13645 13653 +f 13653 13645 13654 +f 13610 5741 13648 +f 13645 13647 13654 +f 13624 13622 13634 +f 13634 13622 13636 +f 13622 13620 13636 +f 13636 13620 13638 +f 13620 13618 13638 +f 13638 13618 13640 +f 13618 13616 13640 +f 13640 13616 13642 +f 13616 13614 13642 +f 13642 13614 13644 +f 13610 13648 13646 +f 13614 13612 13644 +f 13644 13612 13646 +f 13612 13610 13646 +f 5529 13678 5531 +f 5531 13678 13669 +f 5531 13669 13670 +f 13670 13669 13667 +f 13670 13667 13668 +f 13668 13667 13665 +f 13668 13665 13666 +f 13666 13665 13663 +f 13666 13663 13664 +f 13664 13663 13661 +f 13664 13661 13662 +f 13662 13661 13659 +f 13662 13659 13660 +f 13660 13659 13657 +f 13660 13657 13658 +f 13658 13657 5575 +f 13658 5575 13683 +f 13683 5575 5574 +f 13683 5574 5572 +f 13677 5529 5527 +f 13677 5527 13676 +f 13676 5527 5525 +f 13676 5525 13675 +f 13675 5525 5523 +f 13675 5523 13674 +f 13674 5522 13673 +f 13656 5520 5575 +f 5575 5520 5519 +f 13683 5572 13682 +f 13682 5571 13681 +f 13681 5571 5569 +f 13681 5569 13680 +f 13680 5569 5567 +f 13680 5567 13679 +f 13679 5567 5565 +f 13679 5565 13672 +f 13672 5565 5563 +f 13671 5557 13670 +f 13670 5557 5531 +f 13657 13659 13656 +f 13656 13659 13673 +f 13659 13661 13673 +f 13673 13661 13674 +f 13661 13663 13674 +f 13674 13663 13675 +f 13663 13665 13675 +f 13675 13665 13676 +f 13669 13678 13677 +f 13665 13667 13676 +f 13676 13667 13677 +f 13667 13669 13677 +f 13657 13656 5575 +f 13670 13668 13671 +f 13671 13668 13672 +f 13668 13666 13672 +f 13672 13666 13679 +f 13666 13664 13679 +f 13679 13664 13680 +f 13664 13662 13680 +f 13680 13662 13681 +f 13658 13683 13682 +f 13662 13660 13681 +f 13681 13660 13682 +f 13660 13658 13682 +f 5734 13699 13700 +f 13700 13699 13697 +f 13700 13697 13698 +f 13698 13697 13695 +f 13698 13695 13696 +f 13696 13695 13693 +f 13696 13693 13694 +f 13694 13693 13691 +f 13694 13691 13692 +f 13692 13691 13689 +f 13692 13689 13690 +f 13690 13689 13687 +f 13690 13687 13688 +f 13688 13687 13685 +f 13688 13685 13686 +f 13731 5536 5561 +f 13731 5561 13730 +f 13730 13724 13725 +f 13725 13724 13732 +f 13725 13732 13733 +f 13733 13732 13720 +f 13733 13720 13719 +f 5736 13713 5735 +f 13715 13714 13699 +f 13711 5737 5738 +f 13684 5537 5535 +f 13684 5535 5536 +f 5561 13722 13723 +f 5561 13723 13724 +f 13724 13723 13732 +f 5562 5696 13722 +f 13722 5696 13721 +f 13722 13721 13723 +f 13723 13721 13732 +f 5696 5694 13721 +f 13721 5694 13720 +f 13721 13720 13732 +f 13718 5692 13716 +f 13718 13716 13705 +f 13705 13716 13717 +f 13705 13717 13704 +f 13704 13717 13703 +f 13704 13703 13743 +f 13743 13703 13702 +f 13743 13702 13747 +f 13747 13702 13701 +f 13747 13701 13698 +f 13698 13701 13700 +f 5734 13702 5757 +f 5757 13702 13703 +f 5536 13685 13684 +f 13684 13685 13687 +f 13684 13687 13709 +f 13709 13687 13689 +f 13709 13689 13710 +f 13710 13689 13691 +f 13710 13691 13711 +f 13711 13691 13693 +f 13711 13693 13712 +f 13712 13693 13695 +f 13712 13695 13713 +f 13713 13695 13697 +f 13713 13697 13714 +f 13714 13697 13699 +f 13700 13701 5734 +f 5734 13701 13702 +f 13707 13718 13706 +f 13706 13718 13705 +f 13706 13705 13742 +f 13742 13705 13704 +f 13742 13704 13744 +f 13744 13704 13743 +f 13744 13743 13745 +f 13745 13743 13747 +f 13745 13747 13696 +f 13696 13747 13698 +f 13708 13707 13738 +f 13738 13707 13706 +f 13738 13706 13739 +f 13739 13706 13742 +f 13739 13742 13740 +f 13740 13742 13744 +f 13740 13744 13741 +f 13741 13744 13745 +f 13741 13745 13694 +f 13694 13745 13696 +f 13719 13708 13735 +f 13735 13708 13738 +f 13735 13738 13736 +f 13736 13738 13739 +f 13736 13739 13737 +f 13737 13739 13740 +f 13737 13740 13729 +f 13729 13740 13741 +f 13729 13741 13692 +f 13692 13741 13694 +f 13688 13686 13746 +f 13746 13686 13731 +f 13746 13731 13726 +f 13726 13731 13730 +f 13726 13730 13725 +f 13729 13692 13690 +f 13690 13688 13728 +f 13728 13688 13746 +f 13728 13746 13727 +f 13727 13746 13726 +f 13727 13726 13734 +f 13734 13726 13725 +f 13734 13725 13733 +f 13737 13729 13728 +f 13728 13729 13690 +f 13737 13728 13727 +f 13736 13737 13727 +f 13736 13727 13734 +f 13735 13736 13734 +f 13735 13734 13733 +f 13719 13735 13733 +f 5790 27491 5792 +f 5792 27491 27492 +f 5792 27492 5793 +f 5793 27492 27493 +f 5793 27493 5794 +f 5794 27493 5798 +f 5798 27493 5800 +f 5800 27493 5802 +f 5802 27493 5803 +f 5803 27493 5804 +f 5804 27493 5805 +f 5805 27493 27494 +f 5805 27494 5806 +f 5806 27494 5808 +f 5808 27494 5809 +f 5809 27494 5810 +f 5810 27494 5811 +f 5811 27494 27495 +f 5811 27495 5812 +f 5812 27495 5813 +f 5813 27495 5724 +f 5724 27495 5722 +f 5722 27495 5720 +f 5720 27495 5721 +f 5721 27495 27496 +f 5721 27496 5716 +f 5716 27496 27497 +f 5716 27497 5714 +f 5714 27497 5712 +f 5712 27497 5710 +f 5710 27497 5708 +f 5708 27497 5706 +f 5706 27497 5704 +f 5704 27497 27498 +f 5704 27498 5703 +f 5703 27498 5700 +f 5700 27498 5773 +f 5773 27498 5774 +f 5774 27498 5775 +f 5775 27498 27491 +f 5775 27491 5776 +f 5776 27491 5782 +f 5782 27491 5784 +f 5784 27491 5786 +f 5786 27491 5788 +f 5788 27491 5790 +f 27494 27493 27492 +f 27492 27491 27499 +f 27499 27491 27498 +f 27499 27498 27496 +f 27496 27498 27497 +f 27495 27494 27499 +f 27499 27494 27492 +f 27495 27499 27496 +f 5579 5836 27500 +f 27500 5836 5835 +f 27500 5835 5832 +f 27500 5832 27501 +f 27501 5832 5830 +f 27501 5830 5828 +f 5828 5826 27501 +f 27501 5826 5824 +f 27501 5824 5822 +f 5822 5814 27501 +f 27501 5814 5816 +f 27501 5816 27502 +f 27502 5816 5818 +f 27502 5818 27503 +f 27503 5818 5863 +f 27503 5863 5860 +f 5860 5858 27503 +f 27503 5858 5853 +f 27503 5853 5852 +f 5852 5851 27503 +f 27503 5851 5850 +f 27503 5850 27504 +f 27504 5850 5849 +f 27504 5849 5848 +f 5848 5846 27504 +f 27504 5846 5845 +f 27504 5845 5764 +f 27504 5764 27505 +f 27505 5764 5763 +f 27505 5763 5765 +f 5765 5768 27505 +f 27505 5768 5770 +f 27505 5770 5745 +f 5745 5744 27505 +f 27505 5744 27506 +f 27505 27506 27504 +f 27504 27506 27507 +f 27504 27507 27503 +f 27503 27507 27502 +f 5744 5740 27506 +f 27506 5740 27508 +f 27506 27508 27507 +f 27507 27508 27500 +f 27507 27500 27502 +f 27502 27500 27501 +f 5740 5746 27508 +f 27508 5746 5748 +f 27508 5748 5750 +f 5750 5752 27508 +f 27508 5752 5754 +f 27508 5754 5582 +f 27508 5582 27500 +f 27500 5582 5581 +f 27500 5581 5579 +f 5808 5809 5848 +f 5793 13771 13763 +f 5793 13763 13764 +f 13764 13763 13761 +f 13764 13761 13762 +f 13762 13761 13759 +f 13762 13759 13760 +f 13760 13759 13757 +f 13760 13757 13758 +f 13758 13757 13755 +f 13758 13755 13756 +f 13756 13755 13753 +f 13756 13753 13754 +f 13754 13753 13751 +f 13754 13751 13752 +f 13752 13751 13749 +f 13752 13749 13750 +f 13750 13749 5808 +f 13771 13770 13763 +f 13763 13770 13761 +f 13770 5800 13769 +f 13770 13769 13761 +f 13761 13769 13759 +f 13769 13768 13759 +f 13759 13768 13757 +f 13768 13767 13757 +f 13757 13767 13755 +f 13767 5804 13766 +f 13767 13766 13755 +f 13755 13766 13753 +f 5804 5805 13766 +f 13766 5805 13765 +f 13766 13765 13753 +f 13753 13765 13751 +f 5805 5806 13765 +f 13765 5806 13748 +f 13765 13748 13751 +f 13751 13748 13749 +f 13748 5808 13749 +f 5849 13787 5848 +f 13750 13780 13779 +f 13750 13779 13752 +f 13752 13779 13778 +f 13752 13778 13754 +f 13754 13778 13777 +f 13754 13777 13756 +f 13756 13777 13776 +f 13756 13776 13758 +f 13758 13776 13775 +f 13758 13775 13760 +f 13760 13775 13774 +f 13760 13774 13762 +f 13762 13774 13773 +f 13762 13773 13764 +f 13764 13773 5818 +f 13787 5849 13786 +f 13786 5849 5850 +f 13785 5850 5851 +f 13784 5852 13783 +f 13772 5818 13773 +f 13773 13774 13772 +f 13772 13774 13781 +f 13774 13775 13781 +f 13781 13775 13782 +f 13775 13776 13782 +f 13782 13776 13783 +f 13776 13777 13783 +f 13783 13777 13784 +f 13777 13778 13784 +f 13784 13778 13785 +f 13780 13787 13786 +f 13778 13779 13785 +f 13785 13779 13786 +f 13779 13780 13786 +f 5792 5793 5816 +f 5774 13811 5773 +f 5773 13803 13804 +f 13804 13803 13801 +f 13804 13801 13802 +f 13802 13801 13799 +f 13802 13799 13800 +f 13800 13799 13797 +f 13800 13797 13798 +f 13798 13797 13795 +f 13798 13795 13796 +f 13796 13795 13793 +f 13796 13793 13794 +f 13794 13793 13791 +f 13794 13791 13792 +f 13792 13791 13789 +f 13792 13789 13790 +f 13790 5792 5816 +f 13811 13810 13803 +f 13803 13810 13801 +f 5775 5776 13810 +f 13810 5776 13809 +f 13810 13809 13801 +f 13801 13809 13799 +f 13809 5782 13808 +f 13809 13808 13799 +f 13799 13808 13797 +f 13808 13807 13797 +f 13797 13807 13795 +f 5784 5786 13807 +f 13807 5786 13806 +f 13807 13806 13795 +f 13795 13806 13793 +f 5786 5788 13806 +f 13806 5788 13805 +f 13806 13805 13793 +f 13793 13805 13791 +f 5788 5790 13805 +f 13805 5790 13788 +f 13805 13788 13791 +f 13791 13788 13789 +f 5816 13827 13828 +f 13828 13827 13825 +f 13828 13825 13826 +f 13826 13825 13823 +f 13826 13823 13824 +f 13824 13823 13821 +f 13824 13821 13822 +f 13822 13821 13819 +f 13822 13819 13820 +f 13820 13819 13817 +f 13820 13817 13818 +f 13818 13817 13815 +f 13818 13815 13816 +f 13816 13815 13813 +f 13816 13813 13814 +f 13814 13813 5836 +f 13814 5836 5773 +f 13835 5814 13834 +f 13834 5814 5822 +f 13834 5822 13833 +f 13831 5828 5830 +f 13831 5830 13830 +f 13830 5830 5832 +f 13830 5832 13829 +f 13829 5832 13812 +f 13829 13812 13815 +f 13815 13812 13813 +f 13812 5835 5836 +f 13812 5836 13813 +f 13814 5773 13804 +f 13815 13817 13829 +f 13829 13817 13830 +f 13817 13819 13830 +f 13830 13819 13831 +f 13819 13821 13831 +f 13831 13821 13832 +f 13821 13823 13832 +f 13832 13823 13833 +f 13827 13835 13834 +f 13823 13825 13833 +f 13833 13825 13834 +f 13790 5816 13828 +f 13825 13827 13834 +f 13804 13802 13814 +f 13814 13802 13816 +f 13802 13800 13816 +f 13816 13800 13818 +f 13800 13798 13818 +f 13818 13798 13820 +f 13798 13796 13820 +f 13820 13796 13822 +f 13796 13794 13822 +f 13822 13794 13824 +f 13790 13828 13826 +f 13794 13792 13824 +f 13824 13792 13826 +f 13792 13790 13826 +f 5716 13849 13850 +f 13850 13849 13847 +f 13850 13847 13848 +f 13848 13847 13845 +f 13848 13845 13846 +f 13846 13845 13843 +f 13846 13843 13844 +f 13844 13843 13841 +f 13844 13841 13842 +f 13842 13841 13839 +f 13842 13839 13840 +f 13840 13839 13837 +f 13840 13837 13838 +f 13838 13837 5579 +f 13863 5579 5581 +f 13863 5581 5582 +f 13858 5714 13857 +f 13854 5708 5706 +f 13854 5706 13853 +f 13853 5704 13836 +f 13836 5703 5579 +f 5579 5703 5700 +f 13861 5754 5752 +f 13861 5752 13860 +f 13860 5752 5750 +f 13860 5750 13859 +f 13859 5750 5748 +f 13859 5748 13852 +f 13852 5746 13851 +f 13851 5746 5740 +f 13850 5740 5716 +f 13837 13839 13836 +f 13836 13839 13853 +f 13839 13841 13853 +f 13853 13841 13854 +f 13841 13843 13854 +f 13854 13843 13855 +f 13843 13845 13855 +f 13855 13845 13856 +f 13849 13858 13857 +f 13845 13847 13856 +f 13856 13847 13857 +f 13847 13849 13857 +f 13837 13836 5579 +f 13850 13848 13851 +f 13851 13848 13852 +f 13848 13846 13852 +f 13852 13846 13859 +f 13846 13844 13859 +f 13859 13844 13860 +f 13844 13842 13860 +f 13860 13842 13861 +f 13838 13863 13862 +f 13842 13840 13861 +f 13861 13840 13862 +f 13840 13838 13862 +f 5716 5740 5721 +f 5810 13895 5809 +f 5809 13895 13879 +f 13880 13879 13877 +f 13880 13877 13878 +f 13878 13877 13875 +f 13878 13875 13876 +f 13876 13875 13873 +f 13876 13873 13874 +f 13874 13873 13871 +f 13874 13871 13872 +f 13872 13871 13869 +f 13872 13869 13870 +f 13870 13869 13867 +f 13870 13867 13868 +f 13868 13867 13865 +f 13868 13865 13866 +f 13866 13865 5721 +f 13866 5721 13911 +f 13911 5721 5744 +f 13911 5744 13910 +f 13910 5744 13904 +f 13910 13904 13905 +f 13905 13904 13912 +f 13905 13912 13913 +f 13913 13912 13900 +f 13913 13900 13899 +f 5810 13894 13895 +f 13895 13894 13879 +f 13893 5811 13892 +f 13892 5812 13891 +f 13891 5812 5813 +f 13891 5813 13890 +f 13890 5813 5724 +f 13890 5724 13889 +f 13889 5724 5722 +f 13864 5720 5721 +f 5744 13902 13903 +f 13904 13903 13912 +f 5745 5770 13902 +f 13902 5770 13901 +f 13902 13901 13903 +f 13903 13901 13912 +f 13901 13900 13912 +f 13888 5764 13887 +f 13887 5764 5845 +f 13898 13896 13885 +f 13885 13896 13897 +f 13885 13897 13884 +f 13884 13897 13883 +f 13884 13883 13923 +f 13923 13883 13882 +f 13923 13882 13927 +f 13927 13882 13881 +f 13927 13881 13878 +f 13878 13881 13880 +f 5845 5846 13896 +f 5809 13882 5846 +f 5846 13882 13883 +f 5846 13883 13897 +f 5721 13865 13864 +f 13864 13865 13867 +f 13864 13867 13889 +f 13889 13867 13869 +f 13889 13869 13890 +f 13890 13869 13871 +f 13890 13871 13891 +f 13891 13871 13873 +f 13891 13873 13892 +f 13892 13873 13875 +f 13892 13875 13893 +f 13893 13875 13877 +f 13893 13877 13894 +f 13894 13877 13879 +f 5809 13881 13882 +f 13887 13898 13886 +f 13886 13898 13885 +f 13886 13885 13922 +f 13922 13885 13884 +f 13922 13884 13924 +f 13924 13884 13923 +f 13924 13923 13925 +f 13925 13923 13927 +f 13925 13927 13876 +f 13876 13927 13878 +f 13888 13887 13918 +f 13918 13887 13886 +f 13918 13886 13919 +f 13919 13886 13922 +f 13919 13922 13920 +f 13920 13922 13924 +f 13920 13924 13921 +f 13921 13924 13925 +f 13921 13925 13874 +f 13874 13925 13876 +f 13899 13888 13915 +f 13915 13888 13918 +f 13915 13918 13916 +f 13916 13918 13919 +f 13916 13919 13917 +f 13917 13919 13920 +f 13917 13920 13909 +f 13909 13920 13921 +f 13909 13921 13872 +f 13872 13921 13874 +f 13868 13866 13926 +f 13926 13866 13911 +f 13926 13911 13906 +f 13906 13911 13910 +f 13906 13910 13905 +f 13909 13872 13870 +f 13870 13868 13908 +f 13908 13868 13926 +f 13908 13926 13907 +f 13907 13926 13906 +f 13907 13906 13914 +f 13914 13906 13905 +f 13914 13905 13913 +f 13917 13909 13908 +f 13908 13909 13870 +f 13917 13908 13907 +f 13916 13917 13907 +f 13916 13907 13914 +f 13915 13916 13914 +f 13915 13914 13913 +f 13899 13915 13913 +f 5878 27509 5880 +f 5880 27509 27510 +f 5880 27510 5881 +f 5881 27510 27511 +f 5881 27511 5882 +f 5882 27511 5886 +f 5886 27511 5888 +f 5888 27511 5890 +f 5890 27511 5891 +f 5891 27511 5892 +f 5892 27511 5893 +f 5893 27511 27512 +f 5893 27512 5894 +f 5894 27512 5895 +f 5895 27512 5900 +f 5900 27512 5901 +f 5901 27512 5902 +f 5902 27512 27513 +f 5902 27513 5903 +f 5903 27513 5904 +f 5904 27513 5799 +f 5799 27513 5797 +f 5797 27513 5795 +f 5795 27513 5796 +f 5796 27513 27514 +f 5796 27514 5791 +f 5791 27514 27515 +f 5791 27515 5789 +f 5789 27515 5787 +f 5787 27515 5785 +f 5785 27515 5783 +f 5783 27515 5781 +f 5781 27515 5777 +f 5777 27515 27516 +f 5777 27516 5778 +f 5778 27516 5779 +f 5779 27516 5780 +f 5780 27516 5864 +f 5864 27516 5865 +f 5865 27516 27509 +f 5865 27509 5866 +f 5866 27509 5867 +f 5867 27509 5872 +f 5872 27509 5874 +f 5874 27509 5876 +f 5876 27509 5878 +f 27512 27511 27510 +f 27510 27509 27517 +f 27517 27509 27516 +f 27517 27516 27514 +f 27514 27516 27515 +f 27513 27512 27517 +f 27517 27512 27510 +f 27513 27517 27514 +f 5834 5927 27518 +f 27518 5927 5926 +f 27518 5926 5925 +f 27518 5925 27519 +f 27519 5925 5921 +f 27519 5921 5919 +f 5919 5917 27519 +f 27519 5917 5915 +f 27519 5915 5913 +f 5913 5905 27519 +f 27519 5905 5907 +f 27519 5907 27520 +f 27520 5907 5909 +f 27520 5909 27521 +f 27521 5909 5946 +f 27521 5946 5943 +f 5943 5941 27521 +f 27521 5941 5936 +f 27521 5936 5935 +f 5935 5934 27521 +f 27521 5934 5932 +f 27521 5932 27522 +f 27522 5932 5931 +f 27522 5931 5930 +f 5930 5929 27522 +f 27522 5929 5857 +f 27522 5857 5856 +f 27522 5856 27523 +f 27523 5856 5855 +f 27523 5855 5854 +f 5854 5859 27523 +f 27523 5859 5861 +f 27523 5861 5820 +f 5820 5819 27523 +f 27523 5819 27524 +f 27523 27524 27522 +f 27522 27524 27525 +f 27522 27525 27521 +f 27521 27525 27520 +f 5819 5815 27524 +f 27524 5815 27526 +f 27524 27526 27525 +f 27525 27526 27518 +f 27525 27518 27520 +f 27520 27518 27519 +f 5815 5821 27526 +f 27526 5821 5823 +f 27526 5823 5825 +f 5825 5827 27526 +f 27526 5827 5829 +f 27526 5829 5831 +f 27526 5831 27518 +f 27518 5831 5833 +f 27518 5833 5834 +f 5895 5900 5930 +f 5930 5900 5929 +f 5882 13951 5881 +f 5881 13951 13943 +f 5881 13943 13944 +f 13944 13943 13941 +f 13944 13941 13942 +f 13942 13941 13939 +f 13942 13939 13940 +f 13940 13939 13937 +f 13940 13937 13938 +f 13938 13937 13935 +f 13938 13935 13936 +f 13936 13935 13933 +f 13936 13933 13934 +f 13934 13933 13931 +f 13934 13931 13932 +f 13932 13931 13929 +f 13932 13929 13930 +f 13951 13950 13943 +f 13943 13950 13941 +f 5886 5888 13950 +f 13950 13949 13941 +f 13941 13949 13939 +f 13949 13948 13939 +f 13939 13948 13937 +f 13948 5891 13947 +f 13948 13947 13937 +f 13937 13947 13935 +f 13947 5892 13946 +f 13947 13946 13935 +f 13935 13946 13933 +f 13946 13945 13933 +f 13933 13945 13931 +f 13945 13928 13931 +f 13931 13928 13929 +f 13928 5895 13929 +f 5931 13967 5930 +f 5930 13967 13960 +f 13930 13960 13959 +f 13930 13959 13932 +f 13932 13959 13958 +f 13932 13958 13934 +f 13934 13958 13957 +f 13934 13957 13936 +f 13936 13957 13956 +f 13936 13956 13938 +f 13938 13956 13955 +f 13938 13955 13940 +f 13940 13955 13954 +f 13940 13954 13942 +f 13942 13954 13953 +f 13942 13953 13944 +f 13944 13953 5909 +f 13965 5932 5934 +f 13965 5934 13964 +f 13964 5934 5935 +f 13964 5935 13963 +f 13963 5935 5936 +f 13963 5936 13962 +f 13962 5941 13961 +f 13961 5941 5943 +f 13961 5943 13952 +f 13952 5943 5946 +f 13952 5946 5909 +f 13952 5909 13953 +f 13953 13954 13952 +f 13952 13954 13961 +f 13954 13955 13961 +f 13961 13955 13962 +f 13955 13956 13962 +f 13962 13956 13963 +f 13956 13957 13963 +f 13963 13957 13964 +f 13957 13958 13964 +f 13964 13958 13965 +f 13960 13967 13966 +f 13958 13959 13965 +f 13965 13959 13966 +f 13959 13960 13966 +f 5780 13991 13983 +f 5780 13983 13984 +f 13984 13983 13981 +f 13984 13981 13982 +f 13982 13981 13979 +f 13982 13979 13980 +f 13980 13979 13977 +f 13980 13977 13978 +f 13978 13977 13975 +f 13978 13975 13976 +f 13976 13975 13973 +f 13976 13973 13974 +f 13974 13973 13971 +f 13974 13971 13972 +f 13972 13971 13969 +f 13972 13969 13970 +f 13970 5880 5907 +f 13991 5865 13990 +f 13991 13990 13983 +f 13983 13990 13981 +f 5865 5866 13990 +f 13990 5866 13989 +f 13990 13989 13981 +f 13981 13989 13979 +f 5866 5867 13989 +f 13989 13988 13979 +f 13979 13988 13977 +f 5867 5872 13988 +f 13988 5872 13987 +f 13988 13987 13977 +f 13977 13987 13975 +f 13987 13986 13975 +f 13975 13986 13973 +f 5874 5876 13986 +f 13986 5876 13985 +f 13986 13985 13973 +f 13973 13985 13971 +f 5876 5878 13985 +f 13985 13968 13971 +f 13971 13968 13969 +f 5878 5880 13968 +f 13968 5880 13969 +f 5907 14007 14008 +f 14008 14007 14005 +f 14008 14005 14006 +f 14006 14005 14003 +f 14006 14003 14004 +f 14004 14003 14001 +f 14004 14001 14002 +f 14002 14001 13999 +f 14002 13999 14000 +f 14000 13999 13997 +f 14000 13997 13998 +f 13998 13997 13995 +f 13998 13995 13996 +f 13996 13995 13993 +f 13996 13993 13994 +f 13994 13993 5927 +f 13994 5927 5780 +f 14011 5919 5921 +f 14011 5921 14010 +f 14010 5921 5925 +f 14010 5925 14009 +f 14009 5925 13992 +f 14009 13992 13995 +f 13995 13992 13993 +f 5925 5926 13992 +f 13992 5926 5927 +f 13992 5927 13993 +f 13994 5780 13984 +f 13995 13997 14009 +f 14009 13997 14010 +f 13997 13999 14010 +f 14010 13999 14011 +f 13999 14001 14011 +f 14011 14001 14012 +f 14001 14003 14012 +f 14012 14003 14013 +f 14007 14015 14014 +f 14003 14005 14013 +f 14013 14005 14014 +f 13970 5907 14008 +f 14005 14007 14014 +f 13984 13982 13994 +f 13994 13982 13996 +f 13982 13980 13996 +f 13996 13980 13998 +f 13980 13978 13998 +f 13998 13978 14000 +f 13978 13976 14000 +f 14000 13976 14002 +f 13976 13974 14002 +f 14002 13974 14004 +f 13970 14008 14006 +f 13974 13972 14004 +f 14004 13972 14006 +f 13972 13970 14006 +f 5779 5780 5834 +f 5791 14038 14029 +f 5791 14029 14030 +f 14030 14029 14027 +f 14030 14027 14028 +f 14028 14027 14025 +f 14028 14025 14026 +f 14026 14025 14023 +f 14026 14023 14024 +f 14024 14023 14021 +f 14024 14021 14022 +f 14022 14021 14019 +f 14022 14019 14020 +f 14020 14019 14017 +f 14020 14017 14018 +f 14018 14017 5834 +f 14018 5834 14043 +f 14043 5833 5831 +f 14038 5789 14037 +f 14036 5787 5785 +f 14016 5778 5834 +f 5834 5778 5779 +f 14043 5831 14042 +f 14042 5829 14041 +f 14041 5829 5827 +f 14041 5827 14040 +f 14040 5827 5825 +f 14040 5825 14039 +f 14039 5825 5823 +f 14039 5823 14032 +f 14031 5821 5815 +f 14031 5815 14030 +f 14030 5815 5791 +f 14017 14019 14016 +f 14016 14019 14033 +f 14019 14021 14033 +f 14033 14021 14034 +f 14021 14023 14034 +f 14034 14023 14035 +f 14023 14025 14035 +f 14035 14025 14036 +f 14029 14038 14037 +f 14025 14027 14036 +f 14036 14027 14037 +f 14027 14029 14037 +f 14017 14016 5834 +f 14030 14028 14031 +f 14031 14028 14032 +f 14028 14026 14032 +f 14032 14026 14039 +f 14026 14024 14039 +f 14039 14024 14040 +f 14024 14022 14040 +f 14040 14022 14041 +f 14018 14043 14042 +f 14022 14020 14041 +f 14041 14020 14042 +f 14020 14018 14042 +f 14060 14059 14057 +f 14060 14057 14058 +f 14058 14057 14055 +f 14058 14055 14056 +f 14056 14055 14053 +f 14056 14053 14054 +f 14054 14053 14051 +f 14054 14051 14052 +f 14052 14051 14049 +f 14052 14049 14050 +f 14050 14049 14047 +f 14050 14047 14048 +f 14048 14047 14045 +f 14048 14045 14046 +f 14046 5796 14091 +f 14091 5796 5819 +f 14091 5819 14090 +f 14090 5819 14084 +f 14090 14084 14085 +f 14085 14084 14092 +f 14085 14092 14093 +f 14093 14092 14080 +f 14093 14080 14079 +f 5902 14073 5901 +f 14075 14074 14059 +f 14072 5902 5903 +f 14071 5903 5904 +f 14044 5797 5795 +f 14044 5795 5796 +f 14084 14083 14092 +f 5820 5861 14082 +f 14082 5861 14081 +f 14082 14081 14083 +f 14083 14081 14092 +f 14081 14080 14092 +f 14079 5855 14068 +f 14068 5855 5856 +f 14067 5856 5857 +f 14078 5857 14076 +f 14078 14076 14065 +f 14065 14076 14077 +f 14065 14077 14064 +f 14064 14077 14063 +f 14064 14063 14103 +f 14103 14063 14062 +f 14103 14062 14107 +f 14107 14062 14061 +f 14107 14061 14058 +f 14058 14061 14060 +f 5900 14062 5929 +f 5929 14062 14063 +f 14044 14045 14047 +f 14044 14047 14069 +f 14069 14047 14049 +f 14069 14049 14070 +f 14070 14049 14051 +f 14070 14051 14071 +f 14071 14051 14053 +f 14071 14053 14072 +f 14072 14053 14055 +f 14072 14055 14073 +f 14073 14055 14057 +f 14073 14057 14074 +f 14074 14057 14059 +f 14060 14061 5900 +f 5900 14061 14062 +f 14067 14078 14066 +f 14066 14078 14065 +f 14066 14065 14102 +f 14102 14065 14064 +f 14102 14064 14104 +f 14104 14064 14103 +f 14104 14103 14105 +f 14105 14103 14107 +f 14105 14107 14056 +f 14056 14107 14058 +f 14068 14067 14098 +f 14098 14067 14066 +f 14098 14066 14099 +f 14099 14066 14102 +f 14099 14102 14100 +f 14100 14102 14104 +f 14100 14104 14101 +f 14101 14104 14105 +f 14101 14105 14054 +f 14054 14105 14056 +f 14079 14068 14095 +f 14095 14068 14098 +f 14095 14098 14096 +f 14096 14098 14099 +f 14096 14099 14097 +f 14097 14099 14100 +f 14097 14100 14089 +f 14089 14100 14101 +f 14089 14101 14052 +f 14052 14101 14054 +f 14048 14046 14106 +f 14106 14046 14091 +f 14106 14091 14086 +f 14086 14091 14090 +f 14086 14090 14085 +f 14089 14052 14050 +f 14050 14048 14088 +f 14088 14048 14106 +f 14088 14106 14087 +f 14087 14106 14086 +f 14087 14086 14094 +f 14094 14086 14085 +f 14094 14085 14093 +f 14097 14089 14088 +f 14088 14089 14050 +f 14097 14088 14087 +f 14096 14097 14087 +f 14096 14087 14094 +f 14095 14096 14094 +f 14095 14094 14093 +f 14079 14095 14093 +f 5962 27527 5964 +f 5964 27527 27528 +f 5964 27528 5965 +f 5965 27528 27529 +f 5965 27529 5966 +f 5966 27529 5970 +f 5970 27529 5972 +f 5972 27529 5974 +f 5974 27529 5975 +f 5975 27529 5976 +f 5976 27529 5977 +f 5977 27529 27530 +f 5977 27530 5978 +f 5978 27530 5980 +f 5980 27530 5981 +f 5981 27530 5898 +f 5898 27530 5899 +f 5899 27530 27531 +f 5899 27531 5982 +f 5982 27531 5983 +f 5983 27531 5887 +f 5887 27531 5885 +f 5885 27531 5883 +f 5883 27531 5884 +f 5884 27531 27532 +f 5884 27532 5879 +f 5879 27532 27533 +f 5879 27533 5877 +f 5877 27533 5875 +f 5875 27533 5873 +f 5873 27533 5871 +f 5871 27533 5868 +f 5868 27533 5869 +f 5869 27533 27534 +f 5869 27534 5870 +f 5870 27534 5344 +f 5344 27534 5345 +f 5345 27534 5948 +f 5948 27534 5949 +f 5949 27534 27527 +f 5949 27527 5950 +f 5950 27527 5954 +f 5954 27527 5956 +f 5956 27527 5958 +f 5958 27527 5960 +f 5960 27527 5962 +f 27530 27529 27528 +f 27528 27527 27535 +f 27535 27527 27534 +f 27535 27534 27532 +f 27532 27534 27533 +f 27531 27530 27535 +f 27535 27530 27528 +f 27531 27535 27532 +f 5924 5839 27536 +f 27536 5839 5841 +f 27536 5841 5842 +f 27536 5842 27537 +f 27537 5842 6000 +f 27537 6000 5998 +f 5998 5996 27537 +f 27537 5996 5994 +f 27537 5994 5992 +f 5992 5984 27537 +f 27537 5984 5986 +f 27537 5986 27538 +f 27538 5986 5988 +f 27538 5988 27539 +f 27539 5988 6057 +f 27539 6057 6054 +f 6054 6052 27539 +f 27539 6052 6051 +f 27539 6051 6048 +f 6048 6047 27539 +f 27539 6047 6046 +f 27539 6046 27540 +f 27540 6046 6045 +f 27540 6045 6044 +f 6044 6001 27540 +f 27540 6001 5940 +f 27540 5940 5939 +f 27540 5939 27541 +f 27541 5939 5938 +f 27541 5938 5937 +f 5937 5942 27541 +f 27541 5942 5944 +f 27541 5944 5911 +f 5911 5910 27541 +f 27541 5910 27542 +f 27541 27542 27540 +f 27540 27542 27543 +f 27540 27543 27539 +f 27539 27543 27538 +f 5910 5906 27542 +f 27542 5906 27544 +f 27542 27544 27543 +f 27543 27544 27536 +f 27543 27536 27538 +f 27538 27536 27537 +f 5906 5912 27544 +f 27544 5912 5914 +f 27544 5914 5916 +f 5916 5918 27544 +f 27544 5918 5920 +f 27544 5920 5922 +f 27544 5922 27536 +f 27536 5922 5923 +f 27536 5923 5924 +f 5980 5981 6044 +f 6044 5981 6001 +f 14124 14123 14121 +f 14124 14121 14122 +f 14122 14121 14119 +f 14122 14119 14120 +f 14120 14119 14117 +f 14120 14117 14118 +f 14118 14117 14115 +f 14118 14115 14116 +f 14116 14115 14113 +f 14116 14113 14114 +f 14114 14113 14111 +f 14114 14111 14112 +f 14112 14111 14109 +f 14112 14109 14110 +f 14131 5970 14130 +f 14131 14130 14123 +f 14123 14130 14121 +f 5970 5972 14130 +f 14130 5972 14129 +f 14130 14129 14121 +f 14121 14129 14119 +f 14129 14128 14119 +f 14119 14128 14117 +f 14128 14127 14117 +f 14117 14127 14115 +f 5975 5976 14127 +f 14127 5976 14126 +f 14127 14126 14115 +f 14115 14126 14113 +f 5976 5977 14126 +f 14126 5977 14125 +f 14126 14125 14113 +f 14113 14125 14111 +f 5977 5978 14125 +f 14125 5978 14108 +f 14125 14108 14111 +f 14111 14108 14109 +f 5978 5980 14108 +f 14108 5980 14109 +f 14110 14140 14139 +f 14110 14139 14112 +f 14112 14139 14138 +f 14112 14138 14114 +f 14114 14138 14137 +f 14114 14137 14116 +f 14116 14137 14136 +f 14116 14136 14118 +f 14118 14136 14135 +f 14118 14135 14120 +f 14120 14135 14134 +f 14120 14134 14122 +f 14122 14134 14133 +f 14122 14133 14124 +f 14124 14133 5988 +f 14124 5988 5965 +f 14147 6045 14146 +f 14144 6047 6048 +f 14144 6048 14143 +f 14143 6048 6051 +f 14143 6051 14142 +f 14142 6051 6052 +f 14142 6052 14141 +f 14141 6052 6054 +f 14132 6054 6057 +f 14133 14134 14132 +f 14132 14134 14141 +f 14134 14135 14141 +f 14141 14135 14142 +f 14135 14136 14142 +f 14142 14136 14143 +f 14136 14137 14143 +f 14143 14137 14144 +f 14137 14138 14144 +f 14144 14138 14145 +f 14140 14147 14146 +f 14138 14139 14145 +f 14145 14139 14146 +f 14139 14140 14146 +f 5964 5965 5986 +f 5986 5965 5988 +f 5345 14163 14164 +f 14164 14163 14161 +f 14164 14161 14162 +f 14162 14161 14159 +f 14162 14159 14160 +f 14160 14159 14157 +f 14160 14157 14158 +f 14158 14157 14155 +f 14158 14155 14156 +f 14156 14155 14153 +f 14156 14153 14154 +f 14154 14153 14151 +f 14154 14151 14152 +f 14152 14151 14149 +f 14152 14149 14150 +f 14150 14149 5964 +f 14150 5964 5986 +f 5948 5949 14171 +f 14171 14170 14163 +f 14163 14170 14161 +f 14170 14169 14161 +f 14161 14169 14159 +f 5950 5954 14169 +f 14169 14168 14159 +f 14159 14168 14157 +f 14168 5956 14167 +f 14168 14167 14157 +f 14157 14167 14155 +f 5956 5958 14167 +f 14167 5958 14166 +f 14167 14166 14155 +f 14155 14166 14153 +f 5958 5960 14166 +f 14166 14165 14153 +f 14153 14165 14151 +f 14165 14148 14151 +f 14151 14148 14149 +f 14188 14187 14185 +f 14188 14185 14186 +f 14186 14185 14183 +f 14186 14183 14184 +f 14184 14183 14181 +f 14184 14181 14182 +f 14182 14181 14179 +f 14182 14179 14180 +f 14180 14179 14177 +f 14180 14177 14178 +f 14178 14177 14175 +f 14178 14175 14176 +f 14176 14175 14173 +f 14176 14173 14174 +f 14174 5839 5345 +f 14195 5984 14194 +f 14194 5984 5992 +f 14194 5992 14193 +f 14193 5992 5994 +f 14191 5998 6000 +f 14191 6000 14190 +f 14190 6000 5842 +f 14190 5842 14189 +f 14189 14172 14175 +f 14175 14172 14173 +f 5842 5841 14172 +f 14172 5841 5839 +f 14172 5839 14173 +f 14174 5345 14164 +f 14175 14177 14189 +f 14189 14177 14190 +f 14177 14179 14190 +f 14190 14179 14191 +f 14179 14181 14191 +f 14191 14181 14192 +f 14181 14183 14192 +f 14192 14183 14193 +f 14187 14195 14194 +f 14183 14185 14193 +f 14193 14185 14194 +f 14150 5986 14188 +f 14185 14187 14194 +f 14164 14162 14174 +f 14174 14162 14176 +f 14162 14160 14176 +f 14176 14160 14178 +f 14160 14158 14178 +f 14178 14158 14180 +f 14158 14156 14180 +f 14180 14156 14182 +f 14156 14154 14182 +f 14182 14154 14184 +f 14150 14188 14186 +f 14154 14152 14184 +f 14184 14152 14186 +f 14152 14150 14186 +f 5924 5345 5839 +f 5877 14218 5879 +f 5879 14209 14210 +f 14210 14209 14207 +f 14210 14207 14208 +f 14208 14207 14205 +f 14208 14205 14206 +f 14206 14205 14203 +f 14206 14203 14204 +f 14204 14203 14201 +f 14204 14201 14202 +f 14202 14201 14199 +f 14202 14199 14200 +f 14200 14199 14197 +f 14200 14197 14198 +f 14198 14197 5924 +f 14217 5875 14216 +f 14216 5873 14215 +f 14215 5873 5871 +f 14214 5871 5868 +f 14214 5868 14213 +f 14196 5870 5924 +f 5924 5870 5344 +f 14223 5922 14222 +f 14222 5922 5920 +f 14222 5920 14221 +f 14221 5920 5918 +f 14221 5918 14220 +f 14220 5918 5916 +f 14220 5916 14219 +f 14219 5916 5914 +f 14219 5914 14212 +f 14212 5914 5912 +f 14212 5912 14211 +f 14211 5912 5906 +f 14211 5906 14210 +f 14210 5906 5879 +f 14197 14199 14196 +f 14196 14199 14213 +f 14199 14201 14213 +f 14213 14201 14214 +f 14201 14203 14214 +f 14214 14203 14215 +f 14203 14205 14215 +f 14215 14205 14216 +f 14209 14218 14217 +f 14205 14207 14216 +f 14216 14207 14217 +f 14207 14209 14217 +f 14197 14196 5924 +f 14210 14208 14211 +f 14211 14208 14212 +f 14208 14206 14212 +f 14212 14206 14219 +f 14206 14204 14219 +f 14219 14204 14220 +f 14204 14202 14220 +f 14220 14202 14221 +f 14198 14223 14222 +f 14202 14200 14221 +f 14221 14200 14222 +f 14200 14198 14222 +f 5879 5906 5884 +f 14240 14239 14237 +f 14240 14237 14238 +f 14238 14237 14235 +f 14238 14235 14236 +f 14236 14235 14233 +f 14236 14233 14234 +f 14234 14233 14231 +f 14234 14231 14232 +f 14232 14231 14229 +f 14232 14229 14230 +f 14230 14229 14227 +f 14230 14227 14228 +f 14228 14227 14225 +f 14228 14225 14226 +f 14226 14225 5884 +f 14271 5884 5910 +f 14271 5910 14270 +f 14270 14264 14265 +f 14265 14264 14272 +f 14265 14272 14273 +f 14273 14272 14260 +f 14273 14260 14259 +f 5898 14253 14254 +f 14255 14254 14239 +f 14251 5982 5983 +f 14251 5983 14250 +f 14250 5983 5887 +f 14250 5887 14249 +f 14249 5887 5885 +f 14224 5883 5884 +f 5911 14262 5910 +f 5910 14262 14263 +f 5910 14263 14264 +f 14264 14263 14272 +f 5911 5944 14262 +f 14262 5944 14261 +f 14262 14261 14263 +f 14263 14261 14272 +f 14261 14260 14272 +f 14248 5938 5939 +f 14258 14256 14245 +f 14245 14256 14257 +f 14245 14257 14244 +f 14244 14257 14243 +f 14244 14243 14283 +f 14283 14243 14242 +f 14283 14242 14287 +f 14287 14242 14241 +f 14287 14241 14238 +f 14238 14241 14240 +f 5940 6001 14256 +f 5981 14242 6001 +f 6001 14243 14257 +f 5884 14225 14224 +f 14224 14225 14227 +f 14224 14227 14249 +f 14249 14227 14229 +f 14249 14229 14250 +f 14250 14229 14231 +f 14250 14231 14251 +f 14251 14231 14233 +f 14251 14233 14252 +f 14252 14233 14235 +f 14252 14235 14253 +f 14253 14235 14237 +f 14253 14237 14254 +f 14254 14237 14239 +f 14240 14241 5981 +f 5981 14241 14242 +f 14247 14258 14246 +f 14246 14258 14245 +f 14246 14245 14282 +f 14282 14245 14244 +f 14282 14244 14284 +f 14284 14244 14283 +f 14284 14283 14285 +f 14285 14283 14287 +f 14285 14287 14236 +f 14236 14287 14238 +f 14248 14247 14278 +f 14278 14247 14246 +f 14278 14246 14279 +f 14279 14246 14282 +f 14279 14282 14280 +f 14280 14282 14284 +f 14280 14284 14281 +f 14281 14284 14285 +f 14281 14285 14234 +f 14234 14285 14236 +f 14259 14248 14275 +f 14275 14248 14278 +f 14275 14278 14276 +f 14276 14278 14279 +f 14276 14279 14277 +f 14277 14279 14280 +f 14277 14280 14269 +f 14269 14280 14281 +f 14269 14281 14232 +f 14232 14281 14234 +f 14228 14226 14286 +f 14286 14226 14271 +f 14286 14271 14266 +f 14266 14271 14270 +f 14266 14270 14265 +f 14269 14232 14230 +f 14230 14228 14268 +f 14268 14228 14286 +f 14268 14286 14267 +f 14267 14286 14266 +f 14267 14266 14274 +f 14274 14266 14265 +f 14274 14265 14273 +f 14277 14269 14268 +f 14268 14269 14230 +f 14277 14268 14267 +f 14276 14277 14267 +f 14276 14267 14274 +f 14275 14276 14274 +f 14275 14274 14273 +f 14259 14275 14273 +f 6072 27545 6074 +f 6074 27545 27546 +f 6074 27546 6075 +f 6075 27546 27547 +f 6075 27547 6076 +f 6076 27547 6080 +f 6080 27547 6082 +f 6082 27547 6084 +f 6084 27547 6085 +f 6085 27547 6086 +f 6086 27547 6087 +f 6087 27547 27548 +f 6087 27548 6088 +f 6088 27548 6090 +f 6090 27548 6091 +f 6091 27548 6092 +f 6092 27548 6093 +f 6093 27548 27549 +f 6093 27549 6094 +f 6094 27549 6095 +f 6095 27549 5971 +f 5971 27549 5969 +f 5969 27549 5967 +f 5967 27549 5968 +f 5968 27549 27550 +f 5968 27550 5963 +f 5963 27550 27551 +f 5963 27551 5961 +f 5961 27551 5959 +f 5959 27551 5957 +f 5957 27551 5955 +f 5955 27551 5953 +f 5953 27551 5951 +f 5951 27551 27552 +f 5951 27552 5952 +f 5952 27552 5947 +f 5947 27552 6058 +f 6058 27552 6059 +f 6059 27552 6060 +f 6060 27552 27545 +f 6060 27545 6062 +f 6062 27545 6064 +f 6064 27545 6066 +f 6066 27545 6068 +f 6068 27545 6070 +f 6070 27545 6072 +f 27548 27547 27546 +f 27546 27545 27553 +f 27553 27545 27552 +f 27553 27552 27550 +f 27550 27552 27551 +f 27549 27548 27553 +f 27553 27548 27546 +f 27549 27553 27550 +f 5840 6118 27554 +f 27554 6118 6117 +f 27554 6117 6114 +f 27554 6114 27555 +f 27555 6114 6112 +f 27555 6112 6110 +f 6110 6108 27555 +f 27555 6108 6106 +f 27555 6106 6104 +f 6104 6096 27555 +f 27555 6096 6098 +f 27555 6098 27556 +f 27556 6098 6100 +f 27556 6100 27557 +f 27557 6100 6138 +f 27557 6138 6135 +f 6135 6133 27557 +f 27557 6133 6128 +f 27557 6128 6127 +f 6127 6126 27557 +f 27557 6126 6125 +f 27557 6125 27558 +f 27558 6125 6124 +f 27558 6124 6123 +f 6123 6121 27558 +f 27558 6121 6120 +f 27558 6120 6119 +f 27558 6119 27559 +f 27559 6119 6049 +f 27559 6049 6050 +f 6050 6053 27559 +f 27559 6053 6055 +f 27559 6055 5990 +f 5990 5989 27559 +f 27559 5989 27560 +f 27559 27560 27558 +f 27558 27560 27561 +f 27558 27561 27557 +f 27557 27561 27556 +f 5989 5985 27560 +f 27560 5985 27562 +f 27560 27562 27561 +f 27561 27562 27554 +f 27561 27554 27556 +f 27556 27554 27555 +f 5985 5991 27562 +f 27562 5991 5993 +f 27562 5993 5995 +f 5995 5997 27562 +f 27562 5997 5999 +f 27562 5999 5844 +f 27562 5844 27554 +f 27554 5844 5843 +f 27554 5843 5840 +f 6090 6091 6123 +f 6123 6091 6121 +f 14304 14303 14301 +f 14304 14301 14302 +f 14302 14301 14299 +f 14302 14299 14300 +f 14300 14299 14297 +f 14300 14297 14298 +f 14298 14297 14295 +f 14298 14295 14296 +f 14296 14295 14293 +f 14296 14293 14294 +f 14294 14293 14291 +f 14294 14291 14292 +f 14292 14291 14289 +f 14292 14289 14290 +f 14290 14289 6090 +f 14290 6090 6123 +f 6076 6080 14311 +f 14311 6080 14310 +f 14311 14310 14303 +f 14303 14310 14301 +f 6080 6082 14310 +f 14310 14309 14301 +f 14301 14309 14299 +f 14309 6084 14308 +f 14309 14308 14299 +f 14299 14308 14297 +f 6084 6085 14308 +f 14308 14307 14297 +f 14297 14307 14295 +f 6085 6086 14307 +f 14307 14306 14295 +f 14295 14306 14293 +f 14306 14305 14293 +f 14293 14305 14291 +f 14305 14288 14291 +f 14291 14288 14289 +f 6088 6090 14288 +f 14288 6090 14289 +f 6123 14320 14290 +f 14290 14320 14319 +f 14290 14319 14292 +f 14292 14319 14318 +f 14292 14318 14294 +f 14294 14318 14317 +f 14294 14317 14296 +f 14296 14317 14316 +f 14296 14316 14298 +f 14298 14316 14315 +f 14298 14315 14300 +f 14300 14315 14314 +f 14300 14314 14302 +f 14302 14314 14313 +f 14302 14313 14304 +f 14304 6100 6075 +f 14324 6126 6127 +f 14324 6127 14323 +f 14323 6128 14322 +f 14322 6133 14321 +f 14321 6133 6135 +f 14321 6135 14312 +f 14313 14314 14312 +f 14312 14314 14321 +f 14314 14315 14321 +f 14321 14315 14322 +f 14315 14316 14322 +f 14322 14316 14323 +f 14316 14317 14323 +f 14323 14317 14324 +f 14317 14318 14324 +f 14324 14318 14325 +f 14320 14327 14326 +f 14318 14319 14325 +f 14325 14319 14326 +f 14319 14320 14326 +f 6074 6075 6098 +f 6059 14351 6058 +f 14344 14343 14341 +f 14344 14341 14342 +f 14342 14341 14339 +f 14342 14339 14340 +f 14340 14339 14337 +f 14340 14337 14338 +f 14338 14337 14335 +f 14338 14335 14336 +f 14336 14335 14333 +f 14336 14333 14334 +f 14334 14333 14331 +f 14334 14331 14332 +f 14332 14331 14329 +f 14332 14329 14330 +f 14330 6074 6098 +f 6059 6060 14351 +f 14351 14350 14343 +f 14343 14350 14341 +f 14350 14349 14341 +f 14341 14349 14339 +f 14349 14348 14339 +f 14339 14348 14337 +f 14348 6066 14347 +f 14348 14347 14337 +f 14337 14347 14335 +f 14347 6068 14346 +f 14347 14346 14335 +f 14335 14346 14333 +f 6068 6070 14346 +f 14346 14345 14333 +f 14333 14345 14331 +f 6070 6072 14345 +f 14345 14328 14331 +f 14331 14328 14329 +f 14328 6074 14329 +f 6096 14375 6098 +f 6098 14375 14367 +f 6098 14367 14368 +f 14368 14367 14365 +f 14368 14365 14366 +f 14366 14365 14363 +f 14366 14363 14364 +f 14364 14363 14361 +f 14364 14361 14362 +f 14362 14361 14359 +f 14362 14359 14360 +f 14360 14359 14357 +f 14360 14357 14358 +f 14358 14357 14355 +f 14358 14355 14356 +f 14356 14355 14353 +f 14356 14353 14354 +f 14354 14353 6118 +f 14354 6118 6058 +f 14373 6106 14372 +f 14372 6106 6108 +f 14372 6108 14371 +f 14371 6108 6110 +f 14371 6110 6112 +f 14371 6112 14370 +f 14370 6112 6114 +f 14370 6114 14369 +f 14369 6114 14352 +f 14369 14352 14355 +f 14355 14352 14353 +f 14352 6117 6118 +f 14354 6058 14344 +f 14355 14357 14369 +f 14369 14357 14370 +f 14357 14359 14370 +f 14370 14359 14371 +f 14359 14361 14371 +f 14371 14361 14372 +f 14361 14363 14372 +f 14372 14363 14373 +f 14367 14375 14374 +f 14363 14365 14373 +f 14373 14365 14374 +f 14330 6098 14368 +f 14365 14367 14374 +f 14344 14342 14354 +f 14354 14342 14356 +f 14342 14340 14356 +f 14356 14340 14358 +f 14340 14338 14358 +f 14358 14338 14360 +f 14338 14336 14360 +f 14360 14336 14362 +f 14336 14334 14362 +f 14362 14334 14364 +f 14330 14368 14366 +f 14334 14332 14364 +f 14364 14332 14366 +f 14332 14330 14366 +f 5947 6058 5840 +f 5840 6058 6118 +f 5961 14398 5963 +f 5963 14398 14389 +f 5963 14389 14390 +f 14390 14389 14387 +f 14390 14387 14388 +f 14388 14387 14385 +f 14388 14385 14386 +f 14386 14385 14383 +f 14386 14383 14384 +f 14384 14383 14381 +f 14384 14381 14382 +f 14382 14381 14379 +f 14382 14379 14380 +f 14380 14379 14377 +f 14380 14377 14378 +f 14378 14377 5840 +f 14398 5961 14397 +f 14397 5961 5959 +f 14396 5959 5957 +f 14394 5955 5953 +f 14393 5953 5951 +f 14393 5951 14376 +f 14376 5952 5947 +f 14377 5947 5840 +f 14403 5844 14402 +f 14402 5844 5999 +f 14402 5999 14401 +f 14401 5999 5997 +f 14401 5997 14400 +f 14400 5997 5995 +f 14400 5995 14399 +f 14399 5995 5993 +f 14399 5993 14392 +f 14392 5991 14391 +f 14390 5985 5963 +f 14377 14379 14376 +f 14376 14379 14393 +f 14379 14381 14393 +f 14393 14381 14394 +f 14381 14383 14394 +f 14394 14383 14395 +f 14383 14385 14395 +f 14395 14385 14396 +f 14389 14398 14397 +f 14385 14387 14396 +f 14396 14387 14397 +f 14387 14389 14397 +f 14390 14388 14391 +f 14391 14388 14392 +f 14388 14386 14392 +f 14392 14386 14399 +f 14386 14384 14399 +f 14399 14384 14400 +f 14384 14382 14400 +f 14400 14382 14401 +f 14378 14403 14402 +f 14382 14380 14401 +f 14401 14380 14402 +f 14380 14378 14402 +f 5963 5985 5968 +f 6091 14435 14419 +f 14420 14419 14417 +f 14420 14417 14418 +f 14418 14417 14415 +f 14418 14415 14416 +f 14416 14415 14413 +f 14416 14413 14414 +f 14414 14413 14411 +f 14414 14411 14412 +f 14412 14411 14409 +f 14412 14409 14410 +f 14410 14409 14407 +f 14410 14407 14408 +f 14408 14407 14405 +f 14408 14405 14406 +f 14406 5968 14451 +f 14451 5968 5989 +f 14451 5989 14450 +f 14450 14444 14445 +f 14445 14444 14452 +f 14445 14452 14453 +f 14453 14452 14440 +f 14453 14440 14439 +f 14439 6050 6049 +f 14435 14434 14419 +f 14433 6093 14432 +f 14432 6094 14431 +f 14431 6094 6095 +f 14431 6095 14430 +f 14430 6095 5971 +f 14429 5971 5969 +f 14429 5969 14404 +f 14404 5969 5967 +f 14404 5967 5968 +f 5990 14442 5989 +f 5989 14442 14443 +f 5989 14443 14444 +f 14444 14443 14452 +f 5990 6055 14442 +f 14442 6055 14441 +f 14442 14441 14443 +f 14443 14441 14452 +f 14441 6053 14440 +f 14441 14440 14452 +f 14428 6049 6119 +f 14428 6119 14427 +f 14427 6119 6120 +f 14438 6120 14436 +f 14438 14436 14425 +f 14425 14436 14437 +f 14425 14437 14424 +f 14424 14437 14423 +f 14424 14423 14463 +f 14463 14423 14422 +f 14463 14422 14467 +f 14467 14422 14421 +f 14467 14421 14418 +f 14418 14421 14420 +f 6120 6121 14436 +f 6091 14422 6121 +f 6121 14422 14423 +f 6121 14423 14437 +f 5968 14405 14404 +f 14404 14405 14407 +f 14404 14407 14429 +f 14429 14407 14409 +f 14429 14409 14430 +f 14430 14409 14411 +f 14430 14411 14431 +f 14431 14411 14413 +f 14431 14413 14432 +f 14432 14413 14415 +f 14432 14415 14433 +f 14433 14415 14417 +f 14433 14417 14434 +f 14434 14417 14419 +f 6091 14421 14422 +f 14427 14438 14426 +f 14426 14438 14425 +f 14426 14425 14462 +f 14462 14425 14424 +f 14462 14424 14464 +f 14464 14424 14463 +f 14464 14463 14465 +f 14465 14463 14467 +f 14465 14467 14416 +f 14416 14467 14418 +f 14428 14427 14458 +f 14458 14427 14426 +f 14458 14426 14459 +f 14459 14426 14462 +f 14459 14462 14460 +f 14460 14462 14464 +f 14460 14464 14461 +f 14461 14464 14465 +f 14461 14465 14414 +f 14414 14465 14416 +f 14439 14428 14455 +f 14455 14428 14458 +f 14455 14458 14456 +f 14456 14458 14459 +f 14456 14459 14457 +f 14457 14459 14460 +f 14457 14460 14449 +f 14449 14460 14461 +f 14449 14461 14412 +f 14412 14461 14414 +f 14408 14406 14466 +f 14466 14406 14451 +f 14466 14451 14446 +f 14446 14451 14450 +f 14446 14450 14445 +f 14449 14412 14410 +f 14410 14408 14448 +f 14448 14408 14466 +f 14448 14466 14447 +f 14447 14466 14446 +f 14447 14446 14454 +f 14454 14446 14445 +f 14454 14445 14453 +f 14457 14449 14448 +f 14448 14449 14410 +f 14457 14448 14447 +f 14456 14457 14447 +f 14456 14447 14454 +f 14455 14456 14454 +f 14455 14454 14453 +f 14439 14455 14453 +f 6156 27563 6158 +f 6158 27563 27564 +f 6158 27564 6159 +f 6159 27564 27565 +f 6159 27565 6160 +f 6160 27565 6164 +f 6164 27565 6166 +f 6166 27565 6168 +f 6168 27565 6169 +f 6169 27565 6170 +f 6170 27565 6171 +f 6171 27565 27566 +f 6171 27566 6172 +f 6172 27566 6173 +f 6173 27566 6178 +f 6178 27566 6179 +f 6179 27566 6180 +f 6180 27566 27567 +f 6180 27567 6181 +f 6181 27567 6182 +f 6182 27567 6081 +f 6081 27567 6079 +f 6079 27567 6077 +f 6077 27567 6078 +f 6078 27567 27568 +f 6078 27568 6073 +f 6073 27568 27569 +f 6073 27569 6071 +f 6071 27569 6069 +f 6069 27569 6067 +f 6067 27569 6065 +f 6065 27569 6063 +f 6063 27569 6061 +f 6061 27569 27570 +f 6061 27570 6183 +f 6183 27570 6139 +f 6139 27570 6140 +f 6140 27570 6141 +f 6141 27570 6142 +f 6142 27570 27563 +f 6142 27563 6143 +f 6143 27563 6148 +f 6148 27563 6150 +f 6150 27563 6152 +f 6152 27563 6154 +f 6154 27563 6156 +f 27566 27565 27564 +f 27564 27563 27571 +f 27571 27563 27570 +f 27571 27570 27568 +f 27568 27570 27569 +f 27567 27566 27571 +f 27571 27566 27564 +f 27567 27571 27568 +f 6116 6232 27572 +f 27572 6232 6231 +f 27572 6231 6202 +f 27572 6202 27573 +f 27573 6202 6200 +f 27573 6200 6198 +f 6198 6196 27573 +f 27573 6196 6194 +f 27573 6194 6192 +f 6192 6184 27573 +f 27573 6184 6186 +f 27573 6186 27574 +f 27574 6186 6188 +f 27574 6188 27575 +f 27575 6188 6251 +f 27575 6251 6248 +f 6248 6246 27575 +f 27575 6246 6241 +f 27575 6241 6240 +f 6240 6239 27575 +f 27575 6239 6237 +f 27575 6237 27576 +f 27576 6237 6236 +f 27576 6236 6235 +f 6235 6234 27576 +f 27576 6234 6132 +f 27576 6132 6131 +f 27576 6131 27577 +f 27577 6131 6130 +f 27577 6130 6129 +f 6129 6134 27577 +f 27577 6134 6136 +f 27577 6136 6102 +f 6102 6101 27577 +f 27577 6101 27578 +f 27577 27578 27576 +f 27576 27578 27579 +f 27576 27579 27575 +f 27575 27579 27574 +f 6101 6097 27578 +f 27578 6097 27580 +f 27578 27580 27579 +f 27579 27580 27572 +f 27579 27572 27574 +f 27574 27572 27573 +f 6097 6103 27580 +f 27580 6103 6105 +f 27580 6105 6107 +f 6107 6109 27580 +f 27580 6109 6111 +f 27580 6111 6113 +f 27580 6113 27572 +f 27572 6113 6115 +f 27572 6115 6116 +f 6173 6178 6235 +f 6235 6178 6234 +f 6160 14491 6159 +f 14484 14483 14481 +f 14484 14481 14482 +f 14482 14481 14479 +f 14482 14479 14480 +f 14480 14479 14477 +f 14480 14477 14478 +f 14478 14477 14475 +f 14478 14475 14476 +f 14476 14475 14473 +f 14476 14473 14474 +f 14474 14473 14471 +f 14474 14471 14472 +f 14472 14471 14469 +f 14472 14469 14470 +f 14470 6173 6235 +f 6160 6164 14491 +f 14491 6164 14490 +f 14491 14490 14483 +f 14483 14490 14481 +f 14490 14489 14481 +f 14481 14489 14479 +f 14489 14488 14479 +f 14479 14488 14477 +f 6168 6169 14488 +f 14488 6169 14487 +f 14488 14487 14477 +f 14477 14487 14475 +f 6169 6170 14487 +f 14487 6170 14486 +f 14487 14486 14475 +f 14475 14486 14473 +f 6170 6171 14486 +f 14486 6171 14485 +f 14486 14485 14473 +f 14473 14485 14471 +f 14485 6172 14468 +f 14485 14468 14471 +f 14471 14468 14469 +f 6235 14507 14500 +f 6235 14500 14470 +f 14470 14500 14499 +f 14470 14499 14472 +f 14472 14499 14498 +f 14472 14498 14474 +f 14474 14498 14497 +f 14474 14497 14476 +f 14476 14497 14496 +f 14476 14496 14478 +f 14478 14496 14495 +f 14478 14495 14480 +f 14480 14495 14494 +f 14480 14494 14482 +f 14482 14494 14493 +f 14482 14493 14484 +f 14484 6188 6159 +f 14507 6236 14506 +f 14492 6251 6188 +f 14492 6188 14493 +f 14493 14494 14492 +f 14492 14494 14501 +f 14494 14495 14501 +f 14501 14495 14502 +f 14495 14496 14502 +f 14502 14496 14503 +f 14496 14497 14503 +f 14503 14497 14504 +f 14497 14498 14504 +f 14504 14498 14505 +f 14500 14507 14506 +f 14498 14499 14505 +f 14505 14499 14506 +f 14499 14500 14506 +f 6141 14531 6140 +f 6140 14531 14523 +f 6140 14523 14524 +f 14524 14523 14521 +f 14524 14521 14522 +f 14522 14521 14519 +f 14522 14519 14520 +f 14520 14519 14517 +f 14520 14517 14518 +f 14518 14517 14515 +f 14518 14515 14516 +f 14516 14515 14513 +f 14516 14513 14514 +f 14514 14513 14511 +f 14514 14511 14512 +f 14512 14511 14509 +f 14512 14509 14510 +f 14510 14509 6158 +f 14510 6158 6186 +f 6141 6142 14531 +f 14531 6142 14530 +f 14531 14530 14523 +f 14523 14530 14521 +f 6142 6143 14530 +f 14530 14529 14521 +f 14521 14529 14519 +f 14529 14528 14519 +f 14519 14528 14517 +f 14528 6150 14527 +f 14528 14527 14517 +f 14517 14527 14515 +f 14527 14526 14515 +f 14515 14526 14513 +f 14526 6154 14525 +f 14526 14525 14513 +f 14513 14525 14511 +f 14525 14508 14511 +f 14511 14508 14509 +f 6186 14555 14547 +f 6186 14547 14548 +f 14548 14547 14545 +f 14548 14545 14546 +f 14546 14545 14543 +f 14546 14543 14544 +f 14544 14543 14541 +f 14544 14541 14542 +f 14542 14541 14539 +f 14542 14539 14540 +f 14540 14539 14537 +f 14540 14537 14538 +f 14538 14537 14535 +f 14538 14535 14536 +f 14536 14535 14533 +f 14536 14533 14534 +f 14534 14533 6232 +f 14534 6232 6140 +f 14555 6184 14554 +f 14554 6184 6192 +f 14554 6192 14553 +f 14553 6192 6194 +f 14552 6194 6196 +f 14551 6198 6200 +f 14551 6200 14550 +f 14550 6200 6202 +f 14550 6202 14549 +f 14549 14532 14535 +f 14535 14532 14533 +f 6202 6231 14532 +f 14532 6231 6232 +f 14532 6232 14533 +f 14534 6140 14524 +f 14535 14537 14549 +f 14549 14537 14550 +f 14537 14539 14550 +f 14550 14539 14551 +f 14539 14541 14551 +f 14551 14541 14552 +f 14541 14543 14552 +f 14552 14543 14553 +f 14547 14555 14554 +f 14543 14545 14553 +f 14553 14545 14554 +f 14510 6186 14548 +f 14545 14547 14554 +f 14524 14522 14534 +f 14534 14522 14536 +f 14522 14520 14536 +f 14536 14520 14538 +f 14520 14518 14538 +f 14538 14518 14540 +f 14518 14516 14540 +f 14540 14516 14542 +f 14516 14514 14542 +f 14542 14514 14544 +f 14510 14548 14546 +f 14514 14512 14544 +f 14544 14512 14546 +f 14512 14510 14546 +f 6116 6140 6232 +f 6073 14578 14569 +f 6073 14569 14570 +f 14570 14569 14567 +f 14570 14567 14568 +f 14568 14567 14565 +f 14568 14565 14566 +f 14566 14565 14563 +f 14566 14563 14564 +f 14564 14563 14561 +f 14564 14561 14562 +f 14562 14561 14559 +f 14562 14559 14560 +f 14560 14559 14557 +f 14560 14557 14558 +f 14558 14557 6116 +f 14558 6116 14583 +f 14583 6116 6115 +f 14578 6071 14577 +f 14576 6067 14575 +f 14574 6065 6063 +f 14573 6063 6061 +f 14573 6061 14556 +f 14556 6061 6183 +f 14556 6139 14557 +f 14557 6139 6116 +f 14583 6113 14582 +f 14582 6111 14581 +f 14581 6111 6109 +f 14581 6109 14580 +f 14580 6109 6107 +f 14580 6107 14579 +f 14579 6107 6105 +f 14579 6105 14572 +f 14570 6097 6073 +f 14557 14559 14556 +f 14556 14559 14573 +f 14559 14561 14573 +f 14573 14561 14574 +f 14561 14563 14574 +f 14574 14563 14575 +f 14563 14565 14575 +f 14575 14565 14576 +f 14569 14578 14577 +f 14565 14567 14576 +f 14576 14567 14577 +f 14567 14569 14577 +f 14570 14568 14571 +f 14571 14568 14572 +f 14568 14566 14572 +f 14572 14566 14579 +f 14566 14564 14579 +f 14579 14564 14580 +f 14564 14562 14580 +f 14580 14562 14581 +f 14558 14583 14582 +f 14562 14560 14581 +f 14581 14560 14582 +f 14560 14558 14582 +f 6073 6097 6078 +f 6078 6097 6101 +f 6179 14615 6178 +f 6178 14615 14599 +f 14600 14599 14597 +f 14600 14597 14598 +f 14598 14597 14595 +f 14598 14595 14596 +f 14596 14595 14593 +f 14596 14593 14594 +f 14594 14593 14591 +f 14594 14591 14592 +f 14592 14591 14589 +f 14592 14589 14590 +f 14590 14589 14587 +f 14590 14587 14588 +f 14588 14587 14585 +f 14588 14585 14586 +f 14586 6078 14631 +f 14631 6078 6101 +f 14631 6101 14630 +f 14630 14624 14625 +f 14625 14624 14632 +f 14625 14632 14633 +f 14633 14632 14620 +f 14633 14620 14619 +f 14619 14620 6129 +f 6179 14614 14615 +f 14615 14614 14599 +f 14610 6182 6081 +f 14584 6079 6077 +f 14624 14623 14632 +f 6102 6136 14622 +f 14622 6136 14621 +f 14622 14621 14623 +f 14623 14621 14632 +f 14621 6134 14620 +f 14621 14620 14632 +f 14619 6130 14608 +f 14608 6131 14607 +f 14607 6132 14618 +f 14618 6132 14616 +f 14618 14616 14605 +f 14605 14616 14617 +f 14605 14617 14604 +f 14604 14617 14603 +f 14604 14603 14643 +f 14643 14603 14602 +f 14643 14602 14647 +f 14647 14602 14601 +f 14647 14601 14598 +f 14598 14601 14600 +f 6178 14602 6234 +f 6078 14585 14584 +f 14584 14585 14587 +f 14584 14587 14609 +f 14609 14587 14589 +f 14609 14589 14610 +f 14610 14589 14591 +f 14610 14591 14611 +f 14611 14591 14593 +f 14611 14593 14612 +f 14612 14593 14595 +f 14612 14595 14613 +f 14613 14595 14597 +f 14613 14597 14614 +f 14614 14597 14599 +f 6178 14601 14602 +f 14607 14618 14606 +f 14606 14618 14605 +f 14606 14605 14642 +f 14642 14605 14604 +f 14642 14604 14644 +f 14644 14604 14643 +f 14644 14643 14645 +f 14645 14643 14647 +f 14645 14647 14596 +f 14596 14647 14598 +f 14608 14607 14638 +f 14638 14607 14606 +f 14638 14606 14639 +f 14639 14606 14642 +f 14639 14642 14640 +f 14640 14642 14644 +f 14640 14644 14641 +f 14641 14644 14645 +f 14641 14645 14594 +f 14594 14645 14596 +f 14619 14608 14635 +f 14635 14608 14638 +f 14635 14638 14636 +f 14636 14638 14639 +f 14636 14639 14637 +f 14637 14639 14640 +f 14637 14640 14629 +f 14629 14640 14641 +f 14629 14641 14592 +f 14592 14641 14594 +f 14588 14586 14646 +f 14646 14586 14631 +f 14646 14631 14626 +f 14626 14631 14630 +f 14626 14630 14625 +f 14629 14592 14590 +f 14590 14588 14628 +f 14628 14588 14646 +f 14628 14646 14627 +f 14627 14646 14626 +f 14627 14626 14634 +f 14634 14626 14625 +f 14634 14625 14633 +f 14637 14629 14628 +f 14628 14629 14590 +f 14637 14628 14627 +f 14636 14637 14627 +f 14636 14627 14634 +f 14635 14636 14634 +f 14635 14634 14633 +f 14619 14635 14633 +f 6268 27581 6270 +f 6270 27581 27582 +f 6270 27582 6271 +f 6271 27582 27583 +f 6271 27583 6272 +f 6272 27583 6276 +f 6276 27583 6278 +f 6278 27583 6280 +f 6280 27583 6281 +f 6281 27583 6282 +f 6282 27583 6283 +f 6283 27583 27584 +f 6283 27584 6284 +f 6284 27584 6285 +f 6285 27584 6286 +f 6286 27584 6176 +f 6176 27584 6177 +f 6177 27584 27585 +f 6177 27585 6287 +f 6287 27585 6288 +f 6288 27585 6165 +f 6165 27585 6163 +f 6163 27585 6161 +f 6161 27585 6162 +f 6162 27585 27586 +f 6162 27586 6157 +f 6157 27586 27587 +f 6157 27587 6155 +f 6155 27587 6153 +f 6153 27587 6151 +f 6151 27587 6149 +f 6149 27587 6147 +f 6147 27587 6144 +f 6144 27587 27588 +f 6144 27588 6145 +f 6145 27588 6146 +f 6146 27588 6254 +f 6254 27588 6252 +f 6252 27588 6256 +f 6256 27588 27581 +f 6256 27581 6258 +f 6258 27581 6260 +f 6260 27581 6262 +f 6262 27581 6264 +f 6264 27581 6266 +f 6266 27581 6268 +f 27584 27583 27582 +f 27582 27581 27589 +f 27589 27581 27588 +f 27589 27588 27586 +f 27586 27588 27587 +f 27585 27584 27589 +f 27589 27584 27582 +f 27585 27589 27586 +f 6204 6205 27590 +f 27590 6205 6309 +f 27590 6309 6307 +f 27590 6307 27591 +f 27591 6307 6305 +f 27591 6305 6303 +f 6303 6301 27591 +f 27591 6301 6299 +f 27591 6299 6297 +f 6297 6289 27591 +f 27591 6289 6291 +f 27591 6291 27592 +f 27592 6291 6293 +f 27592 6293 27593 +f 27593 6293 6358 +f 27593 6358 6355 +f 6355 6353 27593 +f 27593 6353 6352 +f 27593 6352 6349 +f 6349 6348 27593 +f 27593 6348 6347 +f 27593 6347 27594 +f 27594 6347 6346 +f 27594 6346 6345 +f 6345 6310 27594 +f 27594 6310 6245 +f 27594 6245 6244 +f 27594 6244 27595 +f 27595 6244 6243 +f 27595 6243 6242 +f 6242 6247 27595 +f 27595 6247 6249 +f 27595 6249 6190 +f 6190 6189 27595 +f 27595 6189 27596 +f 27595 27596 27594 +f 27594 27596 27597 +f 27594 27597 27593 +f 27593 27597 27592 +f 6189 6185 27596 +f 27596 6185 27598 +f 27596 27598 27597 +f 27597 27598 27590 +f 27597 27590 27592 +f 27592 27590 27591 +f 6185 6191 27598 +f 27598 6191 6193 +f 27598 6193 6195 +f 6195 6197 27598 +f 27598 6197 6199 +f 27598 6199 6201 +f 27598 6201 27590 +f 27590 6201 6203 +f 27590 6203 6204 +f 6272 14671 6271 +f 6271 14671 14663 +f 14664 14663 14661 +f 14664 14661 14662 +f 14662 14661 14659 +f 14662 14659 14660 +f 14660 14659 14657 +f 14660 14657 14658 +f 14658 14657 14655 +f 14658 14655 14656 +f 14656 14655 14653 +f 14656 14653 14654 +f 14654 14653 14651 +f 14654 14651 14652 +f 14652 14651 14649 +f 14652 14649 14650 +f 14671 6276 14670 +f 14671 14670 14663 +f 14663 14670 14661 +f 14670 14669 14661 +f 14661 14669 14659 +f 6278 6280 14669 +f 14669 14668 14659 +f 14659 14668 14657 +f 14668 14667 14657 +f 14657 14667 14655 +f 6281 6282 14667 +f 14667 6282 14666 +f 14667 14666 14655 +f 14655 14666 14653 +f 14666 14665 14653 +f 14653 14665 14651 +f 6283 6284 14665 +f 14665 14648 14651 +f 14651 14648 14649 +f 6345 14687 14680 +f 6345 14680 14650 +f 14650 14680 14679 +f 14650 14679 14652 +f 14652 14679 14678 +f 14652 14678 14654 +f 14654 14678 14677 +f 14654 14677 14656 +f 14656 14677 14676 +f 14656 14676 14658 +f 14658 14676 14675 +f 14658 14675 14660 +f 14660 14675 14674 +f 14660 14674 14662 +f 14662 14674 14673 +f 14662 14673 14664 +f 14686 6346 6347 +f 14686 6347 14685 +f 14685 6347 6348 +f 14685 6348 14684 +f 14683 6349 6352 +f 14681 6355 14672 +f 14672 6355 6358 +f 14673 14674 14672 +f 14672 14674 14681 +f 14674 14675 14681 +f 14681 14675 14682 +f 14675 14676 14682 +f 14682 14676 14683 +f 14676 14677 14683 +f 14683 14677 14684 +f 14677 14678 14684 +f 14684 14678 14685 +f 14680 14687 14686 +f 14678 14679 14685 +f 14685 14679 14686 +f 14679 14680 14686 +f 6270 6271 6291 +f 6252 14711 6254 +f 14704 14703 14701 +f 14704 14701 14702 +f 14702 14701 14699 +f 14702 14699 14700 +f 14700 14699 14697 +f 14700 14697 14698 +f 14698 14697 14695 +f 14698 14695 14696 +f 14696 14695 14693 +f 14696 14693 14694 +f 14694 14693 14691 +f 14694 14691 14692 +f 14692 14691 14689 +f 14692 14689 14690 +f 14690 6270 6291 +f 6252 6256 14711 +f 14711 6256 14710 +f 14711 14710 14703 +f 14703 14710 14701 +f 6256 6258 14710 +f 14710 6258 14709 +f 14710 14709 14701 +f 14701 14709 14699 +f 14709 14708 14699 +f 14699 14708 14697 +f 14708 14707 14697 +f 14697 14707 14695 +f 14707 6264 14706 +f 14707 14706 14695 +f 14695 14706 14693 +f 6264 6266 14706 +f 14706 14705 14693 +f 14693 14705 14691 +f 6266 6268 14705 +f 14705 14688 14691 +f 14691 14688 14689 +f 14688 6270 14689 +f 6289 14735 6291 +f 6291 14735 14727 +f 6291 14727 14728 +f 14728 14727 14725 +f 14728 14725 14726 +f 14726 14725 14723 +f 14726 14723 14724 +f 14724 14723 14721 +f 14724 14721 14722 +f 14722 14721 14719 +f 14722 14719 14720 +f 14720 14719 14717 +f 14720 14717 14718 +f 14718 14717 14715 +f 14718 14715 14716 +f 14716 14715 14713 +f 14716 14713 14714 +f 14714 14713 6205 +f 14714 6205 6254 +f 14734 6289 6297 +f 14734 6297 14733 +f 14733 6297 6299 +f 14732 6301 14731 +f 14731 6303 6305 +f 14731 6305 14730 +f 14730 6305 6307 +f 14730 6307 14729 +f 14729 6307 14712 +f 14729 14712 14715 +f 14715 14712 14713 +f 14712 6309 6205 +f 14712 6205 14713 +f 14714 6254 14704 +f 14715 14717 14729 +f 14729 14717 14730 +f 14717 14719 14730 +f 14730 14719 14731 +f 14719 14721 14731 +f 14731 14721 14732 +f 14721 14723 14732 +f 14732 14723 14733 +f 14727 14735 14734 +f 14723 14725 14733 +f 14733 14725 14734 +f 14690 6291 14728 +f 14725 14727 14734 +f 14704 14702 14714 +f 14714 14702 14716 +f 14702 14700 14716 +f 14716 14700 14718 +f 14700 14698 14718 +f 14718 14698 14720 +f 14698 14696 14720 +f 14720 14696 14722 +f 14696 14694 14722 +f 14722 14694 14724 +f 14690 14728 14726 +f 14694 14692 14724 +f 14724 14692 14726 +f 14692 14690 14726 +f 6204 6254 6205 +f 6157 14758 14749 +f 6157 14749 14750 +f 14750 14749 14747 +f 14750 14747 14748 +f 14748 14747 14745 +f 14748 14745 14746 +f 14746 14745 14743 +f 14746 14743 14744 +f 14744 14743 14741 +f 14744 14741 14742 +f 14742 14741 14739 +f 14742 14739 14740 +f 14740 14739 14737 +f 14740 14737 14738 +f 14738 14737 6204 +f 14763 6203 6201 +f 14758 6155 14757 +f 14757 6155 6153 +f 14757 6153 14756 +f 14756 6153 6151 +f 14756 6151 14755 +f 14755 6149 14754 +f 14737 6146 6204 +f 14762 6199 14761 +f 14761 6199 6197 +f 14761 6197 14760 +f 14760 6197 6195 +f 14760 6195 14759 +f 14759 6195 6193 +f 14759 6193 14752 +f 14752 6193 6191 +f 14752 6191 14751 +f 14751 6191 6185 +f 14751 6185 14750 +f 14750 6185 6157 +f 14737 14739 14736 +f 14736 14739 14753 +f 14739 14741 14753 +f 14753 14741 14754 +f 14741 14743 14754 +f 14754 14743 14755 +f 14743 14745 14755 +f 14755 14745 14756 +f 14749 14758 14757 +f 14745 14747 14756 +f 14756 14747 14757 +f 14747 14749 14757 +f 14750 14748 14751 +f 14751 14748 14752 +f 14748 14746 14752 +f 14752 14746 14759 +f 14746 14744 14759 +f 14759 14744 14760 +f 14744 14742 14760 +f 14760 14742 14761 +f 14738 14763 14762 +f 14742 14740 14761 +f 14761 14740 14762 +f 14740 14738 14762 +f 6157 6185 6162 +f 6162 6185 6189 +f 6286 14779 14780 +f 14780 14779 14777 +f 14780 14777 14778 +f 14778 14777 14775 +f 14778 14775 14776 +f 14776 14775 14773 +f 14776 14773 14774 +f 14774 14773 14771 +f 14774 14771 14772 +f 14772 14771 14769 +f 14772 14769 14770 +f 14770 14769 14767 +f 14770 14767 14768 +f 14768 14767 14765 +f 14768 14765 14766 +f 14811 6162 6189 +f 14811 6189 14810 +f 14810 6189 14804 +f 14810 14804 14805 +f 14805 14804 14812 +f 14805 14812 14813 +f 14813 14812 14800 +f 14813 14800 14799 +f 14799 14800 6242 +f 6177 14793 6176 +f 6176 14793 14794 +f 14795 14794 14779 +f 14792 6177 6287 +f 14790 6165 14789 +f 14789 6165 6163 +f 6190 14802 6189 +f 6189 14802 14803 +f 6189 14803 14804 +f 14804 14803 14812 +f 6190 6249 14802 +f 14802 6249 14801 +f 14802 14801 14803 +f 14803 14801 14812 +f 14801 6247 14800 +f 14801 14800 14812 +f 6247 6242 14800 +f 14799 6243 14788 +f 14788 6243 6244 +f 14787 6244 6245 +f 14787 6245 14798 +f 14798 6245 14796 +f 14798 14796 14785 +f 14785 14796 14797 +f 14785 14797 14784 +f 14784 14797 14783 +f 14784 14783 14823 +f 14823 14783 14782 +f 14823 14782 14827 +f 14827 14782 14781 +f 14827 14781 14778 +f 14778 14781 14780 +f 6245 6310 14796 +f 14796 6310 14797 +f 6286 14782 6310 +f 6310 14782 14783 +f 6310 14783 14797 +f 14764 14765 14767 +f 14764 14767 14789 +f 14789 14767 14769 +f 14789 14769 14790 +f 14790 14769 14771 +f 14790 14771 14791 +f 14791 14771 14773 +f 14791 14773 14792 +f 14792 14773 14775 +f 14792 14775 14793 +f 14793 14775 14777 +f 14793 14777 14794 +f 14794 14777 14779 +f 14780 14781 6286 +f 6286 14781 14782 +f 14787 14798 14786 +f 14786 14798 14785 +f 14786 14785 14822 +f 14822 14785 14784 +f 14822 14784 14824 +f 14824 14784 14823 +f 14824 14823 14825 +f 14825 14823 14827 +f 14825 14827 14776 +f 14776 14827 14778 +f 14788 14787 14818 +f 14818 14787 14786 +f 14818 14786 14819 +f 14819 14786 14822 +f 14819 14822 14820 +f 14820 14822 14824 +f 14820 14824 14821 +f 14821 14824 14825 +f 14821 14825 14774 +f 14774 14825 14776 +f 14799 14788 14815 +f 14815 14788 14818 +f 14815 14818 14816 +f 14816 14818 14819 +f 14816 14819 14817 +f 14817 14819 14820 +f 14817 14820 14809 +f 14809 14820 14821 +f 14809 14821 14772 +f 14772 14821 14774 +f 14768 14766 14826 +f 14826 14766 14811 +f 14826 14811 14806 +f 14806 14811 14810 +f 14806 14810 14805 +f 14809 14772 14770 +f 14770 14768 14808 +f 14808 14768 14826 +f 14808 14826 14807 +f 14807 14826 14806 +f 14807 14806 14814 +f 14814 14806 14805 +f 14814 14805 14813 +f 14817 14809 14808 +f 14808 14809 14770 +f 14817 14808 14807 +f 14816 14817 14807 +f 14816 14807 14814 +f 14815 14816 14814 +f 14815 14814 14813 +f 14799 14815 14813 +f 6375 27599 6376 +f 6376 27599 27600 +f 6376 27600 4412 +f 4412 27600 27601 +f 4412 27601 4410 +f 4410 27601 4408 +f 4408 27601 4406 +f 4406 27601 4405 +f 4405 27601 4404 +f 4404 27601 4403 +f 4403 27601 4402 +f 4402 27601 27602 +f 4402 27602 4400 +f 4400 27602 4399 +f 4399 27602 4398 +f 4398 27602 6377 +f 6377 27602 6378 +f 6378 27602 27603 +f 6378 27603 6379 +f 6379 27603 6380 +f 6380 27603 6277 +f 6277 27603 6275 +f 6275 27603 6273 +f 6273 27603 6274 +f 6274 27603 27604 +f 6274 27604 6269 +f 6269 27604 27605 +f 6269 27605 6267 +f 6267 27605 6265 +f 6265 27605 6263 +f 6263 27605 6261 +f 6261 27605 6259 +f 6259 27605 6257 +f 6257 27605 27606 +f 6257 27606 6255 +f 6255 27606 6253 +f 6253 27606 6361 +f 6361 27606 6359 +f 6359 27606 6363 +f 6363 27606 27599 +f 6363 27599 6365 +f 6365 27599 6367 +f 6367 27599 6369 +f 6369 27599 6371 +f 6371 27599 6373 +f 6373 27599 6375 +f 27602 27601 27600 +f 27600 27599 27607 +f 27607 27599 27606 +f 27607 27606 27604 +f 27604 27606 27605 +f 27603 27602 27607 +f 27607 27602 27600 +f 27603 27607 27604 +f 6207 6208 27608 +f 27608 6208 6210 +f 27608 6210 6212 +f 27608 6212 27609 +f 27609 6212 6214 +f 27609 6214 6216 +f 6216 6218 27609 +f 27609 6218 6220 +f 27609 6220 6222 +f 6222 6224 27609 +f 27609 6224 6226 +f 27609 6226 27610 +f 27610 6226 6228 +f 27610 6228 27611 +f 27611 6228 6400 +f 27611 6400 6397 +f 6397 6395 27611 +f 27611 6395 6390 +f 27611 6390 6389 +f 6389 6388 27611 +f 27611 6388 6387 +f 27611 6387 27612 +f 27612 6387 6386 +f 27612 6386 6385 +f 6385 6383 27612 +f 27612 6383 6382 +f 27612 6382 6381 +f 27612 6381 27613 +f 27613 6381 6350 +f 27613 6350 6351 +f 6351 6354 27613 +f 27613 6354 6356 +f 27613 6356 6295 +f 6295 6294 27613 +f 27613 6294 27614 +f 27613 27614 27612 +f 27612 27614 27615 +f 27612 27615 27611 +f 27611 27615 27610 +f 6294 6290 27614 +f 27614 6290 27616 +f 27614 27616 27615 +f 27615 27616 27608 +f 27615 27608 27610 +f 27610 27608 27609 +f 6290 6296 27616 +f 27616 6296 6298 +f 27616 6298 6300 +f 6300 6302 27616 +f 27616 6302 6304 +f 27616 6304 6306 +f 27616 6306 27608 +f 27608 6306 6308 +f 27608 6308 6207 +f 6385 4398 6383 +f 4410 14851 4412 +f 4412 14843 14844 +f 14844 14843 14841 +f 14844 14841 14842 +f 14842 14841 14839 +f 14842 14839 14840 +f 14840 14839 14837 +f 14840 14837 14838 +f 14838 14837 14835 +f 14838 14835 14836 +f 14836 14835 14833 +f 14836 14833 14834 +f 14834 14833 14831 +f 14834 14831 14832 +f 14832 14831 14829 +f 14832 14829 14830 +f 14830 14829 4399 +f 14851 14850 14843 +f 14843 14850 14841 +f 14850 4406 14849 +f 14850 14849 14841 +f 14841 14849 14839 +f 4406 4405 14849 +f 14849 4405 14848 +f 14849 14848 14839 +f 14839 14848 14837 +f 14848 14847 14837 +f 14837 14847 14835 +f 14847 14846 14835 +f 14835 14846 14833 +f 4403 4402 14846 +f 14846 14845 14833 +f 14833 14845 14831 +f 14845 14828 14831 +f 14831 14828 14829 +f 6385 14867 14860 +f 6385 14860 14830 +f 14830 14860 14859 +f 14830 14859 14832 +f 14832 14859 14858 +f 14832 14858 14834 +f 14834 14858 14857 +f 14834 14857 14836 +f 14836 14857 14856 +f 14836 14856 14838 +f 14838 14856 14855 +f 14838 14855 14840 +f 14840 14855 14854 +f 14840 14854 14842 +f 14842 14854 14853 +f 14842 14853 14844 +f 14844 14853 6228 +f 14866 6386 6387 +f 14864 6388 6389 +f 14864 6389 14863 +f 14863 6389 6390 +f 14861 6395 6397 +f 14852 6397 6400 +f 14852 6228 14853 +f 14853 14854 14852 +f 14852 14854 14861 +f 14854 14855 14861 +f 14861 14855 14862 +f 14855 14856 14862 +f 14862 14856 14863 +f 14856 14857 14863 +f 14863 14857 14864 +f 14857 14858 14864 +f 14864 14858 14865 +f 14860 14867 14866 +f 14858 14859 14865 +f 14865 14859 14866 +f 14859 14860 14866 +f 6361 14891 14883 +f 14884 14883 14881 +f 14884 14881 14882 +f 14882 14881 14879 +f 14882 14879 14880 +f 14880 14879 14877 +f 14880 14877 14878 +f 14878 14877 14875 +f 14878 14875 14876 +f 14876 14875 14873 +f 14876 14873 14874 +f 14874 14873 14871 +f 14874 14871 14872 +f 14872 14871 14869 +f 14872 14869 14870 +f 14870 6376 6226 +f 6359 6363 14891 +f 14891 14890 14883 +f 14883 14890 14881 +f 6363 6365 14890 +f 14890 6365 14889 +f 14890 14889 14881 +f 14881 14889 14879 +f 14889 6367 14888 +f 14889 14888 14879 +f 14879 14888 14877 +f 6367 6369 14888 +f 14888 14887 14877 +f 14877 14887 14875 +f 14887 14886 14875 +f 14875 14886 14873 +f 14886 14885 14873 +f 14873 14885 14871 +f 14885 14868 14871 +f 14871 14868 14869 +f 6224 14915 6226 +f 6226 14915 14907 +f 14908 14907 14905 +f 14908 14905 14906 +f 14906 14905 14903 +f 14906 14903 14904 +f 14904 14903 14901 +f 14904 14901 14902 +f 14902 14901 14899 +f 14902 14899 14900 +f 14900 14899 14897 +f 14900 14897 14898 +f 14898 14897 14895 +f 14898 14895 14896 +f 14896 14895 14893 +f 14896 14893 14894 +f 14894 6208 6361 +f 14915 6224 14914 +f 14912 6220 6218 +f 14911 6218 6216 +f 14911 6216 6214 +f 14911 6214 14910 +f 14910 6214 6212 +f 14910 6212 14909 +f 14909 14892 14895 +f 14895 14892 14893 +f 14894 6361 14884 +f 14895 14897 14909 +f 14909 14897 14910 +f 14897 14899 14910 +f 14910 14899 14911 +f 14899 14901 14911 +f 14911 14901 14912 +f 14901 14903 14912 +f 14912 14903 14913 +f 14907 14915 14914 +f 14903 14905 14913 +f 14913 14905 14914 +f 14870 6226 14908 +f 14905 14907 14914 +f 14884 14882 14894 +f 14894 14882 14896 +f 14882 14880 14896 +f 14896 14880 14898 +f 14880 14878 14898 +f 14898 14878 14900 +f 14878 14876 14900 +f 14900 14876 14902 +f 14876 14874 14902 +f 14902 14874 14904 +f 14870 14908 14906 +f 14874 14872 14904 +f 14904 14872 14906 +f 14872 14870 14906 +f 6269 14929 14930 +f 14930 14929 14927 +f 14930 14927 14928 +f 14928 14927 14925 +f 14928 14925 14926 +f 14926 14925 14923 +f 14926 14923 14924 +f 14924 14923 14921 +f 14924 14921 14922 +f 14922 14921 14919 +f 14922 14919 14920 +f 14920 14919 14917 +f 14920 14917 14918 +f 14918 14917 6207 +f 14918 6207 14943 +f 14938 6267 14937 +f 14937 6265 14936 +f 14936 6265 6263 +f 14935 6263 6261 +f 14935 6261 14934 +f 14934 6261 6259 +f 14934 6259 14933 +f 14933 6259 6257 +f 14933 6257 14916 +f 14917 6253 6207 +f 14941 6304 6302 +f 14941 6302 14940 +f 14940 6302 6300 +f 14940 6300 14939 +f 14939 6300 6298 +f 14939 6298 14932 +f 14930 6290 6269 +f 14917 14919 14916 +f 14916 14919 14933 +f 14919 14921 14933 +f 14933 14921 14934 +f 14921 14923 14934 +f 14934 14923 14935 +f 14923 14925 14935 +f 14935 14925 14936 +f 14929 14938 14937 +f 14925 14927 14936 +f 14936 14927 14937 +f 14927 14929 14937 +f 14930 14928 14931 +f 14931 14928 14932 +f 14928 14926 14932 +f 14932 14926 14939 +f 14926 14924 14939 +f 14939 14924 14940 +f 14924 14922 14940 +f 14940 14922 14941 +f 14918 14943 14942 +f 14922 14920 14941 +f 14941 14920 14942 +f 14920 14918 14942 +f 6269 6290 6274 +f 6274 6290 6294 +f 4398 14959 14960 +f 14960 14959 14957 +f 14960 14957 14958 +f 14958 14957 14955 +f 14958 14955 14956 +f 14956 14955 14953 +f 14956 14953 14954 +f 14954 14953 14951 +f 14954 14951 14952 +f 14952 14951 14949 +f 14952 14949 14950 +f 14950 14949 14947 +f 14950 14947 14948 +f 14948 14947 14945 +f 14948 14945 14946 +f 14946 14945 6274 +f 14991 6274 6294 +f 14991 6294 14990 +f 14990 14984 14985 +f 14985 14984 14992 +f 14985 14992 14993 +f 14993 14992 14980 +f 14993 14980 14979 +f 6377 14973 14974 +f 6377 14974 14975 +f 14975 14974 14959 +f 14970 6380 6277 +f 14970 6277 14969 +f 14969 6277 6275 +f 14969 6275 14944 +f 14944 6275 6273 +f 14944 6273 6274 +f 6295 14982 6294 +f 6294 14982 14983 +f 14984 14983 14992 +f 6295 6356 14982 +f 14982 6356 14981 +f 14982 14981 14983 +f 14983 14981 14992 +f 14981 6354 14980 +f 14981 14980 14992 +f 6354 6351 14980 +f 14979 6350 14968 +f 14968 6350 6381 +f 14968 6381 14967 +f 14967 6381 6382 +f 14978 6382 14976 +f 14978 14976 14965 +f 14965 14976 14977 +f 14965 14977 14964 +f 14964 14977 14963 +f 14964 14963 15003 +f 15003 14963 14962 +f 15003 14962 15007 +f 15007 14962 14961 +f 15007 14961 14958 +f 14958 14961 14960 +f 4398 14962 6383 +f 6383 14962 14963 +f 6274 14945 14944 +f 14944 14945 14947 +f 14944 14947 14969 +f 14969 14947 14949 +f 14969 14949 14970 +f 14970 14949 14951 +f 14970 14951 14971 +f 14971 14951 14953 +f 14971 14953 14972 +f 14972 14953 14955 +f 14972 14955 14973 +f 14973 14955 14957 +f 14973 14957 14974 +f 14974 14957 14959 +f 14960 14961 4398 +f 4398 14961 14962 +f 14967 14978 14966 +f 14966 14978 14965 +f 14966 14965 15002 +f 15002 14965 14964 +f 15002 14964 15004 +f 15004 14964 15003 +f 15004 15003 15005 +f 15005 15003 15007 +f 15005 15007 14956 +f 14956 15007 14958 +f 14968 14967 14998 +f 14998 14967 14966 +f 14998 14966 14999 +f 14999 14966 15002 +f 14999 15002 15000 +f 15000 15002 15004 +f 15000 15004 15001 +f 15001 15004 15005 +f 15001 15005 14954 +f 14954 15005 14956 +f 14979 14968 14995 +f 14995 14968 14998 +f 14995 14998 14996 +f 14996 14998 14999 +f 14996 14999 14997 +f 14997 14999 15000 +f 14997 15000 14989 +f 14989 15000 15001 +f 14989 15001 14952 +f 14952 15001 14954 +f 14948 14946 15006 +f 15006 14946 14991 +f 15006 14991 14986 +f 14986 14991 14990 +f 14986 14990 14985 +f 14989 14952 14950 +f 14950 14948 14988 +f 14988 14948 15006 +f 14988 15006 14987 +f 14987 15006 14986 +f 14987 14986 14994 +f 14994 14986 14985 +f 14994 14985 14993 +f 14997 14989 14988 +f 14988 14989 14950 +f 14997 14988 14987 +f 14996 14997 14987 +f 14996 14987 14994 +f 14995 14996 14994 +f 14995 14994 14993 +f 14979 14995 14993 +f 6418 27617 6419 +f 6419 27617 27618 +f 6419 27618 4463 +f 4463 27618 27619 +f 4463 27619 4461 +f 4461 27619 4459 +f 4459 27619 4457 +f 4457 27619 4456 +f 4456 27619 4455 +f 4455 27619 4454 +f 4454 27619 4453 +f 4453 27619 27620 +f 4453 27620 4451 +f 4451 27620 4450 +f 4450 27620 4449 +f 4449 27620 6420 +f 6420 27620 6421 +f 6421 27620 27621 +f 6421 27621 6422 +f 6422 27621 6423 +f 6423 27621 4407 +f 4407 27621 4409 +f 4409 27621 4411 +f 4411 27621 4413 +f 4413 27621 27622 +f 4413 27622 4414 +f 4414 27622 27623 +f 4414 27623 6374 +f 6374 27623 6372 +f 6372 27623 6370 +f 6370 27623 6368 +f 6368 27623 6366 +f 6366 27623 6364 +f 6364 27623 27624 +f 6364 27624 6362 +f 6362 27624 6360 +f 6360 27624 6403 +f 6403 27624 6401 +f 6401 27624 6406 +f 6406 27624 27617 +f 6406 27617 6408 +f 6408 27617 6410 +f 6410 27617 6412 +f 6412 27617 6414 +f 6414 27617 6416 +f 6416 27617 6418 +f 27620 27619 27618 +f 27618 27617 27625 +f 27625 27617 27624 +f 27625 27624 27622 +f 27622 27624 27623 +f 27621 27620 27625 +f 27625 27620 27618 +f 27621 27625 27622 +f 6209 6446 27626 +f 27626 6446 6444 +f 27626 6444 6442 +f 27626 6442 27627 +f 27627 6442 6440 +f 27627 6440 6438 +f 6438 6436 27627 +f 27627 6436 6434 +f 27627 6434 6432 +f 6432 6424 27627 +f 27627 6424 6426 +f 27627 6426 27628 +f 27628 6426 6428 +f 27628 6428 27629 +f 27629 6428 6491 +f 27629 6491 6488 +f 6488 6486 27629 +f 27629 6486 6485 +f 27629 6485 6482 +f 6482 6481 27629 +f 27629 6481 6480 +f 27629 6480 27630 +f 27630 6480 6479 +f 27630 6479 6478 +f 6478 6447 27630 +f 27630 6447 6394 +f 27630 6394 6393 +f 27630 6393 27631 +f 27631 6393 6392 +f 27631 6392 6391 +f 6391 6396 27631 +f 27631 6396 6398 +f 27631 6398 6230 +f 6230 6229 27631 +f 27631 6229 27632 +f 27631 27632 27630 +f 27630 27632 27633 +f 27630 27633 27629 +f 27629 27633 27628 +f 6229 6225 27632 +f 27632 6225 27634 +f 27632 27634 27633 +f 27633 27634 27626 +f 27633 27626 27628 +f 27628 27626 27627 +f 6225 6223 27634 +f 27634 6223 6221 +f 27634 6221 6219 +f 6219 6217 27634 +f 27634 6217 6215 +f 27634 6215 6213 +f 27634 6213 27626 +f 27626 6213 6211 +f 27626 6211 6209 +f 4450 4449 6478 +f 6478 4449 6447 +f 4463 15031 15023 +f 4463 15023 15024 +f 15024 15023 15021 +f 15024 15021 15022 +f 15022 15021 15019 +f 15022 15019 15020 +f 15020 15019 15017 +f 15020 15017 15018 +f 15018 15017 15015 +f 15018 15015 15016 +f 15016 15015 15013 +f 15016 15013 15014 +f 15014 15013 15011 +f 15014 15011 15012 +f 15012 15011 15009 +f 15012 15009 15010 +f 4461 4459 15031 +f 15031 15030 15023 +f 15023 15030 15021 +f 4459 4457 15030 +f 15030 15029 15021 +f 15021 15029 15019 +f 15029 15028 15019 +f 15019 15028 15017 +f 4456 4455 15028 +f 15028 4455 15027 +f 15028 15027 15017 +f 15017 15027 15015 +f 15027 4454 15026 +f 15027 15026 15015 +f 15015 15026 15013 +f 15026 15025 15013 +f 15013 15025 15011 +f 15025 15008 15011 +f 15011 15008 15009 +f 6478 15040 15010 +f 15010 15040 15039 +f 15010 15039 15012 +f 15012 15039 15038 +f 15012 15038 15014 +f 15014 15038 15037 +f 15014 15037 15016 +f 15016 15037 15036 +f 15016 15036 15018 +f 15018 15036 15035 +f 15018 15035 15020 +f 15020 15035 15034 +f 15020 15034 15022 +f 15022 15034 15033 +f 15022 15033 15024 +f 15024 15033 6428 +f 15024 6428 4463 +f 15047 6479 15046 +f 15046 6479 6480 +f 15045 6480 6481 +f 15045 6481 15044 +f 15044 6481 6482 +f 15041 6486 6488 +f 15032 6488 6491 +f 15032 6491 6428 +f 15032 6428 15033 +f 15033 15034 15032 +f 15032 15034 15041 +f 15034 15035 15041 +f 15041 15035 15042 +f 15035 15036 15042 +f 15042 15036 15043 +f 15036 15037 15043 +f 15043 15037 15044 +f 15037 15038 15044 +f 15044 15038 15045 +f 15040 15047 15046 +f 15038 15039 15045 +f 15045 15039 15046 +f 15039 15040 15046 +f 6419 4463 6426 +f 6426 4463 6428 +f 15064 15063 15061 +f 15064 15061 15062 +f 15062 15061 15059 +f 15062 15059 15060 +f 15060 15059 15057 +f 15060 15057 15058 +f 15058 15057 15055 +f 15058 15055 15056 +f 15056 15055 15053 +f 15056 15053 15054 +f 15054 15053 15051 +f 15054 15051 15052 +f 15052 15051 15049 +f 15052 15049 15050 +f 15050 15049 6419 +f 15050 6419 6426 +f 6401 6406 15071 +f 15071 6406 15070 +f 15071 15070 15063 +f 15063 15070 15061 +f 6406 6408 15070 +f 15070 6408 15069 +f 15070 15069 15061 +f 15061 15069 15059 +f 6408 6410 15069 +f 15069 6410 15068 +f 15069 15068 15059 +f 15059 15068 15057 +f 6410 6412 15068 +f 15068 15067 15057 +f 15057 15067 15055 +f 15067 6414 15066 +f 15067 15066 15055 +f 15055 15066 15053 +f 15066 15065 15053 +f 15053 15065 15051 +f 15065 15048 15051 +f 15051 15048 15049 +f 15048 6419 15049 +f 15088 15087 15085 +f 15088 15085 15086 +f 15086 15085 15083 +f 15086 15083 15084 +f 15084 15083 15081 +f 15084 15081 15082 +f 15082 15081 15079 +f 15082 15079 15080 +f 15080 15079 15077 +f 15080 15077 15078 +f 15078 15077 15075 +f 15078 15075 15076 +f 15076 15075 15073 +f 15076 15073 15074 +f 15074 15073 6446 +f 15074 6446 6403 +f 15095 6424 15094 +f 15091 6438 6440 +f 15091 6440 15090 +f 15090 6440 6442 +f 15090 6442 15089 +f 15089 15072 15075 +f 15075 15072 15073 +f 6442 6444 15072 +f 15072 6444 6446 +f 15072 6446 15073 +f 15074 6403 15064 +f 15075 15077 15089 +f 15089 15077 15090 +f 15077 15079 15090 +f 15090 15079 15091 +f 15079 15081 15091 +f 15091 15081 15092 +f 15081 15083 15092 +f 15092 15083 15093 +f 15087 15095 15094 +f 15083 15085 15093 +f 15093 15085 15094 +f 15050 6426 15088 +f 15085 15087 15094 +f 15064 15062 15074 +f 15074 15062 15076 +f 15062 15060 15076 +f 15076 15060 15078 +f 15060 15058 15078 +f 15078 15058 15080 +f 15058 15056 15080 +f 15080 15056 15082 +f 15056 15054 15082 +f 15082 15054 15084 +f 15050 15088 15086 +f 15054 15052 15084 +f 15084 15052 15086 +f 15052 15050 15086 +f 6360 6403 6209 +f 6209 6403 6446 +f 4414 15109 15110 +f 15110 15109 15107 +f 15110 15107 15108 +f 15108 15107 15105 +f 15108 15105 15106 +f 15106 15105 15103 +f 15106 15103 15104 +f 15104 15103 15101 +f 15104 15101 15102 +f 15102 15101 15099 +f 15102 15099 15100 +f 15100 15099 15097 +f 15100 15097 15098 +f 15098 15097 6209 +f 15118 6374 15117 +f 15117 6374 6372 +f 15117 6372 15116 +f 15116 6370 15115 +f 15114 6366 15113 +f 15113 6366 6364 +f 15096 6362 6360 +f 15096 6360 15097 +f 15097 6360 6209 +f 15121 6215 6217 +f 15121 6217 15120 +f 15120 6217 6219 +f 15120 6219 15119 +f 15119 6219 6221 +f 15119 6221 15112 +f 15112 6221 6223 +f 15112 6223 15111 +f 15111 6223 6225 +f 15111 6225 15110 +f 15110 6225 4414 +f 15097 15099 15096 +f 15096 15099 15113 +f 15099 15101 15113 +f 15113 15101 15114 +f 15101 15103 15114 +f 15114 15103 15115 +f 15103 15105 15115 +f 15115 15105 15116 +f 15109 15118 15117 +f 15105 15107 15116 +f 15116 15107 15117 +f 15107 15109 15117 +f 15110 15108 15111 +f 15111 15108 15112 +f 15108 15106 15112 +f 15112 15106 15119 +f 15106 15104 15119 +f 15119 15104 15120 +f 15104 15102 15120 +f 15120 15102 15121 +f 15098 15123 15122 +f 15102 15100 15121 +f 15121 15100 15122 +f 15100 15098 15122 +f 4413 6225 6229 +f 6420 15155 4449 +f 15140 15139 15137 +f 15140 15137 15138 +f 15138 15137 15135 +f 15138 15135 15136 +f 15136 15135 15133 +f 15136 15133 15134 +f 15134 15133 15131 +f 15134 15131 15132 +f 15132 15131 15129 +f 15132 15129 15130 +f 15130 15129 15127 +f 15130 15127 15128 +f 15128 15127 15125 +f 15128 15125 15126 +f 15171 4413 6229 +f 15171 6229 15170 +f 15170 15164 15165 +f 15165 15164 15172 +f 15165 15172 15173 +f 15173 15172 15160 +f 15173 15160 15159 +f 15159 15160 6391 +f 6421 15153 6420 +f 6420 15153 15154 +f 6420 15154 15155 +f 15155 15154 15139 +f 15153 6421 15152 +f 15149 4409 15124 +f 15124 4409 4411 +f 15124 4411 4413 +f 15164 15163 15172 +f 6230 6398 15162 +f 15162 6398 15161 +f 15162 15161 15163 +f 15163 15161 15172 +f 15161 6396 15160 +f 15161 15160 15172 +f 15148 6393 15147 +f 15147 6393 6394 +f 15147 6394 15158 +f 15158 6394 15156 +f 15158 15156 15145 +f 15145 15156 15157 +f 15145 15157 15144 +f 15144 15157 15143 +f 15144 15143 15183 +f 15183 15143 15142 +f 15183 15142 15187 +f 15187 15142 15141 +f 15187 15141 15138 +f 15138 15141 15140 +f 4449 15142 6447 +f 6447 15142 15143 +f 6447 15143 15157 +f 15124 15125 15127 +f 15124 15127 15149 +f 15149 15127 15129 +f 15149 15129 15150 +f 15150 15129 15131 +f 15150 15131 15151 +f 15151 15131 15133 +f 15151 15133 15152 +f 15152 15133 15135 +f 15152 15135 15153 +f 15153 15135 15137 +f 15153 15137 15154 +f 15154 15137 15139 +f 4449 15141 15142 +f 15147 15158 15146 +f 15146 15158 15145 +f 15146 15145 15182 +f 15182 15145 15144 +f 15182 15144 15184 +f 15184 15144 15183 +f 15184 15183 15185 +f 15185 15183 15187 +f 15185 15187 15136 +f 15136 15187 15138 +f 15148 15147 15178 +f 15178 15147 15146 +f 15178 15146 15179 +f 15179 15146 15182 +f 15179 15182 15180 +f 15180 15182 15184 +f 15180 15184 15181 +f 15181 15184 15185 +f 15181 15185 15134 +f 15134 15185 15136 +f 15159 15148 15175 +f 15175 15148 15178 +f 15175 15178 15176 +f 15176 15178 15179 +f 15176 15179 15177 +f 15177 15179 15180 +f 15177 15180 15169 +f 15169 15180 15181 +f 15169 15181 15132 +f 15132 15181 15134 +f 15128 15126 15186 +f 15186 15126 15171 +f 15186 15171 15166 +f 15166 15171 15170 +f 15166 15170 15165 +f 15169 15132 15130 +f 15130 15128 15168 +f 15168 15128 15186 +f 15168 15186 15167 +f 15167 15186 15166 +f 15167 15166 15174 +f 15174 15166 15165 +f 15174 15165 15173 +f 15177 15169 15168 +f 15168 15169 15130 +f 15177 15168 15167 +f 15176 15177 15167 +f 15176 15167 15174 +f 15175 15176 15174 +f 15175 15174 15173 +f 15159 15175 15173 +f 6508 27635 6509 +f 6509 27635 27636 +f 6509 27636 4513 +f 4513 27636 27637 +f 4513 27637 4511 +f 4511 27637 4509 +f 4509 27637 4507 +f 4507 27637 4506 +f 4506 27637 4505 +f 4505 27637 4504 +f 4504 27637 4503 +f 4503 27637 27638 +f 4503 27638 4501 +f 4501 27638 4500 +f 4500 27638 4499 +f 4499 27638 6510 +f 6510 27638 6511 +f 6511 27638 27639 +f 6511 27639 6512 +f 6512 27639 6513 +f 6513 27639 4458 +f 4458 27639 4460 +f 4460 27639 4462 +f 4462 27639 4464 +f 4464 27639 27640 +f 4464 27640 4465 +f 4465 27640 27641 +f 4465 27641 6417 +f 6417 27641 6415 +f 6415 27641 6413 +f 6413 27641 6411 +f 6411 27641 6409 +f 6409 27641 6407 +f 6407 27641 27642 +f 6407 27642 6405 +f 6405 27642 6402 +f 6402 27642 6494 +f 6494 27642 6492 +f 6492 27642 6496 +f 6496 27642 27635 +f 6496 27635 6498 +f 6498 27635 6500 +f 6500 27635 6502 +f 6502 27635 6504 +f 6504 27635 6506 +f 6506 27635 6508 +f 27638 27637 27636 +f 27636 27635 27643 +f 27643 27635 27642 +f 27643 27642 27640 +f 27640 27642 27641 +f 27639 27638 27643 +f 27643 27638 27636 +f 27639 27643 27640 +f 6445 6536 27644 +f 27644 6536 6534 +f 27644 6534 6532 +f 27644 6532 27645 +f 27645 6532 6530 +f 27645 6530 6528 +f 6528 6526 27645 +f 27645 6526 6524 +f 27645 6524 6522 +f 6522 6514 27645 +f 27645 6514 6516 +f 27645 6516 27646 +f 27646 6516 6518 +f 27646 6518 27647 +f 27647 6518 6556 +f 27647 6556 6553 +f 6553 6551 27647 +f 27647 6551 6546 +f 27647 6546 6545 +f 6545 6544 27647 +f 27647 6544 6543 +f 27647 6543 27648 +f 27648 6543 6542 +f 27648 6542 6541 +f 6541 6539 27648 +f 27648 6539 6538 +f 27648 6538 6537 +f 27648 6537 27649 +f 27649 6537 6483 +f 27649 6483 6484 +f 6484 6487 27649 +f 27649 6487 6489 +f 27649 6489 6430 +f 6430 6429 27649 +f 27649 6429 27650 +f 27649 27650 27648 +f 27648 27650 27651 +f 27648 27651 27647 +f 27647 27651 27646 +f 6429 6425 27650 +f 27650 6425 27652 +f 27650 27652 27651 +f 27651 27652 27644 +f 27651 27644 27646 +f 27646 27644 27645 +f 6425 6431 27652 +f 27652 6431 6433 +f 27652 6433 6435 +f 6435 6437 27652 +f 27652 6437 6439 +f 27652 6439 6441 +f 27652 6441 27644 +f 27644 6441 6443 +f 27644 6443 6445 +f 4500 4499 6541 +f 6541 4499 6539 +f 4513 15203 15204 +f 15204 15203 15201 +f 15204 15201 15202 +f 15202 15201 15199 +f 15202 15199 15200 +f 15200 15199 15197 +f 15200 15197 15198 +f 15198 15197 15195 +f 15198 15195 15196 +f 15196 15195 15193 +f 15196 15193 15194 +f 15194 15193 15191 +f 15194 15191 15192 +f 15192 15191 15189 +f 15192 15189 15190 +f 15190 15189 4500 +f 4511 4509 15211 +f 15211 15210 15203 +f 15203 15210 15201 +f 4509 4507 15210 +f 15210 15209 15201 +f 15201 15209 15199 +f 15209 4506 15208 +f 15209 15208 15199 +f 15199 15208 15197 +f 4506 4505 15208 +f 15208 15207 15197 +f 15197 15207 15195 +f 15207 15206 15195 +f 15195 15206 15193 +f 15206 15205 15193 +f 15193 15205 15191 +f 15205 15188 15191 +f 15191 15188 15189 +f 6541 15220 15190 +f 15190 15220 15219 +f 15190 15219 15192 +f 15192 15219 15218 +f 15192 15218 15194 +f 15194 15218 15217 +f 15194 15217 15196 +f 15196 15217 15216 +f 15196 15216 15198 +f 15198 15216 15215 +f 15198 15215 15200 +f 15200 15215 15214 +f 15200 15214 15202 +f 15202 15214 15213 +f 15202 15213 15204 +f 15227 6542 15226 +f 15226 6542 6543 +f 15226 6543 15225 +f 15225 6543 6544 +f 15224 6544 6545 +f 15224 6545 15223 +f 15223 6545 6546 +f 15223 6546 15222 +f 15222 6546 6551 +f 15213 15214 15212 +f 15212 15214 15221 +f 15214 15215 15221 +f 15221 15215 15222 +f 15215 15216 15222 +f 15222 15216 15223 +f 15216 15217 15223 +f 15223 15217 15224 +f 15217 15218 15224 +f 15224 15218 15225 +f 15220 15227 15226 +f 15218 15219 15225 +f 15225 15219 15226 +f 15219 15220 15226 +f 6509 4513 6516 +f 6516 4513 6518 +f 6492 15251 6494 +f 6494 15251 15243 +f 6494 15243 15244 +f 15244 15243 15241 +f 15244 15241 15242 +f 15242 15241 15239 +f 15242 15239 15240 +f 15240 15239 15237 +f 15240 15237 15238 +f 15238 15237 15235 +f 15238 15235 15236 +f 15236 15235 15233 +f 15236 15233 15234 +f 15234 15233 15231 +f 15234 15231 15232 +f 15232 15231 15229 +f 15232 15229 15230 +f 15230 15229 6509 +f 15230 6509 6516 +f 6492 6496 15251 +f 15251 15250 15243 +f 15243 15250 15241 +f 15250 15249 15241 +f 15241 15249 15239 +f 6498 6500 15249 +f 15249 6500 15248 +f 15249 15248 15239 +f 15239 15248 15237 +f 6500 6502 15248 +f 15248 15247 15237 +f 15237 15247 15235 +f 15247 15246 15235 +f 15235 15246 15233 +f 15246 15245 15233 +f 15233 15245 15231 +f 15245 15228 15231 +f 15231 15228 15229 +f 6508 6509 15228 +f 6514 15275 6516 +f 15268 15267 15265 +f 15268 15265 15266 +f 15266 15265 15263 +f 15266 15263 15264 +f 15264 15263 15261 +f 15264 15261 15262 +f 15262 15261 15259 +f 15262 15259 15260 +f 15260 15259 15257 +f 15260 15257 15258 +f 15258 15257 15255 +f 15258 15255 15256 +f 15256 15255 15253 +f 15256 15253 15254 +f 15254 6536 6494 +f 15271 6526 6528 +f 15271 6528 6530 +f 15271 6530 15270 +f 15270 6530 6532 +f 15270 6532 15269 +f 15269 15252 15255 +f 15255 15252 15253 +f 6532 6534 15252 +f 15254 6494 15244 +f 15255 15257 15269 +f 15269 15257 15270 +f 15257 15259 15270 +f 15270 15259 15271 +f 15259 15261 15271 +f 15271 15261 15272 +f 15261 15263 15272 +f 15272 15263 15273 +f 15267 15275 15274 +f 15263 15265 15273 +f 15273 15265 15274 +f 15230 6516 15268 +f 15265 15267 15274 +f 15244 15242 15254 +f 15254 15242 15256 +f 15242 15240 15256 +f 15256 15240 15258 +f 15240 15238 15258 +f 15258 15238 15260 +f 15238 15236 15260 +f 15260 15236 15262 +f 15236 15234 15262 +f 15262 15234 15264 +f 15230 15268 15266 +f 15234 15232 15264 +f 15264 15232 15266 +f 15232 15230 15266 +f 6402 6494 6445 +f 6445 6494 6536 +f 4465 15289 15290 +f 15290 15289 15287 +f 15290 15287 15288 +f 15288 15287 15285 +f 15288 15285 15286 +f 15286 15285 15283 +f 15286 15283 15284 +f 15284 15283 15281 +f 15284 15281 15282 +f 15282 15281 15279 +f 15282 15279 15280 +f 15280 15279 15277 +f 15280 15277 15278 +f 15278 15277 6445 +f 15278 6445 15303 +f 15303 6445 6443 +f 15298 6417 15297 +f 15297 6417 6415 +f 15297 6415 15296 +f 15295 6411 15294 +f 15294 6411 6409 +f 15294 6409 15293 +f 15293 6409 6407 +f 15293 6407 15276 +f 15276 6402 15277 +f 15277 6402 6445 +f 15303 6441 15302 +f 15302 6441 6439 +f 15301 6439 6437 +f 15301 6437 15300 +f 15300 6437 6435 +f 15300 6435 15299 +f 15299 6435 6433 +f 15299 6433 15292 +f 15292 6433 6431 +f 15292 6431 15291 +f 15291 6431 6425 +f 15291 6425 15290 +f 15290 6425 4465 +f 15277 15279 15276 +f 15276 15279 15293 +f 15279 15281 15293 +f 15293 15281 15294 +f 15281 15283 15294 +f 15294 15283 15295 +f 15283 15285 15295 +f 15295 15285 15296 +f 15289 15298 15297 +f 15285 15287 15296 +f 15296 15287 15297 +f 15287 15289 15297 +f 15290 15288 15291 +f 15291 15288 15292 +f 15288 15286 15292 +f 15292 15286 15299 +f 15286 15284 15299 +f 15299 15284 15300 +f 15284 15282 15300 +f 15300 15282 15301 +f 15278 15303 15302 +f 15282 15280 15301 +f 15301 15280 15302 +f 15280 15278 15302 +f 4465 6425 4464 +f 4464 6425 6429 +f 6510 15335 4499 +f 4499 15335 15319 +f 15320 15319 15317 +f 15320 15317 15318 +f 15318 15317 15315 +f 15318 15315 15316 +f 15316 15315 15313 +f 15316 15313 15314 +f 15314 15313 15311 +f 15314 15311 15312 +f 15312 15311 15309 +f 15312 15309 15310 +f 15310 15309 15307 +f 15310 15307 15308 +f 15308 15307 15305 +f 15308 15305 15306 +f 15351 4464 6429 +f 15351 6429 15350 +f 15350 6429 15344 +f 15350 15344 15345 +f 15345 15344 15352 +f 15345 15352 15353 +f 15353 15352 15340 +f 15353 15340 15339 +f 15339 15340 6484 +f 15339 6484 6483 +f 6511 15333 6510 +f 15335 15334 15319 +f 15333 6511 15332 +f 15332 6512 15331 +f 15331 6513 15330 +f 15330 4458 15329 +f 15304 4460 4462 +f 15304 4462 4464 +f 6430 15342 6429 +f 6429 15342 15343 +f 6429 15343 15344 +f 15344 15343 15352 +f 6430 6489 15342 +f 15342 6489 15341 +f 15342 15341 15343 +f 15343 15341 15352 +f 6489 6487 15341 +f 15341 6487 15340 +f 15341 15340 15352 +f 6487 6484 15340 +f 15339 6483 15328 +f 15327 6537 6538 +f 15338 15336 15325 +f 15325 15336 15337 +f 15325 15337 15324 +f 15324 15337 15323 +f 15324 15323 15363 +f 15363 15323 15322 +f 15363 15322 15367 +f 15367 15322 15321 +f 15367 15321 15318 +f 15318 15321 15320 +f 6538 6539 15336 +f 4499 15322 6539 +f 6539 15322 15323 +f 6539 15323 15337 +f 15304 15305 15307 +f 15304 15307 15329 +f 15329 15307 15309 +f 15329 15309 15330 +f 15330 15309 15311 +f 15330 15311 15331 +f 15331 15311 15313 +f 15331 15313 15332 +f 15332 15313 15315 +f 15332 15315 15333 +f 15333 15315 15317 +f 15333 15317 15334 +f 15334 15317 15319 +f 4499 15321 15322 +f 15327 15338 15326 +f 15326 15338 15325 +f 15326 15325 15362 +f 15362 15325 15324 +f 15362 15324 15364 +f 15364 15324 15363 +f 15364 15363 15365 +f 15365 15363 15367 +f 15365 15367 15316 +f 15316 15367 15318 +f 15328 15327 15358 +f 15358 15327 15326 +f 15358 15326 15359 +f 15359 15326 15362 +f 15359 15362 15360 +f 15360 15362 15364 +f 15360 15364 15361 +f 15361 15364 15365 +f 15361 15365 15314 +f 15314 15365 15316 +f 15339 15328 15355 +f 15355 15328 15358 +f 15355 15358 15356 +f 15356 15358 15359 +f 15356 15359 15357 +f 15357 15359 15360 +f 15357 15360 15349 +f 15349 15360 15361 +f 15349 15361 15312 +f 15312 15361 15314 +f 15308 15306 15366 +f 15366 15306 15351 +f 15366 15351 15346 +f 15346 15351 15350 +f 15346 15350 15345 +f 15349 15312 15310 +f 15310 15308 15348 +f 15348 15308 15366 +f 15348 15366 15347 +f 15347 15366 15346 +f 15347 15346 15354 +f 15354 15346 15345 +f 15354 15345 15353 +f 15357 15349 15348 +f 15348 15349 15310 +f 15357 15348 15347 +f 15356 15357 15347 +f 15356 15347 15354 +f 15355 15356 15354 +f 15355 15354 15353 +f 15339 15355 15353 +f 6572 27653 6574 +f 6574 27653 27654 +f 6574 27654 6575 +f 6575 27654 27655 +f 6575 27655 6576 +f 6576 27655 6580 +f 6580 27655 6582 +f 6582 27655 6584 +f 6584 27655 6585 +f 6585 27655 6586 +f 6586 27655 6587 +f 6587 27655 27656 +f 6587 27656 6588 +f 6588 27656 6590 +f 6590 27656 6591 +f 6591 27656 6592 +f 6592 27656 6593 +f 6593 27656 27657 +f 6593 27657 6594 +f 6594 27657 6595 +f 6595 27657 4508 +f 4508 27657 4510 +f 4510 27657 4512 +f 4512 27657 4514 +f 4514 27657 27658 +f 4514 27658 4515 +f 4515 27658 27659 +f 4515 27659 6507 +f 6507 27659 6505 +f 6505 27659 6503 +f 6503 27659 6501 +f 6501 27659 6499 +f 6499 27659 6497 +f 6497 27659 27660 +f 6497 27660 6495 +f 6495 27660 6493 +f 6493 27660 6557 +f 6557 27660 6558 +f 6558 27660 6559 +f 6559 27660 27653 +f 6559 27653 6560 +f 6560 27653 6564 +f 6564 27653 6566 +f 6566 27653 6568 +f 6568 27653 6570 +f 6570 27653 6572 +f 27656 27655 27654 +f 27654 27653 27661 +f 27661 27653 27660 +f 27661 27660 27658 +f 27658 27660 27659 +f 27657 27656 27661 +f 27661 27656 27654 +f 27657 27661 27658 +f 6535 6616 27662 +f 27662 6616 6615 +f 27662 6615 6614 +f 27662 6614 27663 +f 27663 6614 6612 +f 27663 6612 6610 +f 6610 6608 27663 +f 27663 6608 6606 +f 27663 6606 6604 +f 6604 6596 27663 +f 27663 6596 6598 +f 27663 6598 27664 +f 27664 6598 6600 +f 27664 6600 27665 +f 27665 6600 6656 +f 27665 6656 6653 +f 6653 6651 27665 +f 27665 6651 6650 +f 27665 6650 6647 +f 6647 6646 27665 +f 27665 6646 6645 +f 27665 6645 27666 +f 27666 6645 6644 +f 27666 6644 6643 +f 6643 6617 27666 +f 27666 6617 6550 +f 27666 6550 6549 +f 27666 6549 27667 +f 27667 6549 6548 +f 27667 6548 6547 +f 6547 6552 27667 +f 27667 6552 6554 +f 27667 6554 6520 +f 6520 6519 27667 +f 27667 6519 27668 +f 27667 27668 27666 +f 27666 27668 27669 +f 27666 27669 27665 +f 27665 27669 27664 +f 6519 6515 27668 +f 27668 6515 27670 +f 27668 27670 27669 +f 27669 27670 27662 +f 27669 27662 27664 +f 27664 27662 27663 +f 6515 6521 27670 +f 27670 6521 6523 +f 27670 6523 6525 +f 6525 6527 27670 +f 27670 6527 6529 +f 27670 6529 6531 +f 27670 6531 27662 +f 27662 6531 6533 +f 27662 6533 6535 +f 6590 6591 6643 +f 6643 6591 6617 +f 6575 15383 15384 +f 15384 15383 15381 +f 15384 15381 15382 +f 15382 15381 15379 +f 15382 15379 15380 +f 15380 15379 15377 +f 15380 15377 15378 +f 15378 15377 15375 +f 15378 15375 15376 +f 15376 15375 15373 +f 15376 15373 15374 +f 15374 15373 15371 +f 15374 15371 15372 +f 15372 15371 15369 +f 15372 15369 15370 +f 6576 6580 15391 +f 15391 15390 15383 +f 15383 15390 15381 +f 6580 6582 15390 +f 15390 15389 15381 +f 15381 15389 15379 +f 6582 6584 15389 +f 15389 15388 15379 +f 15379 15388 15377 +f 15388 6585 15387 +f 15388 15387 15377 +f 15377 15387 15375 +f 15387 6586 15386 +f 15387 15386 15375 +f 15375 15386 15373 +f 6586 6587 15386 +f 15386 6587 15385 +f 15386 15385 15373 +f 15373 15385 15371 +f 6587 6588 15385 +f 15385 6588 15368 +f 15385 15368 15371 +f 15371 15368 15369 +f 6644 15407 6643 +f 6643 15407 15400 +f 15370 15400 15399 +f 15370 15399 15372 +f 15372 15399 15398 +f 15372 15398 15374 +f 15374 15398 15397 +f 15374 15397 15376 +f 15376 15397 15396 +f 15376 15396 15378 +f 15378 15396 15395 +f 15378 15395 15380 +f 15380 15395 15394 +f 15380 15394 15382 +f 15382 15394 15393 +f 15382 15393 15384 +f 15384 6600 6575 +f 15406 6645 15405 +f 15405 6646 15404 +f 15404 6646 6647 +f 15402 6650 6651 +f 15401 6651 6653 +f 15401 6653 15392 +f 15393 15394 15392 +f 15392 15394 15401 +f 15394 15395 15401 +f 15401 15395 15402 +f 15395 15396 15402 +f 15402 15396 15403 +f 15396 15397 15403 +f 15403 15397 15404 +f 15397 15398 15404 +f 15404 15398 15405 +f 15400 15407 15406 +f 15398 15399 15405 +f 15405 15399 15406 +f 15399 15400 15406 +f 6558 15431 6557 +f 15424 15423 15421 +f 15424 15421 15422 +f 15422 15421 15419 +f 15422 15419 15420 +f 15420 15419 15417 +f 15420 15417 15418 +f 15418 15417 15415 +f 15418 15415 15416 +f 15416 15415 15413 +f 15416 15413 15414 +f 15414 15413 15411 +f 15414 15411 15412 +f 15412 15411 15409 +f 15412 15409 15410 +f 15410 15409 6574 +f 15410 6574 6598 +f 6558 6559 15431 +f 15431 6559 15430 +f 15431 15430 15423 +f 15423 15430 15421 +f 15430 15429 15421 +f 15421 15429 15419 +f 15429 15428 15419 +f 15419 15428 15417 +f 6564 6566 15428 +f 15428 6566 15427 +f 15428 15427 15417 +f 15417 15427 15415 +f 15427 15426 15415 +f 15415 15426 15413 +f 15426 6570 15425 +f 15426 15425 15413 +f 15413 15425 15411 +f 6570 6572 15425 +f 15425 6572 15408 +f 15425 15408 15411 +f 15411 15408 15409 +f 15408 6574 15409 +f 6598 15447 15448 +f 15448 15447 15445 +f 15448 15445 15446 +f 15446 15445 15443 +f 15446 15443 15444 +f 15444 15443 15441 +f 15444 15441 15442 +f 15442 15441 15439 +f 15442 15439 15440 +f 15440 15439 15437 +f 15440 15437 15438 +f 15438 15437 15435 +f 15438 15435 15436 +f 15436 15435 15433 +f 15436 15433 15434 +f 15434 15433 6616 +f 15434 6616 6557 +f 15453 6604 6606 +f 15451 6608 6610 +f 15451 6610 6612 +f 15451 6612 15450 +f 15450 6612 6614 +f 15450 6614 15449 +f 15449 6614 15432 +f 15449 15432 15435 +f 15435 15432 15433 +f 6614 6615 15432 +f 15434 6557 15424 +f 15435 15437 15449 +f 15449 15437 15450 +f 15437 15439 15450 +f 15450 15439 15451 +f 15439 15441 15451 +f 15451 15441 15452 +f 15441 15443 15452 +f 15452 15443 15453 +f 15447 15455 15454 +f 15443 15445 15453 +f 15453 15445 15454 +f 15410 6598 15448 +f 15445 15447 15454 +f 15424 15422 15434 +f 15434 15422 15436 +f 15422 15420 15436 +f 15436 15420 15438 +f 15420 15418 15438 +f 15438 15418 15440 +f 15418 15416 15440 +f 15440 15416 15442 +f 15416 15414 15442 +f 15442 15414 15444 +f 15410 15448 15446 +f 15414 15412 15444 +f 15444 15412 15446 +f 15412 15410 15446 +f 6493 6557 6535 +f 6535 6557 6616 +f 4515 15469 15470 +f 15470 15469 15467 +f 15470 15467 15468 +f 15468 15467 15465 +f 15468 15465 15466 +f 15466 15465 15463 +f 15466 15463 15464 +f 15464 15463 15461 +f 15464 15461 15462 +f 15462 15461 15459 +f 15462 15459 15460 +f 15460 15459 15457 +f 15460 15457 15458 +f 15458 15457 6535 +f 15458 6535 15483 +f 15483 6535 6533 +f 15483 6533 6531 +f 15473 6499 6497 +f 15456 6497 6495 +f 15457 6493 6535 +f 15483 6531 15482 +f 15481 6529 6527 +f 15481 6527 15480 +f 15480 6527 6525 +f 15480 6525 15479 +f 15479 6525 6523 +f 15479 6523 15472 +f 15470 6515 4515 +f 15457 15459 15456 +f 15456 15459 15473 +f 15459 15461 15473 +f 15473 15461 15474 +f 15461 15463 15474 +f 15474 15463 15475 +f 15463 15465 15475 +f 15475 15465 15476 +f 15469 15478 15477 +f 15465 15467 15476 +f 15476 15467 15477 +f 15467 15469 15477 +f 15470 15468 15471 +f 15471 15468 15472 +f 15468 15466 15472 +f 15472 15466 15479 +f 15466 15464 15479 +f 15479 15464 15480 +f 15464 15462 15480 +f 15480 15462 15481 +f 15458 15483 15482 +f 15462 15460 15481 +f 15481 15460 15482 +f 15460 15458 15482 +f 4514 6515 6519 +f 6592 15515 6591 +f 6591 15515 15499 +f 15500 15499 15497 +f 15500 15497 15498 +f 15498 15497 15495 +f 15498 15495 15496 +f 15496 15495 15493 +f 15496 15493 15494 +f 15494 15493 15491 +f 15494 15491 15492 +f 15492 15491 15489 +f 15492 15489 15490 +f 15490 15489 15487 +f 15490 15487 15488 +f 15488 15487 15485 +f 15488 15485 15486 +f 15531 4514 6519 +f 15531 6519 15530 +f 15530 6519 15524 +f 15530 15524 15525 +f 15525 15524 15532 +f 15525 15532 15533 +f 15533 15532 15520 +f 15533 15520 15519 +f 15519 15520 6547 +f 15519 6547 6548 +f 6593 15513 6592 +f 6592 15513 15514 +f 6592 15514 15515 +f 15515 15514 15499 +f 15512 6594 15511 +f 15511 6595 15510 +f 15510 6595 4508 +f 15509 4510 15484 +f 6520 15522 6519 +f 6519 15522 15523 +f 6519 15523 15524 +f 15524 15523 15532 +f 6520 6554 15522 +f 15522 6554 15521 +f 15522 15521 15523 +f 15523 15521 15532 +f 6554 6552 15521 +f 15521 6552 15520 +f 15521 15520 15532 +f 6552 6547 15520 +f 15519 6548 15508 +f 15508 6548 6549 +f 15507 6549 6550 +f 15507 6550 15518 +f 15518 6550 15516 +f 15518 15516 15505 +f 15505 15516 15517 +f 15505 15517 15504 +f 15504 15517 15503 +f 15504 15503 15543 +f 15543 15503 15502 +f 15543 15502 15547 +f 15547 15502 15501 +f 15547 15501 15498 +f 15498 15501 15500 +f 6550 6617 15516 +f 15516 6617 15517 +f 6591 15502 6617 +f 6617 15503 15517 +f 15484 15485 15487 +f 15484 15487 15509 +f 15509 15487 15489 +f 15509 15489 15510 +f 15510 15489 15491 +f 15510 15491 15511 +f 15511 15491 15493 +f 15511 15493 15512 +f 15512 15493 15495 +f 15512 15495 15513 +f 15513 15495 15497 +f 15513 15497 15514 +f 15514 15497 15499 +f 15500 15501 6591 +f 6591 15501 15502 +f 15507 15518 15506 +f 15506 15518 15505 +f 15506 15505 15542 +f 15542 15505 15504 +f 15542 15504 15544 +f 15544 15504 15543 +f 15544 15543 15545 +f 15545 15543 15547 +f 15545 15547 15496 +f 15496 15547 15498 +f 15508 15507 15538 +f 15538 15507 15506 +f 15538 15506 15539 +f 15539 15506 15542 +f 15539 15542 15540 +f 15540 15542 15544 +f 15540 15544 15541 +f 15541 15544 15545 +f 15541 15545 15494 +f 15494 15545 15496 +f 15519 15508 15535 +f 15535 15508 15538 +f 15535 15538 15536 +f 15536 15538 15539 +f 15536 15539 15537 +f 15537 15539 15540 +f 15537 15540 15529 +f 15529 15540 15541 +f 15529 15541 15492 +f 15492 15541 15494 +f 15488 15486 15546 +f 15546 15486 15531 +f 15546 15531 15526 +f 15526 15531 15530 +f 15526 15530 15525 +f 15529 15492 15490 +f 15490 15488 15528 +f 15528 15488 15546 +f 15528 15546 15527 +f 15527 15546 15526 +f 15527 15526 15534 +f 15534 15526 15525 +f 15534 15525 15533 +f 15537 15529 15528 +f 15528 15529 15490 +f 15537 15528 15527 +f 15536 15537 15527 +f 15536 15527 15534 +f 15535 15536 15534 +f 15535 15534 15533 +f 15519 15535 15533 +f 6673 27671 6675 +f 6675 27671 27672 +f 6675 27672 6676 +f 6676 27672 27673 +f 6676 27673 6677 +f 6677 27673 6681 +f 6681 27673 6683 +f 6683 27673 6685 +f 6685 27673 6686 +f 6686 27673 6687 +f 6687 27673 6688 +f 6688 27673 27674 +f 6688 27674 6689 +f 6689 27674 6690 +f 6690 27674 6692 +f 6692 27674 6693 +f 6693 27674 6694 +f 6694 27674 27675 +f 6694 27675 6696 +f 6696 27675 6697 +f 6697 27675 6581 +f 6581 27675 6579 +f 6579 27675 6577 +f 6577 27675 6578 +f 6578 27675 27676 +f 6578 27676 6573 +f 6573 27676 27677 +f 6573 27677 6571 +f 6571 27677 6569 +f 6569 27677 6567 +f 6567 27677 6565 +f 6565 27677 6563 +f 6563 27677 6561 +f 6561 27677 27678 +f 6561 27678 6562 +f 6562 27678 6657 +f 6657 27678 6658 +f 6658 27678 6659 +f 6659 27678 6661 +f 6661 27678 27671 +f 6661 27671 6663 +f 6663 27671 6665 +f 6665 27671 6667 +f 6667 27671 6669 +f 6669 27671 6671 +f 6671 27671 6673 +f 27674 27673 27672 +f 27672 27671 27679 +f 27679 27671 27678 +f 27679 27678 27676 +f 27676 27678 27677 +f 27675 27674 27679 +f 27679 27674 27672 +f 27675 27679 27676 +f 6727 6720 27680 +f 27680 6720 6718 +f 27680 6718 6716 +f 27680 6716 27681 +f 27681 6716 6714 +f 27681 6714 6712 +f 6712 6710 27681 +f 27681 6710 6708 +f 27681 6708 6706 +f 6706 6698 27681 +f 27681 6698 6700 +f 27681 6700 27682 +f 27682 6700 6702 +f 27682 6702 27683 +f 27683 6702 6748 +f 27683 6748 6745 +f 6745 6743 27683 +f 27683 6743 6742 +f 27683 6742 6739 +f 6739 6738 27683 +f 27683 6738 6737 +f 27683 6737 27684 +f 27684 6737 6736 +f 27684 6736 6734 +f 6734 6733 27684 +f 27684 6733 6732 +f 27684 6732 6729 +f 27684 6729 27685 +f 27685 6729 6648 +f 27685 6648 6649 +f 6649 6652 27685 +f 27685 6652 6654 +f 27685 6654 6602 +f 6602 6601 27685 +f 27685 6601 27686 +f 27685 27686 27684 +f 27684 27686 27687 +f 27684 27687 27683 +f 27683 27687 27682 +f 6601 6597 27686 +f 27686 6597 27688 +f 27686 27688 27687 +f 27687 27688 27680 +f 27687 27680 27682 +f 27682 27680 27681 +f 6597 6603 27688 +f 27688 6603 6605 +f 27688 6605 6607 +f 6607 6609 27688 +f 27688 6609 6611 +f 27688 6611 6613 +f 27688 6613 27680 +f 27680 6613 6728 +f 27680 6728 6727 +f 6690 6692 6734 +f 6734 6692 6733 +f 6676 15571 15563 +f 15564 15563 15561 +f 15564 15561 15562 +f 15562 15561 15559 +f 15562 15559 15560 +f 15560 15559 15557 +f 15560 15557 15558 +f 15558 15557 15555 +f 15558 15555 15556 +f 15556 15555 15553 +f 15556 15553 15554 +f 15554 15553 15551 +f 15554 15551 15552 +f 15552 15551 15549 +f 15552 15549 15550 +f 15571 6681 15570 +f 15571 15570 15563 +f 15563 15570 15561 +f 6681 6683 15570 +f 15570 6683 15569 +f 15570 15569 15561 +f 15561 15569 15559 +f 6683 6685 15569 +f 15569 6685 15568 +f 15569 15568 15559 +f 15559 15568 15557 +f 15568 6686 15567 +f 15568 15567 15557 +f 15557 15567 15555 +f 15567 15566 15555 +f 15555 15566 15553 +f 15566 15565 15553 +f 15553 15565 15551 +f 15565 15548 15551 +f 15551 15548 15549 +f 15550 15580 15579 +f 15550 15579 15552 +f 15552 15579 15578 +f 15552 15578 15554 +f 15554 15578 15577 +f 15554 15577 15556 +f 15556 15577 15576 +f 15556 15576 15558 +f 15558 15576 15575 +f 15558 15575 15560 +f 15560 15575 15574 +f 15560 15574 15562 +f 15562 15574 15573 +f 15562 15573 15564 +f 15564 15573 6702 +f 15586 6737 15585 +f 15584 6739 15583 +f 15583 6742 15582 +f 15582 6742 6743 +f 15582 6743 15581 +f 15581 6743 6745 +f 15573 15574 15572 +f 15572 15574 15581 +f 15574 15575 15581 +f 15581 15575 15582 +f 15575 15576 15582 +f 15582 15576 15583 +f 15576 15577 15583 +f 15583 15577 15584 +f 15577 15578 15584 +f 15584 15578 15585 +f 15580 15587 15586 +f 15578 15579 15585 +f 15585 15579 15586 +f 15579 15580 15586 +f 6675 6676 6700 +f 6700 6676 6702 +f 6658 15603 15604 +f 15604 15603 15601 +f 15604 15601 15602 +f 15602 15601 15599 +f 15602 15599 15600 +f 15600 15599 15597 +f 15600 15597 15598 +f 15598 15597 15595 +f 15598 15595 15596 +f 15596 15595 15593 +f 15596 15593 15594 +f 15594 15593 15591 +f 15594 15591 15592 +f 15592 15591 15589 +f 15592 15589 15590 +f 15590 15589 6675 +f 15590 6675 6700 +f 6659 6661 15611 +f 15611 15610 15603 +f 15603 15610 15601 +f 6661 6663 15610 +f 15610 6663 15609 +f 15610 15609 15601 +f 15601 15609 15599 +f 6663 6665 15609 +f 15609 15608 15599 +f 15599 15608 15597 +f 15608 15607 15597 +f 15597 15607 15595 +f 15607 15606 15595 +f 15595 15606 15593 +f 15606 15605 15593 +f 15593 15605 15591 +f 6671 6673 15605 +f 15605 15588 15591 +f 15591 15588 15589 +f 6673 6675 15588 +f 6700 15635 15627 +f 15628 15627 15625 +f 15628 15625 15626 +f 15626 15625 15623 +f 15626 15623 15624 +f 15624 15623 15621 +f 15624 15621 15622 +f 15622 15621 15619 +f 15622 15619 15620 +f 15620 15619 15617 +f 15620 15617 15618 +f 15618 15617 15615 +f 15618 15615 15616 +f 15616 15615 15613 +f 15616 15613 15614 +f 15614 6720 6658 +f 15634 6698 6706 +f 15633 6706 6708 +f 15632 6710 15631 +f 15631 6710 6712 +f 15631 6712 6714 +f 15631 6714 15630 +f 15630 6714 6716 +f 15630 6716 15629 +f 15629 6716 15612 +f 15629 15612 15615 +f 15615 15612 15613 +f 15614 6658 15604 +f 15615 15617 15629 +f 15629 15617 15630 +f 15617 15619 15630 +f 15630 15619 15631 +f 15619 15621 15631 +f 15631 15621 15632 +f 15621 15623 15632 +f 15632 15623 15633 +f 15627 15635 15634 +f 15623 15625 15633 +f 15633 15625 15634 +f 15590 6700 15628 +f 15625 15627 15634 +f 15604 15602 15614 +f 15614 15602 15616 +f 15602 15600 15616 +f 15616 15600 15618 +f 15600 15598 15618 +f 15618 15598 15620 +f 15598 15596 15620 +f 15620 15596 15622 +f 15596 15594 15622 +f 15622 15594 15624 +f 15590 15628 15626 +f 15594 15592 15624 +f 15624 15592 15626 +f 15592 15590 15626 +f 6657 6658 6727 +f 6727 6658 6720 +f 6571 15658 6573 +f 6573 15658 15649 +f 6573 15649 15650 +f 15650 15649 15647 +f 15650 15647 15648 +f 15648 15647 15645 +f 15648 15645 15646 +f 15646 15645 15643 +f 15646 15643 15644 +f 15644 15643 15641 +f 15644 15641 15642 +f 15642 15641 15639 +f 15642 15639 15640 +f 15640 15639 15637 +f 15640 15637 15638 +f 15638 15637 6727 +f 15663 6728 6613 +f 15658 6571 15657 +f 15653 6561 15636 +f 15636 6562 6657 +f 15636 6657 15637 +f 15637 6657 6727 +f 15663 6613 15662 +f 15662 6613 6611 +f 15661 6611 6609 +f 15661 6609 15660 +f 15660 6609 6607 +f 15660 6607 15659 +f 15659 6607 6605 +f 15659 6605 15652 +f 15652 6605 6603 +f 15650 6597 6573 +f 15637 15639 15636 +f 15636 15639 15653 +f 15639 15641 15653 +f 15653 15641 15654 +f 15641 15643 15654 +f 15654 15643 15655 +f 15643 15645 15655 +f 15655 15645 15656 +f 15649 15658 15657 +f 15645 15647 15656 +f 15656 15647 15657 +f 15647 15649 15657 +f 15650 15648 15651 +f 15651 15648 15652 +f 15648 15646 15652 +f 15652 15646 15659 +f 15646 15644 15659 +f 15659 15644 15660 +f 15644 15642 15660 +f 15660 15642 15661 +f 15638 15663 15662 +f 15642 15640 15661 +f 15661 15640 15662 +f 15640 15638 15662 +f 6573 6597 6578 +f 6692 15695 15679 +f 6692 15679 15680 +f 15680 15679 15677 +f 15680 15677 15678 +f 15678 15677 15675 +f 15678 15675 15676 +f 15676 15675 15673 +f 15676 15673 15674 +f 15674 15673 15671 +f 15674 15671 15672 +f 15672 15671 15669 +f 15672 15669 15670 +f 15670 15669 15667 +f 15670 15667 15668 +f 15668 15667 15665 +f 15668 15665 15666 +f 15711 6578 6601 +f 15711 6601 15710 +f 15710 15704 15705 +f 15705 15704 15712 +f 15705 15712 15713 +f 15713 15712 15700 +f 15713 15700 15699 +f 6694 15693 6693 +f 6693 15693 15694 +f 6693 15694 15695 +f 15695 15694 15679 +f 15693 6694 15692 +f 15692 6694 6696 +f 15691 6697 15690 +f 15690 6581 15689 +f 15689 6581 6579 +f 15664 6577 6578 +f 15704 15703 15712 +f 6602 6654 15702 +f 15702 6654 15701 +f 15702 15701 15703 +f 15703 15701 15712 +f 15701 15700 15712 +f 6652 6649 15700 +f 15699 6648 15688 +f 15688 6729 15687 +f 15687 6732 15698 +f 15698 6732 15696 +f 15698 15696 15685 +f 15685 15696 15697 +f 15685 15697 15684 +f 15684 15697 15683 +f 15684 15683 15723 +f 15723 15683 15682 +f 15723 15682 15727 +f 15727 15682 15681 +f 15727 15681 15678 +f 15678 15681 15680 +f 6692 15682 6733 +f 6733 15682 15683 +f 6578 15665 15664 +f 15664 15665 15667 +f 15664 15667 15689 +f 15689 15667 15669 +f 15689 15669 15690 +f 15690 15669 15671 +f 15690 15671 15691 +f 15691 15671 15673 +f 15691 15673 15692 +f 15692 15673 15675 +f 15692 15675 15693 +f 15693 15675 15677 +f 15693 15677 15694 +f 15694 15677 15679 +f 15680 15681 6692 +f 6692 15681 15682 +f 15687 15698 15686 +f 15686 15698 15685 +f 15686 15685 15722 +f 15722 15685 15684 +f 15722 15684 15724 +f 15724 15684 15723 +f 15724 15723 15725 +f 15725 15723 15727 +f 15725 15727 15676 +f 15676 15727 15678 +f 15688 15687 15718 +f 15718 15687 15686 +f 15718 15686 15719 +f 15719 15686 15722 +f 15719 15722 15720 +f 15720 15722 15724 +f 15720 15724 15721 +f 15721 15724 15725 +f 15721 15725 15674 +f 15674 15725 15676 +f 15699 15688 15715 +f 15715 15688 15718 +f 15715 15718 15716 +f 15716 15718 15719 +f 15716 15719 15717 +f 15717 15719 15720 +f 15717 15720 15709 +f 15709 15720 15721 +f 15709 15721 15672 +f 15672 15721 15674 +f 15668 15666 15726 +f 15726 15666 15711 +f 15726 15711 15706 +f 15706 15711 15710 +f 15706 15710 15705 +f 15709 15672 15670 +f 15670 15668 15708 +f 15708 15668 15726 +f 15708 15726 15707 +f 15707 15726 15706 +f 15707 15706 15714 +f 15714 15706 15705 +f 15714 15705 15713 +f 15717 15709 15708 +f 15708 15709 15670 +f 15717 15708 15707 +f 15716 15717 15707 +f 15716 15707 15714 +f 15715 15716 15714 +f 15715 15714 15713 +f 15699 15715 15713 +f 6758 27689 6759 +f 6759 27689 27690 +f 6759 27690 6760 +f 6760 27690 27691 +f 6760 27691 6761 +f 6761 27691 6762 +f 6762 27691 6763 +f 6763 27691 6764 +f 6764 27691 6766 +f 6766 27691 6767 +f 6767 27691 6768 +f 6768 27691 27692 +f 6768 27692 6769 +f 6769 27692 6770 +f 6770 27692 6771 +f 6771 27692 6772 +f 6772 27692 6774 +f 6774 27692 27693 +f 6774 27693 6775 +f 6775 27693 6776 +f 6776 27693 6682 +f 6682 27693 6680 +f 6680 27693 6678 +f 6678 27693 6679 +f 6679 27693 27694 +f 6679 27694 6674 +f 6674 27694 27695 +f 6674 27695 6672 +f 6672 27695 6670 +f 6670 27695 6668 +f 6668 27695 6666 +f 6666 27695 6664 +f 6664 27695 6662 +f 6662 27695 27696 +f 6662 27696 6660 +f 6660 27696 6749 +f 6749 27696 6750 +f 6750 27696 6751 +f 6751 27696 6752 +f 6752 27696 27689 +f 6752 27689 6753 +f 6753 27689 6754 +f 6754 27689 6755 +f 6755 27689 6756 +f 6756 27689 6757 +f 6757 27689 6758 +f 27692 27691 27690 +f 27690 27689 27697 +f 27697 27689 27696 +f 27697 27696 27694 +f 27694 27696 27695 +f 27693 27692 27697 +f 27697 27692 27690 +f 27693 27697 27694 +f 6719 6792 27698 +f 27698 6792 6791 +f 27698 6791 6790 +f 27698 6790 27699 +f 27699 6790 6789 +f 27699 6789 6788 +f 6788 6787 27699 +f 27699 6787 6786 +f 27699 6786 6785 +f 6785 6777 27699 +f 27699 6777 6778 +f 27699 6778 27700 +f 27700 6778 6780 +f 27700 6780 27701 +f 27701 6780 6782 +f 27701 6782 6784 +f 6784 6804 27701 +f 27701 6804 6803 +f 27701 6803 6802 +f 6802 6800 27701 +f 27701 6800 6799 +f 27701 6799 27702 +f 27702 6799 6798 +f 27702 6798 6797 +f 6797 6795 27702 +f 27702 6795 6794 +f 27702 6794 6793 +f 27702 6793 27703 +f 27703 6793 6740 +f 27703 6740 6741 +f 6741 6744 27703 +f 27703 6744 6746 +f 27703 6746 6704 +f 6704 6703 27703 +f 27703 6703 27704 +f 27703 27704 27702 +f 27702 27704 27705 +f 27702 27705 27701 +f 27701 27705 27700 +f 6703 6699 27704 +f 27704 6699 27706 +f 27704 27706 27705 +f 27705 27706 27698 +f 27705 27698 27700 +f 27700 27698 27699 +f 6699 6705 27706 +f 27706 6705 6707 +f 27706 6707 6709 +f 6709 6711 27706 +f 27706 6711 6713 +f 27706 6713 6715 +f 27706 6715 27698 +f 27698 6715 6717 +f 27698 6717 6719 +f 6770 6771 6797 +f 6797 6771 6795 +f 6760 15751 15743 +f 6760 15743 15744 +f 15744 15743 15741 +f 15744 15741 15742 +f 15742 15741 15739 +f 15742 15739 15740 +f 15740 15739 15737 +f 15740 15737 15738 +f 15738 15737 15735 +f 15738 15735 15736 +f 15736 15735 15733 +f 15736 15733 15734 +f 15734 15733 15731 +f 15734 15731 15732 +f 15732 15731 15729 +f 15732 15729 15730 +f 15730 15729 6770 +f 15730 6770 6797 +f 6761 6762 15751 +f 15751 15750 15743 +f 15743 15750 15741 +f 15750 6763 15749 +f 15750 15749 15741 +f 15741 15749 15739 +f 6763 6764 15749 +f 15749 15748 15739 +f 15739 15748 15737 +f 15748 6766 15747 +f 15748 15747 15737 +f 15737 15747 15735 +f 6766 6767 15747 +f 15747 6767 15746 +f 15747 15746 15735 +f 15735 15746 15733 +f 6767 6768 15746 +f 15746 15745 15733 +f 15733 15745 15731 +f 15745 6769 15728 +f 15745 15728 15731 +f 15731 15728 15729 +f 6769 6770 15728 +f 15728 6770 15729 +f 6798 15767 6797 +f 6797 15767 15760 +f 15730 15760 15759 +f 15730 15759 15732 +f 15732 15759 15758 +f 15732 15758 15734 +f 15734 15758 15757 +f 15734 15757 15736 +f 15736 15757 15756 +f 15736 15756 15738 +f 15738 15756 15755 +f 15738 15755 15740 +f 15740 15755 15754 +f 15740 15754 15742 +f 15742 15754 15753 +f 15742 15753 15744 +f 15767 6798 15766 +f 15766 6798 6799 +f 15765 6799 6800 +f 15764 6802 15763 +f 15763 6802 6803 +f 15763 6803 15762 +f 15761 6804 6784 +f 15752 6782 6780 +f 15753 15754 15752 +f 15752 15754 15761 +f 15754 15755 15761 +f 15761 15755 15762 +f 15755 15756 15762 +f 15762 15756 15763 +f 15756 15757 15763 +f 15763 15757 15764 +f 15757 15758 15764 +f 15764 15758 15765 +f 15760 15767 15766 +f 15758 15759 15765 +f 15765 15759 15766 +f 15759 15760 15766 +f 6750 15783 15784 +f 15784 15783 15781 +f 15784 15781 15782 +f 15782 15781 15779 +f 15782 15779 15780 +f 15780 15779 15777 +f 15780 15777 15778 +f 15778 15777 15775 +f 15778 15775 15776 +f 15776 15775 15773 +f 15776 15773 15774 +f 15774 15773 15771 +f 15774 15771 15772 +f 15772 15771 15769 +f 15772 15769 15770 +f 15770 6759 6778 +f 6751 6752 15791 +f 15791 6752 15790 +f 15791 15790 15783 +f 15783 15790 15781 +f 6752 6753 15790 +f 15790 6753 15789 +f 15790 15789 15781 +f 15781 15789 15779 +f 6753 6754 15789 +f 15789 15788 15779 +f 15779 15788 15777 +f 15788 6755 15787 +f 15788 15787 15777 +f 15777 15787 15775 +f 15787 15786 15775 +f 15775 15786 15773 +f 15786 6757 15785 +f 15786 15785 15773 +f 15773 15785 15771 +f 6757 6758 15785 +f 15785 6758 15768 +f 15785 15768 15771 +f 15771 15768 15769 +f 6777 15815 6778 +f 6778 15807 15808 +f 15808 15807 15805 +f 15808 15805 15806 +f 15806 15805 15803 +f 15806 15803 15804 +f 15804 15803 15801 +f 15804 15801 15802 +f 15802 15801 15799 +f 15802 15799 15800 +f 15800 15799 15797 +f 15800 15797 15798 +f 15798 15797 15795 +f 15798 15795 15796 +f 15796 15795 15793 +f 15796 15793 15794 +f 15794 6792 6750 +f 15815 6777 15814 +f 15814 6777 6785 +f 15814 6785 15813 +f 15813 6785 6786 +f 15813 6786 15812 +f 15812 6787 15811 +f 15811 6787 6788 +f 15811 6788 6789 +f 15811 6789 15810 +f 15810 6789 6790 +f 15810 6790 15809 +f 15809 6790 15792 +f 15809 15792 15795 +f 15795 15792 15793 +f 6790 6791 15792 +f 15792 6791 6792 +f 15792 6792 15793 +f 15794 6750 15784 +f 15795 15797 15809 +f 15809 15797 15810 +f 15797 15799 15810 +f 15810 15799 15811 +f 15799 15801 15811 +f 15811 15801 15812 +f 15801 15803 15812 +f 15812 15803 15813 +f 15807 15815 15814 +f 15803 15805 15813 +f 15813 15805 15814 +f 15770 6778 15808 +f 15805 15807 15814 +f 15784 15782 15794 +f 15794 15782 15796 +f 15782 15780 15796 +f 15796 15780 15798 +f 15780 15778 15798 +f 15798 15778 15800 +f 15778 15776 15800 +f 15800 15776 15802 +f 15776 15774 15802 +f 15802 15774 15804 +f 15770 15808 15806 +f 15774 15772 15804 +f 15804 15772 15806 +f 15772 15770 15806 +f 6749 6750 6719 +f 6719 6750 6792 +f 6672 15838 6674 +f 6674 15838 15829 +f 6674 15829 15830 +f 15830 15829 15827 +f 15830 15827 15828 +f 15828 15827 15825 +f 15828 15825 15826 +f 15826 15825 15823 +f 15826 15823 15824 +f 15824 15823 15821 +f 15824 15821 15822 +f 15822 15821 15819 +f 15822 15819 15820 +f 15820 15819 15817 +f 15820 15817 15818 +f 15818 15817 6719 +f 15837 6672 6670 +f 15837 6670 15836 +f 15834 6666 6664 +f 15833 6662 15816 +f 15816 6662 6660 +f 15817 6749 6719 +f 15841 6713 6711 +f 15841 6711 15840 +f 15840 6711 6709 +f 15840 6709 15839 +f 15839 6709 6707 +f 15839 6707 15832 +f 15830 6699 6674 +f 15817 15819 15816 +f 15816 15819 15833 +f 15819 15821 15833 +f 15833 15821 15834 +f 15821 15823 15834 +f 15834 15823 15835 +f 15823 15825 15835 +f 15835 15825 15836 +f 15829 15838 15837 +f 15825 15827 15836 +f 15836 15827 15837 +f 15827 15829 15837 +f 15830 15828 15831 +f 15831 15828 15832 +f 15828 15826 15832 +f 15832 15826 15839 +f 15826 15824 15839 +f 15839 15824 15840 +f 15824 15822 15840 +f 15840 15822 15841 +f 15818 15843 15842 +f 15822 15820 15841 +f 15841 15820 15842 +f 15820 15818 15842 +f 6771 15859 15860 +f 15860 15859 15857 +f 15860 15857 15858 +f 15858 15857 15855 +f 15858 15855 15856 +f 15856 15855 15853 +f 15856 15853 15854 +f 15854 15853 15851 +f 15854 15851 15852 +f 15852 15851 15849 +f 15852 15849 15850 +f 15850 15849 15847 +f 15850 15847 15848 +f 15848 15847 15845 +f 15848 15845 15846 +f 15846 6679 15891 +f 15891 6679 6703 +f 15891 6703 15890 +f 15890 6703 15884 +f 15890 15884 15885 +f 15885 15884 15892 +f 15885 15892 15893 +f 15893 15892 15880 +f 15893 15880 15879 +f 15879 6741 6740 +f 6774 15873 6772 +f 15875 15874 15859 +f 15872 6774 6775 +f 15872 6775 15871 +f 15871 6775 6776 +f 15871 6776 15870 +f 15870 6776 6682 +f 15870 6682 15869 +f 15869 6680 15844 +f 15844 6680 6678 +f 6703 15882 15883 +f 6703 15883 15884 +f 15884 15883 15892 +f 6704 6746 15882 +f 15882 6746 15881 +f 15882 15881 15883 +f 15883 15881 15892 +f 6746 6744 15881 +f 15881 6744 15880 +f 15881 15880 15892 +f 6744 6741 15880 +f 15879 6740 15868 +f 15868 6740 6793 +f 15868 6793 15867 +f 15867 6793 6794 +f 15867 6794 15878 +f 15878 15876 15865 +f 15865 15876 15877 +f 15865 15877 15864 +f 15864 15877 15863 +f 15864 15863 15903 +f 15903 15863 15862 +f 15903 15862 15907 +f 15907 15862 15861 +f 15907 15861 15858 +f 15858 15861 15860 +f 6771 15862 6795 +f 6795 15863 15877 +f 6679 15845 15844 +f 15844 15845 15847 +f 15844 15847 15869 +f 15869 15847 15849 +f 15869 15849 15870 +f 15870 15849 15851 +f 15870 15851 15871 +f 15871 15851 15853 +f 15871 15853 15872 +f 15872 15853 15855 +f 15872 15855 15873 +f 15873 15855 15857 +f 15873 15857 15874 +f 15874 15857 15859 +f 6771 15861 15862 +f 15867 15878 15866 +f 15866 15878 15865 +f 15866 15865 15902 +f 15902 15865 15864 +f 15902 15864 15904 +f 15904 15864 15903 +f 15904 15903 15905 +f 15905 15903 15907 +f 15905 15907 15856 +f 15856 15907 15858 +f 15868 15867 15898 +f 15898 15867 15866 +f 15898 15866 15899 +f 15899 15866 15902 +f 15899 15902 15900 +f 15900 15902 15904 +f 15900 15904 15901 +f 15901 15904 15905 +f 15901 15905 15854 +f 15854 15905 15856 +f 15879 15868 15895 +f 15895 15868 15898 +f 15895 15898 15896 +f 15896 15898 15899 +f 15896 15899 15897 +f 15897 15899 15900 +f 15897 15900 15889 +f 15889 15900 15901 +f 15889 15901 15852 +f 15852 15901 15854 +f 15848 15846 15906 +f 15906 15846 15891 +f 15906 15891 15886 +f 15886 15891 15890 +f 15886 15890 15885 +f 15889 15852 15850 +f 15850 15848 15888 +f 15888 15848 15906 +f 15888 15906 15887 +f 15887 15906 15886 +f 15887 15886 15894 +f 15894 15886 15885 +f 15894 15885 15893 +f 15897 15889 15888 +f 15888 15889 15850 +f 15897 15888 15887 +f 15896 15897 15887 +f 15896 15887 15894 +f 15895 15896 15894 +f 15895 15894 15893 +f 15879 15895 15893 +f 4154 4153 4155 +f 4155 4153 4152 +f 4155 4152 4151 +f 4151 4150 4155 +f 4155 4150 27707 +f 4155 27707 4157 +f 4157 27707 27708 +f 4157 27708 27709 +f 27709 27708 27710 +f 27709 27710 27711 +f 27711 27710 27712 +f 27711 27712 27713 +f 27713 27712 27714 +f 27713 27714 27715 +f 27715 27714 27716 +f 27715 27716 27717 +f 27717 27716 27718 +f 27717 27718 27719 +f 27719 27718 27720 +f 27719 27720 27721 +f 27721 27720 4179 +f 27721 4179 3935 +f 3935 4179 3937 +f 3937 4179 3938 +f 3938 4179 4007 +f 4007 4179 4006 +f 4006 4179 4174 +f 4150 4119 27707 +f 27707 4119 4097 +f 27707 4097 4099 +f 27707 4099 27722 +f 27722 4099 4101 +f 27722 4101 27723 +f 27723 4101 27724 +f 27723 27724 27712 +f 27712 27724 27714 +f 4101 4103 27724 +f 27724 4103 27725 +f 27724 27725 27714 +f 27714 27725 27716 +f 4103 4104 27725 +f 27725 4104 4105 +f 27725 4105 4186 +f 4186 4185 27725 +f 27725 4185 27726 +f 27725 27726 27716 +f 27716 27726 27718 +f 4185 4184 27726 +f 27726 4184 4183 +f 27726 4183 4182 +f 4182 4181 27726 +f 27726 4181 4180 +f 27726 4180 27718 +f 27718 4180 27720 +f 4180 4179 27720 +f 3933 3931 3935 +f 3935 3931 3928 +f 3935 3928 27721 +f 27721 3928 27719 +f 3928 3926 27719 +f 27719 3926 27717 +f 27717 3926 27715 +f 27715 3926 3919 +f 27715 3919 27713 +f 27713 3919 27711 +f 4171 4170 3919 +f 3919 4170 4169 +f 3919 4169 27711 +f 27711 4169 4163 +f 27711 4163 4159 +f 4168 4165 4169 +f 4169 4165 4163 +f 4165 4164 4163 +f 27711 4159 27709 +f 27709 4159 4157 +f 27708 27707 27722 +f 27712 27710 27723 +f 27723 27710 27722 +f 27710 27708 27722 +f 3561 4215 27727 +f 27727 4215 4214 +f 27727 4214 4210 +f 4210 4209 27727 +f 27727 4209 4208 +f 27727 4208 4207 +f 4207 4206 27727 +f 27727 4206 4187 +f 27727 4187 4189 +f 4189 4191 27727 +f 27727 4191 27728 +f 27727 27728 27729 +f 27729 27728 27730 +f 27729 27730 27731 +f 27731 27730 4029 +f 27731 4029 4031 +f 4191 4195 27728 +f 27728 4195 27732 +f 27728 27732 27730 +f 27730 27732 4205 +f 27730 4205 4029 +f 4195 4197 27732 +f 27732 4197 4198 +f 27732 4198 4199 +f 27732 4199 4203 +f 4203 4199 4201 +f 4203 4201 4202 +f 4203 4204 27732 +f 27732 4204 4205 +f 27731 4031 4224 +f 4224 4031 4035 +f 4224 4035 4036 +f 4038 4226 4036 +f 4036 4226 3538 +f 4036 3538 3537 +f 4038 4040 4226 +f 3537 4225 4036 +f 4036 4225 4224 +f 4224 4222 27731 +f 27731 4222 27733 +f 27731 27733 27729 +f 27729 27733 27734 +f 27729 27734 27727 +f 27727 27734 3561 +f 27733 4222 27735 +f 27735 4222 4219 +f 27735 4219 4218 +f 4218 4217 27735 +f 27735 4217 3554 +f 27735 3554 27734 +f 27734 3554 3555 +f 27734 3555 3556 +f 3556 3557 27734 +f 27734 3557 3558 +f 27734 3558 3560 +f 3560 3561 27734 +f 27733 27735 27734 +f 4205 3926 4029 +f 4163 11887 4159 +f 4159 11887 11882 +f 4159 11882 11881 +f 11881 11882 11892 +f 11881 11892 11879 +f 11879 11892 11878 +f 11879 11878 4199 +f 4201 11878 4202 +f 4202 11877 4203 +f 4203 11877 11888 +f 4203 11888 4204 +f 4204 11888 4205 +f 4205 11888 11875 +f 4205 11875 11874 +f 11874 11875 11889 +f 11874 11889 11886 +f 11886 11889 11885 +f 11886 11885 4169 +f 4165 11884 4164 +f 4164 11887 4163 +f 4169 4170 11886 +f 11886 4170 11873 +f 11886 11873 11874 +f 11874 11873 4171 +f 11874 4171 4205 +f 4205 4171 3919 +f 4170 4171 11873 +f 4199 4198 11879 +f 11879 4198 11880 +f 11879 11880 11881 +f 11881 11880 4197 +f 11881 4197 4159 +f 4159 4197 4195 +f 4198 4197 11880 +f 11882 11887 11883 +f 11883 11887 11884 +f 11883 11884 11890 +f 11890 11884 11885 +f 11890 11885 11889 +f 11882 11883 11892 +f 11892 11883 11891 +f 11892 11891 11878 +f 11878 11891 11877 +f 11891 11883 11890 +f 11891 11890 11876 +f 11876 11890 11889 +f 11876 11889 11875 +f 11888 11877 11876 +f 11876 11877 11891 +f 11888 11876 11875 +f 4097 11907 4099 +f 4099 11907 11902 +f 4099 11902 11901 +f 11901 11902 11912 +f 11901 11912 11899 +f 11899 11912 11898 +f 4209 11898 4208 +f 4208 11898 4207 +f 4207 11897 4206 +f 4187 11908 4189 +f 4189 11908 11895 +f 4189 11895 11894 +f 11894 11895 11909 +f 11894 11909 11906 +f 11906 11909 11905 +f 11906 11905 4152 +f 4152 11905 4151 +f 4151 11905 4150 +f 4152 4153 11906 +f 11906 11893 11894 +f 11894 11893 4154 +f 11894 4154 4189 +f 4189 4154 4155 +f 11899 4210 11900 +f 11899 11900 11901 +f 11901 11900 4214 +f 11901 4214 4099 +f 4099 4214 4215 +f 11902 11907 11903 +f 11903 11907 11904 +f 11903 11904 11910 +f 11910 11904 11905 +f 11910 11905 11909 +f 11902 11903 11912 +f 11912 11903 11911 +f 11912 11911 11898 +f 11898 11911 11897 +f 11911 11903 11910 +f 11911 11910 11896 +f 11896 11910 11909 +f 11896 11909 11895 +f 11908 11897 11896 +f 11896 11897 11911 +f 11908 11896 11895 +f 4103 4101 3560 +f 4182 11927 4181 +f 4181 11927 11922 +f 4181 11922 11921 +f 11921 11922 11932 +f 11921 11932 11919 +f 11919 11932 11918 +f 3556 11918 11917 +f 3558 11928 3560 +f 3560 11928 11915 +f 3560 11915 11914 +f 11914 11915 11929 +f 11914 11929 11926 +f 11926 11929 11925 +f 11926 11925 4186 +f 4186 11925 4185 +f 4185 11925 4184 +f 4184 11925 11924 +f 4184 11924 4183 +f 4183 11924 11927 +f 4186 4105 11926 +f 11926 11913 11914 +f 11914 11913 4104 +f 11914 4104 3560 +f 3560 4104 4103 +f 4105 4104 11913 +f 3554 4217 11919 +f 11919 4217 11920 +f 11919 11920 11921 +f 11921 11920 4181 +f 4217 4218 11920 +f 11920 4218 4181 +f 4218 4219 4181 +f 11922 11927 11923 +f 11923 11927 11924 +f 11923 11924 11930 +f 11930 11924 11925 +f 11930 11925 11929 +f 11922 11923 11932 +f 11932 11923 11931 +f 11932 11931 11918 +f 11918 11931 11917 +f 11931 11923 11930 +f 11931 11930 11916 +f 11916 11930 11929 +f 11916 11929 11915 +f 11928 11917 11916 +f 11916 11917 11931 +f 11928 11916 11915 +f 4179 4180 4224 +f 4224 4180 4222 +f 4222 4180 4219 +f 4219 4180 4181 +f 3931 11941 3928 +f 3928 11941 11940 +f 3928 11940 11939 +f 11939 11940 11938 +f 4036 11938 4038 +f 4038 11938 11937 +f 3537 11935 4225 +f 4225 11935 4224 +f 4224 11935 11934 +f 4224 11934 11933 +f 11933 11934 11944 +f 3938 11944 11943 +f 3937 11943 11942 +f 3933 11941 3931 +f 11933 4174 4224 +f 4174 4179 4224 +f 4036 4035 11939 +f 11939 4035 3928 +f 4035 4031 3928 +f 11940 11941 11947 +f 11947 11941 11942 +f 11947 11942 11946 +f 11946 11942 11943 +f 11946 11943 11945 +f 11945 11943 11944 +f 11945 11944 11934 +f 11937 11938 11947 +f 11947 11938 11940 +f 11937 11947 11946 +f 11936 11937 11946 +f 11936 11946 11945 +f 11935 11936 11945 +f 11935 11945 11934 +f 3910 27736 3908 +f 3908 27736 3951 +f 3908 3951 3950 +f 3912 3918 3910 +f 3910 3918 3920 +f 3910 3920 3922 +f 3918 3912 3916 +f 3916 3912 3913 +f 3916 3913 3915 +f 3910 3922 27737 +f 27737 3922 3923 +f 27737 3923 3925 +f 27737 3925 27738 +f 27738 3925 3929 +f 27738 3929 3930 +f 27738 3930 27739 +f 27739 3930 3932 +f 27739 3932 4010 +f 4010 4008 27739 +f 27739 4008 4005 +f 27739 4005 4003 +f 27739 4003 27740 +f 27740 4003 3983 +f 27740 3983 3982 +f 27740 3982 27741 +f 27741 3982 3981 +f 27741 3981 27742 +f 27742 3981 3962 +f 27742 3962 3784 +f 3784 3962 3778 +f 3784 3778 3783 +f 3783 3778 3777 +f 3962 3961 3778 +f 3778 3961 3960 +f 3778 3960 3779 +f 3779 3960 3958 +f 3779 3958 3780 +f 3780 3958 3957 +f 3780 3957 3955 +f 3955 3957 3956 +f 27742 3784 27741 +f 27741 3784 3786 +f 27741 3786 27743 +f 27743 3786 27744 +f 27743 27744 27739 +f 27739 27744 27738 +f 3786 3788 27744 +f 27744 3788 3951 +f 27744 3951 27736 +f 3793 3798 3788 +f 3788 3798 3953 +f 3788 3953 3952 +f 3952 3951 3788 +f 3950 3939 3908 +f 3910 27737 27736 +f 27736 27737 27738 +f 27736 27738 27744 +f 27740 27741 27743 +f 27740 27743 27739 +f 4016 4012 27745 +f 27745 4012 4014 +f 27745 4014 27746 +f 27746 4014 27747 +f 27746 27747 27748 +f 27748 27747 3690 +f 27748 3690 3688 +f 4014 4096 27747 +f 27747 4096 4095 +f 27747 4095 4094 +f 4094 4093 27747 +f 27747 4093 4092 +f 27747 4092 3690 +f 3688 3685 27748 +f 27748 3685 3680 +f 27748 3680 27749 +f 27749 3680 3678 +f 27749 3678 27750 +f 27750 3678 3712 +f 27750 3712 4082 +f 4082 3712 4083 +f 4083 3712 4086 +f 4086 3712 4087 +f 4087 3712 4088 +f 4088 3712 4089 +f 4089 3712 4090 +f 4090 3712 3226 +f 3226 3712 3227 +f 4082 4081 27750 +f 27750 4081 4066 +f 27750 4066 27751 +f 27751 4066 4065 +f 27751 4065 4064 +f 4054 27752 4064 +f 4064 27752 27753 +f 4064 27753 27751 +f 27751 27753 27750 +f 4054 4043 27752 +f 27752 4043 4053 +f 27752 4053 4052 +f 4052 4039 27752 +f 27752 4039 4037 +f 27752 4037 27754 +f 27754 4037 4034 +f 27754 4034 4032 +f 4032 4028 27754 +f 27754 4028 27745 +f 27754 27745 27755 +f 27755 27745 27746 +f 27755 27746 27748 +f 4028 4026 27745 +f 27745 4026 4024 +f 27745 4024 4022 +f 4022 4021 27745 +f 27745 4021 4020 +f 27745 4020 4019 +f 4019 4017 27745 +f 27745 4017 4016 +f 27753 27752 27754 +f 27753 27754 27755 +f 27749 27750 27753 +f 27748 27749 27755 +f 27755 27749 27753 +f 3783 11816 3784 +f 3784 11816 11815 +f 3784 11815 11814 +f 11814 11815 11813 +f 11814 11813 3227 +f 4090 11813 11812 +f 4087 11812 11811 +f 4086 11811 4083 +f 4083 11810 4082 +f 4081 11810 4066 +f 4066 11810 11809 +f 4066 11809 11808 +f 11808 11809 11819 +f 11808 11819 3958 +f 3958 11819 3957 +f 3957 11819 3956 +f 3955 11818 3780 +f 3780 11818 3779 +f 3779 11817 3778 +f 3778 11817 3777 +f 3777 11817 11816 +f 3777 11816 3783 +f 11808 3961 4066 +f 4066 3961 3962 +f 3227 3712 11814 +f 11814 3712 3784 +f 3712 3678 3784 +f 11815 11816 11822 +f 11822 11816 11817 +f 11822 11817 11821 +f 11821 11817 11818 +f 11821 11818 11820 +f 11820 11818 11819 +f 11820 11819 11809 +f 11812 11813 11822 +f 11822 11813 11815 +f 11812 11822 11821 +f 11811 11812 11821 +f 11811 11821 11820 +f 11810 11811 11820 +f 11810 11820 11809 +f 3788 3786 3685 +f 3685 3786 3680 +f 3680 3786 3678 +f 3678 3786 3784 +f 3939 11831 3908 +f 3908 11831 11830 +f 3908 11830 11829 +f 11829 11830 11828 +f 4094 11828 11827 +f 4092 11827 11826 +f 4092 11826 3690 +f 3690 11826 11825 +f 3690 11825 3688 +f 3688 11825 3685 +f 3685 11825 11824 +f 3685 11824 11823 +f 11823 11824 11834 +f 11823 11834 3798 +f 3798 11834 3953 +f 3953 11834 11833 +f 3950 11832 11831 +f 11823 3793 3685 +f 3793 3788 3685 +f 4095 4096 11829 +f 11829 4096 3908 +f 4096 4014 3908 +f 11830 11831 11837 +f 11837 11831 11832 +f 11837 11832 11836 +f 11836 11832 11833 +f 11836 11833 11835 +f 11835 11833 11834 +f 11835 11834 11824 +f 11827 11828 11837 +f 11837 11828 11830 +f 11827 11837 11836 +f 11826 11827 11836 +f 11826 11836 11835 +f 11825 11826 11835 +f 11825 11835 11824 +f 3910 3908 4012 +f 3922 11852 3923 +f 3923 11852 11847 +f 3923 11847 11846 +f 11846 11847 11857 +f 11846 11857 11844 +f 11844 11857 11843 +f 4017 11853 4016 +f 4016 11853 4012 +f 4012 11853 11840 +f 4012 11840 11839 +f 11839 11840 11854 +f 11839 11854 11851 +f 11851 11854 11850 +f 3918 11849 3920 +f 3920 11849 11852 +f 3920 11852 3922 +f 3915 3913 11851 +f 11851 11838 11839 +f 11839 11838 3912 +f 11839 3912 4012 +f 4012 3912 3910 +f 3913 3912 11838 +f 11844 11845 11846 +f 11846 11845 4024 +f 11846 4024 3923 +f 3923 4024 4026 +f 11847 11852 11848 +f 11848 11852 11849 +f 11848 11849 11855 +f 11855 11849 11850 +f 11855 11850 11854 +f 11847 11848 11857 +f 11857 11848 11856 +f 11857 11856 11843 +f 11843 11856 11842 +f 11856 11848 11855 +f 11856 11855 11841 +f 11841 11855 11854 +f 11841 11854 11840 +f 11853 11842 11841 +f 11841 11842 11856 +f 11853 11841 11840 +f 3929 3925 4032 +f 4032 3925 4028 +f 4028 3925 4026 +f 4026 3925 3923 +f 3983 11866 3982 +f 3982 11866 11865 +f 3982 11865 11864 +f 11864 11865 11863 +f 4053 11863 11862 +f 4052 11862 4039 +f 4039 11862 11861 +f 4034 11860 4032 +f 4032 11860 11859 +f 4032 11859 11858 +f 11858 11859 11869 +f 11858 11869 3932 +f 4010 11869 11868 +f 4010 11868 4008 +f 4008 11868 4005 +f 4005 11868 11867 +f 4005 11867 4003 +f 3932 3930 11858 +f 11858 3930 4032 +f 3930 3929 4032 +f 11864 4054 3982 +f 4054 4064 3982 +f 11865 11866 11872 +f 11872 11866 11867 +f 11872 11867 11871 +f 11871 11867 11868 +f 11871 11868 11870 +f 11870 11868 11869 +f 11870 11869 11859 +f 11862 11863 11872 +f 11872 11863 11865 +f 11862 11872 11871 +f 11861 11862 11871 +f 11861 11871 11870 +f 11860 11861 11870 +f 11860 11870 11859 +f 4066 3981 4065 +f 3222 27756 3713 +f 3713 27756 27757 +f 3713 27757 3219 +f 3219 27757 27758 +f 3219 27758 27759 +f 27759 27758 27760 +f 27759 27760 3715 +f 3715 27760 27761 +f 3715 27761 3716 +f 3716 27761 27762 +f 3716 27762 3718 +f 3718 27762 27763 +f 3718 27763 27764 +f 27764 27763 27765 +f 27764 27765 27766 +f 27766 27765 27767 +f 27766 27767 27768 +f 27768 27767 27769 +f 27768 27769 27770 +f 27770 27769 27771 +f 27770 27771 27772 +f 27772 27771 27773 +f 27772 27773 27774 +f 27774 27773 3880 +f 27774 3880 27775 +f 27775 3880 3879 +f 27775 3879 27776 +f 27776 3879 3876 +f 27776 3876 27777 +f 27777 3876 27778 +f 27777 27778 27779 +f 27779 27778 27780 +f 27779 27780 27781 +f 27781 27780 27782 +f 27781 27782 27783 +f 27783 27782 27784 +f 27783 27784 3735 +f 3735 27784 27785 +f 3735 27785 3745 +f 3745 27785 27786 +f 3745 27786 3756 +f 3756 27786 3774 +f 3774 27786 27787 +f 3774 27787 3775 +f 3775 27787 3776 +f 3776 27787 3781 +f 3781 27787 3785 +f 3785 27787 27788 +f 3785 27788 3789 +f 3789 27788 3800 +f 3789 3800 3799 +f 3222 3224 27756 +f 27756 3224 27789 +f 27756 27789 27790 +f 27790 27789 27791 +f 27790 27791 27792 +f 27792 27791 27793 +f 27792 27793 27794 +f 27794 27793 3890 +f 27794 3890 27795 +f 27795 3890 3888 +f 27795 3888 27796 +f 27796 3888 27797 +f 27796 27797 27798 +f 27798 27797 27799 +f 27798 27799 27800 +f 27800 27799 27801 +f 27800 27801 27802 +f 27802 27801 27803 +f 27802 27803 27804 +f 27804 27803 3846 +f 27804 3846 3844 +f 3224 3225 27789 +f 27789 3225 3675 +f 27789 3675 3677 +f 3677 3681 27789 +f 27789 3681 27805 +f 27789 27805 27791 +f 27791 27805 27806 +f 27791 27806 27793 +f 27793 27806 3894 +f 27793 3894 3890 +f 3681 3683 27805 +f 27805 3683 3903 +f 27805 3903 3900 +f 3684 3687 3683 +f 3683 3687 3907 +f 3683 3907 3906 +f 3684 3686 3687 +f 3906 3905 3683 +f 3683 3905 3904 +f 3683 3904 3903 +f 3900 3896 27805 +f 27805 3896 3895 +f 27805 3895 27806 +f 27806 3895 3894 +f 3888 3886 27797 +f 27797 3886 27799 +f 3886 3885 27799 +f 27799 3885 27801 +f 27801 3885 27803 +f 27803 3885 3846 +f 3884 27807 3844 +f 3844 27807 27808 +f 3844 27808 27804 +f 27804 27808 27809 +f 27804 27809 27802 +f 27802 27809 27810 +f 27802 27810 27800 +f 27800 27810 27811 +f 27800 27811 27798 +f 27798 27811 27812 +f 27798 27812 27796 +f 27796 27812 27813 +f 27796 27813 27814 +f 27814 27813 27815 +f 27814 27815 27792 +f 27792 27815 27790 +f 27807 3884 27773 +f 27773 3884 3880 +f 3876 3823 27778 +f 27778 3823 27816 +f 27778 27816 27780 +f 27780 27816 27782 +f 3823 3806 27816 +f 27816 3806 27817 +f 27816 27817 27818 +f 27818 27817 27819 +f 27818 27819 27784 +f 27784 27819 27785 +f 3806 3805 27817 +f 27817 3805 27820 +f 27817 27820 27819 +f 27819 27820 27786 +f 27819 27786 27785 +f 3804 27788 3805 +f 3805 27788 27821 +f 3805 27821 27820 +f 27820 27821 27787 +f 27820 27787 27786 +f 3804 3802 27788 +f 27788 3802 3800 +f 3799 3796 3789 +f 3789 3796 3795 +f 3789 3795 3794 +f 3794 3792 3789 +f 3789 3792 3790 +f 3790 3792 3791 +f 3735 3734 27783 +f 27783 3734 3733 +f 27783 3733 27781 +f 27781 3733 27822 +f 27781 27822 27779 +f 27779 27822 27823 +f 27779 27823 27777 +f 27777 27823 27824 +f 27777 27824 27776 +f 27776 27824 27825 +f 27776 27825 27775 +f 27775 27825 27826 +f 27775 27826 27827 +f 27827 27826 27828 +f 27827 27828 27829 +f 27829 27828 27830 +f 27829 27830 27770 +f 27770 27830 27768 +f 3733 3731 27822 +f 27822 3731 27831 +f 27822 27831 27823 +f 27823 27831 27832 +f 27823 27832 27824 +f 27824 27832 27833 +f 27824 27833 27825 +f 27825 27833 27826 +f 3731 3729 27831 +f 27831 3729 27832 +f 27832 3729 27834 +f 27834 3729 3727 +f 27834 3727 27835 +f 27835 3727 3725 +f 27835 3725 27836 +f 27836 3725 3724 +f 27836 3724 3722 +f 27836 3722 27837 +f 27837 3722 3720 +f 27837 3720 27764 +f 27764 3720 3718 +f 3715 3218 27759 +f 27759 3218 3219 +f 27758 27757 27756 +f 27758 27756 27790 +f 27760 27758 27815 +f 27815 27758 27790 +f 27814 27792 27794 +f 27815 27813 27760 +f 27760 27813 27838 +f 27760 27838 27761 +f 27761 27838 27763 +f 27761 27763 27762 +f 27782 27816 27818 +f 27784 27782 27818 +f 27796 27814 27795 +f 27795 27814 27794 +f 27813 27812 27838 +f 27838 27812 27839 +f 27838 27839 27763 +f 27763 27839 27765 +f 27764 27766 27837 +f 27837 27766 27840 +f 27837 27840 27836 +f 27836 27840 27841 +f 27836 27841 27835 +f 27835 27841 27842 +f 27835 27842 27834 +f 27834 27842 27833 +f 27834 27833 27832 +f 27812 27811 27839 +f 27839 27811 27843 +f 27839 27843 27765 +f 27765 27843 27767 +f 27766 27768 27840 +f 27840 27768 27830 +f 27840 27830 27841 +f 27841 27830 27828 +f 27841 27828 27842 +f 27842 27828 27826 +f 27842 27826 27833 +f 27811 27810 27843 +f 27843 27810 27844 +f 27843 27844 27767 +f 27767 27844 27769 +f 27775 27827 27774 +f 27774 27827 27829 +f 27774 27829 27772 +f 27772 27829 27770 +f 27769 27844 27845 +f 27845 27844 27809 +f 27845 27809 27808 +f 27844 27810 27809 +f 27769 27845 27771 +f 27771 27845 27807 +f 27771 27807 27773 +f 27807 27845 27808 +f 27788 27787 27821 +f 3745 3219 3735 +f 3735 3219 3218 +f 3734 3218 3715 +f 3734 3715 3733 +f 3733 3715 3716 +f 3733 3716 3731 +f 3729 3718 3720 +f 3781 3785 3677 +f 3677 3785 3681 +f 3681 3785 3683 +f 3683 3785 3789 +f 3756 11790 3745 +f 3745 11790 11791 +f 3713 11792 3222 +f 11781 11782 11784 +f 11781 11784 11789 +f 11789 11784 11786 +f 11789 11786 11788 +f 11787 3756 3774 +f 11787 3774 11786 +f 11778 3775 3776 +f 11778 3776 3677 +f 3677 3776 3781 +f 3675 11780 3677 +f 3677 11780 11779 +f 3677 11779 11778 +f 11778 11779 11788 +f 11780 3225 11781 +f 11780 11781 11789 +f 11783 11792 11791 +f 11791 11790 11785 +f 11785 11790 11787 +f 11785 11787 11784 +f 11784 11787 11786 +f 11782 11783 11785 +f 11785 11783 11791 +f 11782 11785 11784 +f 11789 11788 11779 +f 11779 11780 11789 +f 3790 11801 3789 +f 3789 11801 11800 +f 3789 11800 11799 +f 11799 11800 11798 +f 3686 11798 3687 +f 3687 11798 3907 +f 3907 11797 3906 +f 3906 11797 3905 +f 3905 11797 11796 +f 3905 11796 3904 +f 3904 11796 3903 +f 3903 11796 11795 +f 3903 11795 3900 +f 3900 11795 3896 +f 3896 11795 11794 +f 3896 11794 11793 +f 11793 11794 11804 +f 3794 11802 3792 +f 3792 11802 3791 +f 3791 11801 3790 +f 11793 3802 3896 +f 3802 3804 3896 +f 3686 3684 11799 +f 11799 3684 3789 +f 3684 3683 3789 +f 11800 11801 11807 +f 11807 11801 11802 +f 11807 11802 11806 +f 11806 11802 11803 +f 11806 11803 11805 +f 11805 11803 11804 +f 11805 11804 11794 +f 11797 11798 11807 +f 11807 11798 11800 +f 11797 11807 11806 +f 11796 11797 11806 +f 11796 11806 11805 +f 11795 11796 11805 +f 11795 11805 11794 +f 3804 3805 3896 +f 3895 3805 3806 +f 3894 3806 3823 +f 3894 3823 3890 +f 3890 3823 3876 +f 3888 3876 3879 +f 3886 3879 3880 +f 3885 3880 3884 +f 3885 3884 3846 +f 27846 27847 27848 +f 27848 27847 27849 +f 27848 27849 27850 +f 27847 27846 27851 +f 27851 27846 27852 +f 27851 27852 27853 +f 27853 27852 27854 +f 27853 27854 27855 +f 27855 27854 27856 +f 27855 27856 27857 +f 27857 27856 27858 +f 27857 27858 27859 +f 27859 27858 27860 +f 27859 27860 27861 +f 27861 27860 27862 +f 27861 27862 27863 +f 27863 27862 27864 +f 27863 27864 27865 +f 27865 27864 27866 +f 27865 27866 27867 +f 27867 27866 27868 +f 27867 27868 27869 +f 27869 27868 27870 +f 27869 27870 27871 +f 27871 27870 27872 +f 27871 27872 27873 +f 27873 27872 27874 +f 27873 27874 27875 +f 27875 27874 27876 +f 27875 27876 27877 +f 27877 27876 27878 +f 27877 27878 27879 +f 27879 27878 27880 +f 27879 27880 27881 +f 27881 27880 27882 +f 27881 27882 27883 +f 27883 27882 27884 +f 27883 27884 27885 +f 27885 27884 27886 +f 27885 27886 27887 +f 27887 27886 27888 +f 27887 27888 27889 +f 27889 27888 27890 +f 27889 27890 27891 +f 27891 27890 27892 +f 27891 27892 27893 +f 27893 27892 27894 +f 27893 27894 27895 +f 27895 27894 27896 +f 27895 27896 27897 +f 27897 27896 27898 +f 27897 27898 27899 +f 27899 27898 27900 +f 27899 27900 27901 +f 27901 27900 27902 +f 27901 27902 27903 +f 27903 27902 27904 +f 27903 27904 27905 +f 27905 27904 27906 +f 27905 27906 27907 +f 27907 27906 27908 +f 27907 27908 27909 +f 27909 27908 27910 +f 27909 27910 27911 +f 27911 27910 27912 +f 27911 27912 27913 +f 27913 27912 27914 +f 27913 27914 27915 +f 27915 27914 27916 +f 27915 27916 27850 +f 27850 27916 27848 +f 27917 27918 27919 +f 27919 27918 27920 +f 27919 27920 27921 +f 27919 27921 27922 +f 27922 27921 27923 +f 27922 27923 27924 +f 27925 27926 27924 +f 27924 27926 27927 +f 27924 27927 27922 +f 27922 27927 27928 +f 27922 27928 27929 +f 27929 27928 27930 +f 27929 27930 27917 +f 27917 27930 27931 +f 27931 27930 27932 +f 27931 27932 27933 +f 27933 27932 27934 +f 27933 27934 27935 +f 27935 27934 27936 +f 27935 27936 27937 +f 27937 27936 27938 +f 27937 27938 27939 +f 27939 27938 27940 +f 27939 27940 27941 +f 27941 27940 27942 +f 27941 27942 27943 +f 27943 27942 27944 +f 27943 27944 27945 +f 27945 27944 27946 +f 27945 27946 27947 +f 27947 27946 27948 +f 27947 27948 27949 +f 27949 27948 27950 +f 27949 27950 27951 +f 27951 27950 27952 +f 27951 27952 27953 +f 27953 27952 27954 +f 27953 27954 27955 +f 27955 27954 27956 +f 27955 27956 27957 +f 27957 27956 27958 +f 27957 27958 27959 +f 27959 27958 27960 +f 27959 27960 27961 +f 27961 27960 27962 +f 27961 27962 27963 +f 27963 27962 27964 +f 27963 27964 27965 +f 27965 27964 27966 +f 27965 27966 27967 +f 27967 27966 27968 +f 27967 27968 27969 +f 27969 27968 27970 +f 27969 27970 27971 +f 27971 27970 27972 +f 27971 27972 27973 +f 27973 27972 27974 +f 27973 27974 27975 +f 27975 27974 27976 +f 27975 27976 27977 +f 27977 27976 27978 +f 27977 27978 27979 +f 27979 27978 27857 +f 27979 27857 27980 +f 27980 27857 27859 +f 27980 27859 27981 +f 27981 27859 27861 +f 27981 27861 27982 +f 27982 27861 27863 +f 27982 27863 27983 +f 27983 27863 27865 +f 27983 27865 27984 +f 27984 27865 27867 +f 27984 27867 27985 +f 27985 27867 27869 +f 27985 27869 27986 +f 27986 27869 27987 +f 27986 27987 27988 +f 27988 27987 27989 +f 27988 27989 27990 +f 27990 27989 27991 +f 27990 27991 27992 +f 27992 27991 27993 +f 27992 27993 27994 +f 27994 27993 27995 +f 27994 27995 27996 +f 27996 27995 27997 +f 27996 27997 27998 +f 27998 27997 27999 +f 27998 27999 28000 +f 28000 27999 28001 +f 28000 28001 28002 +f 28002 28001 28003 +f 28002 28003 28004 +f 28004 28003 28005 +f 28004 28005 28006 +f 28006 28005 28007 +f 28006 28007 28008 +f 28008 28007 28009 +f 28008 28009 28010 +f 28010 28009 28011 +f 28010 28011 28012 +f 28012 28011 28013 +f 28012 28013 28014 +f 28014 28013 28015 +f 28014 28015 28016 +f 28016 28015 28017 +f 28016 28017 28018 +f 28018 28017 28019 +f 28018 28019 28020 +f 28020 28019 28021 +f 28020 28021 28022 +f 28022 28021 28023 +f 28022 28023 28024 +f 28024 28023 28025 +f 28024 28025 28026 +f 28026 28025 28027 +f 28026 28027 28028 +f 28028 28027 28029 +f 28028 28029 28030 +f 28030 28029 28031 +f 28030 28031 28032 +f 28032 28031 28033 +f 28032 28033 28034 +f 28034 28033 28035 +f 28034 28035 28036 +f 28036 28035 28037 +f 28036 28037 28038 +f 28038 28037 28039 +f 28038 28039 28040 +f 28040 28039 28041 +f 28040 28041 28042 +f 28042 28041 28043 +f 28042 28043 28044 +f 28044 28043 28045 +f 28044 28045 28046 +f 28046 28045 28047 +f 28046 28047 28048 +f 28048 28047 28049 +f 28048 28049 28050 +f 28050 28049 28051 +f 28050 28051 28052 +f 28052 28051 28053 +f 28052 28053 28054 +f 28054 28053 28055 +f 28054 28055 28056 +f 28056 28055 28057 +f 28056 28057 28058 +f 28058 28057 28059 +f 28058 28059 28060 +f 28060 28059 28061 +f 28060 28061 28062 +f 28062 28061 28063 +f 28062 28063 28064 +f 28064 28063 28065 +f 28064 28065 28066 +f 28066 28065 28067 +f 28066 28067 28068 +f 28068 28067 28069 +f 28068 28069 28070 +f 28070 28069 28071 +f 28070 28071 28072 +f 28072 28071 28073 +f 28072 28073 28074 +f 28074 28073 28075 +f 28074 28075 28076 +f 28076 28075 28077 +f 28076 28077 28078 +f 28078 28077 28079 +f 28078 28079 28080 +f 28080 28079 28081 +f 28080 28081 28082 +f 28082 28081 27905 +f 28082 27905 27907 +f 27926 27925 28083 +f 28083 27925 28084 +f 28083 28084 28085 +f 28085 28084 28086 +f 28085 28086 28087 +f 28087 28086 28088 +f 28087 28088 28089 +f 28089 28088 28090 +f 28089 28090 28091 +f 28091 28090 28092 +f 28091 28092 28093 +f 28093 28092 28094 +f 28093 28094 27946 +f 27946 28094 27948 +f 28086 28095 28088 +f 28088 28095 28096 +f 28088 28096 28090 +f 28090 28096 28097 +f 28090 28097 28092 +f 28092 28097 28098 +f 28092 28098 28094 +f 28094 28098 28099 +f 28094 28099 27948 +f 27948 28099 27950 +f 28095 28100 28096 +f 28096 28100 28101 +f 28096 28101 28097 +f 28097 28101 28102 +f 28097 28102 28098 +f 28098 28102 28103 +f 28098 28103 28099 +f 28099 28103 28104 +f 28099 28104 27950 +f 27950 28104 27952 +f 28101 28100 28105 +f 28105 28100 28106 +f 28105 28106 28107 +f 28107 28106 28108 +f 28107 28108 28109 +f 28109 28108 28110 +f 28109 28110 28111 +f 28111 28110 28112 +f 28111 28112 28113 +f 28113 28112 28114 +f 28113 28114 28115 +f 28115 28114 28116 +f 28115 28116 27958 +f 27958 28116 27960 +f 28108 28117 28110 +f 28110 28117 28118 +f 28110 28118 28112 +f 28112 28118 28119 +f 28112 28119 28114 +f 28114 28119 28120 +f 28114 28120 28116 +f 28116 28120 28121 +f 28116 28121 27960 +f 27960 28121 27962 +f 28118 28117 28122 +f 28122 28117 28123 +f 28122 28123 28124 +f 28124 28123 28125 +f 28124 28125 28126 +f 28126 28125 28127 +f 28126 28127 28128 +f 28128 28127 28129 +f 28128 28129 28130 +f 28130 28129 28131 +f 28130 28131 28132 +f 28132 28131 28133 +f 28132 28133 28134 +f 28132 28134 28135 +f 28135 28134 28136 +f 28135 28136 28137 +f 28137 28136 28138 +f 28137 28138 27849 +f 27849 27847 28137 +f 28137 27847 28139 +f 28137 28139 28140 +f 28140 28139 28141 +f 28140 28141 28142 +f 28142 28141 28143 +f 28142 28143 28144 +f 28144 28143 27972 +f 28144 27972 27970 +f 27847 27851 28139 +f 28139 27851 28145 +f 28139 28145 28141 +f 28141 28145 28146 +f 28141 28146 28143 +f 28143 28146 27974 +f 28143 27974 27972 +f 27851 27853 28145 +f 28145 27853 28147 +f 28145 28147 28146 +f 28146 28147 27976 +f 28146 27976 27974 +f 27853 27855 28147 +f 28147 27855 27978 +f 28147 27978 27976 +f 27855 27857 27978 +f 27869 27871 27987 +f 27987 27871 28148 +f 27987 28148 27989 +f 27989 28148 28149 +f 27989 28149 27991 +f 27991 28149 28150 +f 27991 28150 27993 +f 27993 28150 28151 +f 27993 28151 27995 +f 27995 28151 28152 +f 27995 28152 27997 +f 27997 28152 28153 +f 27997 28153 27999 +f 27999 28153 28154 +f 27999 28154 28001 +f 28001 28154 28155 +f 28001 28155 28003 +f 28003 28155 28156 +f 28003 28156 28005 +f 28005 28156 28157 +f 28005 28157 28007 +f 28007 28157 28158 +f 28007 28158 28009 +f 28009 28158 28159 +f 28009 28159 28011 +f 28011 28159 28160 +f 28011 28160 28013 +f 28013 28160 28161 +f 28013 28161 28015 +f 28015 28161 28162 +f 28015 28162 28017 +f 28017 28162 28163 +f 28017 28163 28019 +f 28019 28163 28164 +f 28019 28164 28021 +f 28021 28164 28165 +f 28021 28165 28023 +f 28023 28165 28166 +f 28023 28166 28025 +f 28025 28166 28167 +f 28025 28167 28027 +f 28027 28167 28168 +f 28027 28168 28029 +f 28029 28168 28169 +f 28029 28169 28031 +f 28031 28169 28033 +f 27871 27873 28148 +f 28148 27873 28170 +f 28148 28170 28149 +f 28149 28170 28171 +f 28149 28171 28150 +f 28150 28171 28172 +f 28150 28172 28151 +f 28151 28172 28173 +f 28151 28173 28152 +f 28152 28173 28174 +f 28152 28174 28153 +f 28153 28174 28175 +f 28153 28175 28154 +f 28154 28175 28176 +f 28154 28176 28155 +f 28155 28176 28177 +f 28155 28177 28156 +f 28156 28177 28178 +f 28156 28178 28157 +f 28157 28178 28179 +f 28157 28179 28158 +f 28158 28179 28180 +f 28158 28180 28159 +f 28159 28180 28181 +f 28159 28181 28160 +f 28160 28181 28182 +f 28160 28182 28161 +f 28161 28182 28183 +f 28161 28183 28162 +f 28162 28183 28184 +f 28162 28184 28163 +f 28163 28184 28185 +f 28163 28185 28164 +f 28164 28185 28186 +f 28164 28186 28165 +f 28165 28186 28187 +f 28165 28187 28166 +f 28166 28187 28188 +f 28166 28188 28167 +f 28167 28188 28189 +f 28167 28189 28168 +f 28168 28189 28190 +f 28168 28190 28169 +f 28169 28190 28191 +f 28169 28191 28033 +f 28033 28191 28035 +f 27873 27875 28170 +f 28170 27875 28192 +f 28170 28192 28171 +f 28171 28192 28193 +f 28171 28193 28172 +f 28172 28193 28194 +f 28172 28194 28173 +f 28173 28194 28195 +f 28173 28195 28174 +f 28174 28195 28196 +f 28174 28196 28175 +f 28175 28196 28197 +f 28175 28197 28176 +f 28176 28197 28198 +f 28176 28198 28177 +f 28177 28198 28199 +f 28177 28199 28178 +f 28178 28199 28200 +f 28178 28200 28179 +f 28179 28200 28201 +f 28179 28201 28180 +f 28180 28201 28202 +f 28180 28202 28181 +f 28181 28202 28203 +f 28181 28203 28182 +f 28182 28203 28204 +f 28182 28204 28183 +f 28183 28204 28205 +f 28183 28205 28184 +f 28184 28205 28206 +f 28184 28206 28185 +f 28185 28206 28207 +f 28185 28207 28186 +f 28186 28207 28208 +f 28186 28208 28187 +f 28187 28208 28209 +f 28187 28209 28188 +f 28188 28209 28210 +f 28188 28210 28189 +f 28189 28210 28211 +f 28189 28211 28190 +f 28190 28211 28212 +f 28190 28212 28191 +f 28191 28212 28213 +f 28191 28213 28035 +f 28035 28213 28037 +f 28192 27875 28214 +f 28214 27875 27877 +f 28214 27877 28215 +f 28215 27877 28216 +f 28215 28216 28217 +f 28217 28216 28218 +f 28217 28218 28219 +f 28219 28218 28220 +f 28219 28220 28221 +f 28221 28220 28222 +f 28221 28222 28223 +f 28223 28222 28224 +f 28223 28224 28225 +f 28225 28224 28226 +f 28225 28226 28227 +f 28227 28226 28228 +f 28227 28228 28229 +f 28229 28228 28230 +f 28229 28230 28231 +f 28231 28230 28232 +f 28231 28232 28233 +f 28233 28232 28234 +f 28233 28234 28235 +f 28235 28234 28236 +f 28235 28236 28237 +f 28237 28236 28238 +f 28237 28238 28239 +f 28239 28238 28240 +f 28239 28240 28241 +f 28241 28240 28242 +f 28241 28242 28243 +f 28243 28242 28244 +f 28243 28244 28245 +f 28245 28244 28246 +f 28245 28246 28247 +f 28247 28246 28248 +f 28247 28248 28249 +f 28249 28248 28250 +f 28249 28250 28251 +f 28251 28250 28252 +f 28251 28252 28253 +f 28253 28252 28043 +f 28253 28043 28041 +f 27877 27879 28216 +f 28216 27879 28254 +f 28216 28254 28218 +f 28218 28254 28255 +f 28218 28255 28220 +f 28220 28255 28256 +f 28220 28256 28222 +f 28222 28256 28257 +f 28222 28257 28224 +f 28224 28257 28258 +f 28224 28258 28226 +f 28226 28258 28259 +f 28226 28259 28228 +f 28228 28259 28260 +f 28228 28260 28230 +f 28230 28260 28261 +f 28230 28261 28232 +f 28232 28261 28262 +f 28232 28262 28234 +f 28234 28262 28263 +f 28234 28263 28236 +f 28236 28263 28264 +f 28236 28264 28238 +f 28238 28264 28265 +f 28238 28265 28240 +f 28240 28265 28266 +f 28240 28266 28242 +f 28242 28266 28267 +f 28242 28267 28244 +f 28244 28267 28268 +f 28244 28268 28246 +f 28246 28268 28269 +f 28246 28269 28248 +f 28248 28269 28270 +f 28248 28270 28250 +f 28250 28270 28271 +f 28250 28271 28252 +f 28252 28271 28045 +f 28252 28045 28043 +f 27879 27881 28254 +f 28254 27881 28272 +f 28254 28272 28255 +f 28255 28272 28273 +f 28255 28273 28256 +f 28256 28273 28274 +f 28256 28274 28257 +f 28257 28274 28275 +f 28257 28275 28258 +f 28258 28275 28276 +f 28258 28276 28259 +f 28259 28276 28277 +f 28259 28277 28260 +f 28260 28277 28278 +f 28260 28278 28261 +f 28261 28278 28279 +f 28261 28279 28262 +f 28262 28279 28280 +f 28262 28280 28263 +f 28263 28280 28281 +f 28263 28281 28264 +f 28264 28281 28282 +f 28264 28282 28265 +f 28265 28282 28283 +f 28265 28283 28266 +f 28266 28283 28284 +f 28266 28284 28267 +f 28267 28284 28285 +f 28267 28285 28268 +f 28268 28285 28286 +f 28268 28286 28269 +f 28269 28286 28287 +f 28269 28287 28270 +f 28270 28287 28288 +f 28270 28288 28271 +f 28271 28288 28047 +f 28271 28047 28045 +f 27881 27883 28272 +f 28272 27883 28289 +f 28272 28289 28273 +f 28273 28289 28290 +f 28273 28290 28274 +f 28274 28290 28291 +f 28274 28291 28275 +f 28275 28291 28292 +f 28275 28292 28276 +f 28276 28292 28293 +f 28276 28293 28277 +f 28277 28293 28294 +f 28277 28294 28278 +f 28278 28294 28295 +f 28278 28295 28279 +f 28279 28295 28296 +f 28279 28296 28280 +f 28280 28296 28297 +f 28280 28297 28281 +f 28281 28297 28298 +f 28281 28298 28282 +f 28282 28298 28299 +f 28282 28299 28283 +f 28283 28299 28300 +f 28283 28300 28284 +f 28284 28300 28301 +f 28284 28301 28285 +f 28285 28301 28302 +f 28285 28302 28286 +f 28286 28302 28303 +f 28286 28303 28287 +f 28287 28303 28304 +f 28287 28304 28288 +f 28288 28304 28049 +f 28288 28049 28047 +f 27883 27885 28289 +f 28289 27885 28305 +f 28289 28305 28290 +f 28290 28305 28306 +f 28290 28306 28291 +f 28291 28306 28307 +f 28291 28307 28292 +f 28292 28307 28308 +f 28292 28308 28293 +f 28293 28308 28309 +f 28293 28309 28294 +f 28294 28309 28310 +f 28294 28310 28295 +f 28295 28310 28311 +f 28295 28311 28296 +f 28296 28311 28312 +f 28296 28312 28297 +f 28297 28312 28313 +f 28297 28313 28298 +f 28298 28313 28314 +f 28298 28314 28299 +f 28299 28314 28315 +f 28299 28315 28300 +f 28300 28315 28316 +f 28300 28316 28301 +f 28301 28316 28317 +f 28301 28317 28302 +f 28302 28317 28318 +f 28302 28318 28303 +f 28303 28318 28319 +f 28303 28319 28304 +f 28304 28319 28051 +f 28304 28051 28049 +f 27885 27887 28305 +f 28305 27887 28320 +f 28305 28320 28306 +f 28306 28320 28321 +f 28306 28321 28307 +f 28307 28321 28322 +f 28307 28322 28308 +f 28308 28322 28323 +f 28308 28323 28309 +f 28309 28323 28324 +f 28309 28324 28310 +f 28310 28324 28325 +f 28310 28325 28311 +f 28311 28325 28326 +f 28311 28326 28312 +f 28312 28326 28327 +f 28312 28327 28313 +f 28313 28327 28328 +f 28313 28328 28314 +f 28314 28328 28329 +f 28314 28329 28315 +f 28315 28329 28330 +f 28315 28330 28316 +f 28316 28330 28331 +f 28316 28331 28317 +f 28317 28331 28332 +f 28317 28332 28318 +f 28318 28332 28333 +f 28318 28333 28319 +f 28319 28333 28053 +f 28319 28053 28051 +f 28320 27887 28334 +f 28334 27887 27889 +f 28334 27889 28335 +f 28335 27889 28336 +f 28335 28336 28337 +f 28337 28336 28338 +f 28337 28338 28339 +f 28339 28338 28340 +f 28339 28340 28341 +f 28341 28340 28342 +f 28341 28342 28343 +f 28343 28342 28344 +f 28343 28344 28345 +f 28345 28344 28346 +f 28345 28346 28347 +f 28347 28346 28348 +f 28347 28348 28349 +f 28349 28348 28350 +f 28349 28350 28351 +f 28351 28350 28352 +f 28351 28352 28353 +f 28353 28352 28354 +f 28353 28354 28355 +f 28355 28354 28356 +f 28355 28356 28357 +f 28357 28356 28059 +f 28357 28059 28057 +f 27889 27891 28336 +f 28336 27891 28358 +f 28336 28358 28338 +f 28338 28358 28359 +f 28338 28359 28340 +f 28340 28359 28360 +f 28340 28360 28342 +f 28342 28360 28361 +f 28342 28361 28344 +f 28344 28361 28362 +f 28344 28362 28346 +f 28346 28362 28363 +f 28346 28363 28348 +f 28348 28363 28364 +f 28348 28364 28350 +f 28350 28364 28365 +f 28350 28365 28352 +f 28352 28365 28366 +f 28352 28366 28354 +f 28354 28366 28367 +f 28354 28367 28356 +f 28356 28367 28061 +f 28356 28061 28059 +f 28358 27891 28368 +f 28368 27891 27893 +f 28368 27893 28369 +f 28369 27893 28370 +f 28369 28370 28371 +f 28371 28370 28372 +f 28371 28372 28373 +f 28373 28372 28374 +f 28373 28374 28375 +f 28375 28374 28376 +f 28375 28376 28377 +f 28377 28376 28378 +f 28377 28378 28379 +f 28379 28378 28380 +f 28379 28380 28381 +f 28381 28380 28382 +f 28381 28382 28383 +f 28383 28382 28067 +f 28383 28067 28065 +f 27893 27895 28370 +f 28370 27895 28384 +f 28370 28384 28372 +f 28372 28384 28385 +f 28372 28385 28374 +f 28374 28385 28386 +f 28374 28386 28376 +f 28376 28386 28387 +f 28376 28387 28378 +f 28378 28387 28388 +f 28378 28388 28380 +f 28380 28388 28389 +f 28380 28389 28382 +f 28382 28389 28069 +f 28382 28069 28067 +f 28384 27895 28390 +f 28390 27895 27897 +f 28390 27897 28391 +f 28391 27897 28392 +f 28391 28392 28393 +f 28393 28392 28394 +f 28393 28394 28395 +f 28395 28394 28396 +f 28395 28396 28397 +f 28397 28396 28075 +f 28397 28075 28073 +f 27897 27899 28392 +f 28392 27899 28398 +f 28392 28398 28394 +f 28394 28398 28399 +f 28394 28399 28396 +f 28396 28399 28077 +f 28396 28077 28075 +f 27899 27901 28398 +f 28398 27901 28400 +f 28398 28400 28399 +f 28399 28400 28079 +f 28399 28079 28077 +f 27901 27903 28400 +f 28400 27903 28081 +f 28400 28081 28079 +f 27903 27905 28081 +f 27909 28401 27907 +f 27907 28401 28402 +f 27907 28402 28082 +f 28082 28402 28403 +f 28082 28403 28080 +f 28080 28403 28404 +f 28080 28404 28078 +f 28078 28404 28405 +f 28078 28405 28076 +f 28076 28405 28406 +f 28076 28406 28074 +f 28074 28406 28407 +f 28074 28407 28072 +f 28072 28407 28408 +f 28072 28408 28070 +f 28070 28408 28409 +f 28070 28409 28068 +f 28068 28409 28410 +f 28068 28410 28066 +f 28066 28410 28411 +f 28066 28411 28064 +f 28064 28411 28412 +f 28064 28412 28062 +f 28062 28412 28413 +f 28062 28413 28060 +f 28060 28413 28414 +f 28060 28414 28058 +f 28058 28414 28415 +f 28058 28415 28056 +f 28056 28415 28416 +f 28056 28416 28054 +f 28054 28416 28417 +f 28054 28417 28052 +f 28052 28417 28418 +f 28052 28418 28050 +f 28050 28418 28419 +f 28050 28419 28048 +f 28048 28419 28420 +f 28048 28420 28046 +f 28046 28420 28421 +f 28046 28421 28044 +f 28044 28421 28422 +f 28044 28422 28042 +f 28042 28422 28423 +f 28042 28423 28040 +f 28040 28423 28424 +f 28040 28424 28038 +f 28038 28424 28425 +f 28038 28425 28036 +f 27911 28426 27909 +f 27909 28426 28427 +f 27909 28427 28401 +f 28401 28427 28428 +f 28401 28428 28429 +f 28429 28428 28430 +f 28429 28430 28431 +f 28431 28430 28432 +f 28431 28432 28433 +f 28433 28432 28434 +f 28433 28434 28435 +f 28435 28434 28436 +f 28435 28436 28437 +f 28437 28436 28438 +f 28437 28438 28439 +f 28439 28438 28440 +f 28439 28440 28441 +f 28441 28440 28442 +f 28441 28442 28443 +f 28443 28442 28444 +f 28443 28444 28445 +f 28445 28444 28446 +f 28445 28446 28447 +f 28447 28446 28448 +f 28447 28448 28449 +f 28449 28448 28450 +f 28449 28450 28451 +f 28451 28450 28452 +f 28451 28452 28453 +f 28453 28452 28454 +f 28453 28454 28455 +f 28455 28454 28456 +f 28455 28456 28457 +f 28457 28456 28458 +f 28457 28458 28459 +f 28459 28458 28460 +f 28459 28460 28461 +f 28461 28460 28462 +f 28461 28462 28463 +f 28463 28462 28464 +f 28463 28464 28465 +f 28465 28464 28466 +f 28465 28466 28467 +f 28467 28466 28468 +f 28467 28468 28469 +f 28469 28468 28470 +f 28469 28470 28471 +f 28471 28470 28425 +f 28471 28425 28424 +f 27913 28472 27911 +f 27911 28472 28473 +f 27911 28473 28474 +f 28474 28473 28475 +f 28474 28475 28476 +f 28476 28475 28477 +f 28476 28477 28478 +f 28478 28477 28479 +f 28478 28479 28480 +f 28480 28479 28481 +f 28480 28481 28482 +f 28482 28481 28483 +f 28482 28483 28484 +f 28484 28483 28485 +f 28484 28485 28486 +f 28486 28485 28487 +f 28486 28487 28488 +f 28488 28487 28489 +f 28488 28489 28490 +f 28490 28489 28491 +f 28490 28491 28492 +f 28492 28491 28493 +f 28492 28493 28494 +f 28494 28493 28495 +f 28494 28495 28496 +f 28496 28495 28497 +f 28496 28497 28498 +f 28498 28497 28499 +f 28498 28499 28500 +f 28500 28499 28501 +f 28500 28501 28502 +f 28502 28501 28503 +f 28502 28503 28504 +f 28504 28503 28505 +f 28504 28505 28506 +f 28506 28505 28507 +f 28506 28507 28508 +f 28508 28507 28509 +f 28508 28509 28510 +f 28510 28509 28511 +f 28510 28511 28512 +f 28512 28511 28513 +f 28512 28513 28514 +f 28514 28513 28515 +f 28514 28515 28516 +f 28516 28515 28517 +f 28516 28517 28518 +f 28518 28517 28519 +f 28518 28519 28520 +f 28520 28519 28470 +f 28520 28470 28468 +f 27915 28521 27913 +f 27913 28521 28522 +f 27913 28522 28472 +f 28472 28522 28523 +f 28472 28523 28524 +f 28524 28523 28525 +f 28524 28525 28526 +f 28526 28525 28527 +f 28526 28527 28528 +f 28528 28527 28529 +f 28528 28529 28530 +f 28530 28529 28531 +f 28530 28531 28532 +f 28532 28531 28533 +f 28532 28533 28534 +f 28534 28533 28535 +f 28534 28535 28536 +f 28536 28535 28537 +f 28536 28537 28538 +f 28538 28537 28539 +f 28538 28539 28540 +f 28540 28539 28541 +f 28540 28541 28542 +f 28542 28541 28543 +f 28542 28543 28544 +f 28544 28543 28545 +f 28544 28545 28546 +f 28546 28545 28547 +f 28546 28547 28548 +f 28548 28547 28549 +f 28548 28549 28550 +f 28550 28549 28551 +f 28550 28551 28552 +f 28552 28551 28553 +f 28552 28553 28554 +f 28554 28553 28555 +f 28554 28555 28556 +f 28556 28555 28557 +f 28556 28557 28558 +f 28558 28557 28559 +f 28558 28559 28560 +f 28560 28559 28561 +f 28560 28561 28562 +f 28562 28561 28563 +f 28562 28563 28564 +f 28564 28563 28565 +f 28564 28565 28566 +f 28566 28565 28567 +f 28566 28567 28517 +f 28517 28567 28519 +f 28521 27915 28568 +f 28568 27915 27850 +f 28568 27850 28569 +f 28569 27850 28138 +f 28569 28138 28136 +f 27850 27849 28138 +f 28569 28136 28570 +f 28570 28136 28134 +f 28570 28134 28571 +f 28571 28134 28133 +f 28571 28133 28131 +f 28571 28131 28572 +f 28572 28131 28129 +f 28572 28129 28573 +f 28573 28129 28127 +f 28573 28127 28574 +f 28574 28127 28125 +f 28574 28125 28575 +f 28575 28125 28123 +f 28575 28123 28576 +f 28576 28123 28117 +f 28576 28117 28577 +f 28577 28117 28578 +f 28577 28578 28579 +f 28579 28578 28580 +f 28579 28580 28581 +f 28581 28580 28582 +f 28581 28582 28537 +f 28537 28582 28539 +f 28117 28108 28578 +f 28578 28108 28583 +f 28578 28583 28580 +f 28580 28583 28584 +f 28580 28584 28582 +f 28582 28584 28585 +f 28582 28585 28539 +f 28539 28585 28541 +f 28583 28108 28586 +f 28586 28108 28106 +f 28586 28106 28587 +f 28587 28106 28100 +f 28587 28100 28588 +f 28588 28100 28589 +f 28588 28589 28590 +f 28590 28589 28591 +f 28590 28591 28592 +f 28592 28591 28593 +f 28592 28593 28547 +f 28547 28593 28549 +f 28100 28095 28589 +f 28589 28095 28594 +f 28589 28594 28591 +f 28591 28594 28595 +f 28591 28595 28593 +f 28593 28595 28596 +f 28593 28596 28549 +f 28549 28596 28551 +f 28095 28086 28594 +f 28594 28086 28597 +f 28594 28597 28595 +f 28595 28597 28598 +f 28595 28598 28596 +f 28596 28598 28599 +f 28596 28599 28551 +f 28551 28599 28553 +f 28597 28086 28600 +f 28600 28086 28084 +f 28600 28084 28601 +f 28601 28084 27925 +f 28601 27925 28602 +f 28602 27925 27924 +f 28602 27924 28603 +f 28603 27924 28604 +f 28603 28604 28605 +f 28605 28604 28606 +f 28605 28606 28607 +f 28607 28606 28608 +f 28607 28608 28561 +f 28561 28608 28563 +f 27924 27923 28604 +f 28604 27923 27921 +f 28604 27921 28609 +f 28609 27921 27920 +f 28609 27920 27918 +f 27918 28610 28609 +f 28609 28610 28611 +f 28609 28611 28606 +f 28606 28611 28608 +f 28611 28610 28612 +f 28612 28610 28567 +f 28612 28567 28565 +f 28519 28425 28470 +f 28032 28613 28030 +f 28030 28613 28614 +f 28030 28614 28028 +f 28028 28614 28615 +f 28028 28615 28026 +f 28026 28615 28616 +f 28026 28616 28024 +f 28024 28616 28617 +f 28024 28617 28022 +f 28022 28617 28618 +f 28022 28618 28020 +f 28020 28618 28619 +f 28020 28619 28018 +f 28018 28619 28620 +f 28018 28620 28016 +f 28016 28620 28621 +f 28016 28621 28014 +f 28014 28621 28622 +f 28014 28622 28012 +f 28012 28622 28623 +f 28012 28623 28010 +f 28010 28623 28624 +f 28010 28624 28008 +f 28008 28624 28625 +f 28008 28625 28006 +f 28006 28625 28626 +f 28006 28626 28004 +f 28004 28626 28627 +f 28004 28627 28002 +f 28002 28627 28628 +f 28002 28628 28000 +f 28000 28628 28629 +f 28000 28629 27998 +f 27998 28629 28630 +f 27998 28630 27996 +f 27996 28630 28631 +f 27996 28631 27994 +f 27994 28631 28632 +f 27994 28632 27992 +f 27992 28632 28633 +f 27992 28633 27990 +f 27990 28633 28634 +f 27990 28634 27988 +f 27988 28634 28635 +f 27988 28635 27986 +f 27986 28635 27985 +f 28636 28637 28613 +f 28613 28637 28638 +f 28613 28638 28614 +f 28614 28638 28615 +f 28639 28640 28636 +f 28636 28640 28641 +f 28636 28641 28642 +f 28642 28641 28643 +f 28642 28643 28644 +f 28644 28643 28645 +f 28644 28645 28646 +f 28646 28645 28647 +f 28646 28647 28617 +f 28617 28647 28618 +f 28648 28649 28639 +f 28639 28649 28650 +f 28639 28650 28651 +f 28651 28650 28652 +f 28651 28652 28653 +f 28653 28652 28654 +f 28653 28654 28655 +f 28655 28654 28656 +f 28655 28656 28657 +f 28657 28656 28658 +f 28657 28658 28659 +f 28659 28658 28660 +f 28659 28660 28661 +f 28661 28660 28662 +f 28661 28662 28663 +f 28663 28662 28664 +f 28663 28664 28621 +f 28621 28664 28622 +f 28649 28648 28665 +f 28665 28648 28666 +f 28665 28666 28667 +f 28667 28666 28668 +f 28667 28668 28669 +f 28669 28668 28670 +f 28669 28670 28671 +f 28671 28670 28672 +f 28671 28672 28673 +f 28673 28672 28674 +f 28673 28674 28675 +f 28675 28674 28676 +f 28675 28676 28677 +f 28677 28676 28678 +f 28677 28678 28679 +f 28679 28678 28680 +f 28679 28680 28681 +f 28681 28680 28682 +f 28681 28682 28683 +f 28683 28682 28684 +f 28683 28684 28685 +f 28685 28684 28686 +f 28685 28686 28687 +f 28687 28686 28688 +f 28687 28688 28689 +f 28689 28688 28690 +f 28689 28690 28691 +f 28691 28690 28692 +f 28691 28692 28693 +f 28693 28692 28694 +f 28693 28694 28695 +f 28695 28694 28696 +f 28695 28696 28697 +f 28697 28696 28698 +f 28697 28698 28699 +f 28699 28698 27967 +f 28699 27967 27969 +f 28666 28700 28668 +f 28668 28700 28701 +f 28668 28701 28670 +f 28670 28701 28702 +f 28670 28702 28672 +f 28672 28702 28703 +f 28672 28703 28674 +f 28674 28703 28704 +f 28674 28704 28676 +f 28676 28704 28705 +f 28676 28705 28678 +f 28678 28705 28706 +f 28678 28706 28680 +f 28680 28706 28707 +f 28680 28707 28682 +f 28682 28707 28708 +f 28682 28708 28684 +f 28684 28708 28709 +f 28684 28709 28686 +f 28686 28709 28710 +f 28686 28710 28688 +f 28688 28710 28711 +f 28688 28711 28690 +f 28690 28711 28712 +f 28690 28712 28692 +f 28692 28712 28713 +f 28692 28713 28694 +f 28694 28713 28714 +f 28694 28714 28696 +f 28696 28714 28715 +f 28696 28715 28698 +f 28698 28715 27965 +f 28698 27965 27967 +f 28701 28700 28716 +f 28716 28700 28717 +f 28716 28717 28718 +f 28718 28717 28719 +f 28718 28719 28720 +f 28720 28719 28721 +f 28720 28721 28722 +f 28722 28721 28723 +f 28722 28723 28724 +f 28724 28723 28725 +f 28724 28725 28726 +f 28726 28725 28727 +f 28726 28727 28728 +f 28728 28727 28729 +f 28728 28729 28730 +f 28730 28729 28731 +f 28730 28731 28732 +f 28732 28731 28733 +f 28732 28733 28734 +f 28734 28733 28735 +f 28734 28735 28736 +f 28736 28735 28737 +f 28736 28737 28738 +f 28738 28737 28739 +f 28738 28739 28740 +f 28740 28739 28741 +f 28740 28741 28742 +f 28742 28741 27959 +f 28742 27959 27961 +f 28717 28743 28719 +f 28719 28743 28744 +f 28719 28744 28721 +f 28721 28744 28745 +f 28721 28745 28723 +f 28723 28745 28746 +f 28723 28746 28725 +f 28725 28746 28747 +f 28725 28747 28727 +f 28727 28747 28748 +f 28727 28748 28729 +f 28729 28748 28749 +f 28729 28749 28731 +f 28731 28749 28750 +f 28731 28750 28733 +f 28733 28750 28751 +f 28733 28751 28735 +f 28735 28751 28752 +f 28735 28752 28737 +f 28737 28752 28753 +f 28737 28753 28739 +f 28739 28753 28754 +f 28739 28754 28741 +f 28741 28754 27957 +f 28741 27957 27959 +f 28755 28756 28743 +f 28743 28756 28757 +f 28743 28757 28744 +f 28744 28757 28745 +f 28758 28759 28755 +f 28755 28759 28760 +f 28755 28760 28756 +f 28756 28760 28761 +f 28756 28761 28762 +f 28762 28761 28763 +f 28762 28763 28746 +f 28746 28763 28747 +f 28759 28758 28764 +f 28764 28758 28765 +f 28764 28765 28766 +f 28766 28765 28767 +f 28766 28767 28768 +f 28768 28767 28769 +f 28768 28769 28770 +f 28770 28769 28771 +f 28770 28771 28772 +f 28772 28771 28773 +f 28772 28773 28774 +f 28774 28773 27943 +f 28774 27943 27945 +f 28765 28775 28767 +f 28767 28775 28776 +f 28767 28776 28769 +f 28769 28776 28777 +f 28769 28777 28771 +f 28771 28777 28778 +f 28771 28778 28773 +f 28773 28778 27941 +f 28773 27941 27943 +f 28776 28775 28779 +f 28779 28775 28780 +f 28779 28780 28781 +f 28781 28780 27935 +f 28781 27935 27937 +f 28780 27933 27935 +f 27929 27917 27919 +f 28639 28651 28782 +f 28782 28651 28653 +f 28782 28653 28783 +f 28783 28653 28655 +f 28783 28655 28784 +f 28784 28655 28657 +f 28784 28657 28785 +f 28785 28657 28659 +f 28785 28659 28786 +f 28786 28659 28661 +f 28786 28661 28787 +f 28787 28661 28663 +f 28787 28663 28620 +f 28620 28663 28621 +f 28639 28782 28640 +f 28640 28782 28783 +f 28640 28783 28788 +f 28788 28783 28784 +f 28788 28784 28789 +f 28789 28784 28785 +f 28789 28785 28790 +f 28790 28785 28786 +f 28790 28786 28791 +f 28791 28786 28787 +f 28791 28787 28619 +f 28619 28787 28620 +f 28636 28642 28637 +f 28637 28642 28644 +f 28637 28644 28792 +f 28792 28644 28646 +f 28792 28646 28616 +f 28616 28646 28617 +f 27911 28474 28426 +f 28426 28474 28476 +f 28426 28476 28793 +f 28793 28476 28478 +f 28793 28478 28794 +f 28794 28478 28480 +f 28794 28480 28795 +f 28795 28480 28482 +f 28795 28482 28796 +f 28796 28482 28484 +f 28796 28484 28797 +f 28797 28484 28486 +f 28797 28486 28798 +f 28798 28486 28488 +f 28798 28488 28799 +f 28799 28488 28490 +f 28799 28490 28800 +f 28800 28490 28492 +f 28800 28492 28801 +f 28801 28492 28494 +f 28801 28494 28802 +f 28802 28494 28496 +f 28802 28496 28803 +f 28803 28496 28498 +f 28803 28498 28804 +f 28804 28498 28500 +f 28804 28500 28805 +f 28805 28500 28502 +f 28805 28502 28806 +f 28806 28502 28504 +f 28806 28504 28807 +f 28807 28504 28506 +f 28807 28506 28808 +f 28808 28506 28508 +f 28808 28508 28809 +f 28809 28508 28510 +f 28809 28510 28810 +f 28810 28510 28512 +f 28810 28512 28811 +f 28811 28512 28514 +f 28811 28514 28812 +f 28812 28514 28516 +f 28812 28516 28813 +f 28813 28516 28518 +f 28813 28518 28520 +f 28137 28140 28135 +f 28135 28140 28814 +f 28135 28814 28132 +f 28132 28814 28815 +f 28132 28815 28130 +f 28130 28815 28816 +f 28130 28816 28128 +f 28128 28816 28817 +f 28128 28817 28126 +f 28126 28817 28818 +f 28126 28818 28124 +f 28124 28818 28819 +f 28124 28819 28122 +f 28122 28819 28119 +f 28122 28119 28118 +f 28107 28109 28820 +f 28820 28109 28111 +f 28820 28111 28821 +f 28821 28111 28113 +f 28821 28113 28822 +f 28822 28113 28115 +f 28822 28115 27956 +f 27956 28115 27958 +f 28102 28101 28105 +f 28105 28107 28823 +f 28823 28107 28820 +f 28823 28820 28824 +f 28824 28820 28821 +f 28824 28821 28825 +f 28825 28821 28822 +f 28825 28822 27954 +f 27954 28822 27956 +f 28085 28087 28826 +f 28826 28087 28089 +f 28826 28089 28827 +f 28827 28089 28091 +f 28827 28091 28828 +f 28828 28091 28093 +f 28828 28093 27944 +f 27944 28093 27946 +f 28083 28085 28829 +f 28829 28085 28826 +f 28829 28826 28830 +f 28830 28826 28827 +f 28830 28827 28831 +f 28831 28827 28828 +f 28831 28828 27942 +f 27942 28828 27944 +f 27926 28083 28832 +f 28832 28083 28829 +f 28832 28829 28833 +f 28833 28829 28830 +f 28833 28830 28834 +f 28834 28830 28831 +f 28834 28831 27940 +f 27940 28831 27942 +f 27927 27926 28835 +f 28835 27926 28832 +f 28835 28832 28836 +f 28836 28832 28833 +f 28836 28833 28837 +f 28837 28833 28834 +f 28837 28834 27938 +f 27938 28834 27940 +f 27929 27919 27922 +f 28140 28142 28814 +f 28814 28142 28838 +f 28814 28838 28815 +f 28815 28838 28839 +f 28815 28839 28816 +f 28816 28839 28840 +f 28816 28840 28817 +f 28817 28840 28841 +f 28817 28841 28818 +f 28818 28841 28842 +f 28818 28842 28819 +f 28819 28842 28120 +f 28819 28120 28119 +f 28103 28102 28823 +f 28823 28102 28105 +f 28103 28823 28824 +f 27927 28835 27928 +f 27928 28835 28843 +f 27928 28843 27930 +f 27930 28843 27932 +f 28843 28835 28836 +f 28142 28144 28838 +f 28838 28144 28844 +f 28838 28844 28839 +f 28839 28844 28845 +f 28839 28845 28840 +f 28840 28845 28846 +f 28840 28846 28841 +f 28841 28846 28847 +f 28841 28847 28842 +f 28842 28847 28121 +f 28842 28121 28120 +f 28104 28103 28824 +f 28104 28824 28825 +f 28843 28836 28848 +f 28848 28836 28837 +f 28848 28837 27936 +f 27936 28837 27938 +f 28144 27970 28844 +f 28844 27970 27968 +f 28844 27968 28845 +f 28845 27968 27966 +f 28845 27966 28846 +f 28846 27966 27964 +f 28846 27964 28847 +f 28847 27964 27962 +f 28847 27962 28121 +f 27952 28104 28825 +f 27952 28825 27954 +f 27934 27932 28848 +f 28848 27932 28843 +f 27934 28848 27936 +f 27977 27979 28849 +f 28849 27979 27980 +f 28849 27980 28850 +f 28850 27980 27981 +f 28850 27981 28851 +f 28851 27981 27982 +f 28851 27982 28852 +f 28852 27982 27983 +f 28852 27983 28853 +f 28853 27983 27984 +f 28853 27984 28854 +f 28854 27984 27985 +f 28854 27985 28635 +f 27975 27977 28855 +f 28855 27977 28849 +f 28855 28849 28856 +f 28856 28849 28850 +f 28856 28850 28857 +f 28857 28850 28851 +f 28857 28851 28858 +f 28858 28851 28852 +f 28858 28852 28859 +f 28859 28852 28853 +f 28859 28853 28860 +f 28860 28853 28854 +f 28860 28854 28861 +f 28861 28854 28635 +f 28861 28635 28634 +f 27973 27975 28862 +f 28862 27975 28855 +f 28862 28855 28863 +f 28863 28855 28856 +f 28863 28856 28864 +f 28864 28856 28857 +f 28864 28857 28865 +f 28865 28857 28858 +f 28865 28858 28866 +f 28866 28858 28859 +f 28866 28859 28867 +f 28867 28859 28860 +f 28867 28860 28868 +f 28868 28860 28861 +f 28868 28861 28869 +f 28869 28861 28634 +f 28869 28634 28633 +f 27971 27973 28870 +f 28870 27973 28862 +f 28870 28862 28871 +f 28871 28862 28863 +f 28871 28863 28872 +f 28872 28863 28864 +f 28872 28864 28873 +f 28873 28864 28865 +f 28873 28865 28874 +f 28874 28865 28866 +f 28874 28866 28875 +f 28875 28866 28867 +f 28875 28867 28876 +f 28876 28867 28868 +f 28876 28868 28877 +f 28877 28868 28869 +f 28877 28869 28878 +f 28878 28869 28633 +f 28878 28633 28632 +f 27969 27971 28879 +f 28879 27971 28870 +f 28879 28870 28880 +f 28880 28870 28871 +f 28880 28871 28881 +f 28881 28871 28872 +f 28881 28872 28882 +f 28882 28872 28873 +f 28882 28873 28883 +f 28883 28873 28874 +f 28883 28874 28884 +f 28884 28874 28875 +f 28884 28875 28885 +f 28885 28875 28876 +f 28885 28876 28886 +f 28886 28876 28877 +f 28886 28877 28887 +f 28887 28877 28878 +f 28887 28878 28888 +f 28888 28878 28632 +f 28888 28632 28631 +f 27965 28715 27963 +f 27963 28715 28889 +f 27963 28889 27961 +f 27961 28889 28742 +f 27957 28754 27955 +f 27955 28754 28890 +f 27955 28890 27953 +f 27953 28890 28891 +f 27953 28891 27951 +f 27951 28891 28892 +f 27951 28892 27949 +f 27949 28892 28893 +f 27949 28893 27947 +f 27947 28893 28894 +f 27947 28894 27945 +f 27945 28894 28774 +f 27941 28778 27939 +f 27939 28778 28895 +f 27939 28895 27937 +f 27937 28895 28781 +f 28880 28896 28879 +f 28879 28896 28699 +f 28879 28699 27969 +f 28699 28896 28697 +f 28697 28896 28897 +f 28697 28897 28695 +f 28695 28897 28898 +f 28695 28898 28693 +f 28693 28898 28899 +f 28693 28899 28691 +f 28691 28899 28900 +f 28691 28900 28689 +f 28689 28900 28901 +f 28689 28901 28687 +f 28687 28901 28902 +f 28687 28902 28685 +f 28685 28902 28903 +f 28685 28903 28683 +f 28683 28903 28904 +f 28683 28904 28681 +f 28681 28904 28905 +f 28681 28905 28679 +f 28679 28905 28906 +f 28679 28906 28677 +f 28677 28906 28907 +f 28677 28907 28675 +f 28675 28907 28908 +f 28675 28908 28673 +f 28673 28908 28909 +f 28673 28909 28671 +f 28671 28909 28910 +f 28671 28910 28669 +f 28669 28910 28911 +f 28669 28911 28667 +f 28667 28911 28665 +f 28896 28880 28912 +f 28912 28880 28881 +f 28912 28881 28913 +f 28913 28881 28882 +f 28913 28882 28914 +f 28914 28882 28883 +f 28914 28883 28915 +f 28915 28883 28884 +f 28915 28884 28916 +f 28916 28884 28885 +f 28916 28885 28917 +f 28917 28885 28886 +f 28917 28886 28918 +f 28918 28886 28887 +f 28918 28887 28919 +f 28919 28887 28888 +f 28919 28888 28920 +f 28920 28888 28631 +f 28920 28631 28630 +f 28889 28715 28714 +f 28742 28889 28921 +f 28921 28889 28714 +f 28921 28714 28713 +f 28742 28921 28740 +f 28740 28921 28922 +f 28740 28922 28738 +f 28738 28922 28923 +f 28738 28923 28736 +f 28736 28923 28924 +f 28736 28924 28734 +f 28734 28924 28925 +f 28734 28925 28732 +f 28732 28925 28926 +f 28732 28926 28730 +f 28730 28926 28927 +f 28730 28927 28728 +f 28728 28927 28928 +f 28728 28928 28726 +f 28726 28928 28929 +f 28726 28929 28724 +f 28724 28929 28930 +f 28724 28930 28722 +f 28722 28930 28931 +f 28722 28931 28720 +f 28720 28931 28932 +f 28720 28932 28718 +f 28718 28932 28716 +f 28922 28921 28713 +f 28890 28754 28753 +f 28891 28890 28933 +f 28933 28890 28753 +f 28933 28753 28752 +f 28892 28891 28934 +f 28934 28891 28933 +f 28934 28933 28935 +f 28935 28933 28752 +f 28935 28752 28751 +f 28893 28892 28936 +f 28936 28892 28934 +f 28936 28934 28937 +f 28937 28934 28935 +f 28937 28935 28938 +f 28938 28935 28751 +f 28938 28751 28750 +f 28894 28893 28939 +f 28939 28893 28936 +f 28939 28936 28940 +f 28940 28936 28937 +f 28940 28937 28941 +f 28941 28937 28938 +f 28941 28938 28942 +f 28942 28938 28750 +f 28942 28750 28749 +f 28774 28894 28943 +f 28943 28894 28939 +f 28943 28939 28944 +f 28944 28939 28940 +f 28944 28940 28945 +f 28945 28940 28941 +f 28945 28941 28946 +f 28946 28941 28942 +f 28946 28942 28947 +f 28947 28942 28749 +f 28947 28749 28748 +f 28774 28943 28772 +f 28772 28943 28948 +f 28772 28948 28770 +f 28770 28948 28949 +f 28770 28949 28768 +f 28768 28949 28950 +f 28768 28950 28766 +f 28766 28950 28764 +f 28948 28943 28944 +f 28895 28778 28777 +f 28781 28895 28779 +f 28779 28895 28777 +f 28779 28777 28776 +f 28896 28912 28897 +f 28897 28912 28951 +f 28897 28951 28898 +f 28898 28951 28952 +f 28898 28952 28899 +f 28899 28952 28953 +f 28899 28953 28900 +f 28900 28953 28954 +f 28900 28954 28901 +f 28901 28954 28955 +f 28901 28955 28902 +f 28902 28955 28956 +f 28902 28956 28903 +f 28903 28956 28957 +f 28903 28957 28904 +f 28904 28957 28958 +f 28904 28958 28905 +f 28905 28958 28959 +f 28905 28959 28906 +f 28906 28959 28960 +f 28906 28960 28907 +f 28907 28960 28961 +f 28907 28961 28908 +f 28908 28961 28962 +f 28908 28962 28909 +f 28909 28962 28963 +f 28909 28963 28910 +f 28910 28963 28964 +f 28910 28964 28911 +f 28911 28964 28965 +f 28911 28965 28665 +f 28665 28965 28649 +f 28951 28912 28913 +f 28923 28922 28712 +f 28712 28922 28713 +f 28948 28944 28966 +f 28966 28944 28945 +f 28966 28945 28967 +f 28967 28945 28946 +f 28967 28946 28968 +f 28968 28946 28947 +f 28968 28947 28969 +f 28969 28947 28748 +f 28969 28748 28747 +f 28951 28913 28970 +f 28970 28913 28914 +f 28970 28914 28971 +f 28971 28914 28915 +f 28971 28915 28972 +f 28972 28915 28916 +f 28972 28916 28973 +f 28973 28916 28917 +f 28973 28917 28974 +f 28974 28917 28918 +f 28974 28918 28975 +f 28975 28918 28919 +f 28975 28919 28976 +f 28976 28919 28920 +f 28976 28920 28977 +f 28977 28920 28630 +f 28977 28630 28629 +f 28924 28923 28711 +f 28711 28923 28712 +f 28948 28966 28949 +f 28949 28966 28978 +f 28949 28978 28950 +f 28950 28978 28979 +f 28950 28979 28764 +f 28764 28979 28759 +f 28978 28966 28967 +f 28951 28970 28952 +f 28952 28970 28980 +f 28952 28980 28953 +f 28953 28980 28981 +f 28953 28981 28954 +f 28954 28981 28982 +f 28954 28982 28955 +f 28955 28982 28983 +f 28955 28983 28956 +f 28956 28983 28984 +f 28956 28984 28957 +f 28957 28984 28985 +f 28957 28985 28958 +f 28958 28985 28986 +f 28958 28986 28959 +f 28959 28986 28987 +f 28959 28987 28960 +f 28960 28987 28988 +f 28960 28988 28961 +f 28961 28988 28989 +f 28961 28989 28962 +f 28962 28989 28990 +f 28962 28990 28963 +f 28963 28990 28991 +f 28963 28991 28964 +f 28964 28991 28992 +f 28964 28992 28965 +f 28965 28992 28993 +f 28965 28993 28649 +f 28649 28993 28650 +f 28980 28970 28971 +f 28925 28924 28710 +f 28710 28924 28711 +f 28978 28967 28994 +f 28994 28967 28968 +f 28994 28968 28995 +f 28995 28968 28969 +f 28995 28969 28763 +f 28763 28969 28747 +f 28980 28971 28996 +f 28996 28971 28972 +f 28996 28972 28997 +f 28997 28972 28973 +f 28997 28973 28998 +f 28998 28973 28974 +f 28998 28974 28999 +f 28999 28974 28975 +f 28999 28975 29000 +f 29000 28975 28976 +f 29000 28976 29001 +f 29001 28976 28977 +f 29001 28977 29002 +f 29002 28977 28629 +f 29002 28629 28628 +f 28926 28925 28709 +f 28709 28925 28710 +f 28978 28994 28979 +f 28979 28994 29003 +f 28979 29003 28759 +f 28759 29003 28760 +f 29003 28994 28995 +f 28997 29004 28996 +f 28996 29004 28981 +f 28996 28981 28980 +f 28981 29004 28982 +f 28982 29004 29005 +f 28982 29005 28983 +f 28983 29005 29006 +f 28983 29006 28984 +f 28984 29006 29007 +f 28984 29007 28985 +f 28985 29007 29008 +f 28985 29008 28986 +f 28986 29008 29009 +f 28986 29009 28987 +f 28987 29009 29010 +f 28987 29010 28988 +f 28988 29010 29011 +f 28988 29011 28989 +f 28989 29011 29012 +f 28989 29012 28990 +f 28990 29012 29013 +f 28990 29013 28991 +f 28991 29013 29014 +f 28991 29014 28992 +f 28992 29014 29015 +f 28992 29015 28993 +f 28993 29015 28652 +f 28993 28652 28650 +f 29004 28997 29016 +f 29016 28997 28998 +f 29016 28998 29017 +f 29017 28998 28999 +f 29017 28999 29018 +f 29018 28999 29000 +f 29018 29000 29019 +f 29019 29000 29001 +f 29019 29001 29020 +f 29020 29001 29002 +f 29020 29002 29021 +f 29021 29002 28628 +f 29021 28628 28627 +f 28926 28709 28708 +f 28926 28708 28927 +f 28927 28708 28707 +f 28927 28707 28928 +f 28928 28707 28706 +f 28928 28706 28929 +f 28929 28706 28705 +f 28929 28705 28930 +f 28930 28705 28704 +f 28930 28704 28931 +f 28931 28704 28703 +f 28931 28703 28932 +f 28932 28703 28702 +f 28932 28702 28716 +f 28716 28702 28701 +f 29003 28995 28761 +f 28761 28995 28763 +f 28761 28760 29003 +f 29004 29016 29005 +f 29005 29016 29022 +f 29005 29022 29006 +f 29006 29022 29023 +f 29006 29023 29007 +f 29007 29023 29024 +f 29007 29024 29008 +f 29008 29024 29025 +f 29008 29025 29009 +f 29009 29025 29026 +f 29009 29026 29010 +f 29010 29026 29027 +f 29010 29027 29011 +f 29011 29027 29028 +f 29011 29028 29012 +f 29012 29028 29029 +f 29012 29029 29013 +f 29013 29029 29030 +f 29013 29030 29014 +f 29014 29030 29031 +f 29014 29031 29015 +f 29015 29031 28654 +f 29015 28654 28652 +f 29022 29016 29017 +f 28757 28756 28762 +f 28757 28762 28745 +f 28745 28762 28746 +f 29022 29017 29032 +f 29032 29017 29018 +f 29032 29018 29033 +f 29033 29018 29019 +f 29033 29019 29034 +f 29034 29019 29020 +f 29034 29020 29035 +f 29035 29020 29021 +f 29035 29021 29036 +f 29036 29021 28627 +f 29036 28627 28626 +f 28192 28214 28193 +f 28193 28214 29037 +f 28193 29037 28194 +f 28194 29037 29038 +f 28194 29038 28195 +f 28195 29038 29039 +f 28195 29039 28196 +f 28196 29039 29040 +f 28196 29040 28197 +f 28197 29040 29041 +f 28197 29041 28198 +f 28198 29041 29042 +f 28198 29042 28199 +f 28199 29042 29043 +f 28199 29043 28200 +f 28200 29043 29044 +f 28200 29044 28201 +f 28201 29044 29045 +f 28201 29045 28202 +f 28202 29045 29046 +f 28202 29046 28203 +f 28203 29046 29047 +f 28203 29047 28204 +f 28204 29047 29048 +f 28204 29048 28205 +f 28205 29048 29049 +f 28205 29049 28206 +f 28206 29049 29050 +f 28206 29050 28207 +f 28207 29050 29051 +f 28207 29051 28208 +f 28208 29051 29052 +f 28208 29052 28209 +f 28209 29052 29053 +f 28209 29053 28210 +f 28210 29053 29054 +f 28210 29054 28211 +f 28211 29054 29055 +f 28211 29055 28212 +f 28212 29055 29056 +f 28212 29056 28213 +f 28213 29056 28039 +f 28213 28039 28037 +f 29033 29057 29032 +f 29032 29057 29023 +f 29032 29023 29022 +f 29023 29057 29024 +f 29024 29057 29058 +f 29024 29058 29025 +f 29025 29058 29059 +f 29025 29059 29026 +f 29026 29059 29060 +f 29026 29060 29027 +f 29027 29060 29061 +f 29027 29061 29028 +f 29028 29061 29062 +f 29028 29062 29029 +f 29029 29062 29063 +f 29029 29063 29030 +f 29030 29063 29064 +f 29030 29064 29031 +f 29031 29064 28656 +f 29031 28656 28654 +f 29057 29033 29065 +f 29065 29033 29034 +f 29065 29034 29066 +f 29066 29034 29035 +f 29066 29035 29067 +f 29067 29035 29036 +f 29067 29036 29068 +f 29068 29036 28626 +f 29068 28626 28625 +f 28215 28217 29037 +f 29037 28217 29038 +f 29039 29038 28219 +f 28219 29038 28217 +f 29066 29069 29065 +f 29065 29069 29058 +f 29065 29058 29057 +f 29058 29069 29059 +f 29059 29069 29070 +f 29059 29070 29060 +f 29060 29070 29071 +f 29060 29071 29061 +f 29061 29071 29072 +f 29061 29072 29062 +f 29062 29072 29073 +f 29062 29073 29063 +f 29063 29073 29074 +f 29063 29074 29064 +f 29064 29074 28658 +f 29064 28658 28656 +f 29069 29066 29075 +f 29075 29066 29067 +f 29075 29067 29076 +f 29076 29067 29068 +f 29076 29068 29077 +f 29077 29068 28625 +f 29077 28625 28624 +f 28214 28215 29037 +f 29040 29039 28221 +f 28221 29039 28219 +f 29069 29075 29070 +f 29070 29075 29078 +f 29070 29078 29071 +f 29071 29078 29079 +f 29071 29079 29072 +f 29072 29079 29080 +f 29072 29080 29073 +f 29073 29080 29081 +f 29073 29081 29074 +f 29074 29081 28660 +f 29074 28660 28658 +f 29078 29075 29076 +f 29041 29040 28223 +f 28223 29040 28221 +f 29078 29076 29082 +f 29082 29076 29077 +f 29082 29077 29083 +f 29083 29077 28624 +f 29083 28624 28623 +f 29042 29041 28225 +f 28225 29041 28223 +f 29078 29082 29079 +f 29079 29082 29084 +f 29079 29084 29080 +f 29080 29084 29085 +f 29080 29085 29081 +f 29081 29085 28662 +f 29081 28662 28660 +f 29084 29082 29083 +f 29043 29042 28227 +f 28227 29042 28225 +f 29084 29083 29086 +f 29086 29083 28623 +f 29086 28623 28622 +f 29044 29043 28229 +f 28229 29043 28227 +f 29084 29086 29085 +f 29085 29086 28664 +f 29085 28664 28662 +f 28664 29086 28622 +f 28337 29087 29088 +f 29088 29087 28322 +f 29088 28322 28321 +f 28322 29087 28323 +f 28323 29087 29089 +f 28323 29089 28324 +f 28324 29089 29090 +f 28324 29090 28325 +f 28325 29090 29091 +f 28325 29091 28326 +f 28326 29091 29092 +f 28326 29092 28327 +f 28327 29092 29093 +f 28327 29093 28328 +f 28328 29093 29094 +f 28328 29094 28329 +f 28329 29094 29095 +f 28329 29095 28330 +f 28330 29095 29096 +f 28330 29096 28331 +f 28331 29096 29097 +f 28331 29097 28332 +f 28332 29097 29098 +f 28332 29098 28333 +f 28333 29098 28055 +f 28333 28055 28053 +f 29089 29087 28339 +f 28339 29087 28337 +f 28231 28233 29045 +f 29045 28233 29046 +f 29047 29046 28235 +f 28235 29046 28233 +f 28229 28231 29044 +f 29044 28231 29045 +f 28334 28335 29088 +f 29088 28335 28337 +f 28334 29088 28321 +f 28358 28368 28359 +f 28359 28368 29099 +f 28359 29099 28360 +f 28360 29099 29100 +f 28360 29100 28361 +f 28361 29100 29101 +f 28361 29101 28362 +f 28362 29101 29102 +f 28362 29102 28363 +f 28363 29102 29103 +f 28363 29103 28364 +f 28364 29103 29104 +f 28364 29104 28365 +f 28365 29104 29105 +f 28365 29105 28366 +f 28366 29105 29106 +f 28366 29106 28367 +f 28367 29106 28063 +f 28367 28063 28061 +f 29089 28339 28341 +f 29089 28341 29090 +f 29090 28341 28343 +f 29090 28343 29091 +f 29091 28343 28345 +f 29091 28345 29092 +f 29092 28345 28347 +f 29092 28347 29093 +f 29093 28347 28349 +f 29093 28349 29094 +f 29094 28349 28351 +f 29094 28351 29095 +f 29095 28351 28353 +f 29095 28353 29096 +f 29096 28353 28355 +f 29096 28355 29097 +f 29097 28355 28357 +f 29097 28357 29098 +f 29098 28357 28057 +f 29098 28057 28055 +f 29047 28235 28237 +f 29047 28237 29048 +f 29048 28237 28239 +f 29048 28239 29049 +f 29049 28239 28241 +f 29049 28241 29050 +f 29050 28241 28243 +f 29050 28243 29051 +f 29051 28243 28245 +f 29051 28245 29052 +f 29052 28245 28247 +f 29052 28247 29053 +f 29053 28247 28249 +f 29053 28249 29054 +f 29054 28249 28251 +f 29054 28251 29055 +f 29055 28251 28253 +f 29055 28253 29056 +f 29056 28253 28041 +f 29056 28041 28039 +f 28791 28619 28618 +f 28790 28791 28647 +f 28647 28791 28618 +f 28789 28790 28645 +f 28645 28790 28647 +f 28788 28789 28643 +f 28643 28789 28645 +f 28640 28788 28641 +f 28641 28788 28643 +f 28369 28371 29099 +f 29099 28371 29100 +f 29101 29100 28373 +f 28373 29100 28371 +f 28638 28637 28792 +f 28638 28792 28615 +f 28615 28792 28616 +f 28368 28369 29099 +f 28384 28390 28385 +f 28385 28390 29107 +f 28385 29107 28386 +f 28386 29107 29108 +f 28386 29108 28387 +f 28387 29108 29109 +f 28387 29109 28388 +f 28388 29109 29110 +f 28388 29110 28389 +f 28389 29110 28071 +f 28389 28071 28069 +f 29101 28373 28375 +f 29101 28375 29102 +f 29102 28375 28377 +f 29102 28377 29103 +f 29103 28377 28379 +f 29103 28379 29104 +f 29104 28379 28381 +f 29104 28381 29105 +f 29105 28381 28383 +f 29105 28383 29106 +f 29106 28383 28065 +f 29106 28065 28063 +f 28391 28393 29107 +f 29107 28393 29108 +f 29109 29108 28395 +f 28395 29108 28393 +f 28390 28391 29107 +f 29110 29109 28397 +f 28397 29109 28395 +f 28071 29110 28073 +f 28073 29110 28397 +f 28403 28402 28429 +f 28429 28402 28401 +f 28404 28403 28431 +f 28431 28403 28429 +f 28405 28404 28433 +f 28433 28404 28431 +f 28406 28405 28435 +f 28435 28405 28433 +f 28407 28406 28437 +f 28437 28406 28435 +f 28408 28407 28439 +f 28439 28407 28437 +f 28409 28408 28441 +f 28441 28408 28439 +f 28410 28409 28443 +f 28443 28409 28441 +f 28411 28410 28445 +f 28445 28410 28443 +f 28412 28411 28447 +f 28447 28411 28445 +f 28413 28412 28449 +f 28449 28412 28447 +f 28414 28413 28451 +f 28451 28413 28449 +f 28415 28414 28453 +f 28453 28414 28451 +f 28416 28415 28455 +f 28455 28415 28453 +f 28417 28416 28457 +f 28457 28416 28455 +f 28418 28417 28459 +f 28459 28417 28457 +f 28419 28418 28461 +f 28461 28418 28459 +f 28420 28419 28463 +f 28463 28419 28461 +f 28421 28420 28465 +f 28465 28420 28463 +f 28422 28421 28467 +f 28467 28421 28465 +f 28423 28422 28469 +f 28469 28422 28467 +f 28424 28423 28471 +f 28471 28423 28469 +f 28428 28427 28793 +f 28793 28427 28426 +f 28430 28428 28794 +f 28794 28428 28793 +f 28432 28430 28795 +f 28795 28430 28794 +f 28434 28432 28796 +f 28796 28432 28795 +f 28436 28434 28797 +f 28797 28434 28796 +f 28438 28436 28798 +f 28798 28436 28797 +f 28440 28438 28799 +f 28799 28438 28798 +f 28442 28440 28800 +f 28800 28440 28799 +f 28444 28442 28801 +f 28801 28442 28800 +f 28446 28444 28802 +f 28802 28444 28801 +f 28448 28446 28803 +f 28803 28446 28802 +f 28450 28448 28804 +f 28804 28448 28803 +f 28452 28450 28805 +f 28805 28450 28804 +f 28454 28452 28806 +f 28806 28452 28805 +f 28456 28454 28807 +f 28807 28454 28806 +f 28458 28456 28808 +f 28808 28456 28807 +f 28460 28458 28809 +f 28809 28458 28808 +f 28462 28460 28810 +f 28810 28460 28809 +f 28464 28462 28811 +f 28811 28462 28810 +f 28466 28464 28812 +f 28812 28464 28811 +f 28468 28466 28813 +f 28813 28466 28812 +f 28813 28520 28468 +f 28472 28524 28473 +f 28473 28524 28475 +f 28524 28526 28475 +f 28475 28526 28477 +f 28526 28528 28477 +f 28477 28528 28479 +f 28528 28530 28479 +f 28479 28530 28481 +f 28530 28532 28481 +f 28481 28532 28483 +f 28532 28534 28483 +f 28483 28534 28485 +f 28534 28536 28485 +f 28485 28536 28487 +f 28536 28538 28487 +f 28487 28538 28489 +f 28538 28540 28489 +f 28489 28540 28491 +f 28540 28542 28491 +f 28491 28542 28493 +f 28542 28544 28493 +f 28493 28544 28495 +f 28544 28546 28495 +f 28495 28546 28497 +f 28546 28548 28497 +f 28497 28548 28499 +f 28548 28550 28499 +f 28499 28550 28501 +f 28550 28552 28501 +f 28501 28552 28503 +f 28552 28554 28503 +f 28503 28554 28505 +f 28554 28556 28505 +f 28505 28556 28507 +f 28556 28558 28507 +f 28507 28558 28509 +f 28558 28560 28509 +f 28509 28560 28511 +f 28560 28562 28511 +f 28511 28562 28513 +f 28566 28517 28515 +f 28562 28564 28513 +f 28513 28564 28515 +f 28564 28566 28515 +f 28523 28522 29111 +f 29111 28522 28521 +f 29111 28521 29112 +f 29112 28521 28568 +f 29112 28568 28570 +f 28570 28568 28569 +f 28525 28523 29113 +f 29113 28523 29111 +f 29113 29111 29114 +f 29114 29111 29112 +f 29114 29112 28571 +f 28571 29112 28570 +f 28527 28525 29115 +f 29115 28525 29113 +f 29115 29113 29116 +f 29116 29113 29114 +f 29116 29114 28572 +f 28572 29114 28571 +f 28529 28527 29117 +f 29117 28527 29115 +f 29117 29115 29118 +f 29118 29115 29116 +f 29118 29116 28573 +f 28573 29116 28572 +f 28531 28529 29119 +f 29119 28529 29117 +f 29119 29117 29120 +f 29120 29117 29118 +f 29120 29118 28574 +f 28574 29118 28573 +f 28533 28531 29121 +f 29121 28531 29119 +f 29121 29119 29122 +f 29122 29119 29120 +f 29122 29120 28575 +f 28575 29120 28574 +f 28581 28537 28535 +f 28535 28533 29123 +f 29123 28533 29121 +f 29123 29121 29124 +f 29124 29121 29122 +f 29124 29122 28576 +f 28576 29122 28575 +f 28543 28541 29125 +f 29125 28541 28585 +f 29125 28585 29126 +f 29126 28585 28584 +f 29126 28584 28586 +f 28586 28584 28583 +f 28592 28547 28545 +f 28545 28543 29127 +f 29127 28543 29125 +f 29127 29125 29128 +f 29128 29125 29126 +f 29128 29126 28587 +f 28587 29126 28586 +f 28555 28553 29129 +f 29129 28553 28599 +f 29129 28599 29130 +f 29130 28599 28598 +f 29130 28598 28600 +f 28600 28598 28597 +f 28557 28555 29131 +f 29131 28555 29129 +f 29131 29129 29132 +f 29132 29129 29130 +f 29132 29130 28601 +f 28601 29130 28600 +f 28607 28561 28559 +f 28559 28557 29133 +f 29133 28557 29131 +f 29133 29131 29134 +f 29134 29131 29132 +f 29134 29132 28602 +f 28602 29132 28601 +f 28612 28565 28563 +f 28612 28563 28608 +f 29124 28579 29123 +f 29123 28579 28581 +f 29123 28581 28535 +f 28576 28577 29124 +f 29124 28577 28579 +f 29128 28590 29127 +f 29127 28590 28592 +f 29127 28592 28545 +f 28587 28588 29128 +f 29128 28588 28590 +f 29134 28605 29133 +f 29133 28605 28607 +f 29133 28607 28559 +f 28602 28603 29134 +f 29134 28603 28605 +f 28612 28608 28611 +f 28609 28606 28604 +f 28320 28334 28321 +f 27917 28700 27918 +f 27918 28700 28666 +f 27918 28666 28610 +f 28610 28666 28648 +f 28610 28648 28567 +f 28567 28648 28639 +f 28567 28639 28519 +f 28519 28639 28636 +f 28519 28636 28425 +f 28425 28636 28613 +f 28425 28613 28036 +f 28036 28613 28032 +f 28036 28032 28034 +f 28700 27917 28717 +f 28717 27917 27931 +f 28717 27931 28743 +f 28743 27931 27933 +f 28743 27933 28755 +f 28755 27933 28780 +f 28755 28780 28758 +f 28758 28780 28775 +f 28758 28775 28765 +f 29135 29136 29137 +f 29138 29136 29139 +f 29140 29136 29141 +f 29142 29136 29143 +f 29144 29136 29145 +f 29146 29136 29147 +f 29148 29136 29149 +f 29150 29136 29151 +f 29152 29136 29153 +f 29154 29136 29155 +f 29156 29136 29157 +f 29158 29136 29159 +f 29149 29136 29146 +f 29141 29136 29138 +f 29157 29136 29154 +f 29147 29136 29144 +f 29145 29136 29142 +f 29143 29136 29140 +f 29139 29136 29135 +f 29137 29136 29158 +f 29159 29136 29156 +f 29155 29136 29152 +f 29153 29136 29150 +f 29151 29136 29148 +f 29135 29137 29160 +f 29160 29137 29158 +f 29160 29158 29161 +f 29161 29158 29159 +f 29161 29159 29162 +f 29162 29159 29156 +f 29162 29156 29163 +f 29163 29156 29157 +f 29163 29157 29164 +f 29164 29157 29154 +f 29164 29154 29165 +f 29165 29154 29155 +f 29165 29155 29166 +f 29166 29155 29167 +f 29167 29155 29152 +f 29167 29152 29168 +f 29168 29152 29153 +f 29168 29153 29169 +f 29169 29153 29150 +f 29169 29150 29170 +f 29170 29150 29151 +f 29170 29151 29171 +f 29171 29151 29148 +f 29171 29148 29172 +f 29172 29148 29149 +f 29172 29149 29173 +f 29173 29149 29146 +f 29173 29146 29147 +f 29173 29147 29174 +f 29174 29147 29144 +f 29174 29144 29175 +f 29175 29144 29145 +f 29175 29145 29176 +f 29176 29145 29142 +f 29176 29142 29177 +f 29177 29142 29143 +f 29177 29143 29178 +f 29178 29143 29179 +f 29179 29143 29140 +f 29179 29140 29180 +f 29180 29140 29141 +f 29180 29141 29181 +f 29181 29141 29138 +f 29181 29138 29182 +f 29182 29138 29139 +f 29182 29139 29183 +f 29183 29139 29135 +f 29183 29135 29160 +f 27846 27848 29184 +f 29184 27848 29185 +f 29184 29185 29186 +f 29186 29185 29187 +f 29186 29187 29188 +f 29188 29187 29189 +f 29188 29189 29190 +f 29190 29189 29191 +f 29190 29191 29192 +f 29192 29191 29193 +f 29192 29193 29194 +f 29194 29193 29195 +f 29194 29195 29196 +f 29196 29195 29197 +f 29196 29197 29198 +f 29198 29197 29199 +f 29198 29199 29200 +f 29200 29199 29201 +f 29200 29201 29202 +f 29202 29201 29203 +f 29202 29203 29204 +f 29204 29203 29205 +f 29204 29205 29206 +f 29206 29205 29207 +f 29206 29207 29208 +f 29208 29207 29209 +f 29208 29209 29210 +f 29210 29209 29211 +f 29210 29211 29212 +f 29212 29211 29213 +f 29212 29213 29214 +f 29214 29213 29215 +f 29214 29215 29216 +f 29216 29215 29217 +f 29216 29217 29218 +f 29218 29217 29219 +f 29218 29219 29220 +f 29220 29219 29221 +f 29220 29221 29222 +f 29222 29221 29223 +f 29222 29223 29224 +f 29224 29223 29225 +f 29224 29225 29226 +f 29226 29225 29227 +f 29226 29227 29228 +f 29228 29227 29229 +f 29228 29229 29230 +f 29230 29229 29231 +f 29230 29231 29232 +f 29232 29231 29233 +f 29232 29233 29234 +f 29234 29233 29235 +f 29234 29235 29236 +f 29236 29235 29237 +f 29236 29237 29238 +f 29238 29237 29239 +f 29238 29239 29240 +f 29240 29239 29241 +f 29240 29241 29242 +f 29242 29241 29243 +f 29242 29243 29244 +f 29244 29243 29245 +f 29244 29245 29246 +f 29246 29245 29247 +f 29246 29247 29248 +f 29248 29247 29249 +f 29248 29249 29250 +f 29250 29249 29251 +f 29250 29251 29252 +f 29252 29251 29253 +f 29252 29253 29254 +f 29254 29253 29255 +f 29254 29255 29256 +f 29256 29255 29257 +f 29256 29257 29258 +f 29258 29257 29259 +f 29258 29259 29260 +f 29260 29259 29261 +f 29260 29261 29262 +f 29262 29261 29263 +f 29262 29263 29264 +f 29264 29263 29265 +f 29264 29265 29266 +f 29266 29265 29267 +f 29266 29267 29268 +f 29268 29267 29269 +f 29268 29269 29270 +f 29270 29269 29271 +f 29270 29271 29272 +f 29272 29271 29273 +f 29272 29273 29274 +f 29274 29273 29275 +f 29274 29275 29276 +f 29276 29275 29277 +f 29276 29277 29278 +f 29278 29277 29279 +f 29278 29279 29280 +f 29280 29279 29281 +f 29280 29281 29197 +f 29197 29281 29282 +f 29282 29281 29283 +f 29282 29283 29284 +f 29284 29283 29285 +f 29284 29285 29286 +f 29286 29285 29287 +f 29286 29287 29288 +f 29288 29287 29289 +f 29288 29289 29290 +f 29290 29289 29291 +f 29290 29291 29292 +f 29292 29291 29293 +f 29292 29293 29294 +f 29294 29293 29295 +f 29294 29295 29296 +f 29296 29295 29297 +f 29296 29297 29298 +f 29298 29297 29299 +f 29298 29299 29300 +f 29300 29299 29301 +f 29300 29301 29302 +f 29302 29301 29303 +f 29302 29303 29304 +f 29304 29303 29305 +f 29304 29305 29306 +f 29306 29305 29307 +f 29306 29307 29308 +f 29308 29307 29309 +f 29308 29309 29310 +f 29310 29309 29311 +f 29310 29311 29312 +f 29312 29311 29313 +f 29312 29313 29314 +f 29314 29313 29315 +f 29314 29315 29175 +f 29175 29315 29174 +f 29174 29315 29316 +f 29174 29316 29317 +f 29317 29316 29318 +f 29317 29318 29319 +f 29319 29318 29320 +f 29319 29320 29321 +f 29321 29320 29322 +f 29321 29322 29323 +f 29323 29322 29324 +f 29323 29324 29325 +f 29325 29324 29326 +f 29325 29326 29327 +f 29327 29326 29328 +f 29327 29328 29329 +f 29329 29328 29330 +f 29329 29330 29331 +f 29331 29330 29332 +f 29331 29332 29333 +f 29333 29332 29334 +f 29333 29334 29335 +f 29335 29334 29336 +f 29335 29336 29337 +f 29337 29336 29338 +f 29337 29338 29339 +f 29339 29338 29340 +f 29339 29340 29341 +f 29341 29340 29342 +f 29341 29342 29343 +f 29343 29342 29344 +f 29343 29344 29345 +f 29345 29344 29346 +f 29345 29346 29347 +f 29347 29346 29348 +f 29347 29348 29349 +f 29349 29348 29247 +f 29349 29247 29245 +f 29197 29282 29199 +f 29199 29282 29350 +f 29199 29350 29201 +f 29201 29350 29351 +f 29201 29351 29203 +f 29203 29351 29352 +f 29203 29352 29205 +f 29205 29352 29353 +f 29205 29353 29207 +f 29207 29353 29354 +f 29207 29354 29209 +f 29209 29354 29355 +f 29209 29355 29211 +f 29211 29355 29356 +f 29211 29356 29213 +f 29213 29356 29357 +f 29213 29357 29215 +f 29215 29357 29358 +f 29215 29358 29217 +f 29217 29358 29359 +f 29217 29359 29219 +f 29219 29359 29360 +f 29219 29360 29221 +f 29221 29360 29361 +f 29221 29361 29223 +f 29223 29361 29362 +f 29223 29362 29225 +f 29225 29362 29363 +f 29225 29363 29227 +f 29227 29363 29364 +f 29227 29364 29229 +f 29229 29364 29365 +f 29229 29365 29231 +f 29231 29365 29366 +f 29231 29366 29233 +f 29233 29366 29367 +f 29233 29367 29235 +f 29235 29367 29368 +f 29235 29368 29237 +f 29237 29368 29369 +f 29237 29369 29239 +f 29239 29369 29370 +f 29239 29370 29241 +f 29241 29370 29371 +f 29241 29371 29243 +f 29243 29371 29372 +f 29243 29372 29245 +f 29245 29372 29349 +f 29350 29282 29373 +f 29373 29282 29374 +f 29373 29374 29375 +f 29375 29374 29376 +f 29375 29376 29377 +f 29377 29376 29378 +f 29377 29378 29379 +f 29379 29378 29380 +f 29379 29380 29381 +f 29381 29380 29382 +f 29381 29382 29383 +f 29383 29382 29384 +f 29383 29384 29385 +f 29385 29384 29386 +f 29385 29386 29387 +f 29387 29386 29388 +f 29387 29388 29389 +f 29389 29388 29390 +f 29389 29390 29391 +f 29391 29390 29392 +f 29391 29392 29393 +f 29393 29392 29394 +f 29393 29394 29395 +f 29395 29394 29396 +f 29395 29396 29397 +f 29397 29396 29398 +f 29397 29398 29399 +f 29399 29398 29400 +f 29399 29400 29401 +f 29401 29400 29402 +f 29401 29402 29403 +f 29403 29402 29404 +f 29403 29404 29405 +f 29405 29404 29406 +f 29405 29406 29407 +f 29407 29406 29408 +f 29407 29408 29409 +f 29409 29408 29410 +f 29409 29410 29411 +f 29411 29410 29412 +f 29411 29412 29413 +f 29413 29412 29414 +f 29413 29414 29415 +f 29415 29414 29416 +f 29415 29416 29417 +f 29417 29416 29418 +f 29417 29418 29419 +f 29419 29418 29420 +f 29419 29420 29345 +f 29345 29420 29343 +f 29374 29421 29376 +f 29376 29421 29422 +f 29376 29422 29378 +f 29378 29422 29423 +f 29378 29423 29380 +f 29380 29423 29424 +f 29380 29424 29382 +f 29382 29424 29425 +f 29382 29425 29384 +f 29384 29425 29426 +f 29384 29426 29386 +f 29386 29426 29427 +f 29386 29427 29388 +f 29388 29427 29428 +f 29388 29428 29390 +f 29390 29428 29429 +f 29390 29429 29392 +f 29392 29429 29430 +f 29392 29430 29394 +f 29394 29430 29431 +f 29394 29431 29396 +f 29396 29431 29432 +f 29396 29432 29398 +f 29398 29432 29433 +f 29398 29433 29400 +f 29400 29433 29434 +f 29400 29434 29402 +f 29402 29434 29435 +f 29402 29435 29404 +f 29404 29435 29436 +f 29404 29436 29406 +f 29406 29436 29437 +f 29406 29437 29408 +f 29408 29437 29438 +f 29408 29438 29410 +f 29410 29438 29439 +f 29410 29439 29412 +f 29412 29439 29440 +f 29412 29440 29414 +f 29414 29440 29441 +f 29414 29441 29416 +f 29416 29441 29442 +f 29416 29442 29418 +f 29418 29442 29443 +f 29418 29443 29420 +f 29420 29443 29444 +f 29420 29444 29343 +f 29343 29444 29341 +f 29422 29421 29445 +f 29445 29421 29446 +f 29445 29446 29447 +f 29447 29446 29448 +f 29447 29448 29449 +f 29449 29448 29450 +f 29449 29450 29451 +f 29451 29450 29452 +f 29451 29452 29453 +f 29453 29452 29454 +f 29453 29454 29455 +f 29455 29454 29456 +f 29455 29456 29457 +f 29457 29456 29458 +f 29457 29458 29459 +f 29459 29458 29460 +f 29459 29460 29461 +f 29461 29460 29462 +f 29461 29462 29463 +f 29463 29462 29464 +f 29463 29464 29465 +f 29465 29464 29466 +f 29465 29466 29467 +f 29467 29466 29468 +f 29467 29468 29469 +f 29469 29468 29470 +f 29469 29470 29471 +f 29471 29470 29472 +f 29471 29472 29473 +f 29473 29472 29474 +f 29473 29474 29475 +f 29475 29474 29476 +f 29475 29476 29477 +f 29477 29476 29478 +f 29477 29478 29479 +f 29479 29478 29480 +f 29479 29480 29481 +f 29481 29480 29482 +f 29481 29482 29483 +f 29483 29482 29484 +f 29483 29484 29485 +f 29485 29484 29486 +f 29485 29486 29487 +f 29487 29486 29488 +f 29487 29488 29489 +f 29489 29488 29490 +f 29489 29490 29491 +f 29491 29490 29492 +f 29491 29492 29337 +f 29337 29492 29335 +f 29446 29493 29448 +f 29448 29493 29494 +f 29448 29494 29450 +f 29450 29494 29495 +f 29450 29495 29452 +f 29452 29495 29496 +f 29452 29496 29454 +f 29454 29496 29497 +f 29454 29497 29456 +f 29456 29497 29498 +f 29456 29498 29458 +f 29458 29498 29499 +f 29458 29499 29460 +f 29460 29499 29500 +f 29460 29500 29462 +f 29462 29500 29501 +f 29462 29501 29464 +f 29464 29501 29502 +f 29464 29502 29466 +f 29466 29502 29503 +f 29466 29503 29468 +f 29468 29503 29504 +f 29468 29504 29470 +f 29470 29504 29505 +f 29470 29505 29472 +f 29472 29505 29506 +f 29472 29506 29474 +f 29474 29506 29507 +f 29474 29507 29476 +f 29476 29507 29508 +f 29476 29508 29478 +f 29478 29508 29509 +f 29478 29509 29480 +f 29480 29509 29510 +f 29480 29510 29482 +f 29482 29510 29511 +f 29482 29511 29484 +f 29484 29511 29512 +f 29484 29512 29486 +f 29486 29512 29513 +f 29486 29513 29488 +f 29488 29513 29514 +f 29488 29514 29490 +f 29490 29514 29515 +f 29490 29515 29492 +f 29492 29515 29516 +f 29492 29516 29335 +f 29335 29516 29333 +f 29494 29493 29517 +f 29517 29493 29518 +f 29517 29518 29519 +f 29519 29518 29520 +f 29519 29520 29521 +f 29521 29520 29522 +f 29521 29522 29523 +f 29523 29522 29524 +f 29523 29524 29525 +f 29525 29524 29526 +f 29525 29526 29527 +f 29527 29526 29528 +f 29527 29528 29529 +f 29529 29528 29530 +f 29529 29530 29531 +f 29531 29530 29532 +f 29531 29532 29533 +f 29533 29532 29534 +f 29533 29534 29535 +f 29535 29534 29536 +f 29535 29536 29537 +f 29537 29536 29538 +f 29537 29538 29539 +f 29539 29538 29540 +f 29539 29540 29541 +f 29541 29540 29542 +f 29541 29542 29543 +f 29543 29542 29544 +f 29543 29544 29545 +f 29545 29544 29546 +f 29545 29546 29547 +f 29547 29546 29548 +f 29547 29548 29549 +f 29549 29548 29550 +f 29549 29550 29551 +f 29551 29550 29552 +f 29551 29552 29553 +f 29553 29552 29554 +f 29553 29554 29555 +f 29555 29554 29556 +f 29555 29556 29557 +f 29557 29556 29558 +f 29557 29558 29559 +f 29559 29558 29560 +f 29559 29560 29561 +f 29561 29560 29562 +f 29561 29562 29563 +f 29563 29562 29564 +f 29563 29564 29329 +f 29329 29564 29327 +f 29518 29565 29520 +f 29520 29565 29566 +f 29520 29566 29522 +f 29522 29566 29567 +f 29522 29567 29524 +f 29524 29567 29568 +f 29524 29568 29526 +f 29526 29568 29569 +f 29526 29569 29528 +f 29528 29569 29570 +f 29528 29570 29530 +f 29530 29570 29571 +f 29530 29571 29532 +f 29532 29571 29572 +f 29532 29572 29534 +f 29534 29572 29573 +f 29534 29573 29536 +f 29536 29573 29574 +f 29536 29574 29538 +f 29538 29574 29575 +f 29538 29575 29540 +f 29540 29575 29576 +f 29540 29576 29542 +f 29542 29576 29577 +f 29542 29577 29544 +f 29544 29577 29578 +f 29544 29578 29546 +f 29546 29578 29579 +f 29546 29579 29548 +f 29548 29579 29580 +f 29548 29580 29550 +f 29550 29580 29581 +f 29550 29581 29552 +f 29552 29581 29582 +f 29552 29582 29554 +f 29554 29582 29583 +f 29554 29583 29556 +f 29556 29583 29584 +f 29556 29584 29558 +f 29558 29584 29585 +f 29558 29585 29560 +f 29560 29585 29586 +f 29560 29586 29562 +f 29562 29586 29587 +f 29562 29587 29564 +f 29564 29587 29588 +f 29564 29588 29327 +f 29327 29588 29325 +f 29565 29589 29566 +f 29566 29589 29590 +f 29566 29590 29567 +f 29567 29590 29591 +f 29567 29591 29568 +f 29568 29591 29592 +f 29568 29592 29569 +f 29569 29592 29593 +f 29569 29593 29570 +f 29570 29593 29594 +f 29570 29594 29571 +f 29571 29594 29595 +f 29571 29595 29572 +f 29572 29595 29596 +f 29572 29596 29573 +f 29573 29596 29597 +f 29573 29597 29574 +f 29574 29597 29598 +f 29574 29598 29575 +f 29575 29598 29599 +f 29575 29599 29576 +f 29576 29599 29600 +f 29576 29600 29577 +f 29577 29600 29601 +f 29577 29601 29578 +f 29578 29601 29602 +f 29578 29602 29579 +f 29579 29602 29603 +f 29579 29603 29580 +f 29580 29603 29604 +f 29580 29604 29581 +f 29581 29604 29605 +f 29581 29605 29582 +f 29582 29605 29606 +f 29582 29606 29583 +f 29583 29606 29607 +f 29583 29607 29584 +f 29584 29607 29608 +f 29584 29608 29585 +f 29585 29608 29609 +f 29585 29609 29586 +f 29586 29609 29610 +f 29586 29610 29587 +f 29587 29610 29611 +f 29587 29611 29588 +f 29588 29611 29612 +f 29588 29612 29325 +f 29325 29612 29323 +f 29589 29613 29590 +f 29590 29613 29614 +f 29590 29614 29591 +f 29591 29614 29615 +f 29591 29615 29592 +f 29592 29615 29616 +f 29592 29616 29593 +f 29593 29616 29617 +f 29593 29617 29594 +f 29594 29617 29618 +f 29594 29618 29595 +f 29595 29618 29619 +f 29595 29619 29596 +f 29596 29619 29620 +f 29596 29620 29597 +f 29597 29620 29621 +f 29597 29621 29598 +f 29598 29621 29622 +f 29598 29622 29599 +f 29599 29622 29623 +f 29599 29623 29600 +f 29600 29623 29624 +f 29600 29624 29601 +f 29601 29624 29625 +f 29601 29625 29602 +f 29602 29625 29626 +f 29602 29626 29603 +f 29603 29626 29627 +f 29603 29627 29604 +f 29604 29627 29628 +f 29604 29628 29605 +f 29605 29628 29629 +f 29605 29629 29606 +f 29606 29629 29630 +f 29606 29630 29607 +f 29607 29630 29631 +f 29607 29631 29608 +f 29608 29631 29632 +f 29608 29632 29609 +f 29609 29632 29633 +f 29609 29633 29610 +f 29610 29633 29634 +f 29610 29634 29611 +f 29611 29634 29635 +f 29611 29635 29612 +f 29612 29635 29636 +f 29612 29636 29323 +f 29323 29636 29321 +f 29613 29637 29614 +f 29614 29637 29638 +f 29614 29638 29615 +f 29615 29638 29639 +f 29615 29639 29616 +f 29616 29639 29640 +f 29616 29640 29617 +f 29617 29640 29641 +f 29617 29641 29618 +f 29618 29641 29642 +f 29618 29642 29619 +f 29619 29642 29643 +f 29619 29643 29620 +f 29620 29643 29644 +f 29620 29644 29621 +f 29621 29644 29645 +f 29621 29645 29622 +f 29622 29645 29646 +f 29622 29646 29623 +f 29623 29646 29647 +f 29623 29647 29624 +f 29624 29647 29648 +f 29624 29648 29625 +f 29625 29648 29649 +f 29625 29649 29626 +f 29626 29649 29650 +f 29626 29650 29627 +f 29627 29650 29651 +f 29627 29651 29628 +f 29628 29651 29652 +f 29628 29652 29629 +f 29629 29652 29653 +f 29629 29653 29630 +f 29630 29653 29654 +f 29630 29654 29631 +f 29631 29654 29655 +f 29631 29655 29632 +f 29632 29655 29656 +f 29632 29656 29633 +f 29633 29656 29657 +f 29633 29657 29634 +f 29634 29657 29658 +f 29634 29658 29635 +f 29635 29658 29659 +f 29635 29659 29636 +f 29636 29659 29660 +f 29636 29660 29321 +f 29321 29660 29319 +f 29637 29661 29638 +f 29638 29661 29662 +f 29638 29662 29639 +f 29639 29662 29663 +f 29639 29663 29640 +f 29640 29663 29664 +f 29640 29664 29641 +f 29641 29664 29665 +f 29641 29665 29642 +f 29642 29665 29666 +f 29642 29666 29643 +f 29643 29666 29667 +f 29643 29667 29644 +f 29644 29667 29668 +f 29644 29668 29645 +f 29645 29668 29669 +f 29645 29669 29646 +f 29646 29669 29670 +f 29646 29670 29647 +f 29647 29670 29671 +f 29647 29671 29648 +f 29648 29671 29672 +f 29648 29672 29649 +f 29649 29672 29673 +f 29649 29673 29650 +f 29650 29673 29674 +f 29650 29674 29651 +f 29651 29674 29675 +f 29651 29675 29652 +f 29652 29675 29676 +f 29652 29676 29653 +f 29653 29676 29677 +f 29653 29677 29654 +f 29654 29677 29678 +f 29654 29678 29655 +f 29655 29678 29679 +f 29655 29679 29656 +f 29656 29679 29680 +f 29656 29680 29657 +f 29657 29680 29681 +f 29657 29681 29658 +f 29658 29681 29682 +f 29658 29682 29659 +f 29659 29682 29683 +f 29659 29683 29660 +f 29660 29683 29684 +f 29660 29684 29319 +f 29319 29684 29317 +f 29661 29160 29662 +f 29662 29160 29161 +f 29662 29161 29663 +f 29663 29161 29664 +f 29161 29162 29664 +f 29664 29162 29665 +f 29162 29163 29665 +f 29665 29163 29666 +f 29666 29163 29667 +f 29667 29163 29164 +f 29667 29164 29668 +f 29668 29164 29669 +f 29164 29165 29669 +f 29669 29165 29670 +f 29670 29165 29671 +f 29671 29165 29166 +f 29671 29166 29672 +f 29672 29166 29673 +f 29166 29167 29673 +f 29673 29167 29674 +f 29167 29168 29674 +f 29674 29168 29675 +f 29675 29168 29676 +f 29676 29168 29169 +f 29676 29169 29677 +f 29677 29169 29678 +f 29678 29169 29679 +f 29679 29169 29170 +f 29679 29170 29680 +f 29680 29170 29171 +f 29680 29171 29681 +f 29681 29171 29682 +f 29171 29172 29682 +f 29682 29172 29683 +f 29683 29172 29684 +f 29684 29172 29173 +f 29684 29173 29317 +f 29317 29173 29174 +f 29314 29175 29685 +f 29685 29175 29176 +f 29685 29176 29686 +f 29686 29176 29687 +f 29686 29687 29688 +f 29688 29687 29689 +f 29688 29689 29690 +f 29690 29689 29691 +f 29690 29691 29692 +f 29692 29691 29693 +f 29692 29693 29694 +f 29694 29693 29695 +f 29694 29695 29696 +f 29696 29695 29697 +f 29696 29697 29698 +f 29698 29697 29699 +f 29698 29699 29700 +f 29700 29699 29701 +f 29700 29701 29702 +f 29702 29701 29703 +f 29702 29703 29704 +f 29704 29703 29705 +f 29704 29705 29706 +f 29706 29705 29707 +f 29706 29707 29708 +f 29708 29707 29709 +f 29708 29709 29710 +f 29710 29709 29711 +f 29710 29711 29712 +f 29712 29711 29421 +f 29712 29421 29374 +f 29176 29177 29687 +f 29687 29177 29713 +f 29687 29713 29689 +f 29689 29713 29714 +f 29689 29714 29691 +f 29691 29714 29715 +f 29691 29715 29693 +f 29693 29715 29716 +f 29693 29716 29695 +f 29695 29716 29717 +f 29695 29717 29697 +f 29697 29717 29718 +f 29697 29718 29699 +f 29699 29718 29719 +f 29699 29719 29701 +f 29701 29719 29720 +f 29701 29720 29703 +f 29703 29720 29721 +f 29703 29721 29705 +f 29705 29721 29722 +f 29705 29722 29707 +f 29707 29722 29723 +f 29707 29723 29709 +f 29709 29723 29724 +f 29709 29724 29711 +f 29711 29724 29421 +f 29713 29177 29725 +f 29725 29177 29178 +f 29725 29178 29726 +f 29726 29178 29179 +f 29726 29179 29727 +f 29727 29179 29728 +f 29727 29728 29729 +f 29729 29728 29730 +f 29729 29730 29731 +f 29731 29730 29732 +f 29731 29732 29733 +f 29733 29732 29734 +f 29733 29734 29735 +f 29735 29734 29736 +f 29735 29736 29737 +f 29737 29736 29738 +f 29737 29738 29739 +f 29739 29738 29740 +f 29739 29740 29741 +f 29741 29740 29742 +f 29741 29742 29743 +f 29743 29742 29493 +f 29743 29493 29744 +f 29744 29493 29446 +f 29744 29446 29745 +f 29745 29446 29724 +f 29745 29724 29723 +f 29179 29180 29728 +f 29728 29180 29746 +f 29728 29746 29730 +f 29730 29746 29747 +f 29730 29747 29732 +f 29732 29747 29748 +f 29732 29748 29734 +f 29734 29748 29749 +f 29734 29749 29736 +f 29736 29749 29750 +f 29736 29750 29738 +f 29738 29750 29751 +f 29738 29751 29740 +f 29740 29751 29752 +f 29740 29752 29742 +f 29742 29752 29518 +f 29742 29518 29493 +f 29180 29181 29746 +f 29746 29181 29753 +f 29746 29753 29747 +f 29747 29753 29754 +f 29747 29754 29748 +f 29748 29754 29755 +f 29748 29755 29749 +f 29749 29755 29756 +f 29749 29756 29750 +f 29750 29756 29757 +f 29750 29757 29751 +f 29751 29757 29758 +f 29751 29758 29752 +f 29752 29758 29518 +f 29182 29759 29181 +f 29181 29759 29760 +f 29181 29760 29753 +f 29753 29760 29754 +f 29183 29761 29182 +f 29182 29761 29762 +f 29182 29762 29759 +f 29759 29762 29763 +f 29759 29763 29764 +f 29764 29763 29765 +f 29764 29765 29755 +f 29755 29765 29756 +f 29761 29183 29766 +f 29766 29183 29160 +f 29766 29160 29661 +f 29661 29637 29766 +f 29766 29637 29767 +f 29766 29767 29761 +f 29761 29767 29768 +f 29761 29768 29762 +f 29762 29768 29763 +f 29637 29613 29767 +f 29767 29613 29769 +f 29767 29769 29768 +f 29768 29769 29770 +f 29768 29770 29763 +f 29763 29770 29765 +f 29613 29589 29769 +f 29769 29589 29771 +f 29769 29771 29770 +f 29770 29771 29772 +f 29770 29772 29765 +f 29765 29772 29756 +f 29589 29565 29771 +f 29771 29565 29773 +f 29771 29773 29772 +f 29772 29773 29757 +f 29772 29757 29756 +f 29773 29565 29758 +f 29758 29565 29518 +f 29446 29421 29724 +f 29282 29284 29374 +f 29374 29284 29774 +f 29374 29774 29712 +f 29712 29774 29775 +f 29712 29775 29710 +f 29710 29775 29776 +f 29710 29776 29708 +f 29708 29776 29777 +f 29708 29777 29706 +f 29706 29777 29778 +f 29706 29778 29704 +f 29704 29778 29779 +f 29704 29779 29702 +f 29702 29779 29780 +f 29702 29780 29700 +f 29700 29780 29781 +f 29700 29781 29698 +f 29698 29781 29782 +f 29698 29782 29696 +f 29696 29782 29783 +f 29696 29783 29694 +f 29694 29783 29784 +f 29694 29784 29692 +f 29692 29784 29785 +f 29692 29785 29690 +f 29690 29785 29786 +f 29690 29786 29688 +f 29688 29786 29787 +f 29688 29787 29686 +f 29686 29787 29685 +f 29197 29195 29280 +f 29280 29195 29788 +f 29280 29788 29278 +f 29278 29788 29789 +f 29278 29789 29276 +f 29276 29789 29790 +f 29276 29790 29274 +f 29274 29790 29791 +f 29274 29791 29272 +f 29272 29791 29792 +f 29272 29792 29270 +f 29270 29792 29793 +f 29270 29793 29268 +f 29268 29793 29794 +f 29268 29794 29266 +f 29266 29794 29795 +f 29266 29795 29264 +f 29264 29795 29796 +f 29264 29796 29262 +f 29262 29796 29797 +f 29262 29797 29260 +f 29260 29797 29798 +f 29260 29798 29258 +f 29258 29798 29799 +f 29258 29799 29256 +f 29256 29799 29800 +f 29256 29800 29254 +f 29254 29800 29801 +f 29254 29801 29252 +f 29252 29801 29802 +f 29252 29802 29250 +f 29250 29802 29803 +f 29250 29803 29248 +f 29248 29803 29804 +f 29248 29804 29246 +f 29246 29804 29805 +f 29246 29805 29244 +f 29244 29805 29806 +f 29244 29806 29242 +f 29242 29806 29807 +f 29242 29807 29240 +f 29240 29807 29808 +f 29240 29808 29238 +f 29238 29808 29809 +f 29238 29809 29236 +f 29236 29809 29810 +f 29236 29810 29234 +f 29234 29810 29811 +f 29234 29811 29232 +f 29232 29811 29812 +f 29232 29812 29230 +f 29230 29812 29813 +f 29230 29813 29228 +f 29228 29813 29814 +f 29228 29814 29226 +f 29226 29814 29815 +f 29226 29815 29224 +f 29224 29815 29816 +f 29224 29816 29222 +f 29222 29816 29817 +f 29222 29817 29220 +f 29220 29817 29818 +f 29220 29818 29218 +f 29218 29818 29819 +f 29218 29819 29216 +f 29216 29819 29820 +f 29216 29820 29214 +f 29214 29820 29821 +f 29214 29821 29212 +f 29212 29821 29822 +f 29212 29822 29210 +f 29210 29822 29823 +f 29210 29823 29208 +f 29208 29823 29824 +f 29208 29824 29206 +f 29206 29824 29825 +f 29206 29825 29204 +f 29204 29825 29826 +f 29204 29826 29202 +f 29202 29826 29827 +f 29202 29827 29200 +f 29200 29827 29828 +f 29200 29828 29198 +f 29198 29828 29196 +f 29195 29193 29788 +f 29788 29193 29829 +f 29788 29829 29789 +f 29789 29829 29830 +f 29789 29830 29790 +f 29790 29830 29831 +f 29790 29831 29791 +f 29791 29831 29832 +f 29791 29832 29792 +f 29792 29832 29833 +f 29792 29833 29793 +f 29793 29833 29834 +f 29793 29834 29794 +f 29794 29834 29835 +f 29794 29835 29795 +f 29795 29835 29836 +f 29795 29836 29796 +f 29796 29836 29837 +f 29796 29837 29797 +f 29797 29837 29838 +f 29797 29838 29798 +f 29798 29838 29839 +f 29798 29839 29799 +f 29799 29839 29840 +f 29799 29840 29800 +f 29800 29840 29841 +f 29800 29841 29801 +f 29801 29841 29842 +f 29801 29842 29802 +f 29802 29842 29843 +f 29802 29843 29803 +f 29803 29843 29844 +f 29803 29844 29804 +f 29804 29844 29845 +f 29804 29845 29805 +f 29805 29845 29846 +f 29805 29846 29806 +f 29806 29846 29847 +f 29806 29847 29807 +f 29807 29847 29848 +f 29807 29848 29808 +f 29808 29848 29849 +f 29808 29849 29809 +f 29809 29849 29850 +f 29809 29850 29810 +f 29810 29850 29851 +f 29810 29851 29811 +f 29811 29851 29852 +f 29811 29852 29812 +f 29812 29852 29853 +f 29812 29853 29813 +f 29813 29853 29854 +f 29813 29854 29814 +f 29814 29854 29855 +f 29814 29855 29815 +f 29815 29855 29856 +f 29815 29856 29816 +f 29816 29856 29857 +f 29816 29857 29817 +f 29817 29857 29858 +f 29817 29858 29818 +f 29818 29858 29859 +f 29818 29859 29819 +f 29819 29859 29860 +f 29819 29860 29820 +f 29820 29860 29861 +f 29820 29861 29821 +f 29821 29861 29862 +f 29821 29862 29822 +f 29822 29862 29863 +f 29822 29863 29823 +f 29823 29863 29864 +f 29823 29864 29824 +f 29824 29864 29865 +f 29824 29865 29825 +f 29825 29865 29866 +f 29825 29866 29826 +f 29826 29866 29867 +f 29826 29867 29827 +f 29827 29867 29868 +f 29827 29868 29828 +f 29828 29868 29869 +f 29828 29869 29196 +f 29196 29869 29194 +f 29193 29191 29829 +f 29829 29191 29870 +f 29829 29870 29830 +f 29830 29870 29871 +f 29830 29871 29831 +f 29831 29871 29872 +f 29831 29872 29832 +f 29832 29872 29873 +f 29832 29873 29833 +f 29833 29873 29874 +f 29833 29874 29834 +f 29834 29874 29875 +f 29834 29875 29835 +f 29835 29875 29876 +f 29835 29876 29836 +f 29836 29876 29877 +f 29836 29877 29837 +f 29837 29877 29878 +f 29837 29878 29838 +f 29838 29878 29879 +f 29838 29879 29839 +f 29839 29879 29880 +f 29839 29880 29840 +f 29840 29880 29881 +f 29840 29881 29841 +f 29841 29881 29882 +f 29841 29882 29842 +f 29842 29882 29883 +f 29842 29883 29843 +f 29843 29883 29884 +f 29843 29884 29844 +f 29844 29884 29885 +f 29844 29885 29845 +f 29845 29885 29886 +f 29845 29886 29846 +f 29846 29886 29887 +f 29846 29887 29847 +f 29847 29887 29888 +f 29847 29888 29848 +f 29848 29888 29889 +f 29848 29889 29849 +f 29849 29889 29890 +f 29849 29890 29850 +f 29850 29890 29891 +f 29850 29891 29851 +f 29851 29891 29892 +f 29851 29892 29852 +f 29852 29892 29893 +f 29852 29893 29853 +f 29853 29893 29894 +f 29853 29894 29854 +f 29854 29894 29895 +f 29854 29895 29855 +f 29855 29895 29896 +f 29855 29896 29856 +f 29856 29896 29897 +f 29856 29897 29857 +f 29857 29897 29898 +f 29857 29898 29858 +f 29858 29898 29899 +f 29858 29899 29859 +f 29859 29899 29900 +f 29859 29900 29860 +f 29860 29900 29901 +f 29860 29901 29861 +f 29861 29901 29902 +f 29861 29902 29862 +f 29862 29902 29903 +f 29862 29903 29863 +f 29863 29903 29904 +f 29863 29904 29864 +f 29864 29904 29905 +f 29864 29905 29865 +f 29865 29905 29906 +f 29865 29906 29866 +f 29866 29906 29907 +f 29866 29907 29867 +f 29867 29907 29908 +f 29867 29908 29868 +f 29868 29908 29909 +f 29868 29909 29869 +f 29869 29909 29910 +f 29869 29910 29194 +f 29194 29910 29192 +f 29191 29189 29870 +f 29870 29189 29911 +f 29870 29911 29871 +f 29871 29911 29912 +f 29871 29912 29872 +f 29872 29912 29913 +f 29872 29913 29873 +f 29873 29913 29914 +f 29873 29914 29874 +f 29874 29914 29915 +f 29874 29915 29875 +f 29875 29915 29916 +f 29875 29916 29876 +f 29876 29916 29917 +f 29876 29917 29877 +f 29877 29917 29918 +f 29877 29918 29878 +f 29878 29918 29919 +f 29878 29919 29879 +f 29879 29919 29920 +f 29879 29920 29880 +f 29880 29920 29921 +f 29880 29921 29881 +f 29881 29921 29922 +f 29881 29922 29882 +f 29882 29922 29923 +f 29882 29923 29883 +f 29883 29923 29924 +f 29883 29924 29884 +f 29884 29924 29925 +f 29884 29925 29885 +f 29885 29925 29926 +f 29885 29926 29886 +f 29886 29926 29927 +f 29886 29927 29887 +f 29887 29927 29928 +f 29887 29928 29888 +f 29888 29928 29929 +f 29888 29929 29889 +f 29889 29929 29930 +f 29889 29930 29890 +f 29890 29930 29931 +f 29890 29931 29891 +f 29891 29931 29932 +f 29891 29932 29892 +f 29892 29932 29933 +f 29892 29933 29893 +f 29893 29933 29934 +f 29893 29934 29894 +f 29894 29934 29935 +f 29894 29935 29895 +f 29895 29935 29936 +f 29895 29936 29896 +f 29896 29936 29937 +f 29896 29937 29897 +f 29897 29937 29938 +f 29897 29938 29898 +f 29898 29938 29939 +f 29898 29939 29899 +f 29899 29939 29940 +f 29899 29940 29900 +f 29900 29940 29941 +f 29900 29941 29901 +f 29901 29941 29942 +f 29901 29942 29902 +f 29902 29942 29943 +f 29902 29943 29903 +f 29903 29943 29944 +f 29903 29944 29904 +f 29904 29944 29945 +f 29904 29945 29905 +f 29905 29945 29946 +f 29905 29946 29906 +f 29906 29946 29947 +f 29906 29947 29907 +f 29907 29947 29948 +f 29907 29948 29908 +f 29908 29948 29949 +f 29908 29949 29909 +f 29909 29949 29950 +f 29909 29950 29910 +f 29910 29950 29951 +f 29910 29951 29192 +f 29192 29951 29190 +f 29189 29187 29911 +f 29911 29187 29952 +f 29911 29952 29912 +f 29912 29952 29953 +f 29912 29953 29913 +f 29913 29953 29954 +f 29913 29954 29914 +f 29914 29954 29955 +f 29914 29955 29915 +f 29915 29955 29956 +f 29915 29956 29916 +f 29916 29956 29957 +f 29916 29957 29917 +f 29917 29957 29958 +f 29917 29958 29918 +f 29918 29958 29959 +f 29918 29959 29919 +f 29919 29959 29960 +f 29919 29960 29920 +f 29920 29960 29961 +f 29920 29961 29921 +f 29921 29961 29962 +f 29921 29962 29922 +f 29922 29962 29963 +f 29922 29963 29923 +f 29923 29963 29964 +f 29923 29964 29924 +f 29924 29964 29965 +f 29924 29965 29925 +f 29925 29965 29966 +f 29925 29966 29926 +f 29926 29966 29967 +f 29926 29967 29927 +f 29927 29967 29968 +f 29927 29968 29928 +f 29928 29968 29969 +f 29928 29969 29929 +f 29929 29969 29970 +f 29929 29970 29930 +f 29930 29970 29971 +f 29930 29971 29931 +f 29931 29971 29972 +f 29931 29972 29932 +f 29932 29972 29973 +f 29932 29973 29933 +f 29933 29973 29974 +f 29933 29974 29934 +f 29934 29974 29975 +f 29934 29975 29935 +f 29935 29975 29976 +f 29935 29976 29936 +f 29936 29976 29977 +f 29936 29977 29937 +f 29937 29977 29978 +f 29937 29978 29938 +f 29938 29978 29979 +f 29938 29979 29939 +f 29939 29979 29980 +f 29939 29980 29940 +f 29940 29980 29981 +f 29940 29981 29941 +f 29941 29981 29982 +f 29941 29982 29942 +f 29942 29982 29983 +f 29942 29983 29943 +f 29943 29983 29984 +f 29943 29984 29944 +f 29944 29984 29985 +f 29944 29985 29945 +f 29945 29985 29986 +f 29945 29986 29946 +f 29946 29986 29987 +f 29946 29987 29947 +f 29947 29987 29988 +f 29947 29988 29948 +f 29948 29988 29989 +f 29948 29989 29949 +f 29949 29989 29990 +f 29949 29990 29950 +f 29950 29990 29991 +f 29950 29991 29951 +f 29951 29991 29992 +f 29951 29992 29190 +f 29190 29992 29188 +f 29187 29185 29952 +f 29952 29185 29993 +f 29952 29993 29953 +f 29953 29993 29994 +f 29953 29994 29954 +f 29954 29994 29995 +f 29954 29995 29955 +f 29955 29995 29996 +f 29955 29996 29956 +f 29956 29996 29997 +f 29956 29997 29957 +f 29957 29997 29998 +f 29957 29998 29958 +f 29958 29998 29999 +f 29958 29999 29959 +f 29959 29999 30000 +f 29959 30000 29960 +f 29960 30000 30001 +f 29960 30001 29961 +f 29961 30001 30002 +f 29961 30002 29962 +f 29962 30002 30003 +f 29962 30003 29963 +f 29963 30003 30004 +f 29963 30004 29964 +f 29964 30004 30005 +f 29964 30005 29965 +f 29965 30005 30006 +f 29965 30006 29966 +f 29966 30006 30007 +f 29966 30007 29967 +f 29967 30007 30008 +f 29967 30008 29968 +f 29968 30008 30009 +f 29968 30009 29969 +f 29969 30009 30010 +f 29969 30010 29970 +f 29970 30010 30011 +f 29970 30011 29971 +f 29971 30011 30012 +f 29971 30012 29972 +f 29972 30012 30013 +f 29972 30013 29973 +f 29973 30013 30014 +f 29973 30014 29974 +f 29974 30014 30015 +f 29974 30015 29975 +f 29975 30015 30016 +f 29975 30016 29976 +f 29976 30016 30017 +f 29976 30017 29977 +f 29977 30017 30018 +f 29977 30018 29978 +f 29978 30018 30019 +f 29978 30019 29979 +f 29979 30019 30020 +f 29979 30020 29980 +f 29980 30020 30021 +f 29980 30021 29981 +f 29981 30021 30022 +f 29981 30022 29982 +f 29982 30022 30023 +f 29982 30023 29983 +f 29983 30023 30024 +f 29983 30024 29984 +f 29984 30024 30025 +f 29984 30025 29985 +f 29985 30025 30026 +f 29985 30026 29986 +f 29986 30026 30027 +f 29986 30027 29987 +f 29987 30027 30028 +f 29987 30028 29988 +f 29988 30028 30029 +f 29988 30029 29989 +f 29989 30029 30030 +f 29989 30030 29990 +f 29990 30030 30031 +f 29990 30031 29991 +f 29991 30031 30032 +f 29991 30032 29992 +f 29992 30032 30033 +f 29992 30033 29188 +f 29188 30033 29186 +f 29993 29185 30034 +f 30034 29185 27848 +f 30034 27848 27916 +f 30034 27916 30035 +f 30035 27916 27914 +f 30035 27914 30036 +f 30036 27914 27912 +f 30036 27912 30037 +f 30037 27912 27910 +f 30037 27910 30038 +f 30038 27910 30039 +f 30038 30039 29998 +f 29998 30039 29999 +f 27910 27908 30039 +f 30039 27908 30040 +f 30039 30040 29999 +f 29999 30040 30000 +f 27908 27906 30040 +f 30040 27906 30041 +f 30040 30041 30000 +f 30000 30041 30001 +f 27906 27904 30041 +f 30041 27904 30042 +f 30041 30042 30001 +f 30001 30042 30002 +f 27904 27902 30042 +f 30042 27902 30043 +f 30042 30043 30002 +f 30002 30043 30003 +f 27902 27900 30043 +f 30043 27900 30044 +f 30043 30044 30003 +f 30003 30044 30004 +f 27900 27898 30044 +f 30044 27898 30045 +f 30044 30045 30004 +f 30004 30045 30005 +f 30045 27898 30046 +f 30046 27898 27896 +f 30046 27896 30047 +f 30047 27896 27894 +f 30047 27894 30048 +f 30048 27894 27892 +f 30048 27892 30049 +f 30049 27892 30050 +f 30049 30050 30009 +f 30009 30050 30010 +f 27892 27890 30050 +f 30050 27890 30051 +f 30050 30051 30010 +f 30010 30051 30011 +f 27890 27888 30051 +f 30051 27888 30052 +f 30051 30052 30011 +f 30011 30052 30012 +f 27888 27886 30052 +f 30052 27886 30053 +f 30052 30053 30012 +f 30012 30053 30013 +f 27886 27884 30053 +f 30053 27884 30054 +f 30053 30054 30013 +f 30013 30054 30014 +f 27884 27882 30054 +f 30054 27882 30055 +f 30054 30055 30014 +f 30014 30055 30015 +f 27882 27880 30055 +f 30055 27880 30056 +f 30055 30056 30015 +f 30015 30056 30016 +f 27880 27878 30056 +f 30056 27878 30057 +f 30056 30057 30016 +f 30016 30057 30017 +f 27878 27876 30057 +f 30057 27876 30058 +f 30057 30058 30017 +f 30017 30058 30018 +f 30058 27876 30059 +f 30059 27876 27874 +f 30059 27874 30060 +f 30060 27874 30061 +f 30060 30061 30020 +f 30020 30061 30021 +f 27874 27872 30061 +f 30061 27872 30062 +f 30061 30062 30021 +f 30021 30062 30022 +f 27872 27870 30062 +f 30062 27870 30063 +f 30062 30063 30022 +f 30022 30063 30023 +f 27870 27868 30063 +f 30063 27868 30064 +f 30063 30064 30023 +f 30023 30064 30024 +f 27868 27866 30064 +f 30064 27866 30065 +f 30064 30065 30024 +f 30024 30065 30025 +f 30065 27866 30066 +f 30066 27866 27864 +f 30066 27864 30067 +f 30067 27864 27862 +f 30067 27862 30068 +f 30068 27862 27860 +f 30068 27860 30069 +f 30069 27860 27858 +f 30069 27858 30070 +f 30070 27858 30071 +f 30070 30071 30030 +f 30030 30071 30031 +f 27858 27856 30071 +f 30071 27856 30072 +f 30071 30072 30031 +f 30031 30072 30032 +f 27856 27854 30072 +f 30072 27854 30073 +f 30072 30073 30032 +f 30032 30073 30033 +f 27854 27852 30073 +f 30073 27852 30074 +f 30073 30074 30033 +f 30033 30074 29186 +f 27852 27846 30074 +f 30074 27846 29184 +f 30074 29184 29186 +f 29495 29494 29517 +f 29517 29519 30075 +f 30075 29519 29521 +f 30075 29521 30076 +f 30076 29521 29523 +f 30076 29523 30077 +f 30077 29523 29525 +f 30077 29525 30078 +f 30078 29525 29527 +f 30078 29527 30079 +f 30079 29527 29529 +f 30079 29529 30080 +f 30080 29529 29531 +f 30080 29531 30081 +f 30081 29531 29533 +f 30081 29533 30082 +f 30082 29533 29535 +f 30082 29535 30083 +f 30083 29535 29537 +f 30083 29537 30084 +f 30084 29537 29539 +f 30084 29539 30085 +f 30085 29539 29541 +f 30085 29541 30086 +f 30086 29541 29543 +f 30086 29543 30087 +f 30087 29543 29545 +f 30087 29545 30088 +f 30088 29545 29547 +f 30088 29547 30089 +f 30089 29547 29549 +f 30089 29549 30090 +f 30090 29549 29551 +f 30090 29551 30091 +f 30091 29551 29553 +f 30091 29553 30092 +f 30092 29553 29555 +f 30092 29555 30093 +f 30093 29555 29557 +f 30093 29557 30094 +f 30094 29557 29559 +f 30094 29559 30095 +f 30095 29559 29561 +f 30095 29561 30096 +f 30096 29561 29563 +f 30096 29563 29331 +f 29331 29563 29329 +f 29423 29422 29445 +f 29445 29447 30097 +f 30097 29447 29449 +f 30097 29449 30098 +f 30098 29449 29451 +f 30098 29451 30099 +f 30099 29451 29453 +f 30099 29453 30100 +f 30100 29453 29455 +f 30100 29455 30101 +f 30101 29455 29457 +f 30101 29457 30102 +f 30102 29457 29459 +f 30102 29459 30103 +f 30103 29459 29461 +f 30103 29461 30104 +f 30104 29461 29463 +f 30104 29463 30105 +f 30105 29463 29465 +f 30105 29465 30106 +f 30106 29465 29467 +f 30106 29467 30107 +f 30107 29467 29469 +f 30107 29469 30108 +f 30108 29469 29471 +f 30108 29471 30109 +f 30109 29471 29473 +f 30109 29473 30110 +f 30110 29473 29475 +f 30110 29475 30111 +f 30111 29475 29477 +f 30111 29477 30112 +f 30112 29477 29479 +f 30112 29479 30113 +f 30113 29479 29481 +f 30113 29481 30114 +f 30114 29481 29483 +f 30114 29483 30115 +f 30115 29483 29485 +f 30115 29485 30116 +f 30116 29485 29487 +f 30116 29487 30117 +f 30117 29487 29489 +f 30117 29489 30118 +f 30118 29489 29491 +f 30118 29491 29339 +f 29339 29491 29337 +f 29351 29350 29373 +f 29373 29375 30119 +f 30119 29375 29377 +f 30119 29377 30120 +f 30120 29377 29379 +f 30120 29379 30121 +f 30121 29379 29381 +f 30121 29381 30122 +f 30122 29381 29383 +f 30122 29383 30123 +f 30123 29383 29385 +f 30123 29385 30124 +f 30124 29385 29387 +f 30124 29387 30125 +f 30125 29387 29389 +f 30125 29389 30126 +f 30126 29389 29391 +f 30126 29391 30127 +f 30127 29391 29393 +f 30127 29393 30128 +f 30128 29393 29395 +f 30128 29395 30129 +f 30129 29395 29397 +f 30129 29397 30130 +f 30130 29397 29399 +f 30130 29399 30131 +f 30131 29399 29401 +f 30131 29401 30132 +f 30132 29401 29403 +f 30132 29403 30133 +f 30133 29403 29405 +f 30133 29405 30134 +f 30134 29405 29407 +f 30134 29407 30135 +f 30135 29407 29409 +f 30135 29409 30136 +f 30136 29409 29411 +f 30136 29411 30137 +f 30137 29411 29413 +f 30137 29413 30138 +f 30138 29413 29415 +f 30138 29415 30139 +f 30139 29415 29417 +f 30139 29417 30140 +f 30140 29417 29419 +f 30140 29419 29347 +f 29347 29419 29345 +f 29496 29495 30075 +f 30075 29495 29517 +f 29496 30075 30076 +f 29424 29423 30097 +f 30097 29423 29445 +f 29424 30097 30098 +f 29352 29351 30119 +f 30119 29351 29373 +f 29352 30119 30120 +f 29496 30076 29497 +f 29497 30076 30077 +f 29497 30077 29498 +f 29498 30077 30078 +f 29498 30078 29499 +f 29499 30078 30079 +f 29499 30079 29500 +f 29500 30079 30080 +f 29500 30080 29501 +f 29501 30080 30081 +f 29501 30081 29502 +f 29502 30081 30082 +f 29502 30082 29503 +f 29503 30082 30083 +f 29503 30083 29504 +f 29504 30083 30084 +f 29504 30084 29505 +f 29505 30084 30085 +f 29505 30085 29506 +f 29506 30085 30086 +f 29506 30086 29507 +f 29507 30086 30087 +f 29507 30087 29508 +f 29508 30087 30088 +f 29508 30088 29509 +f 29509 30088 30089 +f 29509 30089 29510 +f 29510 30089 30090 +f 29510 30090 29511 +f 29511 30090 30091 +f 29511 30091 29512 +f 29512 30091 30092 +f 29512 30092 29513 +f 29513 30092 30093 +f 29513 30093 29514 +f 29514 30093 30094 +f 29514 30094 29515 +f 29515 30094 30095 +f 29515 30095 29516 +f 29516 30095 30096 +f 29516 30096 29333 +f 29333 30096 29331 +f 29424 30098 29425 +f 29425 30098 30099 +f 29425 30099 29426 +f 29426 30099 30100 +f 29426 30100 29427 +f 29427 30100 30101 +f 29427 30101 29428 +f 29428 30101 30102 +f 29428 30102 29429 +f 29429 30102 30103 +f 29429 30103 29430 +f 29430 30103 30104 +f 29430 30104 29431 +f 29431 30104 30105 +f 29431 30105 29432 +f 29432 30105 30106 +f 29432 30106 29433 +f 29433 30106 30107 +f 29433 30107 29434 +f 29434 30107 30108 +f 29434 30108 29435 +f 29435 30108 30109 +f 29435 30109 29436 +f 29436 30109 30110 +f 29436 30110 29437 +f 29437 30110 30111 +f 29437 30111 29438 +f 29438 30111 30112 +f 29438 30112 29439 +f 29439 30112 30113 +f 29439 30113 29440 +f 29440 30113 30114 +f 29440 30114 29441 +f 29441 30114 30115 +f 29441 30115 29442 +f 29442 30115 30116 +f 29442 30116 29443 +f 29443 30116 30117 +f 29443 30117 29444 +f 29444 30117 30118 +f 29444 30118 29341 +f 29341 30118 29339 +f 29352 30120 29353 +f 29353 30120 30121 +f 29353 30121 29354 +f 29354 30121 30122 +f 29354 30122 29355 +f 29355 30122 30123 +f 29355 30123 29356 +f 29356 30123 30124 +f 29356 30124 29357 +f 29357 30124 30125 +f 29357 30125 29358 +f 29358 30125 30126 +f 29358 30126 29359 +f 29359 30126 30127 +f 29359 30127 29360 +f 29360 30127 30128 +f 29360 30128 29361 +f 29361 30128 30129 +f 29361 30129 29362 +f 29362 30129 30130 +f 29362 30130 29363 +f 29363 30130 30131 +f 29363 30131 29364 +f 29364 30131 30132 +f 29364 30132 29365 +f 29365 30132 30133 +f 29365 30133 29366 +f 29366 30133 30134 +f 29366 30134 29367 +f 29367 30134 30135 +f 29367 30135 29368 +f 29368 30135 30136 +f 29368 30136 29369 +f 29369 30136 30137 +f 29369 30137 29370 +f 29370 30137 30138 +f 29370 30138 29371 +f 29371 30138 30139 +f 29371 30139 29372 +f 29372 30139 30140 +f 29372 30140 29349 +f 29349 30140 29347 +f 30069 30070 30029 +f 30029 30070 30030 +f 30069 30029 30028 +f 30069 30028 30068 +f 30068 30028 30027 +f 30068 30027 30067 +f 30067 30027 30026 +f 30067 30026 30066 +f 30066 30026 30025 +f 30066 30025 30065 +f 30060 30020 30019 +f 30060 30019 30059 +f 30059 30019 30018 +f 30059 30018 30058 +f 29318 29316 30141 +f 30141 29316 29315 +f 30141 29315 29313 +f 29320 29318 30142 +f 30142 29318 30141 +f 30142 30141 30143 +f 30143 30141 29313 +f 30143 29313 29311 +f 29322 29320 30144 +f 30144 29320 30142 +f 30144 30142 30145 +f 30145 30142 30143 +f 30145 30143 30146 +f 30146 30143 29311 +f 30146 29311 29309 +f 29324 29322 30147 +f 30147 29322 30144 +f 30147 30144 30148 +f 30148 30144 30145 +f 30148 30145 30149 +f 30149 30145 30146 +f 30149 30146 30150 +f 30150 30146 29309 +f 30150 29309 29307 +f 29326 29324 30151 +f 30151 29324 30147 +f 30151 30147 30152 +f 30152 30147 30148 +f 30152 30148 30153 +f 30153 30148 30149 +f 30153 30149 30154 +f 30154 30149 30150 +f 30154 30150 30155 +f 30155 30150 29307 +f 30155 29307 29305 +f 29328 29326 30156 +f 30156 29326 30151 +f 30156 30151 30157 +f 30157 30151 30152 +f 30157 30152 30158 +f 30158 30152 30153 +f 30158 30153 30159 +f 30159 30153 30154 +f 30159 30154 30160 +f 30160 30154 30155 +f 30160 30155 30161 +f 30161 30155 29305 +f 30161 29305 29303 +f 29330 29328 30162 +f 30162 29328 30156 +f 30162 30156 30163 +f 30163 30156 30157 +f 30163 30157 30164 +f 30164 30157 30158 +f 30164 30158 30165 +f 30165 30158 30159 +f 30165 30159 30166 +f 30166 30159 30160 +f 30166 30160 30167 +f 30167 30160 30161 +f 30167 30161 30168 +f 30168 30161 29303 +f 30168 29303 29301 +f 29332 29330 30169 +f 30169 29330 30162 +f 30169 30162 30170 +f 30170 30162 30163 +f 30170 30163 30171 +f 30171 30163 30164 +f 30171 30164 30172 +f 30172 30164 30165 +f 30172 30165 30173 +f 30173 30165 30166 +f 30173 30166 30174 +f 30174 30166 30167 +f 30174 30167 30175 +f 30175 30167 30168 +f 30175 30168 30176 +f 30176 30168 29301 +f 30176 29301 29299 +f 29334 29332 30177 +f 30177 29332 30169 +f 30177 30169 30178 +f 30178 30169 30170 +f 30178 30170 30179 +f 30179 30170 30171 +f 30179 30171 30180 +f 30180 30171 30172 +f 30180 30172 30181 +f 30181 30172 30173 +f 30181 30173 30182 +f 30182 30173 30174 +f 30182 30174 30183 +f 30183 30174 30175 +f 30183 30175 30184 +f 30184 30175 30176 +f 30184 30176 30185 +f 30185 30176 29299 +f 30185 29299 29297 +f 29336 29334 30186 +f 30186 29334 30177 +f 30186 30177 30187 +f 30187 30177 30178 +f 30187 30178 30188 +f 30188 30178 30179 +f 30188 30179 30189 +f 30189 30179 30180 +f 30189 30180 30190 +f 30190 30180 30181 +f 30190 30181 30191 +f 30191 30181 30182 +f 30191 30182 30192 +f 30192 30182 30183 +f 30192 30183 30193 +f 30193 30183 30184 +f 30193 30184 30194 +f 30194 30184 30185 +f 30194 30185 30195 +f 30195 30185 29297 +f 30195 29297 29295 +f 29338 29336 30196 +f 30196 29336 30186 +f 30196 30186 30197 +f 30197 30186 30187 +f 30197 30187 30198 +f 30198 30187 30188 +f 30198 30188 30199 +f 30199 30188 30189 +f 30199 30189 30200 +f 30200 30189 30190 +f 30200 30190 30201 +f 30201 30190 30191 +f 30201 30191 30202 +f 30202 30191 30192 +f 30202 30192 30203 +f 30203 30192 30193 +f 30203 30193 30204 +f 30204 30193 30194 +f 30204 30194 30205 +f 30205 30194 30195 +f 30205 30195 30206 +f 30206 30195 29295 +f 30206 29295 29293 +f 29340 29338 30207 +f 30207 29338 30196 +f 30207 30196 30208 +f 30208 30196 30197 +f 30208 30197 30209 +f 30209 30197 30198 +f 30209 30198 30210 +f 30210 30198 30199 +f 30210 30199 30211 +f 30211 30199 30200 +f 30211 30200 30212 +f 30212 30200 30201 +f 30212 30201 30213 +f 30213 30201 30202 +f 30213 30202 30214 +f 30214 30202 30203 +f 30214 30203 30215 +f 30215 30203 30204 +f 30215 30204 30216 +f 30216 30204 30205 +f 30216 30205 30217 +f 30217 30205 30206 +f 30217 30206 30218 +f 30218 30206 29293 +f 30218 29293 29291 +f 29342 29340 30219 +f 30219 29340 30207 +f 30219 30207 30220 +f 30220 30207 30208 +f 30220 30208 30221 +f 30221 30208 30209 +f 30221 30209 30222 +f 30222 30209 30210 +f 30222 30210 30223 +f 30223 30210 30211 +f 30223 30211 30224 +f 30224 30211 30212 +f 30224 30212 30225 +f 30225 30212 30213 +f 30225 30213 30226 +f 30226 30213 30214 +f 30226 30214 30227 +f 30227 30214 30215 +f 30227 30215 30228 +f 30228 30215 30216 +f 30228 30216 30229 +f 30229 30216 30217 +f 30229 30217 30230 +f 30230 30217 30218 +f 30230 30218 30231 +f 30231 30218 29291 +f 30231 29291 29289 +f 29344 29342 30232 +f 30232 29342 30219 +f 30232 30219 30233 +f 30233 30219 30220 +f 30233 30220 30234 +f 30234 30220 30221 +f 30234 30221 30235 +f 30235 30221 30222 +f 30235 30222 30236 +f 30236 30222 30223 +f 30236 30223 30237 +f 30237 30223 30224 +f 30237 30224 30238 +f 30238 30224 30225 +f 30238 30225 30239 +f 30239 30225 30226 +f 30239 30226 30240 +f 30240 30226 30227 +f 30240 30227 30241 +f 30241 30227 30228 +f 30241 30228 30242 +f 30242 30228 30229 +f 30242 30229 30243 +f 30243 30229 30230 +f 30243 30230 30244 +f 30244 30230 30231 +f 30244 30231 30245 +f 30245 30231 29289 +f 30245 29289 29287 +f 29346 29344 30246 +f 30246 29344 30232 +f 30246 30232 30247 +f 30247 30232 30233 +f 30247 30233 30248 +f 30248 30233 30234 +f 30248 30234 30249 +f 30249 30234 30235 +f 30249 30235 30250 +f 30250 30235 30236 +f 30250 30236 30251 +f 30251 30236 30237 +f 30251 30237 30252 +f 30252 30237 30238 +f 30252 30238 30253 +f 30253 30238 30239 +f 30253 30239 30254 +f 30254 30239 30240 +f 30254 30240 30255 +f 30255 30240 30241 +f 30255 30241 30256 +f 30256 30241 30242 +f 30256 30242 30257 +f 30257 30242 30243 +f 30257 30243 30258 +f 30258 30243 30244 +f 30258 30244 30259 +f 30259 30244 30245 +f 30259 30245 30260 +f 30260 30245 29287 +f 30260 29287 29285 +f 29348 29346 30261 +f 30261 29346 30246 +f 30261 30246 30262 +f 30262 30246 30247 +f 30262 30247 30263 +f 30263 30247 30248 +f 30263 30248 30264 +f 30264 30248 30249 +f 30264 30249 30265 +f 30265 30249 30250 +f 30265 30250 30266 +f 30266 30250 30251 +f 30266 30251 30267 +f 30267 30251 30252 +f 30267 30252 30268 +f 30268 30252 30253 +f 30268 30253 30269 +f 30269 30253 30254 +f 30269 30254 30270 +f 30270 30254 30255 +f 30270 30255 30271 +f 30271 30255 30256 +f 30271 30256 30272 +f 30272 30256 30257 +f 30272 30257 30273 +f 30273 30257 30258 +f 30273 30258 30274 +f 30274 30258 30259 +f 30274 30259 30275 +f 30275 30259 30260 +f 30275 30260 30276 +f 30276 30260 29285 +f 30276 29285 29283 +f 29247 29348 29249 +f 29249 29348 30261 +f 29249 30261 29251 +f 29251 30261 30262 +f 29251 30262 29253 +f 29253 30262 30263 +f 29253 30263 29255 +f 29255 30263 30264 +f 29255 30264 29257 +f 29257 30264 30265 +f 29257 30265 29259 +f 29259 30265 30266 +f 29259 30266 29261 +f 29261 30266 30267 +f 29261 30267 29263 +f 29263 30267 30268 +f 29263 30268 29265 +f 29265 30268 30269 +f 29265 30269 29267 +f 29267 30269 30270 +f 29267 30270 29269 +f 29269 30270 30271 +f 29269 30271 29271 +f 29271 30271 30272 +f 29271 30272 29273 +f 29273 30272 30273 +f 29273 30273 29275 +f 29275 30273 30274 +f 29275 30274 29277 +f 29277 30274 30275 +f 29277 30275 29279 +f 29279 30275 30276 +f 29279 30276 29281 +f 29281 30276 29283 +f 30049 30009 30008 +f 29314 29685 29312 +f 29312 29685 29787 +f 29312 29787 29310 +f 29310 29787 29786 +f 29310 29786 29308 +f 29308 29786 29785 +f 29308 29785 29306 +f 29306 29785 29784 +f 29306 29784 29304 +f 29304 29784 29783 +f 29304 29783 29302 +f 29302 29783 29782 +f 29302 29782 29300 +f 29300 29782 29781 +f 29300 29781 29298 +f 29298 29781 29780 +f 29298 29780 29296 +f 29296 29780 29779 +f 29296 29779 29294 +f 29294 29779 29778 +f 29294 29778 29292 +f 29292 29778 29777 +f 29292 29777 29290 +f 29290 29777 29776 +f 29290 29776 29288 +f 29288 29776 29775 +f 29288 29775 29286 +f 29286 29775 29774 +f 29286 29774 29284 +f 30049 30008 30048 +f 30048 30008 30007 +f 30048 30007 30047 +f 30047 30007 30006 +f 30047 30006 30046 +f 30046 30006 30005 +f 30046 30005 30045 +f 29726 30277 29725 +f 29725 30277 29714 +f 29725 29714 29713 +f 29714 30277 29715 +f 29715 30277 30278 +f 29715 30278 29716 +f 29716 30278 30279 +f 29716 30279 29717 +f 29717 30279 30280 +f 29717 30280 29718 +f 29718 30280 30281 +f 29718 30281 29719 +f 29719 30281 30282 +f 29719 30282 29720 +f 29720 30282 30283 +f 29720 30283 29721 +f 29721 30283 30284 +f 29721 30284 29722 +f 29722 30284 30285 +f 29722 30285 29723 +f 29723 30285 29745 +f 30277 29726 30286 +f 30286 29726 29727 +f 30286 29727 29729 +f 29729 30287 30286 +f 30286 30287 30278 +f 30286 30278 30277 +f 30278 30287 30279 +f 30279 30287 30288 +f 30279 30288 30280 +f 30280 30288 30289 +f 30280 30289 30281 +f 30281 30289 30290 +f 30281 30290 30282 +f 30282 30290 30291 +f 30282 30291 30283 +f 30283 30291 30292 +f 30283 30292 30284 +f 30284 30292 30293 +f 30284 30293 30285 +f 30285 30293 29744 +f 30285 29744 29745 +f 30288 30287 29731 +f 29731 30287 29729 +f 30289 30288 29733 +f 29733 30288 29731 +f 29759 29764 29760 +f 29760 29764 29754 +f 29764 29755 29754 +f 30289 29733 29735 +f 30289 29735 30290 +f 30290 29735 29737 +f 30290 29737 30291 +f 30291 29737 29739 +f 30291 29739 30292 +f 30292 29739 29741 +f 30292 29741 30293 +f 30293 29741 29743 +f 30293 29743 29744 +f 30037 30038 29997 +f 29997 30038 29998 +f 30037 29997 29996 +f 30037 29996 30036 +f 30036 29996 29995 +f 30036 29995 30035 +f 30035 29995 29994 +f 30035 29994 30034 +f 30034 29994 29993 +f 29773 29758 29757 +f 30294 30295 30296 +f 30296 30295 30297 +f 30296 30297 30298 +f 30295 30294 30299 +f 30299 30294 30300 +f 30299 30300 30301 +f 30301 30300 30302 +f 30301 30302 30303 +f 30303 30302 30304 +f 30303 30304 30305 +f 30305 30304 30306 +f 30305 30306 30307 +f 30307 30306 30308 +f 30307 30308 30309 +f 30309 30308 30310 +f 30309 30310 30311 +f 30311 30310 30312 +f 30311 30312 30313 +f 30313 30312 30314 +f 30313 30314 30315 +f 30315 30314 30316 +f 30315 30316 30317 +f 30317 30316 30318 +f 30317 30318 30319 +f 30319 30318 30320 +f 30319 30320 30321 +f 30321 30320 30322 +f 30321 30322 30323 +f 30323 30322 30324 +f 30323 30324 30325 +f 30325 30324 30326 +f 30325 30326 30327 +f 30327 30326 30328 +f 30327 30328 30329 +f 30329 30328 30330 +f 30329 30330 30331 +f 30331 30330 30332 +f 30331 30332 30333 +f 30333 30332 30334 +f 30333 30334 30335 +f 30335 30334 30336 +f 30335 30336 30337 +f 30337 30336 30338 +f 30337 30338 30339 +f 30339 30338 30340 +f 30339 30340 30341 +f 30341 30340 30342 +f 30341 30342 30343 +f 30343 30342 30344 +f 30343 30344 30345 +f 30345 30344 30346 +f 30345 30346 30347 +f 30347 30346 30348 +f 30347 30348 30349 +f 30349 30348 30350 +f 30349 30350 30351 +f 30351 30350 30352 +f 30351 30352 30353 +f 30353 30352 30354 +f 30353 30354 30355 +f 30355 30354 30356 +f 30355 30356 30357 +f 30357 30356 30358 +f 30357 30358 30359 +f 30359 30358 30360 +f 30359 30360 30361 +f 30361 30360 30362 +f 30361 30362 30363 +f 30363 30362 30364 +f 30363 30364 30298 +f 30298 30364 30296 +f 30297 30365 30298 +f 30298 30365 30366 +f 30298 30366 30367 +f 30367 30366 30368 +f 30367 30368 30369 +f 30369 30368 30370 +f 30369 30370 30371 +f 30371 30370 30372 +f 30371 30372 30373 +f 30373 30372 30374 +f 30373 30374 30375 +f 30375 30374 30376 +f 30375 30376 30377 +f 30377 30376 30378 +f 30377 30378 30379 +f 30379 30378 30380 +f 30379 30380 30381 +f 30381 30380 30382 +f 30381 30382 30383 +f 30383 30382 30384 +f 30383 30384 30385 +f 30385 30384 30386 +f 30385 30386 30387 +f 30387 30386 30388 +f 30387 30388 30389 +f 30389 30388 30390 +f 30389 30390 30391 +f 30391 30390 30392 +f 30391 30392 30393 +f 30393 30392 30394 +f 30393 30394 30395 +f 30395 30394 30396 +f 30395 30396 30397 +f 30397 30396 30398 +f 30397 30398 30399 +f 30399 30398 30400 +f 30399 30400 30401 +f 30401 30400 30402 +f 30401 30402 30403 +f 30403 30402 30404 +f 30403 30404 30405 +f 30405 30404 30406 +f 30405 30406 30407 +f 30407 30406 30408 +f 30407 30408 30409 +f 30409 30408 30410 +f 30409 30410 30411 +f 30411 30410 30412 +f 30411 30412 30413 +f 30413 30412 30414 +f 30413 30414 30415 +f 30415 30414 30416 +f 30415 30416 30417 +f 30417 30416 30418 +f 30417 30418 30419 +f 30419 30418 30420 +f 30419 30420 30421 +f 30421 30420 30422 +f 30421 30422 30423 +f 30423 30422 30424 +f 30423 30424 30425 +f 30425 30424 30426 +f 30425 30426 30427 +f 30427 30426 30428 +f 30427 30428 30429 +f 30429 30428 30430 +f 30429 30430 30431 +f 30431 30430 30432 +f 30431 30432 30433 +f 30433 30432 30434 +f 30433 30434 30435 +f 30435 30434 30436 +f 30435 30436 30437 +f 30437 30436 30438 +f 30437 30438 30439 +f 30439 30438 30440 +f 30439 30440 30441 +f 30441 30440 30442 +f 30441 30442 30443 +f 30443 30442 30444 +f 30443 30444 30445 +f 30445 30444 30446 +f 30445 30446 30447 +f 30447 30446 30448 +f 30447 30448 30449 +f 30449 30448 30450 +f 30449 30450 30451 +f 30451 30450 30452 +f 30451 30452 30453 +f 30453 30452 30454 +f 30453 30454 30455 +f 30455 30454 30456 +f 30455 30456 30457 +f 30457 30456 30458 +f 30457 30458 30459 +f 30459 30458 30460 +f 30459 30460 30461 +f 30461 30460 30462 +f 30461 30462 30325 +f 30325 30462 30323 +f 30323 30462 30463 +f 30323 30463 30464 +f 30464 30463 30465 +f 30464 30465 30466 +f 30466 30465 30467 +f 30466 30467 30468 +f 30468 30467 30469 +f 30468 30469 30470 +f 30470 30469 30471 +f 30470 30471 30472 +f 30472 30471 30473 +f 30472 30473 30474 +f 30474 30473 30475 +f 30474 30475 30476 +f 30476 30475 30477 +f 30476 30477 30478 +f 30478 30477 30479 +f 30478 30479 30480 +f 30480 30479 30481 +f 30480 30481 30482 +f 30482 30481 30483 +f 30482 30483 30484 +f 30484 30483 30485 +f 30484 30485 30486 +f 30486 30485 30487 +f 30486 30487 30488 +f 30488 30487 30489 +f 30488 30489 30490 +f 30490 30489 30491 +f 30490 30491 30492 +f 30492 30491 30493 +f 30492 30493 30494 +f 30494 30493 30495 +f 30494 30495 30496 +f 30496 30495 30497 +f 30496 30497 30498 +f 30498 30497 30499 +f 30498 30499 30500 +f 30500 30499 30501 +f 30500 30501 30502 +f 30502 30501 30503 +f 30502 30503 30504 +f 30504 30503 30505 +f 30504 30505 30506 +f 30506 30505 30507 +f 30506 30507 30508 +f 30508 30507 30509 +f 30508 30509 30510 +f 30510 30509 30511 +f 30510 30511 30512 +f 30512 30511 30513 +f 30512 30513 30514 +f 30514 30513 30515 +f 30514 30515 30516 +f 30516 30515 30517 +f 30516 30517 30518 +f 30518 30517 30519 +f 30518 30519 30520 +f 30520 30519 30521 +f 30520 30521 30522 +f 30522 30521 30523 +f 30522 30523 30524 +f 30524 30523 30525 +f 30524 30525 30526 +f 30526 30525 30527 +f 30526 30527 30528 +f 30528 30527 30529 +f 30528 30529 30530 +f 30530 30529 30531 +f 30530 30531 30532 +f 30532 30531 30533 +f 30532 30533 30534 +f 30534 30533 30535 +f 30534 30535 30536 +f 30536 30535 30537 +f 30536 30537 30538 +f 30538 30537 30539 +f 30538 30539 30540 +f 30540 30539 30541 +f 30540 30541 30542 +f 30542 30541 30543 +f 30542 30543 30544 +f 30544 30543 30545 +f 30544 30545 30546 +f 30546 30545 30547 +f 30546 30547 30548 +f 30548 30547 30549 +f 30548 30549 30550 +f 30550 30549 30551 +f 30550 30551 30552 +f 30365 30553 30366 +f 30366 30553 30368 +f 30553 30554 30368 +f 30368 30554 30370 +f 30554 30552 30370 +f 30370 30552 30551 +f 30370 30551 30372 +f 30372 30551 30555 +f 30372 30555 30374 +f 30374 30555 30556 +f 30374 30556 30376 +f 30376 30556 30557 +f 30376 30557 30378 +f 30378 30557 30558 +f 30378 30558 30380 +f 30380 30558 30559 +f 30380 30559 30382 +f 30382 30559 30384 +f 30559 30560 30384 +f 30384 30560 30386 +f 30386 30560 30388 +f 30388 30560 30561 +f 30388 30561 30390 +f 30390 30561 30562 +f 30390 30562 30392 +f 30392 30562 30394 +f 30562 30563 30394 +f 30394 30563 30396 +f 30563 30564 30396 +f 30396 30564 30398 +f 30398 30564 30400 +f 30400 30564 30565 +f 30400 30565 30402 +f 30402 30565 30566 +f 30402 30566 30404 +f 30404 30566 30567 +f 30404 30567 30406 +f 30406 30567 30408 +f 30567 30568 30408 +f 30408 30568 30569 +f 30408 30569 30410 +f 30410 30569 30570 +f 30410 30570 30571 +f 30571 30412 30410 +f 30416 30572 30418 +f 30418 30572 30573 +f 30418 30573 30420 +f 30420 30573 30574 +f 30420 30574 30422 +f 30422 30574 30575 +f 30422 30575 30424 +f 30424 30575 30576 +f 30424 30576 30426 +f 30426 30576 30577 +f 30426 30577 30428 +f 30428 30577 30578 +f 30428 30578 30430 +f 30430 30578 30579 +f 30430 30579 30432 +f 30432 30579 30580 +f 30432 30580 30434 +f 30434 30580 30581 +f 30434 30581 30436 +f 30436 30581 30582 +f 30436 30582 30438 +f 30438 30582 30583 +f 30438 30583 30440 +f 30440 30583 30584 +f 30440 30584 30442 +f 30442 30584 30585 +f 30442 30585 30444 +f 30444 30585 30586 +f 30444 30586 30446 +f 30446 30586 30587 +f 30446 30587 30448 +f 30448 30587 30588 +f 30448 30588 30450 +f 30450 30588 30589 +f 30450 30589 30452 +f 30452 30589 30590 +f 30452 30590 30454 +f 30454 30590 30591 +f 30454 30591 30456 +f 30456 30591 30592 +f 30456 30592 30458 +f 30458 30592 30593 +f 30458 30593 30460 +f 30460 30593 30594 +f 30460 30594 30462 +f 30462 30594 30463 +f 30573 30572 30595 +f 30595 30572 30596 +f 30595 30596 30597 +f 30597 30596 30598 +f 30597 30598 30599 +f 30599 30598 30600 +f 30599 30600 30601 +f 30601 30600 30602 +f 30601 30602 30603 +f 30603 30602 30604 +f 30603 30604 30605 +f 30605 30604 30606 +f 30605 30606 30607 +f 30607 30606 30608 +f 30607 30608 30609 +f 30609 30608 30610 +f 30609 30610 30611 +f 30611 30610 30612 +f 30611 30612 30613 +f 30613 30612 30614 +f 30613 30614 30615 +f 30615 30614 30616 +f 30615 30616 30617 +f 30617 30616 30618 +f 30617 30618 30619 +f 30619 30618 30620 +f 30619 30620 30621 +f 30621 30620 30622 +f 30621 30622 30623 +f 30623 30622 30624 +f 30623 30624 30625 +f 30625 30624 30626 +f 30625 30626 30627 +f 30627 30626 30628 +f 30627 30628 30629 +f 30629 30628 30630 +f 30629 30630 30631 +f 30631 30630 30632 +f 30631 30632 30633 +f 30633 30632 30634 +f 30633 30634 30635 +f 30635 30634 30469 +f 30635 30469 30467 +f 30596 30636 30598 +f 30598 30636 30637 +f 30598 30637 30600 +f 30600 30637 30638 +f 30600 30638 30602 +f 30602 30638 30639 +f 30602 30639 30604 +f 30604 30639 30640 +f 30604 30640 30606 +f 30606 30640 30641 +f 30606 30641 30608 +f 30608 30641 30642 +f 30608 30642 30610 +f 30610 30642 30643 +f 30610 30643 30612 +f 30612 30643 30644 +f 30612 30644 30614 +f 30614 30644 30645 +f 30614 30645 30616 +f 30616 30645 30646 +f 30616 30646 30618 +f 30618 30646 30647 +f 30618 30647 30620 +f 30620 30647 30648 +f 30620 30648 30622 +f 30622 30648 30649 +f 30622 30649 30624 +f 30624 30649 30650 +f 30624 30650 30626 +f 30626 30650 30651 +f 30626 30651 30628 +f 30628 30651 30652 +f 30628 30652 30630 +f 30630 30652 30653 +f 30630 30653 30632 +f 30632 30653 30654 +f 30632 30654 30634 +f 30634 30654 30471 +f 30634 30471 30469 +f 30637 30636 30655 +f 30655 30636 30656 +f 30655 30656 30657 +f 30657 30656 30658 +f 30657 30658 30659 +f 30659 30658 30660 +f 30659 30660 30661 +f 30661 30660 30662 +f 30661 30662 30663 +f 30663 30662 30664 +f 30663 30664 30665 +f 30665 30664 30666 +f 30665 30666 30667 +f 30667 30666 30668 +f 30667 30668 30669 +f 30669 30668 30670 +f 30669 30670 30671 +f 30671 30670 30672 +f 30671 30672 30673 +f 30673 30672 30674 +f 30673 30674 30675 +f 30675 30674 30676 +f 30675 30676 30677 +f 30677 30676 30678 +f 30677 30678 30679 +f 30679 30678 30680 +f 30679 30680 30681 +f 30681 30680 30682 +f 30681 30682 30683 +f 30683 30682 30684 +f 30683 30684 30685 +f 30685 30684 30686 +f 30685 30686 30687 +f 30687 30686 30479 +f 30687 30479 30477 +f 30658 30688 30660 +f 30660 30688 30689 +f 30660 30689 30662 +f 30662 30689 30690 +f 30662 30690 30664 +f 30664 30690 30691 +f 30664 30691 30666 +f 30666 30691 30692 +f 30666 30692 30668 +f 30668 30692 30693 +f 30668 30693 30670 +f 30670 30693 30694 +f 30670 30694 30672 +f 30672 30694 30695 +f 30672 30695 30674 +f 30674 30695 30696 +f 30674 30696 30676 +f 30676 30696 30697 +f 30676 30697 30678 +f 30678 30697 30698 +f 30678 30698 30680 +f 30680 30698 30699 +f 30680 30699 30682 +f 30682 30699 30700 +f 30682 30700 30684 +f 30684 30700 30701 +f 30684 30701 30686 +f 30686 30701 30481 +f 30686 30481 30479 +f 30702 30703 30688 +f 30688 30703 30704 +f 30688 30704 30689 +f 30689 30704 30690 +f 30705 30706 30702 +f 30702 30706 30707 +f 30702 30707 30703 +f 30703 30707 30708 +f 30703 30708 30709 +f 30709 30708 30710 +f 30709 30710 30691 +f 30691 30710 30692 +f 30711 30712 30705 +f 30705 30712 30713 +f 30705 30713 30706 +f 30706 30713 30714 +f 30706 30714 30715 +f 30715 30714 30716 +f 30715 30716 30717 +f 30717 30716 30718 +f 30717 30718 30719 +f 30719 30718 30720 +f 30719 30720 30693 +f 30693 30720 30694 +f 30721 30722 30711 +f 30711 30722 30723 +f 30711 30723 30712 +f 30712 30723 30724 +f 30712 30724 30725 +f 30725 30724 30726 +f 30725 30726 30727 +f 30727 30726 30728 +f 30727 30728 30729 +f 30729 30728 30730 +f 30729 30730 30731 +f 30731 30730 30732 +f 30731 30732 30733 +f 30733 30732 30734 +f 30733 30734 30695 +f 30695 30734 30696 +f 30722 30721 30735 +f 30735 30721 30736 +f 30735 30736 30737 +f 30737 30736 30738 +f 30737 30738 30739 +f 30739 30738 30740 +f 30739 30740 30741 +f 30741 30740 30503 +f 30741 30503 30501 +f 30509 30507 30736 +f 30736 30507 30742 +f 30736 30742 30738 +f 30738 30742 30740 +f 30509 30743 30511 +f 30511 30743 30744 +f 30511 30744 30513 +f 30513 30744 30745 +f 30513 30745 30515 +f 30515 30745 30746 +f 30515 30746 30517 +f 30517 30746 30747 +f 30517 30747 30519 +f 30519 30747 30748 +f 30519 30748 30521 +f 30521 30748 30749 +f 30521 30749 30523 +f 30523 30749 30750 +f 30523 30750 30525 +f 30525 30750 30751 +f 30525 30751 30527 +f 30527 30751 30752 +f 30527 30752 30529 +f 30529 30752 30753 +f 30529 30753 30531 +f 30531 30753 30754 +f 30531 30754 30533 +f 30533 30754 30755 +f 30533 30755 30535 +f 30535 30755 30756 +f 30535 30756 30537 +f 30537 30756 30757 +f 30537 30757 30539 +f 30539 30757 30758 +f 30539 30758 30541 +f 30541 30758 30759 +f 30541 30759 30543 +f 30543 30759 30760 +f 30543 30760 30545 +f 30545 30760 30761 +f 30545 30761 30547 +f 30547 30761 30762 +f 30547 30762 30549 +f 30549 30762 30555 +f 30549 30555 30551 +f 30763 30764 30743 +f 30743 30764 30765 +f 30743 30765 30744 +f 30744 30765 30745 +f 30766 30767 30763 +f 30763 30767 30768 +f 30763 30768 30764 +f 30764 30768 30769 +f 30764 30769 30770 +f 30770 30769 30771 +f 30770 30771 30746 +f 30746 30771 30747 +f 30767 30766 30772 +f 30772 30766 30773 +f 30772 30773 30774 +f 30774 30773 30775 +f 30774 30775 30776 +f 30776 30775 30777 +f 30776 30777 30778 +f 30778 30777 30779 +f 30778 30779 30780 +f 30780 30779 30781 +f 30780 30781 30782 +f 30782 30781 30783 +f 30782 30783 30784 +f 30784 30783 30785 +f 30784 30785 30786 +f 30786 30785 30787 +f 30786 30787 30788 +f 30788 30787 30789 +f 30788 30789 30790 +f 30790 30789 30791 +f 30790 30791 30792 +f 30792 30791 30793 +f 30792 30793 30794 +f 30794 30793 30795 +f 30794 30795 30796 +f 30796 30795 30797 +f 30796 30797 30798 +f 30798 30797 30560 +f 30798 30560 30799 +f 30799 30560 30559 +f 30799 30559 30800 +f 30800 30559 30801 +f 30800 30801 30802 +f 30802 30801 30803 +f 30802 30803 30804 +f 30804 30803 30805 +f 30804 30805 30806 +f 30806 30805 30759 +f 30806 30759 30758 +f 30773 30807 30775 +f 30775 30807 30808 +f 30775 30808 30777 +f 30777 30808 30809 +f 30777 30809 30779 +f 30779 30809 30810 +f 30779 30810 30781 +f 30781 30810 30811 +f 30781 30811 30783 +f 30783 30811 30812 +f 30783 30812 30785 +f 30785 30812 30813 +f 30785 30813 30787 +f 30787 30813 30814 +f 30787 30814 30789 +f 30789 30814 30815 +f 30789 30815 30791 +f 30791 30815 30816 +f 30791 30816 30793 +f 30793 30816 30817 +f 30793 30817 30795 +f 30795 30817 30818 +f 30795 30818 30797 +f 30797 30818 30561 +f 30797 30561 30560 +f 30819 30820 30807 +f 30807 30820 30821 +f 30807 30821 30808 +f 30808 30821 30809 +f 30822 30823 30819 +f 30819 30823 30824 +f 30819 30824 30825 +f 30825 30824 30826 +f 30825 30826 30827 +f 30827 30826 30828 +f 30827 30828 30829 +f 30829 30828 30830 +f 30829 30830 30811 +f 30811 30830 30812 +f 30831 30832 30822 +f 30822 30832 30833 +f 30822 30833 30834 +f 30834 30833 30835 +f 30834 30835 30836 +f 30836 30835 30837 +f 30836 30837 30838 +f 30838 30837 30839 +f 30838 30839 30840 +f 30840 30839 30841 +f 30840 30841 30842 +f 30842 30841 30843 +f 30842 30843 30844 +f 30844 30843 30845 +f 30844 30845 30814 +f 30814 30845 30815 +f 30571 30846 30831 +f 30831 30846 30847 +f 30831 30847 30832 +f 30832 30847 30848 +f 30832 30848 30849 +f 30849 30848 30850 +f 30849 30850 30851 +f 30851 30850 30852 +f 30851 30852 30853 +f 30853 30852 30854 +f 30853 30854 30855 +f 30855 30854 30856 +f 30855 30856 30857 +f 30857 30856 30858 +f 30857 30858 30859 +f 30859 30858 30860 +f 30859 30860 30861 +f 30861 30860 30862 +f 30861 30862 30816 +f 30816 30862 30817 +f 30571 30570 30846 +f 30846 30570 30569 +f 30846 30569 30863 +f 30863 30569 30568 +f 30863 30568 30567 +f 30566 30864 30567 +f 30567 30864 30865 +f 30567 30865 30863 +f 30863 30865 30848 +f 30863 30848 30847 +f 30864 30566 30866 +f 30866 30566 30565 +f 30866 30565 30867 +f 30867 30565 30564 +f 30867 30564 30868 +f 30868 30564 30869 +f 30868 30869 30858 +f 30858 30869 30860 +f 30564 30563 30869 +f 30869 30563 30870 +f 30869 30870 30860 +f 30860 30870 30862 +f 30563 30562 30870 +f 30870 30562 30871 +f 30870 30871 30862 +f 30862 30871 30817 +f 30871 30562 30818 +f 30818 30562 30561 +f 30559 30558 30801 +f 30801 30558 30872 +f 30801 30872 30803 +f 30803 30872 30873 +f 30803 30873 30805 +f 30805 30873 30760 +f 30805 30760 30759 +f 30558 30557 30872 +f 30872 30557 30874 +f 30872 30874 30873 +f 30873 30874 30761 +f 30873 30761 30760 +f 30557 30556 30874 +f 30874 30556 30762 +f 30874 30762 30761 +f 30556 30555 30762 +f 30552 30554 30550 +f 30550 30554 30875 +f 30550 30875 30876 +f 30876 30875 30877 +f 30876 30877 30878 +f 30878 30877 30879 +f 30878 30879 30880 +f 30880 30879 30881 +f 30880 30881 30882 +f 30882 30881 30883 +f 30882 30883 30884 +f 30884 30883 30885 +f 30884 30885 30886 +f 30886 30885 30887 +f 30886 30887 30888 +f 30888 30887 30889 +f 30888 30889 30890 +f 30890 30889 30891 +f 30890 30891 30892 +f 30892 30891 30893 +f 30892 30893 30894 +f 30894 30893 30895 +f 30894 30895 30896 +f 30896 30895 30897 +f 30896 30897 30898 +f 30898 30897 30899 +f 30898 30899 30900 +f 30900 30899 30901 +f 30900 30901 30902 +f 30902 30901 30903 +f 30902 30903 30904 +f 30904 30903 30905 +f 30904 30905 30906 +f 30906 30905 30907 +f 30906 30907 30908 +f 30908 30907 30909 +f 30908 30909 30910 +f 30910 30909 30911 +f 30910 30911 30912 +f 30912 30911 30913 +f 30912 30913 30914 +f 30914 30913 30915 +f 30914 30915 30468 +f 30468 30915 30466 +f 30554 30553 30875 +f 30875 30553 30916 +f 30875 30916 30877 +f 30877 30916 30917 +f 30877 30917 30879 +f 30879 30917 30918 +f 30879 30918 30881 +f 30881 30918 30919 +f 30881 30919 30883 +f 30883 30919 30920 +f 30883 30920 30885 +f 30885 30920 30921 +f 30885 30921 30887 +f 30887 30921 30922 +f 30887 30922 30889 +f 30889 30922 30923 +f 30889 30923 30891 +f 30891 30923 30924 +f 30891 30924 30893 +f 30893 30924 30925 +f 30893 30925 30895 +f 30895 30925 30926 +f 30895 30926 30897 +f 30897 30926 30927 +f 30897 30927 30899 +f 30899 30927 30928 +f 30899 30928 30901 +f 30901 30928 30929 +f 30901 30929 30903 +f 30903 30929 30930 +f 30903 30930 30905 +f 30905 30930 30931 +f 30905 30931 30907 +f 30907 30931 30932 +f 30907 30932 30909 +f 30909 30932 30933 +f 30909 30933 30911 +f 30911 30933 30934 +f 30911 30934 30913 +f 30913 30934 30935 +f 30913 30935 30915 +f 30915 30935 30936 +f 30915 30936 30466 +f 30466 30936 30464 +f 30553 30365 30916 +f 30916 30365 30295 +f 30916 30295 30917 +f 30917 30295 30299 +f 30917 30299 30918 +f 30918 30299 30301 +f 30918 30301 30919 +f 30919 30301 30920 +f 30365 30297 30295 +f 30301 30303 30920 +f 30920 30303 30921 +f 30305 30923 30303 +f 30303 30923 30922 +f 30303 30922 30921 +f 30307 30925 30305 +f 30305 30925 30924 +f 30305 30924 30923 +f 30309 30927 30307 +f 30307 30927 30926 +f 30307 30926 30925 +f 30927 30309 30928 +f 30928 30309 30311 +f 30928 30311 30929 +f 30929 30311 30313 +f 30929 30313 30930 +f 30930 30313 30315 +f 30930 30315 30931 +f 30931 30315 30317 +f 30931 30317 30932 +f 30932 30317 30933 +f 30317 30319 30933 +f 30933 30319 30934 +f 30934 30319 30935 +f 30935 30319 30321 +f 30935 30321 30936 +f 30936 30321 30464 +f 30321 30323 30464 +f 30461 30325 30937 +f 30937 30325 30327 +f 30937 30327 30938 +f 30938 30327 30939 +f 30938 30939 30940 +f 30940 30939 30941 +f 30940 30941 30942 +f 30942 30941 30943 +f 30942 30943 30944 +f 30944 30943 30945 +f 30944 30945 30946 +f 30946 30945 30947 +f 30946 30947 30948 +f 30948 30947 30949 +f 30948 30949 30950 +f 30950 30949 30951 +f 30950 30951 30952 +f 30952 30951 30953 +f 30952 30953 30954 +f 30954 30953 30955 +f 30954 30955 30956 +f 30956 30955 30957 +f 30956 30957 30958 +f 30958 30957 30959 +f 30958 30959 30960 +f 30960 30959 30961 +f 30960 30961 30962 +f 30962 30961 30963 +f 30962 30963 30964 +f 30964 30963 30965 +f 30964 30965 30966 +f 30966 30965 30967 +f 30966 30967 30968 +f 30968 30967 30969 +f 30968 30969 30970 +f 30970 30969 30971 +f 30970 30971 30972 +f 30972 30971 30973 +f 30972 30973 30974 +f 30974 30973 30975 +f 30974 30975 30976 +f 30976 30975 30977 +f 30976 30977 30978 +f 30978 30977 30979 +f 30978 30979 30980 +f 30980 30979 30981 +f 30980 30981 30413 +f 30413 30981 30411 +f 30327 30329 30939 +f 30939 30329 30982 +f 30939 30982 30941 +f 30941 30982 30983 +f 30941 30983 30943 +f 30943 30983 30984 +f 30943 30984 30945 +f 30945 30984 30985 +f 30945 30985 30947 +f 30947 30985 30986 +f 30947 30986 30949 +f 30949 30986 30987 +f 30949 30987 30951 +f 30951 30987 30988 +f 30951 30988 30953 +f 30953 30988 30989 +f 30953 30989 30955 +f 30955 30989 30990 +f 30955 30990 30957 +f 30957 30990 30991 +f 30957 30991 30959 +f 30959 30991 30992 +f 30959 30992 30961 +f 30961 30992 30993 +f 30961 30993 30963 +f 30963 30993 30994 +f 30963 30994 30965 +f 30965 30994 30995 +f 30965 30995 30967 +f 30967 30995 30996 +f 30967 30996 30969 +f 30969 30996 30997 +f 30969 30997 30971 +f 30971 30997 30998 +f 30971 30998 30973 +f 30973 30998 30999 +f 30973 30999 30975 +f 30975 30999 31000 +f 30975 31000 30977 +f 30977 31000 31001 +f 30977 31001 30979 +f 30979 31001 31002 +f 30979 31002 30981 +f 30981 31002 30409 +f 30981 30409 30411 +f 30329 30331 30982 +f 30982 30331 31003 +f 30982 31003 30983 +f 30983 31003 31004 +f 30983 31004 30984 +f 30984 31004 31005 +f 30984 31005 30985 +f 30985 31005 31006 +f 30985 31006 30986 +f 30986 31006 31007 +f 30986 31007 30987 +f 30987 31007 31008 +f 30987 31008 30988 +f 30988 31008 31009 +f 30988 31009 30989 +f 30989 31009 31010 +f 30989 31010 30990 +f 30990 31010 31011 +f 30990 31011 30991 +f 30991 31011 31012 +f 30991 31012 30992 +f 30992 31012 31013 +f 30992 31013 30993 +f 30993 31013 31014 +f 30993 31014 30994 +f 30994 31014 31015 +f 30994 31015 30995 +f 30995 31015 31016 +f 30995 31016 30996 +f 30996 31016 31017 +f 30996 31017 30997 +f 30997 31017 31018 +f 30997 31018 30998 +f 30998 31018 31019 +f 30998 31019 30999 +f 30999 31019 31020 +f 30999 31020 31000 +f 31000 31020 31021 +f 31000 31021 31001 +f 31001 31021 31022 +f 31001 31022 31002 +f 31002 31022 30407 +f 31002 30407 30409 +f 30331 30333 31003 +f 31003 30333 31023 +f 31003 31023 31004 +f 31004 31023 31024 +f 31004 31024 31005 +f 31005 31024 31025 +f 31005 31025 31006 +f 31006 31025 31026 +f 31006 31026 31007 +f 31007 31026 31027 +f 31007 31027 31008 +f 31008 31027 31028 +f 31008 31028 31009 +f 31009 31028 31029 +f 31009 31029 31010 +f 31010 31029 31030 +f 31010 31030 31011 +f 31011 31030 31031 +f 31011 31031 31012 +f 31012 31031 31032 +f 31012 31032 31013 +f 31013 31032 31033 +f 31013 31033 31014 +f 31014 31033 31034 +f 31014 31034 31015 +f 31015 31034 31035 +f 31015 31035 31016 +f 31016 31035 31036 +f 31016 31036 31017 +f 31017 31036 31037 +f 31017 31037 31018 +f 31018 31037 31038 +f 31018 31038 31019 +f 31019 31038 31039 +f 31019 31039 31020 +f 31020 31039 31040 +f 31020 31040 31021 +f 31021 31040 31041 +f 31021 31041 31022 +f 31022 31041 30405 +f 31022 30405 30407 +f 30333 30335 31023 +f 31023 30335 31042 +f 31023 31042 31024 +f 31024 31042 31043 +f 31024 31043 31025 +f 31025 31043 31044 +f 31025 31044 31026 +f 31026 31044 31045 +f 31026 31045 31027 +f 31027 31045 31046 +f 31027 31046 31028 +f 31028 31046 31047 +f 31028 31047 31029 +f 31029 31047 31048 +f 31029 31048 31030 +f 31030 31048 31049 +f 31030 31049 31031 +f 31031 31049 31050 +f 31031 31050 31032 +f 31032 31050 31051 +f 31032 31051 31033 +f 31033 31051 31052 +f 31033 31052 31034 +f 31034 31052 31053 +f 31034 31053 31035 +f 31035 31053 31054 +f 31035 31054 31036 +f 31036 31054 31055 +f 31036 31055 31037 +f 31037 31055 31056 +f 31037 31056 31038 +f 31038 31056 31057 +f 31038 31057 31039 +f 31039 31057 31058 +f 31039 31058 31040 +f 31040 31058 31059 +f 31040 31059 31041 +f 31041 31059 30403 +f 31041 30403 30405 +f 30335 30337 31042 +f 31042 30337 31060 +f 31042 31060 31043 +f 31043 31060 31061 +f 31043 31061 31044 +f 31044 31061 31062 +f 31044 31062 31045 +f 31045 31062 31063 +f 31045 31063 31046 +f 31046 31063 31064 +f 31046 31064 31047 +f 31047 31064 31065 +f 31047 31065 31048 +f 31048 31065 31066 +f 31048 31066 31049 +f 31049 31066 31067 +f 31049 31067 31050 +f 31050 31067 31068 +f 31050 31068 31051 +f 31051 31068 31069 +f 31051 31069 31052 +f 31052 31069 31070 +f 31052 31070 31053 +f 31053 31070 31071 +f 31053 31071 31054 +f 31054 31071 31072 +f 31054 31072 31055 +f 31055 31072 31073 +f 31055 31073 31056 +f 31056 31073 31074 +f 31056 31074 31057 +f 31057 31074 31075 +f 31057 31075 31058 +f 31058 31075 31076 +f 31058 31076 31059 +f 31059 31076 30401 +f 31059 30401 30403 +f 31060 30337 31077 +f 31077 30337 30339 +f 31077 30339 31078 +f 31078 30339 31079 +f 31078 31079 31080 +f 31080 31079 31081 +f 31080 31081 31082 +f 31082 31081 31083 +f 31082 31083 31084 +f 31084 31083 31085 +f 31084 31085 31086 +f 31086 31085 31087 +f 31086 31087 31088 +f 31088 31087 31089 +f 31088 31089 31090 +f 31090 31089 31091 +f 31090 31091 31092 +f 31092 31091 31093 +f 31092 31093 31094 +f 31094 31093 31095 +f 31094 31095 31096 +f 31096 31095 31097 +f 31096 31097 31098 +f 31098 31097 31099 +f 31098 31099 31100 +f 31100 31099 31101 +f 31100 31101 31102 +f 31102 31101 31103 +f 31102 31103 31104 +f 31104 31103 31105 +f 31104 31105 31106 +f 31106 31105 30395 +f 31106 30395 30397 +f 30339 30341 31079 +f 31079 30341 31107 +f 31079 31107 31081 +f 31081 31107 31108 +f 31081 31108 31083 +f 31083 31108 31109 +f 31083 31109 31085 +f 31085 31109 31110 +f 31085 31110 31087 +f 31087 31110 31111 +f 31087 31111 31089 +f 31089 31111 31112 +f 31089 31112 31091 +f 31091 31112 31113 +f 31091 31113 31093 +f 31093 31113 31114 +f 31093 31114 31095 +f 31095 31114 31115 +f 31095 31115 31097 +f 31097 31115 31116 +f 31097 31116 31099 +f 31099 31116 31117 +f 31099 31117 31101 +f 31101 31117 31118 +f 31101 31118 31103 +f 31103 31118 31119 +f 31103 31119 31105 +f 31105 31119 30393 +f 31105 30393 30395 +f 30341 30343 31107 +f 31107 30343 31120 +f 31107 31120 31108 +f 31108 31120 31121 +f 31108 31121 31109 +f 31109 31121 31122 +f 31109 31122 31110 +f 31110 31122 31123 +f 31110 31123 31111 +f 31111 31123 31124 +f 31111 31124 31112 +f 31112 31124 31125 +f 31112 31125 31113 +f 31113 31125 31126 +f 31113 31126 31114 +f 31114 31126 31127 +f 31114 31127 31115 +f 31115 31127 31128 +f 31115 31128 31116 +f 31116 31128 31129 +f 31116 31129 31117 +f 31117 31129 31130 +f 31117 31130 31118 +f 31118 31130 31131 +f 31118 31131 31119 +f 31119 31131 30391 +f 31119 30391 30393 +f 30343 30345 31120 +f 31120 30345 31132 +f 31120 31132 31121 +f 31121 31132 31133 +f 31121 31133 31122 +f 31122 31133 31134 +f 31122 31134 31123 +f 31123 31134 31135 +f 31123 31135 31124 +f 31124 31135 31136 +f 31124 31136 31125 +f 31125 31136 31137 +f 31125 31137 31126 +f 31126 31137 31138 +f 31126 31138 31127 +f 31127 31138 31139 +f 31127 31139 31128 +f 31128 31139 31140 +f 31128 31140 31129 +f 31129 31140 31141 +f 31129 31141 31130 +f 31130 31141 31142 +f 31130 31142 31131 +f 31131 31142 30389 +f 31131 30389 30391 +f 31132 30345 31143 +f 31143 30345 30347 +f 31143 30347 31144 +f 31144 30347 30349 +f 31144 30349 31145 +f 31145 30349 30351 +f 31145 30351 31146 +f 31146 30351 30353 +f 31146 30353 31147 +f 31147 30353 30355 +f 31147 30355 31148 +f 31148 30355 30357 +f 31148 30357 31149 +f 31149 30357 31150 +f 31149 31150 31151 +f 31151 31150 31152 +f 31151 31152 31153 +f 31153 31152 31154 +f 31153 31154 31155 +f 31155 31154 30373 +f 31155 30373 30375 +f 30357 30359 31150 +f 31150 30359 31156 +f 31150 31156 31152 +f 31152 31156 31157 +f 31152 31157 31154 +f 31154 31157 30371 +f 31154 30371 30373 +f 30359 30361 31156 +f 31156 30361 31158 +f 31156 31158 31157 +f 31157 31158 30369 +f 31157 30369 30371 +f 30361 30363 31158 +f 31158 30363 30367 +f 31158 30367 30369 +f 30363 30298 30367 +f 30819 30825 30820 +f 30820 30825 30827 +f 30820 30827 31159 +f 31159 30827 30829 +f 31159 30829 30810 +f 30810 30829 30811 +f 30822 30834 30823 +f 30823 30834 30836 +f 30823 30836 31160 +f 31160 30836 30838 +f 31160 30838 31161 +f 31161 30838 30840 +f 31161 30840 31162 +f 31162 30840 30842 +f 31162 30842 31163 +f 31163 30842 30844 +f 31163 30844 30813 +f 30813 30844 30814 +f 30401 31076 30399 +f 30399 31076 31164 +f 30399 31164 30397 +f 30397 31164 31106 +f 30389 31142 30387 +f 30387 31142 31165 +f 30387 31165 30385 +f 30385 31165 31166 +f 30385 31166 30383 +f 30383 31166 31167 +f 30383 31167 30381 +f 30381 31167 31168 +f 30381 31168 30379 +f 30379 31168 31169 +f 30379 31169 30377 +f 30377 31169 31170 +f 30377 31170 30375 +f 30375 31170 31155 +f 30413 30415 30980 +f 30980 30415 31171 +f 30980 31171 30978 +f 30978 31171 31172 +f 30978 31172 30976 +f 30976 31172 31173 +f 30976 31173 30974 +f 30974 31173 31174 +f 30974 31174 30972 +f 30972 31174 31175 +f 30972 31175 30970 +f 30970 31175 31176 +f 30970 31176 30968 +f 30968 31176 31177 +f 30968 31177 30966 +f 30966 31177 31178 +f 30966 31178 30964 +f 30964 31178 31179 +f 30964 31179 30962 +f 30962 31179 31180 +f 30962 31180 30960 +f 30960 31180 31181 +f 30960 31181 30958 +f 30958 31181 31182 +f 30958 31182 30956 +f 30956 31182 31183 +f 30956 31183 30954 +f 30954 31183 31184 +f 30954 31184 30952 +f 30952 31184 31185 +f 30952 31185 30950 +f 30950 31185 31186 +f 30950 31186 30948 +f 30948 31186 31187 +f 30948 31187 30946 +f 30946 31187 31188 +f 30946 31188 30944 +f 30944 31188 31189 +f 30944 31189 30942 +f 30942 31189 31190 +f 30942 31190 30940 +f 30940 31190 31191 +f 30940 31191 30938 +f 30938 31191 30937 +f 31164 31076 31075 +f 31106 31164 31192 +f 31192 31164 31075 +f 31192 31075 31074 +f 31106 31192 31104 +f 31104 31192 31193 +f 31104 31193 31102 +f 31102 31193 31194 +f 31102 31194 31100 +f 31100 31194 31195 +f 31100 31195 31098 +f 31098 31195 31196 +f 31098 31196 31096 +f 31096 31196 31197 +f 31096 31197 31094 +f 31094 31197 31198 +f 31094 31198 31092 +f 31092 31198 31199 +f 31092 31199 31090 +f 31090 31199 31200 +f 31090 31200 31088 +f 31088 31200 31201 +f 31088 31201 31086 +f 31086 31201 31202 +f 31086 31202 31084 +f 31084 31202 31203 +f 31084 31203 31082 +f 31082 31203 31204 +f 31082 31204 31080 +f 31080 31204 31205 +f 31080 31205 31078 +f 31078 31205 31077 +f 31193 31192 31074 +f 31165 31142 31141 +f 31166 31165 31206 +f 31206 31165 31141 +f 31206 31141 31140 +f 31167 31166 31207 +f 31207 31166 31206 +f 31207 31206 31208 +f 31208 31206 31140 +f 31208 31140 31139 +f 31168 31167 31209 +f 31209 31167 31207 +f 31209 31207 31210 +f 31210 31207 31208 +f 31210 31208 31211 +f 31211 31208 31139 +f 31211 31139 31138 +f 31169 31168 31212 +f 31212 31168 31209 +f 31212 31209 31213 +f 31213 31209 31210 +f 31213 31210 31214 +f 31214 31210 31211 +f 31214 31211 31215 +f 31215 31211 31138 +f 31215 31138 31137 +f 31170 31169 31216 +f 31216 31169 31212 +f 31216 31212 31217 +f 31217 31212 31213 +f 31217 31213 31218 +f 31218 31213 31214 +f 31218 31214 31219 +f 31219 31214 31215 +f 31219 31215 31220 +f 31220 31215 31137 +f 31220 31137 31136 +f 31155 31170 31221 +f 31221 31170 31216 +f 31221 31216 31222 +f 31222 31216 31217 +f 31222 31217 31223 +f 31223 31217 31218 +f 31223 31218 31224 +f 31224 31218 31219 +f 31224 31219 31225 +f 31225 31219 31220 +f 31225 31220 31226 +f 31226 31220 31136 +f 31226 31136 31135 +f 31155 31221 31153 +f 31153 31221 31227 +f 31153 31227 31151 +f 31151 31227 31228 +f 31151 31228 31149 +f 31149 31228 31148 +f 31227 31221 31222 +f 30417 30419 31171 +f 31171 30419 31172 +f 31173 31172 30421 +f 30421 31172 30419 +f 31193 31074 31073 +f 31193 31073 31194 +f 31194 31073 31072 +f 31194 31072 31195 +f 31195 31072 31071 +f 31195 31071 31196 +f 31196 31071 31070 +f 31196 31070 31197 +f 31197 31070 31069 +f 31197 31069 31198 +f 31198 31069 31068 +f 31198 31068 31199 +f 31199 31068 31067 +f 31199 31067 31200 +f 31200 31067 31066 +f 31200 31066 31201 +f 31201 31066 31065 +f 31201 31065 31202 +f 31202 31065 31064 +f 31202 31064 31203 +f 31203 31064 31063 +f 31203 31063 31204 +f 31204 31063 31062 +f 31204 31062 31205 +f 31205 31062 31061 +f 31205 31061 31077 +f 31077 31061 31060 +f 31227 31222 31229 +f 31229 31222 31223 +f 31229 31223 31230 +f 31230 31223 31224 +f 31230 31224 31231 +f 31231 31224 31225 +f 31231 31225 31232 +f 31232 31225 31226 +f 31232 31226 31233 +f 31233 31226 31135 +f 31233 31135 31134 +f 31227 31229 31228 +f 31228 31229 31234 +f 31228 31234 31148 +f 31148 31234 31147 +f 31234 31229 31230 +f 30415 30417 31171 +f 30573 30595 30574 +f 30574 30595 31235 +f 30574 31235 30575 +f 30575 31235 31236 +f 30575 31236 30576 +f 30576 31236 31237 +f 30576 31237 30577 +f 30577 31237 31238 +f 30577 31238 30578 +f 30578 31238 31239 +f 30578 31239 30579 +f 30579 31239 31240 +f 30579 31240 30580 +f 30580 31240 31241 +f 30580 31241 30581 +f 30581 31241 31242 +f 30581 31242 30582 +f 30582 31242 31243 +f 30582 31243 30583 +f 30583 31243 31244 +f 30583 31244 30584 +f 30584 31244 31245 +f 30584 31245 30585 +f 30585 31245 31246 +f 30585 31246 30586 +f 30586 31246 31247 +f 30586 31247 30587 +f 30587 31247 31248 +f 30587 31248 30588 +f 30588 31248 31249 +f 30588 31249 30589 +f 30589 31249 31250 +f 30589 31250 30590 +f 30590 31250 31251 +f 30590 31251 30591 +f 30591 31251 31252 +f 30591 31252 30592 +f 30592 31252 31253 +f 30592 31253 30593 +f 30593 31253 31254 +f 30593 31254 30594 +f 30594 31254 30465 +f 30594 30465 30463 +f 31173 30421 30423 +f 31173 30423 31174 +f 31174 30423 30425 +f 31174 30425 31175 +f 31175 30425 30427 +f 31175 30427 31176 +f 31176 30427 30429 +f 31176 30429 31177 +f 31177 30429 30431 +f 31177 30431 31178 +f 31178 30431 30433 +f 31178 30433 31179 +f 31179 30433 30435 +f 31179 30435 31180 +f 31180 30435 30437 +f 31180 30437 31181 +f 31181 30437 30439 +f 31181 30439 31182 +f 31182 30439 30441 +f 31182 30441 31183 +f 31183 30441 30443 +f 31183 30443 31184 +f 31184 30443 30445 +f 31184 30445 31185 +f 31185 30445 30447 +f 31185 30447 31186 +f 31186 30447 30449 +f 31186 30449 31187 +f 31187 30449 30451 +f 31187 30451 31188 +f 31188 30451 30453 +f 31188 30453 31189 +f 31189 30453 30455 +f 31189 30455 31190 +f 31190 30455 30457 +f 31190 30457 31191 +f 31191 30457 30459 +f 31191 30459 30937 +f 30937 30459 30461 +f 31234 31230 31255 +f 31255 31230 31231 +f 31255 31231 31256 +f 31256 31231 31232 +f 31256 31232 31257 +f 31257 31232 31233 +f 31257 31233 31258 +f 31258 31233 31134 +f 31258 31134 31133 +f 31146 31147 31255 +f 31255 31147 31234 +f 31146 31255 31256 +f 30595 30597 31235 +f 31235 30597 30599 +f 31235 30599 31236 +f 31236 30599 30601 +f 31236 30601 31237 +f 31237 30601 30603 +f 31237 30603 31238 +f 31238 30603 30605 +f 31238 30605 31239 +f 31239 30605 30607 +f 31239 30607 31240 +f 31240 30607 30609 +f 31240 30609 31241 +f 31241 30609 30611 +f 31241 30611 31242 +f 31242 30611 30613 +f 31242 30613 31243 +f 31243 30613 30615 +f 31243 30615 31244 +f 31244 30615 30617 +f 31244 30617 31245 +f 31245 30617 30619 +f 31245 30619 31246 +f 31246 30619 30621 +f 31246 30621 31247 +f 31247 30621 30623 +f 31247 30623 31248 +f 31248 30623 30625 +f 31248 30625 31249 +f 31249 30625 30627 +f 31249 30627 31250 +f 31250 30627 30629 +f 31250 30629 31251 +f 31251 30629 30631 +f 31251 30631 31252 +f 31252 30631 30633 +f 31252 30633 31253 +f 31253 30633 30635 +f 31253 30635 31254 +f 31254 30635 30467 +f 31254 30467 30465 +f 31145 31146 31256 +f 31145 31256 31257 +f 31145 31257 31144 +f 31144 31257 31258 +f 31144 31258 31143 +f 31143 31258 31133 +f 31143 31133 31132 +f 30657 31259 30655 +f 30655 31259 30638 +f 30655 30638 30637 +f 30638 31259 30639 +f 30639 31259 31260 +f 30639 31260 30640 +f 30640 31260 31261 +f 30640 31261 30641 +f 30641 31261 31262 +f 30641 31262 30642 +f 30642 31262 31263 +f 30642 31263 30643 +f 30643 31263 31264 +f 30643 31264 30644 +f 30644 31264 31265 +f 30644 31265 30645 +f 30645 31265 31266 +f 30645 31266 30646 +f 30646 31266 31267 +f 30646 31267 30647 +f 30647 31267 31268 +f 30647 31268 30648 +f 30648 31268 31269 +f 30648 31269 30649 +f 30649 31269 31270 +f 30649 31270 30650 +f 30650 31270 31271 +f 30650 31271 30651 +f 30651 31271 31272 +f 30651 31272 30652 +f 30652 31272 31273 +f 30652 31273 30653 +f 30653 31273 31274 +f 30653 31274 30654 +f 30654 31274 30473 +f 30654 30473 30471 +f 31259 30657 31275 +f 31275 30657 30659 +f 31275 30659 30661 +f 30661 31276 31275 +f 31275 31276 31260 +f 31275 31260 31259 +f 31260 31276 31261 +f 31261 31276 31277 +f 31261 31277 31262 +f 31262 31277 31278 +f 31262 31278 31263 +f 31263 31278 31279 +f 31263 31279 31264 +f 31264 31279 31280 +f 31264 31280 31265 +f 31265 31280 31281 +f 31265 31281 31266 +f 31266 31281 31282 +f 31266 31282 31267 +f 31267 31282 31283 +f 31267 31283 31268 +f 31268 31283 31284 +f 31268 31284 31269 +f 31269 31284 31285 +f 31269 31285 31270 +f 31270 31285 31286 +f 31270 31286 31271 +f 31271 31286 31287 +f 31271 31287 31272 +f 31272 31287 31288 +f 31272 31288 31273 +f 31273 31288 31289 +f 31273 31289 31274 +f 31274 31289 30475 +f 31274 30475 30473 +f 31277 31276 30663 +f 30663 31276 30661 +f 30703 30709 30704 +f 30704 30709 30690 +f 31277 30663 30665 +f 30709 30691 30690 +f 31277 30665 31278 +f 31278 30665 30667 +f 31278 30667 31279 +f 31279 30667 30669 +f 31279 30669 31280 +f 31280 30669 30671 +f 31280 30671 31281 +f 31281 30671 30673 +f 31281 30673 31282 +f 31282 30673 30675 +f 31282 30675 31283 +f 31283 30675 30677 +f 31283 30677 31284 +f 31284 30677 30679 +f 31284 30679 31285 +f 31285 30679 30681 +f 31285 30681 31286 +f 31286 30681 30683 +f 31286 30683 31287 +f 31287 30683 30685 +f 31287 30685 31288 +f 31288 30685 30687 +f 31288 30687 31289 +f 31289 30687 30477 +f 31289 30477 30475 +f 30708 30707 30715 +f 30715 30707 30706 +f 30710 30708 30717 +f 30717 30708 30715 +f 30692 30710 30719 +f 30719 30710 30717 +f 30719 30693 30692 +f 30714 30713 30725 +f 30725 30713 30712 +f 30716 30714 30727 +f 30727 30714 30725 +f 30718 30716 30729 +f 30729 30716 30727 +f 30720 30718 30731 +f 30731 30718 30729 +f 30694 30720 30733 +f 30733 30720 30731 +f 30733 30695 30694 +f 30724 30723 31290 +f 31290 30723 30722 +f 31290 30722 31291 +f 31291 30722 30735 +f 31291 30735 31292 +f 31292 30735 30737 +f 31292 30737 30739 +f 30726 30724 31293 +f 31293 30724 31290 +f 31293 31290 31294 +f 31294 31290 31291 +f 31294 31291 31295 +f 31295 31291 31292 +f 31295 31292 31296 +f 31296 31292 30739 +f 31296 30739 30741 +f 30728 30726 31297 +f 31297 30726 31293 +f 31297 31293 31298 +f 31298 31293 31294 +f 31298 31294 31299 +f 31299 31294 31295 +f 31299 31295 31300 +f 31300 31295 31296 +f 31300 31296 31301 +f 31301 31296 30741 +f 31301 30741 30501 +f 30730 30728 31302 +f 31302 30728 31297 +f 31302 31297 31303 +f 31303 31297 31298 +f 31303 31298 31304 +f 31304 31298 31299 +f 31304 31299 31305 +f 31305 31299 31300 +f 31305 31300 31306 +f 31306 31300 31301 +f 31306 31301 30499 +f 30499 31301 30501 +f 30732 30730 31307 +f 31307 30730 31302 +f 31307 31302 31308 +f 31308 31302 31303 +f 31308 31303 31309 +f 31309 31303 31304 +f 31309 31304 31310 +f 31310 31304 31305 +f 31310 31305 31311 +f 31311 31305 31306 +f 31311 31306 30497 +f 30497 31306 30499 +f 30734 30732 31312 +f 31312 30732 31307 +f 31312 31307 31313 +f 31313 31307 31308 +f 31313 31308 31314 +f 31314 31308 31309 +f 31314 31309 31315 +f 31315 31309 31310 +f 31315 31310 31316 +f 31316 31310 31311 +f 31316 31311 30495 +f 30495 31311 30497 +f 30696 30734 31317 +f 31317 30734 31312 +f 31317 31312 31318 +f 31318 31312 31313 +f 31318 31313 31319 +f 31319 31313 31314 +f 31319 31314 31320 +f 31320 31314 31315 +f 31320 31315 31321 +f 31321 31315 31316 +f 31321 31316 30493 +f 30493 31316 30495 +f 31318 31322 31317 +f 31317 31322 30697 +f 31317 30697 30696 +f 30697 31322 30698 +f 30698 31322 31323 +f 30698 31323 30699 +f 30699 31323 31324 +f 30699 31324 30700 +f 30700 31324 31325 +f 30700 31325 30701 +f 30701 31325 30483 +f 30701 30483 30481 +f 31322 31318 31326 +f 31326 31318 31319 +f 31326 31319 31327 +f 31327 31319 31320 +f 31327 31320 31328 +f 31328 31320 31321 +f 31328 31321 30491 +f 30491 31321 30493 +f 30507 30505 30742 +f 30742 30505 30740 +f 30505 30503 30740 +f 31328 31329 31327 +f 31327 31329 31330 +f 31327 31330 31326 +f 31326 31330 31323 +f 31326 31323 31322 +f 31329 31331 31330 +f 31330 31331 31324 +f 31330 31324 31323 +f 30491 30489 31328 +f 31328 30489 31329 +f 31324 31331 31325 +f 31325 31331 30485 +f 31325 30485 30483 +f 30489 30487 31329 +f 31329 30487 31331 +f 30487 30485 31331 +f 30506 30508 31332 +f 31332 30508 30510 +f 31332 30510 30512 +f 30504 30506 31333 +f 31333 30506 31332 +f 31333 31332 31334 +f 31334 31332 30512 +f 31334 30512 30514 +f 30502 30504 31335 +f 31335 30504 31333 +f 31335 31333 31336 +f 31336 31333 31334 +f 31336 31334 31337 +f 31337 31334 30514 +f 31337 30514 30516 +f 30500 30502 31338 +f 31338 30502 31335 +f 31338 31335 31339 +f 31339 31335 31336 +f 31339 31336 31340 +f 31340 31336 31337 +f 31340 31337 31341 +f 31341 31337 30516 +f 31341 30516 30518 +f 30498 30500 31342 +f 31342 30500 31338 +f 31342 31338 31343 +f 31343 31338 31339 +f 31343 31339 31344 +f 31344 31339 31340 +f 31344 31340 31345 +f 31345 31340 31341 +f 31345 31341 31346 +f 31346 31341 30518 +f 31346 30518 30520 +f 30496 30498 31347 +f 31347 30498 31342 +f 31347 31342 31348 +f 31348 31342 31343 +f 31348 31343 31349 +f 31349 31343 31344 +f 31349 31344 31350 +f 31350 31344 31345 +f 31350 31345 31351 +f 31351 31345 31346 +f 31351 31346 31352 +f 31352 31346 30520 +f 31352 30520 30522 +f 30494 30496 31353 +f 31353 30496 31347 +f 31353 31347 31354 +f 31354 31347 31348 +f 31354 31348 31355 +f 31355 31348 31349 +f 31355 31349 31356 +f 31356 31349 31350 +f 31356 31350 31357 +f 31357 31350 31351 +f 31357 31351 31358 +f 31358 31351 31352 +f 31358 31352 31359 +f 31359 31352 30522 +f 31359 30522 30524 +f 30492 30494 31360 +f 31360 30494 31353 +f 31360 31353 31361 +f 31361 31353 31354 +f 31361 31354 31362 +f 31362 31354 31355 +f 31362 31355 31363 +f 31363 31355 31356 +f 31363 31356 31364 +f 31364 31356 31357 +f 31364 31357 31365 +f 31365 31357 31358 +f 31365 31358 31366 +f 31366 31358 31359 +f 31366 31359 31367 +f 31367 31359 30524 +f 31367 30524 30526 +f 30490 30492 31368 +f 31368 30492 31360 +f 31368 31360 31369 +f 31369 31360 31361 +f 31369 31361 31370 +f 31370 31361 31362 +f 31370 31362 31371 +f 31371 31362 31363 +f 31371 31363 31372 +f 31372 31363 31364 +f 31372 31364 31373 +f 31373 31364 31365 +f 31373 31365 31374 +f 31374 31365 31366 +f 31374 31366 31375 +f 31375 31366 31367 +f 31375 31367 31376 +f 31376 31367 30526 +f 31376 30526 30528 +f 30488 30490 31377 +f 31377 30490 31368 +f 31377 31368 31378 +f 31378 31368 31369 +f 31378 31369 31379 +f 31379 31369 31370 +f 31379 31370 31380 +f 31380 31370 31371 +f 31380 31371 31381 +f 31381 31371 31372 +f 31381 31372 31382 +f 31382 31372 31373 +f 31382 31373 31383 +f 31383 31373 31374 +f 31383 31374 31384 +f 31384 31374 31375 +f 31384 31375 31385 +f 31385 31375 31376 +f 31385 31376 31386 +f 31386 31376 30528 +f 31386 30528 30530 +f 30486 30488 31387 +f 31387 30488 31377 +f 31387 31377 31388 +f 31388 31377 31378 +f 31388 31378 31389 +f 31389 31378 31379 +f 31389 31379 31390 +f 31390 31379 31380 +f 31390 31380 31391 +f 31391 31380 31381 +f 31391 31381 31392 +f 31392 31381 31382 +f 31392 31382 31393 +f 31393 31382 31383 +f 31393 31383 31394 +f 31394 31383 31384 +f 31394 31384 31395 +f 31395 31384 31385 +f 31395 31385 31396 +f 31396 31385 31386 +f 31396 31386 31397 +f 31397 31386 30530 +f 31397 30530 30532 +f 30484 30486 31398 +f 31398 30486 31387 +f 31398 31387 31399 +f 31399 31387 31388 +f 31399 31388 31400 +f 31400 31388 31389 +f 31400 31389 31401 +f 31401 31389 31390 +f 31401 31390 31402 +f 31402 31390 31391 +f 31402 31391 31403 +f 31403 31391 31392 +f 31403 31392 31404 +f 31404 31392 31393 +f 31404 31393 31405 +f 31405 31393 31394 +f 31405 31394 31406 +f 31406 31394 31395 +f 31406 31395 31407 +f 31407 31395 31396 +f 31407 31396 31408 +f 31408 31396 31397 +f 31408 31397 31409 +f 31409 31397 30532 +f 31409 30532 30534 +f 30482 30484 31410 +f 31410 30484 31398 +f 31410 31398 31411 +f 31411 31398 31399 +f 31411 31399 31412 +f 31412 31399 31400 +f 31412 31400 31413 +f 31413 31400 31401 +f 31413 31401 31414 +f 31414 31401 31402 +f 31414 31402 31415 +f 31415 31402 31403 +f 31415 31403 31416 +f 31416 31403 31404 +f 31416 31404 31417 +f 31417 31404 31405 +f 31417 31405 31418 +f 31418 31405 31406 +f 31418 31406 31419 +f 31419 31406 31407 +f 31419 31407 31420 +f 31420 31407 31408 +f 31420 31408 31421 +f 31421 31408 31409 +f 31421 31409 31422 +f 31422 31409 30534 +f 31422 30534 30536 +f 30480 30482 31423 +f 31423 30482 31410 +f 31423 31410 31424 +f 31424 31410 31411 +f 31424 31411 31425 +f 31425 31411 31412 +f 31425 31412 31426 +f 31426 31412 31413 +f 31426 31413 31427 +f 31427 31413 31414 +f 31427 31414 31428 +f 31428 31414 31415 +f 31428 31415 31429 +f 31429 31415 31416 +f 31429 31416 31430 +f 31430 31416 31417 +f 31430 31417 31431 +f 31431 31417 31418 +f 31431 31418 31432 +f 31432 31418 31419 +f 31432 31419 31433 +f 31433 31419 31420 +f 31433 31420 31434 +f 31434 31420 31421 +f 31434 31421 31435 +f 31435 31421 31422 +f 31435 31422 31436 +f 31436 31422 30536 +f 31436 30536 30538 +f 30478 30480 31437 +f 31437 30480 31423 +f 31437 31423 31438 +f 31438 31423 31424 +f 31438 31424 31439 +f 31439 31424 31425 +f 31439 31425 31440 +f 31440 31425 31426 +f 31440 31426 31441 +f 31441 31426 31427 +f 31441 31427 31442 +f 31442 31427 31428 +f 31442 31428 31443 +f 31443 31428 31429 +f 31443 31429 31444 +f 31444 31429 31430 +f 31444 31430 31445 +f 31445 31430 31431 +f 31445 31431 31446 +f 31446 31431 31432 +f 31446 31432 31447 +f 31447 31432 31433 +f 31447 31433 31448 +f 31448 31433 31434 +f 31448 31434 31449 +f 31449 31434 31435 +f 31449 31435 31450 +f 31450 31435 31436 +f 31450 31436 31451 +f 31451 31436 30538 +f 31451 30538 30540 +f 30476 30478 31452 +f 31452 30478 31437 +f 31452 31437 31453 +f 31453 31437 31438 +f 31453 31438 31454 +f 31454 31438 31439 +f 31454 31439 31455 +f 31455 31439 31440 +f 31455 31440 31456 +f 31456 31440 31441 +f 31456 31441 31457 +f 31457 31441 31442 +f 31457 31442 31458 +f 31458 31442 31443 +f 31458 31443 31459 +f 31459 31443 31444 +f 31459 31444 31460 +f 31460 31444 31445 +f 31460 31445 31461 +f 31461 31445 31446 +f 31461 31446 31462 +f 31462 31446 31447 +f 31462 31447 31463 +f 31463 31447 31448 +f 31463 31448 31464 +f 31464 31448 31449 +f 31464 31449 31465 +f 31465 31449 31450 +f 31465 31450 31466 +f 31466 31450 31451 +f 31466 31451 31467 +f 31467 31451 30540 +f 31467 30540 30542 +f 30474 30476 31468 +f 31468 30476 31452 +f 31468 31452 31469 +f 31469 31452 31453 +f 31469 31453 31470 +f 31470 31453 31454 +f 31470 31454 31471 +f 31471 31454 31455 +f 31471 31455 31472 +f 31472 31455 31456 +f 31472 31456 31473 +f 31473 31456 31457 +f 31473 31457 31474 +f 31474 31457 31458 +f 31474 31458 31475 +f 31475 31458 31459 +f 31475 31459 31476 +f 31476 31459 31460 +f 31476 31460 31477 +f 31477 31460 31461 +f 31477 31461 31478 +f 31478 31461 31462 +f 31478 31462 31479 +f 31479 31462 31463 +f 31479 31463 31480 +f 31480 31463 31464 +f 31480 31464 31481 +f 31481 31464 31465 +f 31481 31465 31482 +f 31482 31465 31466 +f 31482 31466 31483 +f 31483 31466 31467 +f 31483 31467 31484 +f 31484 31467 30542 +f 31484 30542 30544 +f 30472 30474 31485 +f 31485 30474 31468 +f 31485 31468 31486 +f 31486 31468 31469 +f 31486 31469 31487 +f 31487 31469 31470 +f 31487 31470 31488 +f 31488 31470 31471 +f 31488 31471 31489 +f 31489 31471 31472 +f 31489 31472 31490 +f 31490 31472 31473 +f 31490 31473 31491 +f 31491 31473 31474 +f 31491 31474 31492 +f 31492 31474 31475 +f 31492 31475 31493 +f 31493 31475 31476 +f 31493 31476 31494 +f 31494 31476 31477 +f 31494 31477 31495 +f 31495 31477 31478 +f 31495 31478 31496 +f 31496 31478 31479 +f 31496 31479 31497 +f 31497 31479 31480 +f 31497 31480 31498 +f 31498 31480 31481 +f 31498 31481 31499 +f 31499 31481 31482 +f 31499 31482 31500 +f 31500 31482 31483 +f 31500 31483 31501 +f 31501 31483 31484 +f 31501 31484 31502 +f 31502 31484 30544 +f 31502 30544 30546 +f 30470 30472 31503 +f 31503 30472 31485 +f 31503 31485 31504 +f 31504 31485 31486 +f 31504 31486 31505 +f 31505 31486 31487 +f 31505 31487 31506 +f 31506 31487 31488 +f 31506 31488 31507 +f 31507 31488 31489 +f 31507 31489 31508 +f 31508 31489 31490 +f 31508 31490 31509 +f 31509 31490 31491 +f 31509 31491 31510 +f 31510 31491 31492 +f 31510 31492 31511 +f 31511 31492 31493 +f 31511 31493 31512 +f 31512 31493 31494 +f 31512 31494 31513 +f 31513 31494 31495 +f 31513 31495 31514 +f 31514 31495 31496 +f 31514 31496 31515 +f 31515 31496 31497 +f 31515 31497 31516 +f 31516 31497 31498 +f 31516 31498 31517 +f 31517 31498 31499 +f 31517 31499 31518 +f 31518 31499 31500 +f 31518 31500 31519 +f 31519 31500 31501 +f 31519 31501 31520 +f 31520 31501 31502 +f 31520 31502 31521 +f 31521 31502 30546 +f 31521 30546 30548 +f 30468 30470 30914 +f 30914 30470 31503 +f 30914 31503 30912 +f 30912 31503 31504 +f 30912 31504 30910 +f 30910 31504 31505 +f 30910 31505 30908 +f 30908 31505 31506 +f 30908 31506 30906 +f 30906 31506 31507 +f 30906 31507 30904 +f 30904 31507 31508 +f 30904 31508 30902 +f 30902 31508 31509 +f 30902 31509 30900 +f 30900 31509 31510 +f 30900 31510 30898 +f 30898 31510 31511 +f 30898 31511 30896 +f 30896 31511 31512 +f 30896 31512 30894 +f 30894 31512 31513 +f 30894 31513 30892 +f 30892 31513 31514 +f 30892 31514 30890 +f 30890 31514 31515 +f 30890 31515 30888 +f 30888 31515 31516 +f 30888 31516 30886 +f 30886 31516 31517 +f 30886 31517 30884 +f 30884 31517 31518 +f 30884 31518 30882 +f 30882 31518 31519 +f 30882 31519 30880 +f 30880 31519 31520 +f 30880 31520 30878 +f 30878 31520 31521 +f 30878 31521 30876 +f 30876 31521 30548 +f 30876 30548 30550 +f 30764 30770 30765 +f 30765 30770 30745 +f 30770 30746 30745 +f 30769 30768 31522 +f 31522 30768 30767 +f 31522 30767 31523 +f 31523 30767 30772 +f 31523 30772 31524 +f 31524 30772 30774 +f 31524 30774 30776 +f 30771 30769 31525 +f 31525 30769 31522 +f 31525 31522 31526 +f 31526 31522 31523 +f 31526 31523 31527 +f 31527 31523 31524 +f 31527 31524 31528 +f 31528 31524 30776 +f 31528 30776 30778 +f 30747 30771 31529 +f 31529 30771 31525 +f 31529 31525 31530 +f 31530 31525 31526 +f 31530 31526 31531 +f 31531 31526 31527 +f 31531 31527 31532 +f 31532 31527 31528 +f 31532 31528 31533 +f 31533 31528 30778 +f 31533 30778 30780 +f 31530 31534 31529 +f 31529 31534 30748 +f 31529 30748 30747 +f 30748 31534 30749 +f 30749 31534 31535 +f 30749 31535 30750 +f 30750 31535 31536 +f 30750 31536 30751 +f 30751 31536 31537 +f 30751 31537 30752 +f 30752 31537 31538 +f 30752 31538 30753 +f 30753 31538 31539 +f 30753 31539 30754 +f 30754 31539 31540 +f 30754 31540 30755 +f 30755 31540 31541 +f 30755 31541 30756 +f 30756 31541 31542 +f 30756 31542 30757 +f 30757 31542 31543 +f 30757 31543 30758 +f 30758 31543 30806 +f 31534 31530 31544 +f 31544 31530 31531 +f 31544 31531 31545 +f 31545 31531 31532 +f 31545 31532 31546 +f 31546 31532 31533 +f 31546 31533 31547 +f 31547 31533 30780 +f 31547 30780 30782 +f 31545 31548 31544 +f 31544 31548 31535 +f 31544 31535 31534 +f 31535 31548 31536 +f 31536 31548 31549 +f 31536 31549 31537 +f 31537 31549 31550 +f 31537 31550 31538 +f 31538 31550 31551 +f 31538 31551 31539 +f 31539 31551 31552 +f 31539 31552 31540 +f 31540 31552 31553 +f 31540 31553 31541 +f 31541 31553 31554 +f 31541 31554 31542 +f 31542 31554 31555 +f 31542 31555 31543 +f 31543 31555 31556 +f 31543 31556 30806 +f 30806 31556 30804 +f 31548 31545 31557 +f 31557 31545 31546 +f 31557 31546 31558 +f 31558 31546 31547 +f 31558 31547 31559 +f 31559 31547 30782 +f 31559 30782 30784 +f 30820 31159 30821 +f 30821 31159 30809 +f 31159 30810 30809 +f 31558 31560 31557 +f 31557 31560 31549 +f 31557 31549 31548 +f 31549 31560 31550 +f 31550 31560 31561 +f 31550 31561 31551 +f 31551 31561 31562 +f 31551 31562 31552 +f 31552 31562 31563 +f 31552 31563 31553 +f 31553 31563 31564 +f 31553 31564 31554 +f 31554 31564 31565 +f 31554 31565 31555 +f 31555 31565 31566 +f 31555 31566 31556 +f 31556 31566 31567 +f 31556 31567 30804 +f 30804 31567 30802 +f 31560 31558 31568 +f 31568 31558 31559 +f 31568 31559 31569 +f 31569 31559 30784 +f 31569 30784 30786 +f 30823 31160 30824 +f 30824 31160 30826 +f 31160 31161 30826 +f 30826 31161 30828 +f 31161 31162 30828 +f 30828 31162 30830 +f 31162 31163 30830 +f 30830 31163 30812 +f 31163 30813 30812 +f 30786 31570 31569 +f 31569 31570 31571 +f 31569 31571 31568 +f 31568 31571 31561 +f 31568 31561 31560 +f 31570 31572 31571 +f 31571 31572 31562 +f 31571 31562 31561 +f 30786 30788 31570 +f 31570 30788 31573 +f 31570 31573 31572 +f 31572 31573 31574 +f 31572 31574 31563 +f 31563 31574 31564 +f 31572 31563 31562 +f 30832 30849 30833 +f 30833 30849 30835 +f 30849 30851 30835 +f 30835 30851 30837 +f 30851 30853 30837 +f 30837 30853 30839 +f 30853 30855 30839 +f 30839 30855 30841 +f 30855 30857 30841 +f 30841 30857 30843 +f 30857 30859 30843 +f 30843 30859 30845 +f 30859 30861 30845 +f 30845 30861 30815 +f 30861 30816 30815 +f 30792 31575 31576 +f 31576 31575 31577 +f 31576 31577 31574 +f 31574 31577 31564 +f 31575 31578 31577 +f 31577 31578 31565 +f 31577 31565 31564 +f 30792 30794 31575 +f 31575 30794 31579 +f 31575 31579 31578 +f 31578 31579 31580 +f 31578 31580 31566 +f 31566 31580 31567 +f 31578 31566 31565 +f 30792 31576 30790 +f 30790 31576 31573 +f 30790 31573 30788 +f 31573 31576 31574 +f 30846 30863 30847 +f 30850 30848 30865 +f 30852 30850 30864 +f 30864 30850 30865 +f 30854 30852 30866 +f 30866 30852 30864 +f 30856 30854 30867 +f 30867 30854 30866 +f 30858 30856 30868 +f 30868 30856 30867 +f 30871 30818 30817 +f 30798 30799 31581 +f 31581 30799 31582 +f 31581 31582 31580 +f 31580 31582 31567 +f 30799 30800 31582 +f 31582 30800 30802 +f 31582 30802 31567 +f 30798 31581 30796 +f 30796 31581 31579 +f 30796 31579 30794 +f 31579 31581 31580 +f 30831 30721 30571 +f 30571 30721 30711 +f 30571 30711 30412 +f 30412 30711 30705 +f 30412 30705 30414 +f 30414 30705 30702 +f 30414 30702 30416 +f 30416 30702 30688 +f 30416 30688 30572 +f 30572 30688 30658 +f 30572 30658 30596 +f 30596 30658 30656 +f 30596 30656 30636 +f 30721 30831 30736 +f 30736 30831 30822 +f 30736 30822 30509 +f 30509 30822 30819 +f 30509 30819 30743 +f 30743 30819 30807 +f 30743 30807 30763 +f 30763 30807 30773 +f 30763 30773 30766 +f 31583 31584 31585 +f 31586 31584 31587 +f 31588 31584 31589 +f 31590 31584 31591 +f 31592 31584 31593 +f 31594 31584 31595 +f 31596 31584 31597 +f 31598 31584 31599 +f 31600 31584 31601 +f 31602 31584 31603 +f 31604 31584 31605 +f 31606 31584 31607 +f 31597 31584 31594 +f 31589 31584 31586 +f 31605 31584 31602 +f 31595 31584 31592 +f 31593 31584 31590 +f 31591 31584 31588 +f 31587 31584 31583 +f 31585 31584 31606 +f 31607 31584 31604 +f 31603 31584 31600 +f 31601 31584 31598 +f 31599 31584 31596 +f 31606 31608 31585 +f 31585 31608 31609 +f 31585 31609 31583 +f 31583 31609 31610 +f 31583 31610 31587 +f 31587 31610 31611 +f 31587 31611 31586 +f 31586 31611 31612 +f 31586 31612 31589 +f 31589 31612 31613 +f 31589 31613 31588 +f 31588 31613 31614 +f 31588 31614 31591 +f 31591 31614 31615 +f 31591 31615 31616 +f 31606 31607 31608 +f 31608 31607 31617 +f 31617 31607 31604 +f 31617 31604 31618 +f 31618 31604 31605 +f 31618 31605 31619 +f 31619 31605 31602 +f 31619 31602 31620 +f 31620 31602 31603 +f 31620 31603 31621 +f 31621 31603 31622 +f 31622 31603 31600 +f 31622 31600 31623 +f 31623 31600 31601 +f 31623 31601 31624 +f 31624 31601 31598 +f 31624 31598 31625 +f 31625 31598 31599 +f 31625 31599 31626 +f 31626 31599 31596 +f 31626 31596 31627 +f 31627 31596 31597 +f 31627 31597 31594 +f 31627 31594 31628 +f 31628 31594 31595 +f 31628 31595 31629 +f 31629 31595 31592 +f 31629 31592 31630 +f 31630 31592 31593 +f 31630 31593 31631 +f 31631 31593 31590 +f 31631 31590 31616 +f 31616 31590 31591 +f 31610 31609 31632 +f 31632 31609 31633 +f 31632 31633 31634 +f 31632 31634 31635 +f 31635 31634 31636 +f 31635 31636 31637 +f 31637 31636 31638 +f 31637 31638 31639 +f 31639 31638 31640 +f 31639 31640 31641 +f 31641 31640 31642 +f 31641 31642 31643 +f 31643 31642 31644 +f 31643 31644 31645 +f 31645 31644 31646 +f 31645 31646 31647 +f 31647 31646 31648 +f 31647 31648 31649 +f 31649 31648 31650 +f 31649 31650 31651 +f 31651 31650 31652 +f 31651 31652 31653 +f 31653 31652 31654 +f 31653 31654 31655 +f 31655 31654 31656 +f 31655 31656 31657 +f 31657 31656 31658 +f 31657 31658 31659 +f 31659 31658 31660 +f 31659 31660 31661 +f 31661 31660 31662 +f 31661 31662 31663 +f 31663 31662 31664 +f 31663 31664 31665 +f 31665 31664 31666 +f 31665 31666 31667 +f 31667 31666 31668 +f 31667 31668 31669 +f 31669 31668 31670 +f 31669 31670 31671 +f 31671 31670 31672 +f 31671 31672 31673 +f 31673 31672 31674 +f 31673 31674 31675 +f 31675 31674 31676 +f 31675 31676 31677 +f 31677 31676 31678 +f 31677 31678 31679 +f 31679 31678 31680 +f 31679 31680 31681 +f 31681 31680 31682 +f 31681 31682 31683 +f 31683 31682 31684 +f 31683 31684 31685 +f 31685 31684 31686 +f 31685 31686 31687 +f 31687 31686 31688 +f 31687 31688 31689 +f 31689 31688 31690 +f 31689 31690 31691 +f 31691 31690 31692 +f 31691 31692 31693 +f 31693 31692 31694 +f 31693 31694 31695 +f 31695 31694 31696 +f 31695 31696 31697 +f 31697 31696 31698 +f 31697 31698 31699 +f 31699 31698 31700 +f 31699 31700 31701 +f 31701 31700 31702 +f 31701 31702 31703 +f 31703 31702 31704 +f 31703 31704 31705 +f 31705 31704 31706 +f 31705 31706 31707 +f 31707 31706 31708 +f 31707 31708 31709 +f 31709 31708 31710 +f 31709 31710 31711 +f 31711 31710 31712 +f 31711 31712 31713 +f 31713 31712 31714 +f 31713 31714 31715 +f 31715 31714 31716 +f 31715 31716 31717 +f 31717 31716 31718 +f 31717 31718 31719 +f 31719 31718 31720 +f 31719 31720 31721 +f 31721 31720 31722 +f 31721 31722 31723 +f 31723 31722 31724 +f 31723 31724 31640 +f 31640 31724 31725 +f 31725 31724 31726 +f 31725 31726 31727 +f 31727 31726 31728 +f 31727 31728 31729 +f 31729 31728 31730 +f 31729 31730 31731 +f 31731 31730 31732 +f 31731 31732 31733 +f 31733 31732 31734 +f 31733 31734 31735 +f 31735 31734 31736 +f 31735 31736 31737 +f 31737 31736 31738 +f 31737 31738 31739 +f 31739 31738 31740 +f 31739 31740 31741 +f 31741 31740 31742 +f 31741 31742 31743 +f 31743 31742 31744 +f 31743 31744 31745 +f 31745 31744 31746 +f 31745 31746 31747 +f 31747 31746 31748 +f 31747 31748 31749 +f 31749 31748 31750 +f 31749 31750 31751 +f 31751 31750 31752 +f 31751 31752 31753 +f 31753 31752 31754 +f 31753 31754 31755 +f 31755 31754 31756 +f 31755 31756 31757 +f 31757 31756 31758 +f 31757 31758 31759 +f 31759 31758 31760 +f 31759 31760 31761 +f 31761 31760 31762 +f 31761 31762 31763 +f 31763 31762 31764 +f 31763 31764 30328 +f 30328 31764 30330 +f 30330 31764 31765 +f 30330 31765 30332 +f 30332 31765 31766 +f 30332 31766 30334 +f 30334 31766 31767 +f 30334 31767 30336 +f 30336 31767 31768 +f 30336 31768 30338 +f 30338 31768 31769 +f 30338 31769 31770 +f 31770 31769 31771 +f 31770 31771 31772 +f 31772 31771 31773 +f 31772 31773 31774 +f 31774 31773 31775 +f 31774 31775 31776 +f 31776 31775 31777 +f 31776 31777 31778 +f 31778 31777 31779 +f 31778 31779 31780 +f 31780 31779 31781 +f 31780 31781 31782 +f 31782 31781 31783 +f 31782 31783 31784 +f 31784 31783 31785 +f 31784 31785 31786 +f 31786 31785 31787 +f 31786 31787 31788 +f 31788 31787 31789 +f 31788 31789 31790 +f 31790 31789 31791 +f 31790 31791 31792 +f 31792 31791 31793 +f 31792 31793 31794 +f 31794 31793 31795 +f 31794 31795 31796 +f 31796 31795 31797 +f 31796 31797 31798 +f 31798 31797 31799 +f 31798 31799 31800 +f 31800 31799 31801 +f 31800 31801 31802 +f 31802 31801 31803 +f 31802 31803 31804 +f 31804 31803 31805 +f 31804 31805 31806 +f 31806 31805 31807 +f 31806 31807 31808 +f 31808 31807 31676 +f 31808 31676 31674 +f 31640 31725 31642 +f 31642 31725 31809 +f 31642 31809 31644 +f 31644 31809 31810 +f 31644 31810 31646 +f 31646 31810 31811 +f 31646 31811 31648 +f 31648 31811 31812 +f 31648 31812 31650 +f 31650 31812 31813 +f 31650 31813 31652 +f 31652 31813 31814 +f 31652 31814 31654 +f 31654 31814 31815 +f 31654 31815 31656 +f 31656 31815 31816 +f 31656 31816 31658 +f 31658 31816 31817 +f 31658 31817 31660 +f 31660 31817 31818 +f 31660 31818 31662 +f 31662 31818 31819 +f 31662 31819 31664 +f 31664 31819 31820 +f 31664 31820 31666 +f 31666 31820 31821 +f 31666 31821 31668 +f 31668 31821 31822 +f 31668 31822 31670 +f 31670 31822 31823 +f 31670 31823 31672 +f 31672 31823 31824 +f 31672 31824 31674 +f 31674 31824 31808 +f 31809 31725 31825 +f 31825 31725 31826 +f 31825 31826 31827 +f 31827 31826 31828 +f 31827 31828 31829 +f 31829 31828 31830 +f 31829 31830 31831 +f 31831 31830 31832 +f 31831 31832 31833 +f 31833 31832 31834 +f 31833 31834 31835 +f 31835 31834 31836 +f 31835 31836 31837 +f 31837 31836 31838 +f 31837 31838 31839 +f 31839 31838 31840 +f 31839 31840 31841 +f 31841 31840 31842 +f 31841 31842 31843 +f 31843 31842 31844 +f 31843 31844 31845 +f 31845 31844 31846 +f 31845 31846 31847 +f 31847 31846 31848 +f 31847 31848 31849 +f 31849 31848 31850 +f 31849 31850 31851 +f 31851 31850 31852 +f 31851 31852 31853 +f 31853 31852 31854 +f 31853 31854 31855 +f 31855 31854 31856 +f 31855 31856 31857 +f 31857 31856 31858 +f 31857 31858 31804 +f 31804 31858 31802 +f 31826 31859 31828 +f 31828 31859 31860 +f 31828 31860 31830 +f 31830 31860 31861 +f 31830 31861 31832 +f 31832 31861 31862 +f 31832 31862 31834 +f 31834 31862 31863 +f 31834 31863 31836 +f 31836 31863 31864 +f 31836 31864 31838 +f 31838 31864 31865 +f 31838 31865 31840 +f 31840 31865 31866 +f 31840 31866 31842 +f 31842 31866 31867 +f 31842 31867 31844 +f 31844 31867 31868 +f 31844 31868 31846 +f 31846 31868 31869 +f 31846 31869 31848 +f 31848 31869 31870 +f 31848 31870 31850 +f 31850 31870 31871 +f 31850 31871 31852 +f 31852 31871 31872 +f 31852 31872 31854 +f 31854 31872 31873 +f 31854 31873 31856 +f 31856 31873 31874 +f 31856 31874 31858 +f 31858 31874 31875 +f 31858 31875 31802 +f 31802 31875 31800 +f 31860 31859 31876 +f 31876 31859 31877 +f 31876 31877 31878 +f 31878 31877 31879 +f 31878 31879 31880 +f 31880 31879 31881 +f 31880 31881 31882 +f 31882 31881 31883 +f 31882 31883 31884 +f 31884 31883 31885 +f 31884 31885 31886 +f 31886 31885 31887 +f 31886 31887 31888 +f 31888 31887 31889 +f 31888 31889 31890 +f 31890 31889 31891 +f 31890 31891 31892 +f 31892 31891 31893 +f 31892 31893 31894 +f 31894 31893 31895 +f 31894 31895 31896 +f 31896 31895 31897 +f 31896 31897 31898 +f 31898 31897 31899 +f 31898 31899 31900 +f 31900 31899 31901 +f 31900 31901 31902 +f 31902 31901 31903 +f 31902 31903 31904 +f 31904 31903 31905 +f 31904 31905 31906 +f 31906 31905 31907 +f 31906 31907 31908 +f 31908 31907 31909 +f 31908 31909 31796 +f 31796 31909 31794 +f 31877 31910 31879 +f 31879 31910 31911 +f 31879 31911 31881 +f 31881 31911 31912 +f 31881 31912 31883 +f 31883 31912 31913 +f 31883 31913 31885 +f 31885 31913 31914 +f 31885 31914 31887 +f 31887 31914 31915 +f 31887 31915 31889 +f 31889 31915 31916 +f 31889 31916 31891 +f 31891 31916 31917 +f 31891 31917 31893 +f 31893 31917 31918 +f 31893 31918 31895 +f 31895 31918 31919 +f 31895 31919 31897 +f 31897 31919 31920 +f 31897 31920 31899 +f 31899 31920 31921 +f 31899 31921 31901 +f 31901 31921 31922 +f 31901 31922 31903 +f 31903 31922 31923 +f 31903 31923 31905 +f 31905 31923 31924 +f 31905 31924 31907 +f 31907 31924 31925 +f 31907 31925 31909 +f 31909 31925 31926 +f 31909 31926 31794 +f 31794 31926 31792 +f 31911 31910 31927 +f 31927 31910 31928 +f 31927 31928 31929 +f 31929 31928 31930 +f 31929 31930 31931 +f 31931 31930 31932 +f 31931 31932 31933 +f 31933 31932 31934 +f 31933 31934 31935 +f 31935 31934 31936 +f 31935 31936 31937 +f 31937 31936 31938 +f 31937 31938 31939 +f 31939 31938 31940 +f 31939 31940 31941 +f 31941 31940 31942 +f 31941 31942 31943 +f 31943 31942 31944 +f 31943 31944 31945 +f 31945 31944 31946 +f 31945 31946 31947 +f 31947 31946 31948 +f 31947 31948 31949 +f 31949 31948 31950 +f 31949 31950 31951 +f 31951 31950 31952 +f 31951 31952 31953 +f 31953 31952 31954 +f 31953 31954 31955 +f 31955 31954 31956 +f 31955 31956 31957 +f 31957 31956 31958 +f 31957 31958 31959 +f 31959 31958 31960 +f 31959 31960 31788 +f 31788 31960 31786 +f 31928 31961 31930 +f 31930 31961 31962 +f 31930 31962 31932 +f 31932 31962 31963 +f 31932 31963 31934 +f 31934 31963 31964 +f 31934 31964 31936 +f 31936 31964 31965 +f 31936 31965 31938 +f 31938 31965 31966 +f 31938 31966 31940 +f 31940 31966 31967 +f 31940 31967 31942 +f 31942 31967 31968 +f 31942 31968 31944 +f 31944 31968 31969 +f 31944 31969 31946 +f 31946 31969 31970 +f 31946 31970 31948 +f 31948 31970 31971 +f 31948 31971 31950 +f 31950 31971 31972 +f 31950 31972 31952 +f 31952 31972 31973 +f 31952 31973 31954 +f 31954 31973 31974 +f 31954 31974 31956 +f 31956 31974 31975 +f 31956 31975 31958 +f 31958 31975 31976 +f 31958 31976 31960 +f 31960 31976 31977 +f 31960 31977 31786 +f 31786 31977 31784 +f 31961 31978 31962 +f 31962 31978 31979 +f 31962 31979 31963 +f 31963 31979 31980 +f 31963 31980 31964 +f 31964 31980 31981 +f 31964 31981 31965 +f 31965 31981 31982 +f 31965 31982 31966 +f 31966 31982 31983 +f 31966 31983 31967 +f 31967 31983 31984 +f 31967 31984 31968 +f 31968 31984 31985 +f 31968 31985 31969 +f 31969 31985 31986 +f 31969 31986 31970 +f 31970 31986 31987 +f 31970 31987 31971 +f 31971 31987 31988 +f 31971 31988 31972 +f 31972 31988 31989 +f 31972 31989 31973 +f 31973 31989 31990 +f 31973 31990 31974 +f 31974 31990 31991 +f 31974 31991 31975 +f 31975 31991 31992 +f 31975 31992 31976 +f 31976 31992 31993 +f 31976 31993 31977 +f 31977 31993 31994 +f 31977 31994 31784 +f 31784 31994 31782 +f 31978 31995 31979 +f 31979 31995 31996 +f 31979 31996 31980 +f 31980 31996 31997 +f 31980 31997 31981 +f 31981 31997 31998 +f 31981 31998 31982 +f 31982 31998 31999 +f 31982 31999 31983 +f 31983 31999 32000 +f 31983 32000 31984 +f 31984 32000 32001 +f 31984 32001 31985 +f 31985 32001 32002 +f 31985 32002 31986 +f 31986 32002 32003 +f 31986 32003 31987 +f 31987 32003 32004 +f 31987 32004 31988 +f 31988 32004 32005 +f 31988 32005 31989 +f 31989 32005 32006 +f 31989 32006 31990 +f 31990 32006 32007 +f 31990 32007 31991 +f 31991 32007 32008 +f 31991 32008 31992 +f 31992 32008 32009 +f 31992 32009 31993 +f 31993 32009 32010 +f 31993 32010 31994 +f 31994 32010 32011 +f 31994 32011 31782 +f 31782 32011 31780 +f 31995 32012 31996 +f 31996 32012 32013 +f 31996 32013 31997 +f 31997 32013 32014 +f 31997 32014 31998 +f 31998 32014 32015 +f 31998 32015 31999 +f 31999 32015 32016 +f 31999 32016 32000 +f 32000 32016 32017 +f 32000 32017 32001 +f 32001 32017 32018 +f 32001 32018 32002 +f 32002 32018 32019 +f 32002 32019 32003 +f 32003 32019 32020 +f 32003 32020 32004 +f 32004 32020 32021 +f 32004 32021 32005 +f 32005 32021 32022 +f 32005 32022 32006 +f 32006 32022 32023 +f 32006 32023 32007 +f 32007 32023 32024 +f 32007 32024 32008 +f 32008 32024 32025 +f 32008 32025 32009 +f 32009 32025 32026 +f 32009 32026 32010 +f 32010 32026 32027 +f 32010 32027 32011 +f 32011 32027 32028 +f 32011 32028 31780 +f 31780 32028 31778 +f 32012 32029 32013 +f 32013 32029 32030 +f 32013 32030 32014 +f 32014 32030 32031 +f 32014 32031 32015 +f 32015 32031 32032 +f 32015 32032 32016 +f 32016 32032 32033 +f 32016 32033 32017 +f 32017 32033 32034 +f 32017 32034 32018 +f 32018 32034 32035 +f 32018 32035 32019 +f 32019 32035 32036 +f 32019 32036 32020 +f 32020 32036 32037 +f 32020 32037 32021 +f 32021 32037 32038 +f 32021 32038 32022 +f 32022 32038 32039 +f 32022 32039 32023 +f 32023 32039 32040 +f 32023 32040 32024 +f 32024 32040 32041 +f 32024 32041 32025 +f 32025 32041 32042 +f 32025 32042 32026 +f 32026 32042 32043 +f 32026 32043 32027 +f 32027 32043 32044 +f 32027 32044 32028 +f 32028 32044 32045 +f 32028 32045 31778 +f 31778 32045 31776 +f 32029 32046 32030 +f 32030 32046 32047 +f 32030 32047 32031 +f 32031 32047 32048 +f 32031 32048 32032 +f 32032 32048 32049 +f 32032 32049 32033 +f 32033 32049 32050 +f 32033 32050 32034 +f 32034 32050 32051 +f 32034 32051 32035 +f 32035 32051 32052 +f 32035 32052 32036 +f 32036 32052 32053 +f 32036 32053 32037 +f 32037 32053 32054 +f 32037 32054 32038 +f 32038 32054 32055 +f 32038 32055 32039 +f 32039 32055 32056 +f 32039 32056 32040 +f 32040 32056 32057 +f 32040 32057 32041 +f 32041 32057 32058 +f 32041 32058 32042 +f 32042 32058 32059 +f 32042 32059 32043 +f 32043 32059 32060 +f 32043 32060 32044 +f 32044 32060 32061 +f 32044 32061 32045 +f 32045 32061 32062 +f 32045 32062 31776 +f 31776 32062 31774 +f 32046 32063 32047 +f 32047 32063 32064 +f 32047 32064 32048 +f 32048 32064 32065 +f 32048 32065 32049 +f 32049 32065 32066 +f 32049 32066 32050 +f 32050 32066 32067 +f 32050 32067 32051 +f 32051 32067 32068 +f 32051 32068 32052 +f 32052 32068 32069 +f 32052 32069 32053 +f 32053 32069 32070 +f 32053 32070 32054 +f 32054 32070 32071 +f 32054 32071 32055 +f 32055 32071 32072 +f 32055 32072 32056 +f 32056 32072 32073 +f 32056 32073 32057 +f 32057 32073 32074 +f 32057 32074 32058 +f 32058 32074 32075 +f 32058 32075 32059 +f 32059 32075 32076 +f 32059 32076 32060 +f 32060 32076 32077 +f 32060 32077 32061 +f 32061 32077 32078 +f 32061 32078 32062 +f 32062 32078 32079 +f 32062 32079 31774 +f 31774 32079 31772 +f 32064 32063 32080 +f 32080 32063 30296 +f 32080 30296 30364 +f 32080 30364 32081 +f 32081 30364 30362 +f 32081 30362 32082 +f 32082 30362 30360 +f 32082 30360 32083 +f 32083 30360 30358 +f 32083 30358 32084 +f 32084 30358 30356 +f 32084 30356 32085 +f 32085 30356 32086 +f 32085 32086 32070 +f 32070 32086 32071 +f 30356 30354 32086 +f 32086 30354 32087 +f 32086 32087 32071 +f 32071 32087 32072 +f 30354 30352 32087 +f 32087 30352 32088 +f 32087 32088 32072 +f 32072 32088 32073 +f 30352 30350 32088 +f 32088 30350 32089 +f 32088 32089 32073 +f 32073 32089 32074 +f 30350 30348 32089 +f 32089 30348 32090 +f 32089 32090 32074 +f 32074 32090 32075 +f 32090 30348 32091 +f 32091 30348 30346 +f 32091 30346 32092 +f 32092 30346 30344 +f 32092 30344 32093 +f 32093 30344 30342 +f 32093 30342 32094 +f 32094 30342 30340 +f 32094 30340 32095 +f 32095 30340 31770 +f 32095 31770 31772 +f 30340 30338 31770 +f 30328 30326 31763 +f 31763 30326 32096 +f 31763 32096 31761 +f 31761 32096 32097 +f 31761 32097 31759 +f 31759 32097 32098 +f 31759 32098 31757 +f 31757 32098 32099 +f 31757 32099 31755 +f 31755 32099 32100 +f 31755 32100 31753 +f 31753 32100 32101 +f 31753 32101 31751 +f 31751 32101 32102 +f 31751 32102 31749 +f 31749 32102 32103 +f 31749 32103 31747 +f 31747 32103 32104 +f 31747 32104 31745 +f 31745 32104 32105 +f 31745 32105 31743 +f 31743 32105 32106 +f 31743 32106 31741 +f 31741 32106 32107 +f 31741 32107 31739 +f 31739 32107 32108 +f 31739 32108 31737 +f 31737 32108 32109 +f 31737 32109 31735 +f 31735 32109 32110 +f 31735 32110 31733 +f 31733 32110 32111 +f 31733 32111 31731 +f 31731 32111 32112 +f 31731 32112 31729 +f 31729 32112 32113 +f 31729 32113 31727 +f 31727 32113 31826 +f 31727 31826 31725 +f 30326 30324 32096 +f 32096 30324 32114 +f 32096 32114 32097 +f 32097 32114 32115 +f 32097 32115 32098 +f 32098 32115 32116 +f 32098 32116 32099 +f 32099 32116 32117 +f 32099 32117 32100 +f 32100 32117 32118 +f 32100 32118 32101 +f 32101 32118 32119 +f 32101 32119 32102 +f 32102 32119 32120 +f 32102 32120 32103 +f 32103 32120 32121 +f 32103 32121 32104 +f 32104 32121 32122 +f 32104 32122 32105 +f 32105 32122 32123 +f 32105 32123 32106 +f 32106 32123 32124 +f 32106 32124 32107 +f 32107 32124 32125 +f 32107 32125 32108 +f 32108 32125 32126 +f 32108 32126 32109 +f 32109 32126 32127 +f 32109 32127 32110 +f 32110 32127 32128 +f 32110 32128 32111 +f 32111 32128 32129 +f 32111 32129 32112 +f 32112 32129 32130 +f 32112 32130 32113 +f 32113 32130 31826 +f 30324 30322 32114 +f 32114 30322 32131 +f 32114 32131 32115 +f 32115 32131 32132 +f 32115 32132 32116 +f 32116 32132 32133 +f 32116 32133 32117 +f 32117 32133 32134 +f 32117 32134 32118 +f 32118 32134 32135 +f 32118 32135 32119 +f 32119 32135 32136 +f 32119 32136 32120 +f 32120 32136 32137 +f 32120 32137 32121 +f 32121 32137 32138 +f 32121 32138 32122 +f 32122 32138 32139 +f 32122 32139 32123 +f 32123 32139 32140 +f 32123 32140 32124 +f 32124 32140 32141 +f 32124 32141 32125 +f 32125 32141 32142 +f 32125 32142 32126 +f 32126 32142 32143 +f 32126 32143 32127 +f 32127 32143 32144 +f 32127 32144 32128 +f 32128 32144 32145 +f 32128 32145 32129 +f 32129 32145 32146 +f 32129 32146 32130 +f 32130 32146 31859 +f 32130 31859 31826 +f 32131 30322 32147 +f 32147 30322 30320 +f 32147 30320 32148 +f 32148 30320 30318 +f 32148 30318 32149 +f 32149 30318 30316 +f 32149 30316 32150 +f 32150 30316 32151 +f 32150 32151 32152 +f 32152 32151 32153 +f 32152 32153 32154 +f 32154 32153 32155 +f 32154 32155 32156 +f 32156 32155 32157 +f 32156 32157 32158 +f 32158 32157 32159 +f 32158 32159 32160 +f 32160 32159 32161 +f 32160 32161 32162 +f 32162 32161 32163 +f 32162 32163 32164 +f 32164 32163 32165 +f 32164 32165 32166 +f 32166 32165 32167 +f 32166 32167 32168 +f 32168 32167 32169 +f 32168 32169 32170 +f 32170 32169 32171 +f 32170 32171 32172 +f 32172 32171 31910 +f 32172 31910 32173 +f 32173 31910 31877 +f 32173 31877 32174 +f 32174 31877 32175 +f 32174 32175 32176 +f 32176 32175 32145 +f 32176 32145 32144 +f 30316 30314 32151 +f 32151 30314 32177 +f 32151 32177 32153 +f 32153 32177 32178 +f 32153 32178 32155 +f 32155 32178 32179 +f 32155 32179 32157 +f 32157 32179 32180 +f 32157 32180 32159 +f 32159 32180 32181 +f 32159 32181 32161 +f 32161 32181 32182 +f 32161 32182 32163 +f 32163 32182 32183 +f 32163 32183 32165 +f 32165 32183 32184 +f 32165 32184 32167 +f 32167 32184 32185 +f 32167 32185 32169 +f 32169 32185 32186 +f 32169 32186 32171 +f 32171 32186 31928 +f 32171 31928 31910 +f 30314 30312 32177 +f 32177 30312 32187 +f 32177 32187 32178 +f 32178 32187 32188 +f 32178 32188 32179 +f 32179 32188 32189 +f 32179 32189 32180 +f 32180 32189 32190 +f 32180 32190 32181 +f 32181 32190 32191 +f 32181 32191 32182 +f 32182 32191 32192 +f 32182 32192 32183 +f 32183 32192 32193 +f 32183 32193 32184 +f 32184 32193 32194 +f 32184 32194 32185 +f 32185 32194 32195 +f 32185 32195 32186 +f 32186 32195 31928 +f 30312 30310 32187 +f 32187 30310 32196 +f 32187 32196 32188 +f 32188 32196 32197 +f 32188 32197 32189 +f 32189 32197 32198 +f 32189 32198 32190 +f 32190 32198 32199 +f 32190 32199 32191 +f 32191 32199 32200 +f 32191 32200 32192 +f 32192 32200 32201 +f 32192 32201 32193 +f 32193 32201 32202 +f 32193 32202 32194 +f 32194 32202 32203 +f 32194 32203 32195 +f 32195 32203 31961 +f 32195 31961 31928 +f 30310 30308 32196 +f 32196 30308 32197 +f 32197 30308 32204 +f 32204 30308 30306 +f 32204 30306 32205 +f 32205 30306 30304 +f 32205 30304 32206 +f 32206 30304 32207 +f 32206 32207 32208 +f 32208 32207 32209 +f 32208 32209 32210 +f 32210 32209 32211 +f 32210 32211 32212 +f 32212 32211 32213 +f 32212 32213 32214 +f 32214 32213 32012 +f 32214 32012 31995 +f 30304 30302 32207 +f 32207 30302 32215 +f 32207 32215 32209 +f 32209 32215 32216 +f 32209 32216 32211 +f 32211 32216 32217 +f 32211 32217 32213 +f 32213 32217 32029 +f 32213 32029 32012 +f 30302 30300 32215 +f 32215 30300 32218 +f 32215 32218 32216 +f 32216 32218 32219 +f 32216 32219 32217 +f 32217 32219 32046 +f 32217 32046 32029 +f 30300 30294 32218 +f 32218 30294 32220 +f 32218 32220 32219 +f 32219 32220 32063 +f 32219 32063 32046 +f 30294 30296 32220 +f 32220 30296 32063 +f 32214 31995 32221 +f 32221 31995 31978 +f 32221 31978 32222 +f 32222 31978 31961 +f 32222 31961 32203 +f 31877 31859 32175 +f 32175 31859 32146 +f 32175 32146 32145 +f 31640 31638 31723 +f 31723 31638 32223 +f 31723 32223 31721 +f 31721 32223 32224 +f 31721 32224 31719 +f 31719 32224 32225 +f 31719 32225 31717 +f 31717 32225 32226 +f 31717 32226 31715 +f 31715 32226 32227 +f 31715 32227 31713 +f 31713 32227 32228 +f 31713 32228 31711 +f 31711 32228 32229 +f 31711 32229 31709 +f 31709 32229 32230 +f 31709 32230 31707 +f 31707 32230 32231 +f 31707 32231 31705 +f 31705 32231 32232 +f 31705 32232 31703 +f 31703 32232 32233 +f 31703 32233 31701 +f 31701 32233 32234 +f 31701 32234 31699 +f 31699 32234 32235 +f 31699 32235 31697 +f 31697 32235 32236 +f 31697 32236 31695 +f 31695 32236 32237 +f 31695 32237 31693 +f 31693 32237 32238 +f 31693 32238 31691 +f 31691 32238 32239 +f 31691 32239 31689 +f 31689 32239 32240 +f 31689 32240 31687 +f 31687 32240 32241 +f 31687 32241 31685 +f 31685 32241 32242 +f 31685 32242 31683 +f 31683 32242 32243 +f 31683 32243 31681 +f 31681 32243 32244 +f 31681 32244 31679 +f 31679 32244 32245 +f 31679 32245 31677 +f 31677 32245 32246 +f 31677 32246 31675 +f 31675 32246 32247 +f 31675 32247 31673 +f 31673 32247 32248 +f 31673 32248 31671 +f 31671 32248 32249 +f 31671 32249 31669 +f 31669 32249 32250 +f 31669 32250 31667 +f 31667 32250 32251 +f 31667 32251 31665 +f 31665 32251 32252 +f 31665 32252 31663 +f 31663 32252 32253 +f 31663 32253 31661 +f 31661 32253 32254 +f 31661 32254 31659 +f 31659 32254 32255 +f 31659 32255 31657 +f 31657 32255 32256 +f 31657 32256 31655 +f 31655 32256 32257 +f 31655 32257 31653 +f 31653 32257 32258 +f 31653 32258 31651 +f 31651 32258 32259 +f 31651 32259 31649 +f 31649 32259 32260 +f 31649 32260 31647 +f 31647 32260 32261 +f 31647 32261 31645 +f 31645 32261 32262 +f 31645 32262 31643 +f 31643 32262 32263 +f 31643 32263 31641 +f 31641 32263 31639 +f 31638 31636 32223 +f 32223 31636 32264 +f 32223 32264 32224 +f 32224 32264 32265 +f 32224 32265 32225 +f 32225 32265 32266 +f 32225 32266 32226 +f 32226 32266 32267 +f 32226 32267 32227 +f 32227 32267 32268 +f 32227 32268 32228 +f 32228 32268 32269 +f 32228 32269 32229 +f 32229 32269 32270 +f 32229 32270 32230 +f 32230 32270 32271 +f 32230 32271 32231 +f 32231 32271 32272 +f 32231 32272 32232 +f 32232 32272 32273 +f 32232 32273 32233 +f 32233 32273 32274 +f 32233 32274 32234 +f 32234 32274 32275 +f 32234 32275 32235 +f 32235 32275 32276 +f 32235 32276 32236 +f 32236 32276 32277 +f 32236 32277 32237 +f 32237 32277 32278 +f 32237 32278 32238 +f 32238 32278 32279 +f 32238 32279 32239 +f 32239 32279 32280 +f 32239 32280 32240 +f 32240 32280 32281 +f 32240 32281 32241 +f 32241 32281 32282 +f 32241 32282 32242 +f 32242 32282 32283 +f 32242 32283 32243 +f 32243 32283 32284 +f 32243 32284 32244 +f 32244 32284 32285 +f 32244 32285 32245 +f 32245 32285 32286 +f 32245 32286 32246 +f 32246 32286 32287 +f 32246 32287 32247 +f 32247 32287 32288 +f 32247 32288 32248 +f 32248 32288 32289 +f 32248 32289 32249 +f 32249 32289 32290 +f 32249 32290 32250 +f 32250 32290 32291 +f 32250 32291 32251 +f 32251 32291 32292 +f 32251 32292 32252 +f 32252 32292 32293 +f 32252 32293 32253 +f 32253 32293 32294 +f 32253 32294 32254 +f 32254 32294 32295 +f 32254 32295 32255 +f 32255 32295 32296 +f 32255 32296 32256 +f 32256 32296 32297 +f 32256 32297 32257 +f 32257 32297 32298 +f 32257 32298 32258 +f 32258 32298 32299 +f 32258 32299 32259 +f 32259 32299 32300 +f 32259 32300 32260 +f 32260 32300 32301 +f 32260 32301 32261 +f 32261 32301 32302 +f 32261 32302 32262 +f 32262 32302 32303 +f 32262 32303 32263 +f 32263 32303 32304 +f 32263 32304 31639 +f 31639 32304 31637 +f 31636 31634 32264 +f 32264 31634 32305 +f 32264 32305 32265 +f 32265 32305 32306 +f 32265 32306 32266 +f 32266 32306 32307 +f 32266 32307 32267 +f 32267 32307 32308 +f 32267 32308 32268 +f 32268 32308 32309 +f 32268 32309 32269 +f 32269 32309 32310 +f 32269 32310 32270 +f 32270 32310 32311 +f 32270 32311 32271 +f 32271 32311 32312 +f 32271 32312 32272 +f 32272 32312 32313 +f 32272 32313 32273 +f 32273 32313 32314 +f 32273 32314 32274 +f 32274 32314 32315 +f 32274 32315 32275 +f 32275 32315 32316 +f 32275 32316 32276 +f 32276 32316 32317 +f 32276 32317 32277 +f 32277 32317 32318 +f 32277 32318 32278 +f 32278 32318 32319 +f 32278 32319 32279 +f 32279 32319 32320 +f 32279 32320 32280 +f 32280 32320 32321 +f 32280 32321 32281 +f 32281 32321 32322 +f 32281 32322 32282 +f 32282 32322 32323 +f 32282 32323 32283 +f 32283 32323 32324 +f 32283 32324 32284 +f 32284 32324 32325 +f 32284 32325 32285 +f 32285 32325 32326 +f 32285 32326 32286 +f 32286 32326 32327 +f 32286 32327 32287 +f 32287 32327 32328 +f 32287 32328 32288 +f 32288 32328 32329 +f 32288 32329 32289 +f 32289 32329 32330 +f 32289 32330 32290 +f 32290 32330 32331 +f 32290 32331 32291 +f 32291 32331 32332 +f 32291 32332 32292 +f 32292 32332 32333 +f 32292 32333 32293 +f 32293 32333 32334 +f 32293 32334 32294 +f 32294 32334 32335 +f 32294 32335 32295 +f 32295 32335 32336 +f 32295 32336 32296 +f 32296 32336 32337 +f 32296 32337 32297 +f 32297 32337 32338 +f 32297 32338 32298 +f 32298 32338 32339 +f 32298 32339 32299 +f 32299 32339 32340 +f 32299 32340 32300 +f 32300 32340 32341 +f 32300 32341 32301 +f 32301 32341 32342 +f 32301 32342 32302 +f 32302 32342 32343 +f 32302 32343 32303 +f 32303 32343 32344 +f 32303 32344 32304 +f 32304 32344 32345 +f 32304 32345 31637 +f 31637 32345 31635 +f 31634 31633 32305 +f 32305 31633 32346 +f 32305 32346 32306 +f 32306 32346 32347 +f 32306 32347 32307 +f 32307 32347 32348 +f 32307 32348 32308 +f 32308 32348 32349 +f 32308 32349 32309 +f 32309 32349 32350 +f 32309 32350 32310 +f 32310 32350 32351 +f 32310 32351 32311 +f 32311 32351 32352 +f 32311 32352 32312 +f 32312 32352 32353 +f 32312 32353 32313 +f 32313 32353 32354 +f 32313 32354 32314 +f 32314 32354 32355 +f 32314 32355 32315 +f 32315 32355 32356 +f 32315 32356 32316 +f 32316 32356 32357 +f 32316 32357 32317 +f 32317 32357 32358 +f 32317 32358 32318 +f 32318 32358 32359 +f 32318 32359 32319 +f 32319 32359 32360 +f 32319 32360 32320 +f 32320 32360 32361 +f 32320 32361 32321 +f 32321 32361 32362 +f 32321 32362 32322 +f 32322 32362 32363 +f 32322 32363 32323 +f 32323 32363 32364 +f 32323 32364 32324 +f 32324 32364 32365 +f 32324 32365 32325 +f 32325 32365 32366 +f 32325 32366 32326 +f 32326 32366 32367 +f 32326 32367 32327 +f 32327 32367 32368 +f 32327 32368 32328 +f 32328 32368 32369 +f 32328 32369 32329 +f 32329 32369 32370 +f 32329 32370 32330 +f 32330 32370 32371 +f 32330 32371 32331 +f 32331 32371 32372 +f 32331 32372 32332 +f 32332 32372 32373 +f 32332 32373 32333 +f 32333 32373 32374 +f 32333 32374 32334 +f 32334 32374 32375 +f 32334 32375 32335 +f 32335 32375 32376 +f 32335 32376 32336 +f 32336 32376 32377 +f 32336 32377 32337 +f 32337 32377 32378 +f 32337 32378 32338 +f 32338 32378 32379 +f 32338 32379 32339 +f 32339 32379 32380 +f 32339 32380 32340 +f 32340 32380 32381 +f 32340 32381 32341 +f 32341 32381 32382 +f 32341 32382 32342 +f 32342 32382 32383 +f 32342 32383 32343 +f 32343 32383 32384 +f 32343 32384 32344 +f 32344 32384 32385 +f 32344 32385 32345 +f 32345 32385 32386 +f 32345 32386 31635 +f 31635 32386 31632 +f 31633 31609 32346 +f 32346 31609 31608 +f 32346 31608 32347 +f 32347 31608 31617 +f 32347 31617 32348 +f 32348 31617 32349 +f 31617 31618 32349 +f 32349 31618 32350 +f 31619 32352 31618 +f 31618 32352 32351 +f 31618 32351 32350 +f 32352 31619 32353 +f 32353 31619 31620 +f 32353 31620 32354 +f 32354 31620 32355 +f 31620 31621 32355 +f 32355 31621 32356 +f 31621 31622 32356 +f 32356 31622 32357 +f 32357 31622 32358 +f 32358 31622 31623 +f 32358 31623 32359 +f 32359 31623 32360 +f 31623 31624 32360 +f 32360 31624 32361 +f 32361 31624 32362 +f 32362 31624 31625 +f 32362 31625 32363 +f 32363 31625 32364 +f 31625 31626 32364 +f 32364 31626 32365 +f 31626 31627 32365 +f 32365 31627 32366 +f 32366 31627 32367 +f 32367 31627 31628 +f 32367 31628 32368 +f 32368 31628 32369 +f 31628 31629 32369 +f 32369 31629 32370 +f 31629 31630 32370 +f 32370 31630 32371 +f 31631 32373 31630 +f 31630 32373 32372 +f 31630 32372 32371 +f 31616 32375 31631 +f 31631 32375 32374 +f 31631 32374 32373 +f 32375 31616 32376 +f 32376 31616 31615 +f 32376 31615 32377 +f 32377 31615 32378 +f 31615 31614 32378 +f 32378 31614 32379 +f 32379 31614 32380 +f 32380 31614 31613 +f 32380 31613 32381 +f 32381 31613 32382 +f 31613 31612 32382 +f 32382 31612 32383 +f 32383 31612 32384 +f 32384 31612 31611 +f 32384 31611 32385 +f 32385 31611 31610 +f 32385 31610 32386 +f 32386 31610 31632 +f 32065 32064 32080 +f 31912 31911 31927 +f 31927 31929 32387 +f 32387 31929 31931 +f 32387 31931 32388 +f 32388 31931 31933 +f 32388 31933 32389 +f 32389 31933 31935 +f 32389 31935 32390 +f 32390 31935 31937 +f 32390 31937 32391 +f 32391 31937 31939 +f 32391 31939 32392 +f 32392 31939 31941 +f 32392 31941 32393 +f 32393 31941 31943 +f 32393 31943 32394 +f 32394 31943 31945 +f 32394 31945 32395 +f 32395 31945 31947 +f 32395 31947 32396 +f 32396 31947 31949 +f 32396 31949 32397 +f 32397 31949 31951 +f 32397 31951 32398 +f 32398 31951 31953 +f 32398 31953 32399 +f 32399 31953 31955 +f 32399 31955 32400 +f 32400 31955 31957 +f 32400 31957 32401 +f 32401 31957 31959 +f 32401 31959 31790 +f 31790 31959 31788 +f 31861 31860 31876 +f 31876 31878 32402 +f 32402 31878 31880 +f 32402 31880 32403 +f 32403 31880 31882 +f 32403 31882 32404 +f 32404 31882 31884 +f 32404 31884 32405 +f 32405 31884 31886 +f 32405 31886 32406 +f 32406 31886 31888 +f 32406 31888 32407 +f 32407 31888 31890 +f 32407 31890 32408 +f 32408 31890 31892 +f 32408 31892 32409 +f 32409 31892 31894 +f 32409 31894 32410 +f 32410 31894 31896 +f 32410 31896 32411 +f 32411 31896 31898 +f 32411 31898 32412 +f 32412 31898 31900 +f 32412 31900 32413 +f 32413 31900 31902 +f 32413 31902 32414 +f 32414 31902 31904 +f 32414 31904 32415 +f 32415 31904 31906 +f 32415 31906 32416 +f 32416 31906 31908 +f 32416 31908 31798 +f 31798 31908 31796 +f 31810 31809 31825 +f 31825 31827 32417 +f 32417 31827 31829 +f 32417 31829 32418 +f 32418 31829 31831 +f 32418 31831 32419 +f 32419 31831 31833 +f 32419 31833 32420 +f 32420 31833 31835 +f 32420 31835 32421 +f 32421 31835 31837 +f 32421 31837 32422 +f 32422 31837 31839 +f 32422 31839 32423 +f 32423 31839 31841 +f 32423 31841 32424 +f 32424 31841 31843 +f 32424 31843 32425 +f 32425 31843 31845 +f 32425 31845 32426 +f 32426 31845 31847 +f 32426 31847 32427 +f 32427 31847 31849 +f 32427 31849 32428 +f 32428 31849 31851 +f 32428 31851 32429 +f 32429 31851 31853 +f 32429 31853 32430 +f 32430 31853 31855 +f 32430 31855 32431 +f 32431 31855 31857 +f 32431 31857 31806 +f 31806 31857 31804 +f 32066 32065 32081 +f 32081 32065 32080 +f 31913 31912 32387 +f 32387 31912 31927 +f 31913 32387 32388 +f 31862 31861 32402 +f 32402 31861 31876 +f 31862 32402 32403 +f 31811 31810 32417 +f 32417 31810 31825 +f 31811 32417 32418 +f 32067 32066 32082 +f 32082 32066 32081 +f 31914 31913 32388 +f 31914 32388 32389 +f 31863 31862 32403 +f 31863 32403 32404 +f 31812 31811 32418 +f 31812 32418 32419 +f 32068 32067 32083 +f 32083 32067 32082 +f 31915 31914 32389 +f 31915 32389 32390 +f 31864 31863 32404 +f 31864 32404 32405 +f 31813 31812 32419 +f 31813 32419 32420 +f 32069 32068 32084 +f 32084 32068 32083 +f 31916 31915 32390 +f 31916 32390 32391 +f 31865 31864 32405 +f 31865 32405 32406 +f 31814 31813 32420 +f 31814 32420 32421 +f 32085 32070 32069 +f 31916 32391 31917 +f 31917 32391 32392 +f 31917 32392 31918 +f 31918 32392 32393 +f 31918 32393 31919 +f 31919 32393 32394 +f 31919 32394 31920 +f 31920 32394 32395 +f 31920 32395 31921 +f 31921 32395 32396 +f 31921 32396 31922 +f 31922 32396 32397 +f 31922 32397 31923 +f 31923 32397 32398 +f 31923 32398 31924 +f 31924 32398 32399 +f 31924 32399 31925 +f 31925 32399 32400 +f 31925 32400 31926 +f 31926 32400 32401 +f 31926 32401 31792 +f 31792 32401 31790 +f 31865 32406 31866 +f 31866 32406 32407 +f 31866 32407 31867 +f 31867 32407 32408 +f 31867 32408 31868 +f 31868 32408 32409 +f 31868 32409 31869 +f 31869 32409 32410 +f 31869 32410 31870 +f 31870 32410 32411 +f 31870 32411 31871 +f 31871 32411 32412 +f 31871 32412 31872 +f 31872 32412 32413 +f 31872 32413 31873 +f 31873 32413 32414 +f 31873 32414 31874 +f 31874 32414 32415 +f 31874 32415 31875 +f 31875 32415 32416 +f 31875 32416 31800 +f 31800 32416 31798 +f 31814 32421 31815 +f 31815 32421 32422 +f 31815 32422 31816 +f 31816 32422 32423 +f 31816 32423 31817 +f 31817 32423 32424 +f 31817 32424 31818 +f 31818 32424 32425 +f 31818 32425 31819 +f 31819 32425 32426 +f 31819 32426 31820 +f 31820 32426 32427 +f 31820 32427 31821 +f 31821 32427 32428 +f 31821 32428 31822 +f 31822 32428 32429 +f 31822 32429 31823 +f 31823 32429 32430 +f 31823 32430 31824 +f 31824 32430 32431 +f 31824 32431 31808 +f 31808 32431 31806 +f 32084 32085 32069 +f 32092 32076 32091 +f 32091 32076 32075 +f 32091 32075 32090 +f 32076 32092 32077 +f 32077 32092 32093 +f 32077 32093 32078 +f 32078 32093 32094 +f 32078 32094 32079 +f 32079 32094 32095 +f 32079 32095 31772 +f 31771 31769 32432 +f 32432 31769 31768 +f 32432 31768 32433 +f 32433 31768 31767 +f 32433 31767 32434 +f 32434 31767 31766 +f 32434 31766 32435 +f 32435 31766 31765 +f 32435 31765 32436 +f 32436 31765 31764 +f 32436 31764 31762 +f 31773 31771 32437 +f 32437 31771 32432 +f 32437 32432 32438 +f 32438 32432 32433 +f 32438 32433 32439 +f 32439 32433 32434 +f 32439 32434 32440 +f 32440 32434 32435 +f 32440 32435 32441 +f 32441 32435 32436 +f 32441 32436 32442 +f 32442 32436 31762 +f 32442 31762 31760 +f 31775 31773 32443 +f 32443 31773 32437 +f 32443 32437 32444 +f 32444 32437 32438 +f 32444 32438 32445 +f 32445 32438 32439 +f 32445 32439 32446 +f 32446 32439 32440 +f 32446 32440 32447 +f 32447 32440 32441 +f 32447 32441 32448 +f 32448 32441 32442 +f 32448 32442 32449 +f 32449 32442 31760 +f 32449 31760 31758 +f 31777 31775 32450 +f 32450 31775 32443 +f 32450 32443 32451 +f 32451 32443 32444 +f 32451 32444 32452 +f 32452 32444 32445 +f 32452 32445 32453 +f 32453 32445 32446 +f 32453 32446 32454 +f 32454 32446 32447 +f 32454 32447 32455 +f 32455 32447 32448 +f 32455 32448 32456 +f 32456 32448 32449 +f 32456 32449 32457 +f 32457 32449 31758 +f 32457 31758 31756 +f 31779 31777 32458 +f 32458 31777 32450 +f 32458 32450 32459 +f 32459 32450 32451 +f 32459 32451 32460 +f 32460 32451 32452 +f 32460 32452 32461 +f 32461 32452 32453 +f 32461 32453 32462 +f 32462 32453 32454 +f 32462 32454 32463 +f 32463 32454 32455 +f 32463 32455 32464 +f 32464 32455 32456 +f 32464 32456 32465 +f 32465 32456 32457 +f 32465 32457 32466 +f 32466 32457 31756 +f 32466 31756 31754 +f 31781 31779 32467 +f 32467 31779 32458 +f 32467 32458 32468 +f 32468 32458 32459 +f 32468 32459 32469 +f 32469 32459 32460 +f 32469 32460 32470 +f 32470 32460 32461 +f 32470 32461 32471 +f 32471 32461 32462 +f 32471 32462 32472 +f 32472 32462 32463 +f 32472 32463 32473 +f 32473 32463 32464 +f 32473 32464 32474 +f 32474 32464 32465 +f 32474 32465 32475 +f 32475 32465 32466 +f 32475 32466 32476 +f 32476 32466 31754 +f 32476 31754 31752 +f 31783 31781 32477 +f 32477 31781 32467 +f 32477 32467 32478 +f 32478 32467 32468 +f 32478 32468 32479 +f 32479 32468 32469 +f 32479 32469 32480 +f 32480 32469 32470 +f 32480 32470 32481 +f 32481 32470 32471 +f 32481 32471 32482 +f 32482 32471 32472 +f 32482 32472 32483 +f 32483 32472 32473 +f 32483 32473 32484 +f 32484 32473 32474 +f 32484 32474 32485 +f 32485 32474 32475 +f 32485 32475 32486 +f 32486 32475 32476 +f 32486 32476 32487 +f 32487 32476 31752 +f 32487 31752 31750 +f 31785 31783 32488 +f 32488 31783 32477 +f 32488 32477 32489 +f 32489 32477 32478 +f 32489 32478 32490 +f 32490 32478 32479 +f 32490 32479 32491 +f 32491 32479 32480 +f 32491 32480 32492 +f 32492 32480 32481 +f 32492 32481 32493 +f 32493 32481 32482 +f 32493 32482 32494 +f 32494 32482 32483 +f 32494 32483 32495 +f 32495 32483 32484 +f 32495 32484 32496 +f 32496 32484 32485 +f 32496 32485 32497 +f 32497 32485 32486 +f 32497 32486 32498 +f 32498 32486 32487 +f 32498 32487 32499 +f 32499 32487 31750 +f 32499 31750 31748 +f 31787 31785 32500 +f 32500 31785 32488 +f 32500 32488 32501 +f 32501 32488 32489 +f 32501 32489 32502 +f 32502 32489 32490 +f 32502 32490 32503 +f 32503 32490 32491 +f 32503 32491 32504 +f 32504 32491 32492 +f 32504 32492 32505 +f 32505 32492 32493 +f 32505 32493 32506 +f 32506 32493 32494 +f 32506 32494 32507 +f 32507 32494 32495 +f 32507 32495 32508 +f 32508 32495 32496 +f 32508 32496 32509 +f 32509 32496 32497 +f 32509 32497 32510 +f 32510 32497 32498 +f 32510 32498 32511 +f 32511 32498 32499 +f 32511 32499 32512 +f 32512 32499 31748 +f 32512 31748 31746 +f 31789 31787 32513 +f 32513 31787 32500 +f 32513 32500 32514 +f 32514 32500 32501 +f 32514 32501 32515 +f 32515 32501 32502 +f 32515 32502 32516 +f 32516 32502 32503 +f 32516 32503 32517 +f 32517 32503 32504 +f 32517 32504 32518 +f 32518 32504 32505 +f 32518 32505 32519 +f 32519 32505 32506 +f 32519 32506 32520 +f 32520 32506 32507 +f 32520 32507 32521 +f 32521 32507 32508 +f 32521 32508 32522 +f 32522 32508 32509 +f 32522 32509 32523 +f 32523 32509 32510 +f 32523 32510 32524 +f 32524 32510 32511 +f 32524 32511 32525 +f 32525 32511 32512 +f 32525 32512 32526 +f 32526 32512 31746 +f 32526 31746 31744 +f 31791 31789 32527 +f 32527 31789 32513 +f 32527 32513 32528 +f 32528 32513 32514 +f 32528 32514 32529 +f 32529 32514 32515 +f 32529 32515 32530 +f 32530 32515 32516 +f 32530 32516 32531 +f 32531 32516 32517 +f 32531 32517 32532 +f 32532 32517 32518 +f 32532 32518 32533 +f 32533 32518 32519 +f 32533 32519 32534 +f 32534 32519 32520 +f 32534 32520 32535 +f 32535 32520 32521 +f 32535 32521 32536 +f 32536 32521 32522 +f 32536 32522 32537 +f 32537 32522 32523 +f 32537 32523 32538 +f 32538 32523 32524 +f 32538 32524 32539 +f 32539 32524 32525 +f 32539 32525 32540 +f 32540 32525 32526 +f 32540 32526 32541 +f 32541 32526 31744 +f 32541 31744 31742 +f 31793 31791 32542 +f 32542 31791 32527 +f 32542 32527 32543 +f 32543 32527 32528 +f 32543 32528 32544 +f 32544 32528 32529 +f 32544 32529 32545 +f 32545 32529 32530 +f 32545 32530 32546 +f 32546 32530 32531 +f 32546 32531 32547 +f 32547 32531 32532 +f 32547 32532 32548 +f 32548 32532 32533 +f 32548 32533 32549 +f 32549 32533 32534 +f 32549 32534 32550 +f 32550 32534 32535 +f 32550 32535 32551 +f 32551 32535 32536 +f 32551 32536 32552 +f 32552 32536 32537 +f 32552 32537 32553 +f 32553 32537 32538 +f 32553 32538 32554 +f 32554 32538 32539 +f 32554 32539 32555 +f 32555 32539 32540 +f 32555 32540 32556 +f 32556 32540 32541 +f 32556 32541 32557 +f 32557 32541 31742 +f 32557 31742 31740 +f 31795 31793 32558 +f 32558 31793 32542 +f 32558 32542 32559 +f 32559 32542 32543 +f 32559 32543 32560 +f 32560 32543 32544 +f 32560 32544 32561 +f 32561 32544 32545 +f 32561 32545 32562 +f 32562 32545 32546 +f 32562 32546 32563 +f 32563 32546 32547 +f 32563 32547 32564 +f 32564 32547 32548 +f 32564 32548 32565 +f 32565 32548 32549 +f 32565 32549 32566 +f 32566 32549 32550 +f 32566 32550 32567 +f 32567 32550 32551 +f 32567 32551 32568 +f 32568 32551 32552 +f 32568 32552 32569 +f 32569 32552 32553 +f 32569 32553 32570 +f 32570 32553 32554 +f 32570 32554 32571 +f 32571 32554 32555 +f 32571 32555 32572 +f 32572 32555 32556 +f 32572 32556 32573 +f 32573 32556 32557 +f 32573 32557 32574 +f 32574 32557 31740 +f 32574 31740 31738 +f 31797 31795 32575 +f 32575 31795 32558 +f 32575 32558 32576 +f 32576 32558 32559 +f 32576 32559 32577 +f 32577 32559 32560 +f 32577 32560 32578 +f 32578 32560 32561 +f 32578 32561 32579 +f 32579 32561 32562 +f 32579 32562 32580 +f 32580 32562 32563 +f 32580 32563 32581 +f 32581 32563 32564 +f 32581 32564 32582 +f 32582 32564 32565 +f 32582 32565 32583 +f 32583 32565 32566 +f 32583 32566 32584 +f 32584 32566 32567 +f 32584 32567 32585 +f 32585 32567 32568 +f 32585 32568 32586 +f 32586 32568 32569 +f 32586 32569 32587 +f 32587 32569 32570 +f 32587 32570 32588 +f 32588 32570 32571 +f 32588 32571 32589 +f 32589 32571 32572 +f 32589 32572 32590 +f 32590 32572 32573 +f 32590 32573 32591 +f 32591 32573 32574 +f 32591 32574 32592 +f 32592 32574 31738 +f 32592 31738 31736 +f 31799 31797 32593 +f 32593 31797 32575 +f 32593 32575 32594 +f 32594 32575 32576 +f 32594 32576 32595 +f 32595 32576 32577 +f 32595 32577 32596 +f 32596 32577 32578 +f 32596 32578 32597 +f 32597 32578 32579 +f 32597 32579 32598 +f 32598 32579 32580 +f 32598 32580 32599 +f 32599 32580 32581 +f 32599 32581 32600 +f 32600 32581 32582 +f 32600 32582 32601 +f 32601 32582 32583 +f 32601 32583 32602 +f 32602 32583 32584 +f 32602 32584 32603 +f 32603 32584 32585 +f 32603 32585 32604 +f 32604 32585 32586 +f 32604 32586 32605 +f 32605 32586 32587 +f 32605 32587 32606 +f 32606 32587 32588 +f 32606 32588 32607 +f 32607 32588 32589 +f 32607 32589 32608 +f 32608 32589 32590 +f 32608 32590 32609 +f 32609 32590 32591 +f 32609 32591 32610 +f 32610 32591 32592 +f 32610 32592 32611 +f 32611 32592 31736 +f 32611 31736 31734 +f 31801 31799 32612 +f 32612 31799 32593 +f 32612 32593 32613 +f 32613 32593 32594 +f 32613 32594 32614 +f 32614 32594 32595 +f 32614 32595 32615 +f 32615 32595 32596 +f 32615 32596 32616 +f 32616 32596 32597 +f 32616 32597 32617 +f 32617 32597 32598 +f 32617 32598 32618 +f 32618 32598 32599 +f 32618 32599 32619 +f 32619 32599 32600 +f 32619 32600 32620 +f 32620 32600 32601 +f 32620 32601 32621 +f 32621 32601 32602 +f 32621 32602 32622 +f 32622 32602 32603 +f 32622 32603 32623 +f 32623 32603 32604 +f 32623 32604 32624 +f 32624 32604 32605 +f 32624 32605 32625 +f 32625 32605 32606 +f 32625 32606 32626 +f 32626 32606 32607 +f 32626 32607 32627 +f 32627 32607 32608 +f 32627 32608 32628 +f 32628 32608 32609 +f 32628 32609 32629 +f 32629 32609 32610 +f 32629 32610 32630 +f 32630 32610 32611 +f 32630 32611 32631 +f 32631 32611 31734 +f 32631 31734 31732 +f 31803 31801 32632 +f 32632 31801 32612 +f 32632 32612 32633 +f 32633 32612 32613 +f 32633 32613 32634 +f 32634 32613 32614 +f 32634 32614 32635 +f 32635 32614 32615 +f 32635 32615 32636 +f 32636 32615 32616 +f 32636 32616 32637 +f 32637 32616 32617 +f 32637 32617 32638 +f 32638 32617 32618 +f 32638 32618 32639 +f 32639 32618 32619 +f 32639 32619 32640 +f 32640 32619 32620 +f 32640 32620 32641 +f 32641 32620 32621 +f 32641 32621 32642 +f 32642 32621 32622 +f 32642 32622 32643 +f 32643 32622 32623 +f 32643 32623 32644 +f 32644 32623 32624 +f 32644 32624 32645 +f 32645 32624 32625 +f 32645 32625 32646 +f 32646 32625 32626 +f 32646 32626 32647 +f 32647 32626 32627 +f 32647 32627 32648 +f 32648 32627 32628 +f 32648 32628 32649 +f 32649 32628 32629 +f 32649 32629 32650 +f 32650 32629 32630 +f 32650 32630 32651 +f 32651 32630 32631 +f 32651 32631 32652 +f 32652 32631 31732 +f 32652 31732 31730 +f 31805 31803 32653 +f 32653 31803 32632 +f 32653 32632 32654 +f 32654 32632 32633 +f 32654 32633 32655 +f 32655 32633 32634 +f 32655 32634 32656 +f 32656 32634 32635 +f 32656 32635 32657 +f 32657 32635 32636 +f 32657 32636 32658 +f 32658 32636 32637 +f 32658 32637 32659 +f 32659 32637 32638 +f 32659 32638 32660 +f 32660 32638 32639 +f 32660 32639 32661 +f 32661 32639 32640 +f 32661 32640 32662 +f 32662 32640 32641 +f 32662 32641 32663 +f 32663 32641 32642 +f 32663 32642 32664 +f 32664 32642 32643 +f 32664 32643 32665 +f 32665 32643 32644 +f 32665 32644 32666 +f 32666 32644 32645 +f 32666 32645 32667 +f 32667 32645 32646 +f 32667 32646 32668 +f 32668 32646 32647 +f 32668 32647 32669 +f 32669 32647 32648 +f 32669 32648 32670 +f 32670 32648 32649 +f 32670 32649 32671 +f 32671 32649 32650 +f 32671 32650 32672 +f 32672 32650 32651 +f 32672 32651 32673 +f 32673 32651 32652 +f 32673 32652 32674 +f 32674 32652 31730 +f 32674 31730 31728 +f 31678 31676 31807 +f 31807 31805 32675 +f 32675 31805 32653 +f 32675 32653 32676 +f 32676 32653 32654 +f 32676 32654 32677 +f 32677 32654 32655 +f 32677 32655 32678 +f 32678 32655 32656 +f 32678 32656 32679 +f 32679 32656 32657 +f 32679 32657 32680 +f 32680 32657 32658 +f 32680 32658 32681 +f 32681 32658 32659 +f 32681 32659 32682 +f 32682 32659 32660 +f 32682 32660 32683 +f 32683 32660 32661 +f 32683 32661 32684 +f 32684 32661 32662 +f 32684 32662 32685 +f 32685 32662 32663 +f 32685 32663 32686 +f 32686 32663 32664 +f 32686 32664 32687 +f 32687 32664 32665 +f 32687 32665 32688 +f 32688 32665 32666 +f 32688 32666 32689 +f 32689 32666 32667 +f 32689 32667 32690 +f 32690 32667 32668 +f 32690 32668 32691 +f 32691 32668 32669 +f 32691 32669 32692 +f 32692 32669 32670 +f 32692 32670 32693 +f 32693 32670 32671 +f 32693 32671 32694 +f 32694 32671 32672 +f 32694 32672 32695 +f 32695 32672 32673 +f 32695 32673 32696 +f 32696 32673 32674 +f 32696 32674 32697 +f 32697 32674 31728 +f 32697 31728 31726 +f 32676 31680 32675 +f 32675 31680 31678 +f 32675 31678 31807 +f 31680 32676 31682 +f 31682 32676 32677 +f 31682 32677 31684 +f 31684 32677 32678 +f 31684 32678 31686 +f 31686 32678 32679 +f 31686 32679 31688 +f 31688 32679 32680 +f 31688 32680 31690 +f 31690 32680 32681 +f 31690 32681 31692 +f 31692 32681 32682 +f 31692 32682 31694 +f 31694 32682 32683 +f 31694 32683 31696 +f 31696 32683 32684 +f 31696 32684 31698 +f 31698 32684 32685 +f 31698 32685 31700 +f 31700 32685 32686 +f 31700 32686 31702 +f 31702 32686 32687 +f 31702 32687 31704 +f 31704 32687 32688 +f 31704 32688 31706 +f 31706 32688 32689 +f 31706 32689 31708 +f 31708 32689 32690 +f 31708 32690 31710 +f 31710 32690 32691 +f 31710 32691 31712 +f 31712 32691 32692 +f 31712 32692 31714 +f 31714 32692 32693 +f 31714 32693 31716 +f 31716 32693 32694 +f 31716 32694 31718 +f 31718 32694 32695 +f 31718 32695 31720 +f 31720 32695 32696 +f 31720 32696 31722 +f 31722 32696 32697 +f 31722 32697 31724 +f 31724 32697 31726 +f 32131 32147 32132 +f 32132 32147 32698 +f 32132 32698 32133 +f 32133 32698 32699 +f 32133 32699 32134 +f 32134 32699 32700 +f 32134 32700 32135 +f 32135 32700 32701 +f 32135 32701 32136 +f 32136 32701 32702 +f 32136 32702 32137 +f 32137 32702 32703 +f 32137 32703 32138 +f 32138 32703 32704 +f 32138 32704 32139 +f 32139 32704 32705 +f 32139 32705 32140 +f 32140 32705 32706 +f 32140 32706 32141 +f 32141 32706 32707 +f 32141 32707 32142 +f 32142 32707 32708 +f 32142 32708 32143 +f 32143 32708 32709 +f 32143 32709 32144 +f 32144 32709 32176 +f 32147 32148 32698 +f 32698 32148 32710 +f 32698 32710 32699 +f 32699 32710 32711 +f 32699 32711 32700 +f 32700 32711 32712 +f 32700 32712 32701 +f 32701 32712 32713 +f 32701 32713 32702 +f 32702 32713 32714 +f 32702 32714 32703 +f 32703 32714 32715 +f 32703 32715 32704 +f 32704 32715 32716 +f 32704 32716 32705 +f 32705 32716 32717 +f 32705 32717 32706 +f 32706 32717 32718 +f 32706 32718 32707 +f 32707 32718 32719 +f 32707 32719 32708 +f 32708 32719 32720 +f 32708 32720 32709 +f 32709 32720 32721 +f 32709 32721 32176 +f 32176 32721 32174 +f 32148 32149 32710 +f 32710 32149 32722 +f 32710 32722 32711 +f 32711 32722 32723 +f 32711 32723 32712 +f 32712 32723 32724 +f 32712 32724 32713 +f 32713 32724 32725 +f 32713 32725 32714 +f 32714 32725 32726 +f 32714 32726 32715 +f 32715 32726 32727 +f 32715 32727 32716 +f 32716 32727 32728 +f 32716 32728 32717 +f 32717 32728 32729 +f 32717 32729 32718 +f 32718 32729 32730 +f 32718 32730 32719 +f 32719 32730 32731 +f 32719 32731 32720 +f 32720 32731 32732 +f 32720 32732 32721 +f 32721 32732 32173 +f 32721 32173 32174 +f 32150 32152 32722 +f 32722 32152 32723 +f 32724 32723 32154 +f 32154 32723 32152 +f 32149 32150 32722 +f 32725 32724 32156 +f 32156 32724 32154 +f 32726 32725 32158 +f 32158 32725 32156 +f 32727 32726 32160 +f 32160 32726 32158 +f 32197 32204 32733 +f 32733 32204 32205 +f 32733 32205 32734 +f 32734 32205 32206 +f 32734 32206 32208 +f 32728 32727 32162 +f 32162 32727 32160 +f 32197 32733 32198 +f 32198 32733 32735 +f 32198 32735 32199 +f 32199 32735 32736 +f 32199 32736 32200 +f 32200 32736 32737 +f 32200 32737 32201 +f 32201 32737 32738 +f 32201 32738 32202 +f 32202 32738 32222 +f 32202 32222 32203 +f 32735 32733 32734 +f 32729 32728 32164 +f 32164 32728 32162 +f 32735 32734 32739 +f 32739 32734 32208 +f 32739 32208 32210 +f 32735 32739 32736 +f 32736 32739 32740 +f 32736 32740 32737 +f 32737 32740 32741 +f 32737 32741 32738 +f 32738 32741 32221 +f 32738 32221 32222 +f 32740 32739 32210 +f 32729 32164 32166 +f 32729 32166 32730 +f 32730 32166 32168 +f 32730 32168 32731 +f 32731 32168 32170 +f 32731 32170 32732 +f 32732 32170 32172 +f 32732 32172 32173 +f 32741 32740 32212 +f 32212 32740 32210 +f 32221 32741 32214 +f 32214 32741 32212 +f 32742 32743 32744 +f 32745 32743 32746 +f 32747 32743 32748 +f 32749 32743 32750 +f 32751 32743 32752 +f 32753 32743 32754 +f 32755 32743 32756 +f 32757 32743 32758 +f 32759 32743 32760 +f 32761 32743 32762 +f 32763 32743 32764 +f 32765 32743 32766 +f 32756 32743 32753 +f 32748 32743 32745 +f 32764 32743 32761 +f 32754 32743 32751 +f 32752 32743 32749 +f 32750 32743 32747 +f 32746 32743 32742 +f 32744 32743 32765 +f 32766 32743 32763 +f 32762 32743 32759 +f 32760 32743 32757 +f 32758 32743 32755 +f 32765 32755 32744 +f 32744 32755 32756 +f 32744 32756 32742 +f 32742 32756 32753 +f 32742 32753 32746 +f 32746 32753 32754 +f 32746 32754 32745 +f 32745 32754 32751 +f 32745 32751 32748 +f 32748 32751 32752 +f 32748 32752 32747 +f 32747 32752 32749 +f 32755 32765 32758 +f 32758 32765 32766 +f 32758 32766 32757 +f 32757 32766 32763 +f 32757 32763 32760 +f 32760 32763 32764 +f 32760 32764 32759 +f 32759 32764 32761 +f 32765 32767 32744 +f 32744 32767 32768 +f 32744 32768 32742 +f 32742 32768 32769 +f 32742 32769 32746 +f 32746 32769 32770 +f 32746 32770 32745 +f 32745 32770 32771 +f 32745 32771 32748 +f 32748 32771 32772 +f 32748 32772 32747 +f 32747 32772 32773 +f 32747 32773 32750 +f 32750 32773 32774 +f 32750 32774 32749 +f 32749 32774 32775 +f 32749 32775 32752 +f 32752 32775 32776 +f 32752 32776 32751 +f 32751 32776 32777 +f 32751 32777 32754 +f 32754 32777 32778 +f 32754 32778 32753 +f 32753 32778 32779 +f 32753 32779 32756 +f 32756 32779 32780 +f 32756 32780 32755 +f 32755 32780 32781 +f 32755 32781 32758 +f 32758 32781 32782 +f 32758 32782 32757 +f 32757 32782 32783 +f 32757 32783 32760 +f 32760 32783 32784 +f 32760 32784 32759 +f 32759 32784 32785 +f 32759 32785 32762 +f 32762 32785 32786 +f 32762 32786 32761 +f 32761 32786 32787 +f 32761 32787 32764 +f 32764 32787 32788 +f 32764 32788 32763 +f 32763 32788 32789 +f 32763 32789 32766 +f 32766 32789 32790 +f 32766 32790 32765 +f 32765 32790 32767 +f 32767 32781 32768 +f 32768 32781 32780 +f 32768 32780 32769 +f 32769 32780 32779 +f 32769 32779 32770 +f 32770 32779 32778 +f 32770 32778 32771 +f 32771 32778 32777 +f 32771 32777 32772 +f 32772 32777 32776 +f 32772 32776 32773 +f 32773 32776 32775 +f 32773 32775 32774 +f 32781 32767 32782 +f 32782 32767 32790 +f 32782 32790 32783 +f 32783 32790 32789 +f 32783 32789 32784 +f 32784 32789 32788 +f 32784 32788 32785 +f 32785 32788 32787 +f 32785 32787 32786 +f 32742 32753 32744 +f 32744 32753 32756 +f 32744 32756 32765 +f 32765 32756 32755 +f 32765 32755 32766 +f 32766 32755 32758 +f 32766 32758 32763 +f 32763 32758 32757 +f 32763 32757 32764 +f 32764 32757 32760 +f 32764 32760 32761 +f 32761 32760 32759 +f 32761 32759 32762 +f 32753 32742 32754 +f 32754 32742 32746 +f 32754 32746 32751 +f 32751 32746 32745 +f 32751 32745 32752 +f 32752 32745 32748 +f 32752 32748 32749 +f 32749 32748 32747 +f 32749 32747 32750 +f 32791 32792 32793 +f 32794 32792 32795 +f 32796 32792 32797 +f 32798 32792 32799 +f 32800 32792 32801 +f 32802 32792 32803 +f 32804 32792 32805 +f 32806 32792 32807 +f 32808 32792 32809 +f 32810 32792 32811 +f 32812 32792 32813 +f 32814 32792 32815 +f 32805 32792 32802 +f 32797 32792 32794 +f 32813 32792 32810 +f 32803 32792 32800 +f 32801 32792 32798 +f 32799 32792 32796 +f 32795 32792 32791 +f 32793 32792 32814 +f 32815 32792 32812 +f 32811 32792 32808 +f 32809 32792 32806 +f 32807 32792 32804 +f 32814 32804 32793 +f 32793 32804 32805 +f 32793 32805 32791 +f 32791 32805 32802 +f 32791 32802 32795 +f 32795 32802 32803 +f 32795 32803 32794 +f 32794 32803 32800 +f 32794 32800 32797 +f 32797 32800 32801 +f 32797 32801 32796 +f 32796 32801 32798 +f 32796 32798 32799 +f 32804 32814 32807 +f 32807 32814 32815 +f 32807 32815 32806 +f 32806 32815 32812 +f 32806 32812 32809 +f 32809 32812 32813 +f 32809 32813 32808 +f 32808 32813 32810 +f 32814 32816 32793 +f 32793 32816 32817 +f 32793 32817 32791 +f 32791 32817 32818 +f 32791 32818 32795 +f 32795 32818 32819 +f 32795 32819 32794 +f 32794 32819 32820 +f 32794 32820 32797 +f 32797 32820 32821 +f 32797 32821 32796 +f 32796 32821 32822 +f 32796 32822 32799 +f 32799 32822 32823 +f 32799 32823 32798 +f 32798 32823 32824 +f 32798 32824 32801 +f 32801 32824 32825 +f 32801 32825 32800 +f 32800 32825 32826 +f 32800 32826 32803 +f 32803 32826 32827 +f 32803 32827 32802 +f 32802 32827 32828 +f 32802 32828 32805 +f 32805 32828 32829 +f 32805 32829 32804 +f 32804 32829 32830 +f 32804 32830 32807 +f 32807 32830 32831 +f 32807 32831 32806 +f 32806 32831 32832 +f 32806 32832 32809 +f 32809 32832 32833 +f 32809 32833 32808 +f 32808 32833 32834 +f 32808 32834 32811 +f 32811 32834 32835 +f 32811 32835 32810 +f 32810 32835 32836 +f 32810 32836 32813 +f 32813 32836 32837 +f 32813 32837 32812 +f 32812 32837 32838 +f 32812 32838 32815 +f 32815 32838 32839 +f 32815 32839 32814 +f 32814 32839 32816 +f 32816 32830 32817 +f 32817 32830 32829 +f 32817 32829 32818 +f 32818 32829 32828 +f 32818 32828 32819 +f 32819 32828 32827 +f 32819 32827 32820 +f 32820 32827 32826 +f 32820 32826 32821 +f 32821 32826 32825 +f 32821 32825 32822 +f 32822 32825 32824 +f 32822 32824 32823 +f 32830 32816 32831 +f 32831 32816 32839 +f 32831 32839 32832 +f 32832 32839 32838 +f 32832 32838 32833 +f 32833 32838 32837 +f 32833 32837 32834 +f 32834 32837 32836 +f 32834 32836 32835 +f 32791 32802 32793 +f 32793 32802 32805 +f 32793 32805 32814 +f 32814 32805 32804 +f 32814 32804 32815 +f 32815 32804 32807 +f 32815 32807 32812 +f 32812 32807 32806 +f 32812 32806 32813 +f 32813 32806 32809 +f 32813 32809 32810 +f 32810 32809 32808 +f 32810 32808 32811 +f 32802 32791 32803 +f 32803 32791 32795 +f 32803 32795 32800 +f 32800 32795 32794 +f 32800 32794 32801 +f 32801 32794 32797 +f 32801 32797 32798 +f 32798 32797 32796 +f 32840 32841 32842 +f 32842 32841 32843 +f 32842 32843 32844 +f 32844 32843 32845 +f 32844 32845 32846 +f 32846 32845 32847 +f 32846 32847 32848 +f 32848 32847 32849 +f 32848 32849 32850 +f 32850 32849 32851 +f 32850 32851 32852 +f 32852 32851 32853 +f 32852 32853 32854 +f 32854 32853 32855 +f 32854 32855 32856 +f 32856 32855 32857 +f 32856 32857 32858 +f 32858 32857 32859 +f 32858 32859 32860 +f 32860 32859 32861 +f 32860 32861 32862 +f 32862 32861 32863 +f 32862 32863 32864 +f 32864 32863 32865 +f 32864 32865 32866 +f 32866 32865 32867 +f 32866 32867 32868 +f 32868 32867 32869 +f 32868 32869 32870 +f 32870 32869 32871 +f 32870 32871 32872 +f 32872 32871 32873 +f 32872 32873 32874 +f 32874 32873 32875 +f 32874 32875 32876 +f 32876 32875 32877 +f 32876 32877 32878 +f 32878 32877 32879 +f 32878 32879 32880 +f 32880 32879 32881 +f 32880 32881 32882 +f 32882 32881 32883 +f 32882 32883 32884 +f 32884 32883 32885 +f 32884 32885 32886 +f 32886 32885 32887 +f 32886 32887 32888 +f 32888 32887 32889 +f 32888 32889 32890 +f 32890 32889 32891 +f 32890 32891 32892 +f 32892 32891 32893 +f 32892 32893 32894 +f 32894 32893 32895 +f 32894 32895 32896 +f 32896 32895 32897 +f 32896 32897 32898 +f 32898 32897 32899 +f 32898 32899 32900 +f 32900 32899 32901 +f 32900 32901 32902 +f 32902 32901 32903 +f 32902 32903 32904 +f 32904 32903 32905 +f 32904 32905 32906 +f 32906 32905 32907 +f 32906 32907 32908 +f 32908 32907 32909 +f 32908 32909 32910 +f 32910 32909 32911 +f 32910 32911 32912 +f 32912 32911 32913 +f 32912 32913 32914 +f 32914 32913 32915 +f 32914 32915 32916 +f 32916 32915 32917 +f 32916 32917 32918 +f 32845 32919 32847 +f 32847 32919 32920 +f 32847 32920 32849 +f 32849 32920 32921 +f 32849 32921 32851 +f 32851 32921 32922 +f 32851 32922 32853 +f 32853 32922 32923 +f 32853 32923 32855 +f 32855 32923 32924 +f 32855 32924 32857 +f 32857 32924 32925 +f 32857 32925 32859 +f 32859 32925 32926 +f 32859 32926 32861 +f 32861 32926 32927 +f 32861 32927 32863 +f 32863 32927 32928 +f 32863 32928 32865 +f 32865 32928 32929 +f 32865 32929 32867 +f 32867 32929 32930 +f 32867 32930 32869 +f 32869 32930 32931 +f 32869 32931 32871 +f 32871 32931 32932 +f 32871 32932 32873 +f 32873 32932 32933 +f 32873 32933 32875 +f 32875 32933 32934 +f 32875 32934 32877 +f 32877 32934 32935 +f 32877 32935 32879 +f 32879 32935 32881 +f 32919 32936 32920 +f 32920 32936 32937 +f 32920 32937 32921 +f 32921 32937 32938 +f 32921 32938 32922 +f 32922 32938 32939 +f 32922 32939 32923 +f 32923 32939 32940 +f 32923 32940 32924 +f 32924 32940 32941 +f 32924 32941 32925 +f 32925 32941 32942 +f 32925 32942 32926 +f 32926 32942 32943 +f 32926 32943 32927 +f 32927 32943 32944 +f 32927 32944 32928 +f 32928 32944 32945 +f 32928 32945 32929 +f 32929 32945 32946 +f 32929 32946 32930 +f 32930 32946 32947 +f 32930 32947 32931 +f 32931 32947 32948 +f 32931 32948 32932 +f 32932 32948 32949 +f 32932 32949 32933 +f 32933 32949 32950 +f 32933 32950 32934 +f 32934 32950 32951 +f 32934 32951 32935 +f 32935 32951 32952 +f 32935 32952 32881 +f 32881 32952 32883 +f 32936 32953 32937 +f 32937 32953 32954 +f 32937 32954 32938 +f 32938 32954 32955 +f 32938 32955 32939 +f 32939 32955 32956 +f 32939 32956 32940 +f 32940 32956 32957 +f 32940 32957 32941 +f 32941 32957 32958 +f 32941 32958 32942 +f 32942 32958 32959 +f 32942 32959 32943 +f 32943 32959 32960 +f 32943 32960 32944 +f 32944 32960 32961 +f 32944 32961 32945 +f 32945 32961 32962 +f 32945 32962 32946 +f 32946 32962 32963 +f 32946 32963 32947 +f 32947 32963 32964 +f 32947 32964 32948 +f 32948 32964 32965 +f 32948 32965 32949 +f 32949 32965 32966 +f 32949 32966 32950 +f 32950 32966 32967 +f 32950 32967 32951 +f 32951 32967 32968 +f 32951 32968 32952 +f 32952 32968 32885 +f 32952 32885 32883 +f 32953 32969 32954 +f 32954 32969 32970 +f 32954 32970 32955 +f 32955 32970 32971 +f 32955 32971 32956 +f 32956 32971 32972 +f 32956 32972 32957 +f 32957 32972 32973 +f 32957 32973 32958 +f 32958 32973 32974 +f 32958 32974 32959 +f 32959 32974 32975 +f 32959 32975 32960 +f 32960 32975 32976 +f 32960 32976 32961 +f 32961 32976 32977 +f 32961 32977 32962 +f 32962 32977 32978 +f 32962 32978 32963 +f 32963 32978 32979 +f 32963 32979 32964 +f 32964 32979 32980 +f 32964 32980 32965 +f 32965 32980 32981 +f 32965 32981 32966 +f 32966 32981 32982 +f 32966 32982 32967 +f 32967 32982 32983 +f 32967 32983 32968 +f 32968 32983 32887 +f 32968 32887 32885 +f 32970 32969 32984 +f 32984 32969 32985 +f 32984 32985 32986 +f 32986 32985 32987 +f 32986 32987 32988 +f 32988 32987 32989 +f 32988 32989 32990 +f 32990 32989 32991 +f 32990 32991 32992 +f 32992 32991 32993 +f 32992 32993 32994 +f 32994 32993 32995 +f 32994 32995 32996 +f 32996 32995 32997 +f 32996 32997 32998 +f 32998 32997 32999 +f 32998 32999 33000 +f 33000 32999 33001 +f 33000 33001 33002 +f 33002 33001 33003 +f 33002 33003 33004 +f 33004 33003 33005 +f 33004 33005 33006 +f 33006 33005 33007 +f 33006 33007 33008 +f 33008 33007 32899 +f 33008 32899 32897 +f 32991 33009 32993 +f 32993 33009 33010 +f 32993 33010 32995 +f 32995 33010 33011 +f 32995 33011 32997 +f 32997 33011 33012 +f 32997 33012 32999 +f 32999 33012 33013 +f 32999 33013 33001 +f 33001 33013 33014 +f 33001 33014 33003 +f 33003 33014 33015 +f 33003 33015 33005 +f 33005 33015 33016 +f 33005 33016 33007 +f 33007 33016 32901 +f 33007 32901 32899 +f 33017 33018 33009 +f 33009 33018 33019 +f 33009 33019 33010 +f 33010 33019 33011 +f 33018 33017 33020 +f 33020 33017 33021 +f 33020 33021 33022 +f 33022 33021 33023 +f 33022 33023 33024 +f 33024 33023 33025 +f 33024 33025 33026 +f 33026 33025 33027 +f 33026 33027 32915 +f 32915 33027 33028 +f 32915 33028 32917 +f 32916 32918 33029 +f 33029 32918 33030 +f 33029 33030 33031 +f 33031 33030 33032 +f 33031 33032 33033 +f 33031 33033 33034 +f 33034 33033 33035 +f 33034 33035 33036 +f 33034 33036 33037 +f 33037 33036 33038 +f 33037 33038 33039 +f 33039 33038 33040 +f 33039 33040 33041 +f 33041 33040 33042 +f 33041 33042 33043 +f 33043 33042 33044 +f 33043 33044 33045 +f 33045 33044 33046 +f 33045 33046 33047 +f 33047 33046 33048 +f 33047 33048 33049 +f 33049 33048 33050 +f 33049 33050 33051 +f 33051 33050 33052 +f 33051 33052 33053 +f 33053 33052 33054 +f 33053 33054 33055 +f 33055 33054 33056 +f 33055 33056 33057 +f 33057 33056 33058 +f 33057 33058 33059 +f 33059 33058 33060 +f 33059 33060 33061 +f 33061 33060 33062 +f 33061 33062 33063 +f 33063 33062 33064 +f 33063 33064 33065 +f 33065 33064 33066 +f 33065 33066 33067 +f 33067 33066 33068 +f 33067 33068 33069 +f 33069 33068 33070 +f 33069 33070 33071 +f 33071 33070 33072 +f 33071 33072 33073 +f 33073 33072 33074 +f 33073 33074 33075 +f 33075 33074 33076 +f 33075 33076 33077 +f 33077 33076 33078 +f 33077 33078 33079 +f 33079 33078 33080 +f 33079 33080 33081 +f 33081 33080 33082 +f 33081 33082 33083 +f 33083 33082 33084 +f 33083 33084 33085 +f 33085 33084 33086 +f 33085 33086 33087 +f 33087 33086 33088 +f 33087 33088 33089 +f 33089 33088 33090 +f 33089 33090 33091 +f 33091 33090 33092 +f 33091 33092 33093 +f 33093 33092 33094 +f 33093 33094 33095 +f 33095 33094 33096 +f 33095 33096 33097 +f 33097 33096 33098 +f 33097 33098 33099 +f 33099 33098 33100 +f 33099 33100 33101 +f 33101 33100 33102 +f 33101 33102 33103 +f 33103 33102 33104 +f 33103 33104 33105 +f 33105 33104 33106 +f 33105 33106 33107 +f 33107 33106 33108 +f 33107 33108 33109 +f 33109 33108 33110 +f 33109 33110 33111 +f 33111 33110 33112 +f 33111 33112 33113 +f 33113 33112 33114 +f 33113 33114 33115 +f 33115 33114 33116 +f 33115 33116 33117 +f 33117 33116 33118 +f 33117 33118 33119 +f 33119 33118 33120 +f 33119 33120 33121 +f 33121 33120 33122 +f 33121 33122 33123 +f 33052 33124 33054 +f 33054 33124 33125 +f 33054 33125 33056 +f 33056 33125 33126 +f 33056 33126 33058 +f 33058 33126 33127 +f 33058 33127 33060 +f 33060 33127 33128 +f 33060 33128 33062 +f 33062 33128 33129 +f 33062 33129 33064 +f 33064 33129 33130 +f 33064 33130 33066 +f 33066 33130 33131 +f 33066 33131 33068 +f 33068 33131 33132 +f 33068 33132 33070 +f 33070 33132 33133 +f 33070 33133 33072 +f 33072 33133 33134 +f 33072 33134 33074 +f 33074 33134 33135 +f 33074 33135 33076 +f 33076 33135 33136 +f 33076 33136 33078 +f 33078 33136 33137 +f 33078 33137 33080 +f 33080 33137 33138 +f 33080 33138 33082 +f 33082 33138 33139 +f 33082 33139 33084 +f 33084 33139 33140 +f 33084 33140 33086 +f 33086 33140 33088 +f 33125 33124 33141 +f 33141 33124 33142 +f 33141 33142 33143 +f 33143 33142 33144 +f 33143 33144 33145 +f 33145 33144 33146 +f 33145 33146 33147 +f 33147 33146 33148 +f 33147 33148 33149 +f 33149 33148 33150 +f 33149 33150 33151 +f 33151 33150 33152 +f 33151 33152 33153 +f 33153 33152 33154 +f 33153 33154 33155 +f 33155 33154 33156 +f 33155 33156 33157 +f 33157 33156 33158 +f 33157 33158 33159 +f 33159 33158 33160 +f 33159 33160 33161 +f 33161 33160 33162 +f 33161 33162 33163 +f 33163 33162 33164 +f 33163 33164 33165 +f 33165 33164 33166 +f 33165 33166 33167 +f 33167 33166 33168 +f 33167 33168 33169 +f 33169 33168 33102 +f 33169 33102 33100 +f 33150 33170 33152 +f 33152 33170 33171 +f 33152 33171 33154 +f 33154 33171 33172 +f 33154 33172 33156 +f 33156 33172 33173 +f 33156 33173 33158 +f 33158 33173 33174 +f 33158 33174 33160 +f 33160 33174 33175 +f 33160 33175 33162 +f 33162 33175 33176 +f 33162 33176 33164 +f 33164 33176 33177 +f 33164 33177 33166 +f 33166 33177 33178 +f 33166 33178 33168 +f 33168 33178 33104 +f 33168 33104 33102 +f 33170 33179 33171 +f 33171 33179 33180 +f 33171 33180 33172 +f 33172 33180 33181 +f 33172 33181 33173 +f 33173 33181 33182 +f 33173 33182 33174 +f 33174 33182 33183 +f 33174 33183 33175 +f 33175 33183 33184 +f 33175 33184 33176 +f 33176 33184 33185 +f 33176 33185 33177 +f 33177 33185 33186 +f 33177 33186 33178 +f 33178 33186 33106 +f 33178 33106 33104 +f 33179 33187 33180 +f 33180 33187 33188 +f 33180 33188 33181 +f 33181 33188 33189 +f 33181 33189 33182 +f 33182 33189 33190 +f 33182 33190 33183 +f 33183 33190 33191 +f 33183 33191 33184 +f 33184 33191 33192 +f 33184 33192 33185 +f 33185 33192 33193 +f 33185 33193 33186 +f 33186 33193 33108 +f 33186 33108 33106 +f 33187 33194 33188 +f 33188 33194 33195 +f 33188 33195 33189 +f 33189 33195 33196 +f 33189 33196 33190 +f 33190 33196 33197 +f 33190 33197 33191 +f 33191 33197 33198 +f 33191 33198 33192 +f 33192 33198 33199 +f 33192 33199 33193 +f 33193 33199 33110 +f 33193 33110 33108 +f 33194 33200 33195 +f 33195 33200 33201 +f 33195 33201 33196 +f 33196 33201 33202 +f 33196 33202 33197 +f 33197 33202 33203 +f 33197 33203 33198 +f 33198 33203 33204 +f 33198 33204 33199 +f 33199 33204 33112 +f 33199 33112 33110 +f 33200 33205 33201 +f 33201 33205 33206 +f 33201 33206 33202 +f 33202 33206 33207 +f 33202 33207 33203 +f 33203 33207 33208 +f 33203 33208 33204 +f 33204 33208 33114 +f 33204 33114 33112 +f 33205 33209 33206 +f 33206 33209 33210 +f 33206 33210 33207 +f 33207 33210 33211 +f 33207 33211 33208 +f 33208 33211 33116 +f 33208 33116 33114 +f 33209 33212 33210 +f 33210 33212 33213 +f 33210 33213 33211 +f 33211 33213 33118 +f 33211 33118 33116 +f 33212 33214 33213 +f 33213 33214 33120 +f 33213 33120 33118 +f 33214 33122 33120 +f 33121 33123 33215 +f 33215 33123 33216 +f 33215 33216 33217 +f 33217 33216 33218 +f 33217 33218 33219 +f 33219 33218 33220 +f 33219 33220 33221 +f 33221 33220 33222 +f 33221 33222 33223 +f 33223 33222 33224 +f 33223 33224 33225 +f 33225 33224 33226 +f 33225 33226 33227 +f 33227 33226 33228 +f 33227 33228 33229 +f 33229 33228 33230 +f 33229 33230 33231 +f 33231 33230 33232 +f 33231 33232 33233 +f 33233 33232 33234 +f 33233 33234 33235 +f 33235 33234 33236 +f 33235 33236 33237 +f 33237 33236 33238 +f 33237 33238 33239 +f 33239 33238 33240 +f 33239 33240 33241 +f 33239 33241 33242 +f 33242 33241 33243 +f 33242 33243 33244 +f 33244 33243 33245 +f 33244 33245 33246 +f 33246 33245 33247 +f 33246 33247 33248 +f 33248 33247 33249 +f 33248 33249 33250 +f 33250 33249 33251 +f 33250 33251 33252 +f 33252 33251 33253 +f 33252 33253 33254 +f 33254 33253 33255 +f 33254 33255 33256 +f 33256 33255 33257 +f 33256 33257 33258 +f 33258 33257 33259 +f 33258 33259 33260 +f 33260 33259 33261 +f 33260 33261 33262 +f 33262 33261 33263 +f 33262 33263 33264 +f 33264 33263 33265 +f 33264 33265 33266 +f 33266 33265 33267 +f 33266 33267 33268 +f 33268 33267 33269 +f 33268 33269 33270 +f 33270 33269 33271 +f 33270 33271 33272 +f 33272 33271 33273 +f 33272 33273 33274 +f 33274 33273 33275 +f 33274 33275 33276 +f 33276 33275 33277 +f 33276 33277 33278 +f 33278 33277 33279 +f 33278 33279 33280 +f 33280 33279 33281 +f 33280 33281 33282 +f 33282 33281 33283 +f 33282 33283 33284 +f 33284 33283 33285 +f 33284 33285 33286 +f 33286 33285 33287 +f 33286 33287 33288 +f 33288 33287 33289 +f 33288 33289 33290 +f 33290 33289 33291 +f 33290 33291 33292 +f 33292 33291 33293 +f 33292 33293 33294 +f 33294 33293 33295 +f 33294 33295 33296 +f 33296 33295 33297 +f 33296 33297 33298 +f 33298 33297 33299 +f 33298 33299 33300 +f 33300 33299 33301 +f 33300 33301 33302 +f 33302 33301 33303 +f 33302 33303 33304 +f 33304 33303 33305 +f 33305 33303 33306 +f 33305 33306 33307 +f 33307 33306 33308 +f 33308 33306 33309 +f 33308 33309 33310 +f 33310 33309 33311 +f 33311 33309 33312 +f 33311 33312 33313 +f 33313 33312 33314 +f 33313 33314 33315 +f 33315 33314 33316 +f 33316 33314 33317 +f 33316 33317 33318 +f 33318 33317 33319 +f 33318 33319 33320 +f 33320 33319 33321 +f 33321 33319 33322 +f 33321 33322 33323 +f 33323 33322 33324 +f 33323 33324 33325 +f 33325 33324 33326 +f 33326 33324 33327 +f 33327 33324 33328 +f 33328 33324 33329 +f 33328 33329 33330 +f 33330 33329 33331 +f 33330 33331 33332 +f 33332 33331 33333 +f 33332 33333 33334 +f 33334 33333 33335 +f 33335 33333 33336 +f 33335 33336 33337 +f 33337 33336 33338 +f 33337 33338 33339 +f 33339 33338 33340 +f 33340 33338 33341 +f 33340 33341 33342 +f 33342 33341 33343 +f 33342 33343 33344 +f 33344 33343 33345 +f 33344 33345 33346 +f 33346 33345 33253 +f 33346 33253 33251 +f 33304 33347 33302 +f 33302 33347 33348 +f 33302 33348 33300 +f 33300 33348 33349 +f 33300 33349 33298 +f 33298 33349 33350 +f 33298 33350 33296 +f 33296 33350 33351 +f 33296 33351 33294 +f 33294 33351 33352 +f 33294 33352 33292 +f 33292 33352 33353 +f 33292 33353 33290 +f 33290 33353 33354 +f 33290 33354 33288 +f 33288 33354 33286 +f 33347 33355 33348 +f 33348 33355 33356 +f 33348 33356 33349 +f 33349 33356 33357 +f 33349 33357 33350 +f 33350 33357 33358 +f 33350 33358 33351 +f 33351 33358 33359 +f 33351 33359 33352 +f 33352 33359 33360 +f 33352 33360 33353 +f 33353 33360 33361 +f 33353 33361 33354 +f 33354 33361 33362 +f 33354 33362 33286 +f 33355 33363 33356 +f 33356 33363 33364 +f 33356 33364 33357 +f 33357 33364 33365 +f 33357 33365 33358 +f 33358 33365 33366 +f 33358 33366 33359 +f 33359 33366 33367 +f 33359 33367 33360 +f 33360 33367 33368 +f 33360 33368 33361 +f 33361 33368 33362 +f 33363 33369 33364 +f 33364 33369 33370 +f 33364 33370 33365 +f 33365 33370 33371 +f 33365 33371 33366 +f 33366 33371 33372 +f 33366 33372 33367 +f 33367 33372 33373 +f 33367 33373 33368 +f 33368 33373 33374 +f 33368 33374 33362 +f 33369 33375 33370 +f 33370 33375 33376 +f 33370 33376 33371 +f 33371 33376 33377 +f 33371 33377 33372 +f 33372 33377 33378 +f 33372 33378 33373 +f 33373 33378 33379 +f 33373 33379 33374 +f 33375 33380 33376 +f 33376 33380 33381 +f 33376 33381 33377 +f 33377 33381 33382 +f 33377 33382 33378 +f 33378 33382 33383 +f 33378 33383 33379 +f 33380 33384 33381 +f 33381 33384 33385 +f 33381 33385 33382 +f 33382 33385 33386 +f 33382 33386 33383 +f 33384 24021 33385 +f 33385 24021 33386 +f 33286 33387 33284 +f 33284 33387 33388 +f 33284 33388 33282 +f 33282 33388 33389 +f 33282 33389 33280 +f 33280 33389 33390 +f 33280 33390 33278 +f 33278 33390 33391 +f 33278 33391 33276 +f 33276 33391 33392 +f 33276 33392 33274 +f 33274 33392 33393 +f 33274 33393 33272 +f 33272 33393 33394 +f 33272 33394 33270 +f 33270 33394 33395 +f 33270 33395 33268 +f 33268 33395 33396 +f 33268 33396 33266 +f 33266 33396 33397 +f 33266 33397 33264 +f 33264 33397 33398 +f 33264 33398 33262 +f 33262 33398 33399 +f 33262 33399 33260 +f 33260 33399 33400 +f 33260 33400 33258 +f 33258 33400 33401 +f 33258 33401 33256 +f 33256 33401 33402 +f 33256 33402 33254 +f 33254 33402 33403 +f 33254 33403 33252 +f 33252 33403 33250 +f 33404 33405 33387 +f 33387 33405 33406 +f 33387 33406 33407 +f 33407 33406 33408 +f 33407 33408 33409 +f 33409 33408 33410 +f 33409 33410 33411 +f 33411 33410 33412 +f 33411 33412 33391 +f 33391 33412 33392 +f 33413 33414 33404 +f 33404 33414 33415 +f 33404 33415 33416 +f 33416 33415 33417 +f 33416 33417 33418 +f 33418 33417 33419 +f 33418 33419 33420 +f 33420 33419 33421 +f 33420 33421 33422 +f 33422 33421 33423 +f 33422 33423 33424 +f 33424 33423 33425 +f 33424 33425 33426 +f 33426 33425 33427 +f 33426 33427 33428 +f 33428 33427 33429 +f 33428 33429 33430 +f 33430 33429 33431 +f 33430 33431 33432 +f 33432 33431 33433 +f 33432 33433 33397 +f 33397 33433 33398 +f 33434 33435 33413 +f 33413 33435 33436 +f 33413 33436 33437 +f 33437 33436 33438 +f 33437 33438 33439 +f 33439 33438 33440 +f 33439 33440 33441 +f 33441 33440 33442 +f 33441 33442 33443 +f 33443 33442 33444 +f 33443 33444 33445 +f 33445 33444 33446 +f 33445 33446 33447 +f 33447 33446 33448 +f 33447 33448 33449 +f 33449 33448 33450 +f 33449 33450 33451 +f 33451 33450 33452 +f 33451 33452 33453 +f 33453 33452 33454 +f 33453 33454 33455 +f 33455 33454 33456 +f 33455 33456 33457 +f 33457 33456 33458 +f 33457 33458 33459 +f 33459 33458 33460 +f 33459 33460 33461 +f 33461 33460 33462 +f 33461 33462 33463 +f 33463 33462 33464 +f 33463 33464 33402 +f 33402 33464 33403 +f 33465 33466 33434 +f 33434 33466 33467 +f 33434 33467 33435 +f 33435 33467 33468 +f 33435 33468 33469 +f 33469 33468 33470 +f 33469 33470 33471 +f 33471 33470 33472 +f 33471 33472 33473 +f 33473 33472 33474 +f 33473 33474 33475 +f 33475 33474 33476 +f 33475 33476 33477 +f 33477 33476 33478 +f 33477 33478 33479 +f 33479 33478 33480 +f 33479 33480 33481 +f 33481 33480 33482 +f 33481 33482 33483 +f 33483 33482 33484 +f 33483 33484 33485 +f 33485 33484 33486 +f 33485 33486 33487 +f 33487 33486 33488 +f 33487 33488 33489 +f 33489 33488 33490 +f 33489 33490 33491 +f 33491 33490 33492 +f 33491 33492 33493 +f 33493 33492 33494 +f 33493 33494 33495 +f 33495 33494 33496 +f 33495 33496 33497 +f 33497 33496 33248 +f 33497 33248 33250 +f 33498 33499 33465 +f 33465 33499 33500 +f 33465 33500 33501 +f 33501 33500 33502 +f 33501 33502 33503 +f 33503 33502 33504 +f 33503 33504 33505 +f 33505 33504 33506 +f 33505 33506 33507 +f 33507 33506 33508 +f 33507 33508 33509 +f 33509 33508 33510 +f 33509 33510 33511 +f 33511 33510 33512 +f 33511 33512 33513 +f 33513 33512 33514 +f 33513 33514 33515 +f 33515 33514 33516 +f 33515 33516 33517 +f 33517 33516 33518 +f 33517 33518 33519 +f 33519 33518 33520 +f 33519 33520 33521 +f 33521 33520 33522 +f 33521 33522 33523 +f 33523 33522 33524 +f 33523 33524 33525 +f 33525 33524 33526 +f 33525 33526 33527 +f 33527 33526 33528 +f 33527 33528 33529 +f 33529 33528 33530 +f 33529 33530 33531 +f 33531 33530 33242 +f 33531 33242 33244 +f 33532 33533 33498 +f 33498 33533 33534 +f 33498 33534 33535 +f 33535 33534 33536 +f 33535 33536 33537 +f 33537 33536 33538 +f 33537 33538 33539 +f 33539 33538 33540 +f 33539 33540 33541 +f 33541 33540 33542 +f 33541 33542 33543 +f 33543 33542 33544 +f 33543 33544 33545 +f 33545 33544 33546 +f 33545 33546 33547 +f 33547 33546 33548 +f 33547 33548 33549 +f 33549 33548 33550 +f 33549 33550 33551 +f 33551 33550 33552 +f 33551 33552 33553 +f 33553 33552 33554 +f 33553 33554 33555 +f 33555 33554 33556 +f 33555 33556 33557 +f 33557 33556 33558 +f 33557 33558 33559 +f 33559 33558 33560 +f 33559 33560 33561 +f 33561 33560 33562 +f 33561 33562 33563 +f 33563 33562 33564 +f 33563 33564 33565 +f 33565 33564 33233 +f 33565 33233 33235 +f 33566 33567 33532 +f 33532 33567 33568 +f 33532 33568 33569 +f 33569 33568 33570 +f 33569 33570 33571 +f 33571 33570 33572 +f 33571 33572 33573 +f 33573 33572 33574 +f 33573 33574 33575 +f 33575 33574 33576 +f 33575 33576 33577 +f 33577 33576 33578 +f 33577 33578 33579 +f 33579 33578 33580 +f 33579 33580 33581 +f 33581 33580 33582 +f 33581 33582 33583 +f 33583 33582 33584 +f 33583 33584 33585 +f 33585 33584 33586 +f 33585 33586 33587 +f 33587 33586 33588 +f 33587 33588 33589 +f 33589 33588 33590 +f 33589 33590 33591 +f 33591 33590 33592 +f 33591 33592 33593 +f 33593 33592 33594 +f 33593 33594 33595 +f 33595 33594 33596 +f 33595 33596 33597 +f 33597 33596 33598 +f 33597 33598 33599 +f 33599 33598 33223 +f 33599 33223 33225 +f 33600 33601 33566 +f 33566 33601 33602 +f 33566 33602 33567 +f 33567 33602 33603 +f 33567 33603 33604 +f 33604 33603 33605 +f 33604 33605 33606 +f 33606 33605 33607 +f 33606 33607 33608 +f 33608 33607 33609 +f 33608 33609 33610 +f 33610 33609 33611 +f 33610 33611 33612 +f 33612 33611 33613 +f 33612 33613 33614 +f 33614 33613 33615 +f 33614 33615 33616 +f 33616 33615 33617 +f 33616 33617 33618 +f 33618 33617 33619 +f 33618 33619 33620 +f 33620 33619 33621 +f 33620 33621 33622 +f 33622 33621 33623 +f 33622 33623 33624 +f 33624 33623 33625 +f 33624 33625 33626 +f 33626 33625 33627 +f 33626 33627 33628 +f 33628 33627 33629 +f 33628 33629 33630 +f 33630 33629 33631 +f 33630 33631 33632 +f 33632 33631 33219 +f 33632 33219 33221 +f 33087 33089 33600 +f 33600 33089 33633 +f 33600 33633 33601 +f 33601 33633 33634 +f 33601 33634 33635 +f 33635 33634 33636 +f 33635 33636 33637 +f 33637 33636 33638 +f 33637 33638 33639 +f 33639 33638 33640 +f 33639 33640 33641 +f 33641 33640 33642 +f 33641 33642 33643 +f 33643 33642 33644 +f 33643 33644 33645 +f 33645 33644 33646 +f 33645 33646 33647 +f 33647 33646 33648 +f 33647 33648 33649 +f 33649 33648 33650 +f 33649 33650 33651 +f 33651 33650 33652 +f 33651 33652 33653 +f 33653 33652 33654 +f 33653 33654 33655 +f 33655 33654 33656 +f 33655 33656 33657 +f 33657 33656 33658 +f 33657 33658 33659 +f 33659 33658 33660 +f 33659 33660 33661 +f 33661 33660 33662 +f 33661 33662 33663 +f 33663 33662 33215 +f 33663 33215 33217 +f 33085 33087 33664 +f 33664 33087 33665 +f 33664 33665 33666 +f 33666 33665 33667 +f 33666 33667 33668 +f 33668 33667 33669 +f 33668 33669 33670 +f 33670 33669 33671 +f 33670 33671 33672 +f 33672 33671 33673 +f 33672 33673 33674 +f 33674 33673 33675 +f 33674 33675 33676 +f 33676 33675 33677 +f 33676 33677 33678 +f 33678 33677 33679 +f 33678 33679 33680 +f 33680 33679 33681 +f 33680 33681 33682 +f 33682 33681 33683 +f 33682 33683 33684 +f 33684 33683 33685 +f 33684 33685 33686 +f 33686 33685 33687 +f 33686 33687 33688 +f 33688 33687 33689 +f 33688 33689 33690 +f 33690 33689 33691 +f 33690 33691 33692 +f 33692 33691 33693 +f 33692 33693 33694 +f 33694 33693 33695 +f 33694 33695 33696 +f 33696 33695 33697 +f 33696 33697 33049 +f 33049 33697 33047 +f 33667 33665 33698 +f 33698 33665 33699 +f 33698 33699 33700 +f 33700 33699 33701 +f 33700 33701 33702 +f 33702 33701 33703 +f 33702 33703 33704 +f 33704 33703 33705 +f 33704 33705 33706 +f 33706 33705 33707 +f 33706 33707 33708 +f 33708 33707 33709 +f 33708 33709 33710 +f 33710 33709 33711 +f 33710 33711 33712 +f 33712 33711 33713 +f 33712 33713 33714 +f 33714 33713 33715 +f 33714 33715 33716 +f 33716 33715 33717 +f 33716 33717 33718 +f 33718 33717 33719 +f 33718 33719 33720 +f 33720 33719 33721 +f 33720 33721 33722 +f 33722 33721 33723 +f 33722 33723 33724 +f 33724 33723 33725 +f 33724 33725 33726 +f 33726 33725 33727 +f 33726 33727 33728 +f 33728 33727 33729 +f 33728 33729 33730 +f 33730 33729 33731 +f 33730 33731 33732 +f 33732 33731 33733 +f 33732 33733 33041 +f 33041 33733 33039 +f 33703 33701 33734 +f 33734 33701 33735 +f 33734 33735 33736 +f 33736 33735 33737 +f 33736 33737 33738 +f 33738 33737 33739 +f 33738 33739 33740 +f 33740 33739 33741 +f 33740 33741 33742 +f 33742 33741 33743 +f 33742 33743 33744 +f 33744 33743 33745 +f 33744 33745 33746 +f 33746 33745 33747 +f 33746 33747 33748 +f 33748 33747 33749 +f 33748 33749 33750 +f 33750 33749 33751 +f 33750 33751 33752 +f 33752 33751 33753 +f 33752 33753 33754 +f 33754 33753 33755 +f 33754 33755 33756 +f 33756 33755 33757 +f 33756 33757 33758 +f 33758 33757 33759 +f 33758 33759 33760 +f 33760 33759 33761 +f 33760 33761 33762 +f 33762 33761 33763 +f 33762 33763 33764 +f 33764 33763 33765 +f 33764 33765 33766 +f 33766 33765 33767 +f 33766 33767 33034 +f 33034 33767 33031 +f 33735 33768 33737 +f 33737 33768 33769 +f 33737 33769 33739 +f 33739 33769 33770 +f 33739 33770 33741 +f 33741 33770 33771 +f 33741 33771 33743 +f 33743 33771 33772 +f 33743 33772 33745 +f 33745 33772 33773 +f 33745 33773 33747 +f 33747 33773 33774 +f 33747 33774 33749 +f 33749 33774 33775 +f 33749 33775 33751 +f 33751 33775 33776 +f 33751 33776 33753 +f 33753 33776 33777 +f 33753 33777 33755 +f 33755 33777 33778 +f 33755 33778 33757 +f 33757 33778 33779 +f 33757 33779 33759 +f 33759 33779 33780 +f 33759 33780 33761 +f 33761 33780 33781 +f 33761 33781 33763 +f 33763 33781 33782 +f 33763 33782 33765 +f 33765 33782 33783 +f 33765 33783 33767 +f 33767 33783 33784 +f 33767 33784 33031 +f 33031 33784 33029 +f 33769 33768 33785 +f 33785 33768 33786 +f 33785 33786 33787 +f 33787 33786 33788 +f 33787 33788 33789 +f 33789 33788 33790 +f 33789 33790 33791 +f 33791 33790 33792 +f 33791 33792 33793 +f 33793 33792 33794 +f 33793 33794 33795 +f 33795 33794 33796 +f 33795 33796 33797 +f 33797 33796 33798 +f 33797 33798 33799 +f 33799 33798 33800 +f 33799 33800 33801 +f 33801 33800 33802 +f 33801 33802 33803 +f 33803 33802 33804 +f 33803 33804 33805 +f 33805 33804 33806 +f 33805 33806 33807 +f 33807 33806 33808 +f 33807 33808 33809 +f 33809 33808 33810 +f 33809 33810 33811 +f 33811 33810 33812 +f 33811 33812 33813 +f 33813 33812 33814 +f 33813 33814 33815 +f 33815 33814 32912 +f 33815 32912 32914 +f 33786 33816 33788 +f 33788 33816 33817 +f 33788 33817 33790 +f 33790 33817 33818 +f 33790 33818 33792 +f 33792 33818 33819 +f 33792 33819 33794 +f 33794 33819 33820 +f 33794 33820 33796 +f 33796 33820 33821 +f 33796 33821 33798 +f 33798 33821 33822 +f 33798 33822 33800 +f 33800 33822 33823 +f 33800 33823 33802 +f 33802 33823 33824 +f 33802 33824 33804 +f 33804 33824 33825 +f 33804 33825 33806 +f 33806 33825 33826 +f 33806 33826 33808 +f 33808 33826 33827 +f 33808 33827 33810 +f 33810 33827 33828 +f 33810 33828 33812 +f 33812 33828 33829 +f 33812 33829 33814 +f 33814 33829 32910 +f 33814 32910 32912 +f 33816 33830 33817 +f 33817 33830 33831 +f 33817 33831 33818 +f 33818 33831 33832 +f 33818 33832 33819 +f 33819 33832 33833 +f 33819 33833 33820 +f 33820 33833 33834 +f 33820 33834 33821 +f 33821 33834 33835 +f 33821 33835 33822 +f 33822 33835 33836 +f 33822 33836 33823 +f 33823 33836 33837 +f 33823 33837 33824 +f 33824 33837 33838 +f 33824 33838 33825 +f 33825 33838 33839 +f 33825 33839 33826 +f 33826 33839 33840 +f 33826 33840 33827 +f 33827 33840 33841 +f 33827 33841 33828 +f 33828 33841 33842 +f 33828 33842 33829 +f 33829 33842 32908 +f 33829 32908 32910 +f 33831 33830 33843 +f 33843 33830 33844 +f 33843 33844 33845 +f 33845 33844 33846 +f 33845 33846 33847 +f 33847 33846 33848 +f 33847 33848 33849 +f 33849 33848 33850 +f 33849 33850 33851 +f 33851 33850 33852 +f 33851 33852 33853 +f 33853 33852 33854 +f 33853 33854 33855 +f 33855 33854 33856 +f 33855 33856 33857 +f 33855 33857 33858 +f 33858 33857 33859 +f 33858 33859 33860 +f 33860 33859 33861 +f 33860 33861 33862 +f 33862 33861 33863 +f 33862 33863 33864 +f 32882 32884 33864 +f 33864 32884 33865 +f 33864 33865 33862 +f 33862 33865 33866 +f 33862 33866 33867 +f 33867 33866 33868 +f 33867 33868 33869 +f 33869 33868 33870 +f 33869 33870 33871 +f 33871 33870 33872 +f 33871 33872 33873 +f 33873 33872 33874 +f 33873 33874 33875 +f 33875 33874 33876 +f 33875 33876 33877 +f 33877 33876 33878 +f 33877 33878 33879 +f 33879 33878 33880 +f 33879 33880 33881 +f 33881 33880 33882 +f 33881 33882 33883 +f 33883 33882 33884 +f 33883 33884 33841 +f 33841 33884 33842 +f 32878 32880 33885 +f 33885 32880 33886 +f 33885 33886 33887 +f 33888 33889 33887 +f 33887 33889 33890 +f 33887 33890 33885 +f 33885 33890 32876 +f 33885 32876 32878 +f 33891 33892 33888 +f 33888 33892 33893 +f 33888 33893 33894 +f 33894 33893 32870 +f 33894 32870 32872 +f 33895 33896 33891 +f 33891 33896 33897 +f 33891 33897 33898 +f 33898 33897 32864 +f 33898 32864 32866 +f 33899 33900 33895 +f 33895 33900 33901 +f 33895 33901 33902 +f 33902 33901 32858 +f 33902 32858 32860 +f 32840 33903 33899 +f 33899 33903 33904 +f 33899 33904 33900 +f 33900 33904 32854 +f 33900 32854 32856 +f 33903 32840 33905 +f 33905 32840 32842 +f 33905 32842 32848 +f 32848 32842 32846 +f 33895 33902 33896 +f 33896 33902 32860 +f 33896 32860 32862 +f 33892 33891 33898 +f 33888 33894 33889 +f 33889 33894 32872 +f 33889 32872 32874 +f 33329 33324 33906 +f 33906 33324 33322 +f 33906 33322 33907 +f 33907 33322 33319 +f 33907 33319 33908 +f 33908 33319 33317 +f 33908 33317 33909 +f 33909 33317 33314 +f 33909 33314 33910 +f 33910 33314 33312 +f 33910 33312 33911 +f 33911 33312 33309 +f 33911 33309 33912 +f 33912 33309 33306 +f 33912 33306 33913 +f 33913 33306 33303 +f 33913 33303 33301 +f 33331 33329 33914 +f 33914 33329 33906 +f 33914 33906 33915 +f 33915 33906 33907 +f 33915 33907 33916 +f 33916 33907 33908 +f 33916 33908 33917 +f 33917 33908 33909 +f 33917 33909 33918 +f 33918 33909 33910 +f 33918 33910 33919 +f 33919 33910 33911 +f 33919 33911 33920 +f 33920 33911 33912 +f 33920 33912 33921 +f 33921 33912 33913 +f 33921 33913 33922 +f 33922 33913 33301 +f 33922 33301 33299 +f 33333 33331 33923 +f 33923 33331 33914 +f 33923 33914 33924 +f 33924 33914 33915 +f 33924 33915 33925 +f 33925 33915 33916 +f 33925 33916 33926 +f 33926 33916 33917 +f 33926 33917 33927 +f 33927 33917 33918 +f 33927 33918 33928 +f 33928 33918 33919 +f 33928 33919 33929 +f 33929 33919 33920 +f 33929 33920 33930 +f 33930 33920 33921 +f 33930 33921 33931 +f 33931 33921 33922 +f 33931 33922 33932 +f 33932 33922 33299 +f 33932 33299 33297 +f 33336 33333 33933 +f 33933 33333 33923 +f 33933 33923 33934 +f 33934 33923 33924 +f 33934 33924 33935 +f 33935 33924 33925 +f 33935 33925 33936 +f 33936 33925 33926 +f 33936 33926 33937 +f 33937 33926 33927 +f 33937 33927 33938 +f 33938 33927 33928 +f 33938 33928 33939 +f 33939 33928 33929 +f 33939 33929 33940 +f 33940 33929 33930 +f 33940 33930 33941 +f 33941 33930 33931 +f 33941 33931 33942 +f 33942 33931 33932 +f 33942 33932 33943 +f 33943 33932 33297 +f 33943 33297 33295 +f 33338 33336 33944 +f 33944 33336 33933 +f 33944 33933 33945 +f 33945 33933 33934 +f 33945 33934 33946 +f 33946 33934 33935 +f 33946 33935 33947 +f 33947 33935 33936 +f 33947 33936 33948 +f 33948 33936 33937 +f 33948 33937 33949 +f 33949 33937 33938 +f 33949 33938 33950 +f 33950 33938 33939 +f 33950 33939 33951 +f 33951 33939 33940 +f 33951 33940 33952 +f 33952 33940 33941 +f 33952 33941 33953 +f 33953 33941 33942 +f 33953 33942 33954 +f 33954 33942 33943 +f 33954 33943 33955 +f 33955 33943 33295 +f 33955 33295 33293 +f 33341 33338 33956 +f 33956 33338 33944 +f 33956 33944 33957 +f 33957 33944 33945 +f 33957 33945 33958 +f 33958 33945 33946 +f 33958 33946 33959 +f 33959 33946 33947 +f 33959 33947 33960 +f 33960 33947 33948 +f 33960 33948 33961 +f 33961 33948 33949 +f 33961 33949 33962 +f 33962 33949 33950 +f 33962 33950 33963 +f 33963 33950 33951 +f 33963 33951 33964 +f 33964 33951 33952 +f 33964 33952 33965 +f 33965 33952 33953 +f 33965 33953 33966 +f 33966 33953 33954 +f 33966 33954 33967 +f 33967 33954 33955 +f 33967 33955 33968 +f 33968 33955 33293 +f 33968 33293 33291 +f 33343 33341 33969 +f 33969 33341 33956 +f 33969 33956 33970 +f 33970 33956 33957 +f 33970 33957 33971 +f 33971 33957 33958 +f 33971 33958 33972 +f 33972 33958 33959 +f 33972 33959 33973 +f 33973 33959 33960 +f 33973 33960 33974 +f 33974 33960 33961 +f 33974 33961 33975 +f 33975 33961 33962 +f 33975 33962 33976 +f 33976 33962 33963 +f 33976 33963 33977 +f 33977 33963 33964 +f 33977 33964 33978 +f 33978 33964 33965 +f 33978 33965 33979 +f 33979 33965 33966 +f 33979 33966 33980 +f 33980 33966 33967 +f 33980 33967 33981 +f 33981 33967 33968 +f 33981 33968 33982 +f 33982 33968 33291 +f 33982 33291 33289 +f 33255 33253 33345 +f 33345 33343 33983 +f 33983 33343 33969 +f 33983 33969 33984 +f 33984 33969 33970 +f 33984 33970 33985 +f 33985 33970 33971 +f 33985 33971 33986 +f 33986 33971 33972 +f 33986 33972 33987 +f 33987 33972 33973 +f 33987 33973 33988 +f 33988 33973 33974 +f 33988 33974 33989 +f 33989 33974 33975 +f 33989 33975 33990 +f 33990 33975 33976 +f 33990 33976 33991 +f 33991 33976 33977 +f 33991 33977 33992 +f 33992 33977 33978 +f 33992 33978 33993 +f 33993 33978 33979 +f 33993 33979 33994 +f 33994 33979 33980 +f 33994 33980 33995 +f 33995 33980 33981 +f 33995 33981 33996 +f 33996 33981 33982 +f 33996 33982 33997 +f 33997 33982 33289 +f 33997 33289 33287 +f 33497 33250 33403 +f 33248 33496 33246 +f 33246 33496 33998 +f 33246 33998 33244 +f 33244 33998 33531 +f 33242 33530 33239 +f 33239 33530 33999 +f 33239 33999 33237 +f 33237 33999 34000 +f 33237 34000 33235 +f 33235 34000 33565 +f 33233 33564 33231 +f 33231 33564 34001 +f 33231 34001 33229 +f 33229 34001 34002 +f 33229 34002 33227 +f 33227 34002 34003 +f 33227 34003 33225 +f 33225 34003 33599 +f 33632 33221 33598 +f 33598 33221 33223 +f 33663 33217 33631 +f 33631 33217 33219 +f 33119 33121 33662 +f 33662 33121 33215 +f 33149 33151 34004 +f 34004 33151 33153 +f 34004 33153 34005 +f 34005 33153 33155 +f 34005 33155 34006 +f 34006 33155 33157 +f 34006 33157 34007 +f 34007 33157 33159 +f 34007 33159 34008 +f 34008 33159 33161 +f 34008 33161 34009 +f 34009 33161 33163 +f 34009 33163 34010 +f 34010 33163 33165 +f 34010 33165 34011 +f 34011 33165 33167 +f 34011 33167 34012 +f 34012 33167 33169 +f 34012 33169 34013 +f 34013 33169 33100 +f 34013 33100 33098 +f 33147 33149 34014 +f 34014 33149 34004 +f 34014 34004 34015 +f 34015 34004 34005 +f 34015 34005 34016 +f 34016 34005 34006 +f 34016 34006 34017 +f 34017 34006 34007 +f 34017 34007 34018 +f 34018 34007 34008 +f 34018 34008 34019 +f 34019 34008 34009 +f 34019 34009 34020 +f 34020 34009 34010 +f 34020 34010 34021 +f 34021 34010 34011 +f 34021 34011 34022 +f 34022 34011 34012 +f 34022 34012 34023 +f 34023 34012 34013 +f 34023 34013 34024 +f 34024 34013 33098 +f 34024 33098 33096 +f 33145 33147 34025 +f 34025 33147 34014 +f 34025 34014 34026 +f 34026 34014 34015 +f 34026 34015 34027 +f 34027 34015 34016 +f 34027 34016 34028 +f 34028 34016 34017 +f 34028 34017 34029 +f 34029 34017 34018 +f 34029 34018 34030 +f 34030 34018 34019 +f 34030 34019 34031 +f 34031 34019 34020 +f 34031 34020 34032 +f 34032 34020 34021 +f 34032 34021 34033 +f 34033 34021 34022 +f 34033 34022 34034 +f 34034 34022 34023 +f 34034 34023 34035 +f 34035 34023 34024 +f 34035 34024 34036 +f 34036 34024 33096 +f 34036 33096 33094 +f 33143 33145 34037 +f 34037 33145 34025 +f 34037 34025 34038 +f 34038 34025 34026 +f 34038 34026 34039 +f 34039 34026 34027 +f 34039 34027 34040 +f 34040 34027 34028 +f 34040 34028 34041 +f 34041 34028 34029 +f 34041 34029 34042 +f 34042 34029 34030 +f 34042 34030 34043 +f 34043 34030 34031 +f 34043 34031 34044 +f 34044 34031 34032 +f 34044 34032 34045 +f 34045 34032 34033 +f 34045 34033 34046 +f 34046 34033 34034 +f 34046 34034 34047 +f 34047 34034 34035 +f 34047 34035 34048 +f 34048 34035 34036 +f 34048 34036 34049 +f 34049 34036 33094 +f 34049 33094 33092 +f 33126 33125 33141 +f 33141 33143 34050 +f 34050 33143 34037 +f 34050 34037 34051 +f 34051 34037 34038 +f 34051 34038 34052 +f 34052 34038 34039 +f 34052 34039 34053 +f 34053 34039 34040 +f 34053 34040 34054 +f 34054 34040 34041 +f 34054 34041 34055 +f 34055 34041 34042 +f 34055 34042 34056 +f 34056 34042 34043 +f 34056 34043 34057 +f 34057 34043 34044 +f 34057 34044 34058 +f 34058 34044 34045 +f 34058 34045 34059 +f 34059 34045 34046 +f 34059 34046 34060 +f 34060 34046 34047 +f 34060 34047 34061 +f 34061 34047 34048 +f 34061 34048 34062 +f 34062 34048 34049 +f 34062 34049 34063 +f 34063 34049 33092 +f 34063 33092 33090 +f 33696 33049 33051 +f 33051 33053 34064 +f 34064 33053 33055 +f 34064 33055 34065 +f 34065 33055 33057 +f 34065 33057 34066 +f 34066 33057 33059 +f 34066 33059 34067 +f 34067 33059 33061 +f 34067 33061 34068 +f 34068 33061 33063 +f 34068 33063 34069 +f 34069 33063 33065 +f 34069 33065 34070 +f 34070 33065 33067 +f 34070 33067 34071 +f 34071 33067 33069 +f 34071 33069 34072 +f 34072 33069 33071 +f 34072 33071 34073 +f 34073 33071 33073 +f 34073 33073 34074 +f 34074 33073 33075 +f 34074 33075 34075 +f 34075 33075 33077 +f 34075 33077 34076 +f 34076 33077 33079 +f 34076 33079 34077 +f 34077 33079 33081 +f 34077 33081 34078 +f 34078 33081 33083 +f 34078 33083 33664 +f 33664 33083 33085 +f 33045 33047 34079 +f 34079 33047 33697 +f 34079 33697 34080 +f 34080 33697 33695 +f 34080 33695 34081 +f 34081 33695 33693 +f 34081 33693 34082 +f 34082 33693 33691 +f 34082 33691 34083 +f 34083 33691 33689 +f 34083 33689 34084 +f 34084 33689 33687 +f 34084 33687 34085 +f 34085 33687 33685 +f 34085 33685 34086 +f 34086 33685 33683 +f 34086 33683 34087 +f 34087 33683 33681 +f 34087 33681 34088 +f 34088 33681 33679 +f 34088 33679 34089 +f 34089 33679 33677 +f 34089 33677 34090 +f 34090 33677 33675 +f 34090 33675 34091 +f 34091 33675 33673 +f 34091 33673 34092 +f 34092 33673 33671 +f 34092 33671 34093 +f 34093 33671 33669 +f 34093 33669 33698 +f 33698 33669 33667 +f 33732 33041 33043 +f 33043 33045 34094 +f 34094 33045 34079 +f 34094 34079 34095 +f 34095 34079 34080 +f 34095 34080 34096 +f 34096 34080 34081 +f 34096 34081 34097 +f 34097 34081 34082 +f 34097 34082 34098 +f 34098 34082 34083 +f 34098 34083 34099 +f 34099 34083 34084 +f 34099 34084 34100 +f 34100 34084 34085 +f 34100 34085 34101 +f 34101 34085 34086 +f 34101 34086 34102 +f 34102 34086 34087 +f 34102 34087 34103 +f 34103 34087 34088 +f 34103 34088 34104 +f 34104 34088 34089 +f 34104 34089 34105 +f 34105 34089 34090 +f 34105 34090 34106 +f 34106 34090 34091 +f 34106 34091 34107 +f 34107 34091 34092 +f 34107 34092 34108 +f 34108 34092 34093 +f 34108 34093 33700 +f 33700 34093 33698 +f 33766 33034 33037 +f 33037 33039 34109 +f 34109 33039 33733 +f 34109 33733 34110 +f 34110 33733 33731 +f 34110 33731 34111 +f 34111 33731 33729 +f 34111 33729 34112 +f 34112 33729 33727 +f 34112 33727 34113 +f 34113 33727 33725 +f 34113 33725 34114 +f 34114 33725 33723 +f 34114 33723 34115 +f 34115 33723 33721 +f 34115 33721 34116 +f 34116 33721 33719 +f 34116 33719 34117 +f 34117 33719 33717 +f 34117 33717 34118 +f 34118 33717 33715 +f 34118 33715 34119 +f 34119 33715 33713 +f 34119 33713 34120 +f 34120 33713 33711 +f 34120 33711 34121 +f 34121 33711 33709 +f 34121 33709 34122 +f 34122 33709 33707 +f 34122 33707 34123 +f 34123 33707 33705 +f 34123 33705 33734 +f 33734 33705 33703 +f 32916 33029 34124 +f 34124 33029 33784 +f 34124 33784 34125 +f 34125 33784 33783 +f 34125 33783 34126 +f 34126 33783 33782 +f 34126 33782 34127 +f 34127 33782 33781 +f 34127 33781 34128 +f 34128 33781 33780 +f 34128 33780 34129 +f 34129 33780 33779 +f 34129 33779 34130 +f 34130 33779 33778 +f 34130 33778 34131 +f 34131 33778 33777 +f 34131 33777 34132 +f 34132 33777 33776 +f 34132 33776 34133 +f 34133 33776 33775 +f 34133 33775 34134 +f 34134 33775 33774 +f 34134 33774 34135 +f 34135 33774 33773 +f 34135 33773 34136 +f 34136 33773 33772 +f 34136 33772 34137 +f 34137 33772 33771 +f 34137 33771 34138 +f 34138 33771 33770 +f 34138 33770 33785 +f 33785 33770 33769 +f 32915 32913 33026 +f 33026 32913 34139 +f 33026 34139 33024 +f 33024 34139 34140 +f 33024 34140 33022 +f 33022 34140 34141 +f 33022 34141 33020 +f 33020 34141 34142 +f 33020 34142 33018 +f 33018 34142 34143 +f 33018 34143 33019 +f 33019 34143 33011 +f 32990 32992 34144 +f 34144 32992 32994 +f 34144 32994 34145 +f 34145 32994 32996 +f 34145 32996 34146 +f 34146 32996 32998 +f 34146 32998 34147 +f 34147 32998 33000 +f 34147 33000 34148 +f 34148 33000 33002 +f 34148 33002 34149 +f 34149 33002 33004 +f 34149 33004 34150 +f 34150 33004 33006 +f 34150 33006 34151 +f 34151 33006 33008 +f 34151 33008 34152 +f 34152 33008 32897 +f 34152 32897 32895 +f 32988 32990 34153 +f 34153 32990 34144 +f 34153 34144 34154 +f 34154 34144 34145 +f 34154 34145 34155 +f 34155 34145 34146 +f 34155 34146 34156 +f 34156 34146 34147 +f 34156 34147 34157 +f 34157 34147 34148 +f 34157 34148 34158 +f 34158 34148 34149 +f 34158 34149 34159 +f 34159 34149 34150 +f 34159 34150 34160 +f 34160 34150 34151 +f 34160 34151 34161 +f 34161 34151 34152 +f 34161 34152 34162 +f 34162 34152 32895 +f 34162 32895 32893 +f 32986 32988 34163 +f 34163 32988 34153 +f 34163 34153 34164 +f 34164 34153 34154 +f 34164 34154 34165 +f 34165 34154 34155 +f 34165 34155 34166 +f 34166 34155 34156 +f 34166 34156 34167 +f 34167 34156 34157 +f 34167 34157 34168 +f 34168 34157 34158 +f 34168 34158 34169 +f 34169 34158 34159 +f 34169 34159 34170 +f 34170 34159 34160 +f 34170 34160 34171 +f 34171 34160 34161 +f 34171 34161 34172 +f 34172 34161 34162 +f 34172 34162 34173 +f 34173 34162 32893 +f 34173 32893 32891 +f 32971 32970 32984 +f 32984 32986 34174 +f 34174 32986 34163 +f 34174 34163 34175 +f 34175 34163 34164 +f 34175 34164 34176 +f 34176 34164 34165 +f 34176 34165 34177 +f 34177 34165 34166 +f 34177 34166 34178 +f 34178 34166 34167 +f 34178 34167 34179 +f 34179 34167 34168 +f 34179 34168 34180 +f 34180 34168 34169 +f 34180 34169 34181 +f 34181 34169 34170 +f 34181 34170 34182 +f 34182 34170 34171 +f 34182 34171 34183 +f 34183 34171 34172 +f 34183 34172 34184 +f 34184 34172 34173 +f 34184 34173 34185 +f 34185 34173 32891 +f 34185 32891 32889 +f 32842 32844 32846 +f 33257 33255 33983 +f 33983 33255 33345 +f 33257 33983 33984 +f 33495 33497 33464 +f 33464 33497 33403 +f 33496 33494 33998 +f 33998 33494 34186 +f 33998 34186 33531 +f 33531 34186 33529 +f 33530 33528 33999 +f 33999 33528 34187 +f 33999 34187 34000 +f 34000 34187 34188 +f 34000 34188 33565 +f 33565 34188 33563 +f 33564 33562 34001 +f 34001 33562 34189 +f 34001 34189 34002 +f 34002 34189 34190 +f 34002 34190 34003 +f 34003 34190 34191 +f 34003 34191 33599 +f 33599 34191 33597 +f 33630 33632 33596 +f 33596 33632 33598 +f 33661 33663 33629 +f 33629 33663 33631 +f 33117 33119 33660 +f 33660 33119 33662 +f 33127 33126 34050 +f 34050 33126 33141 +f 33127 34050 34051 +f 33694 33696 34064 +f 34064 33696 33051 +f 33694 34064 34065 +f 33730 33732 34094 +f 34094 33732 33043 +f 33730 34094 34095 +f 33764 33766 34109 +f 34109 33766 33037 +f 33764 34109 34110 +f 33815 32914 34124 +f 34124 32914 32916 +f 33815 34124 34125 +f 32913 32911 34139 +f 34139 32911 34192 +f 34139 34192 34140 +f 34140 34192 34193 +f 34140 34193 34141 +f 34141 34193 34194 +f 34141 34194 34142 +f 34142 34194 34195 +f 34142 34195 34143 +f 34143 34195 33012 +f 34143 33012 33011 +f 32972 32971 34174 +f 34174 32971 32984 +f 32972 34174 34175 +f 33905 32848 32850 +f 33259 33257 33984 +f 33259 33984 33985 +f 33463 33402 33401 +f 33493 33495 33462 +f 33462 33495 33464 +f 33494 33492 34186 +f 34186 33492 34196 +f 34186 34196 33529 +f 33529 34196 33527 +f 33528 33526 34187 +f 34187 33526 34197 +f 34187 34197 34188 +f 34188 34197 34198 +f 34188 34198 33563 +f 33563 34198 33561 +f 33562 33560 34189 +f 34189 33560 34199 +f 34189 34199 34190 +f 34190 34199 34200 +f 34190 34200 34191 +f 34191 34200 34201 +f 34191 34201 33597 +f 33597 34201 33595 +f 33628 33630 33594 +f 33594 33630 33596 +f 33659 33661 33627 +f 33627 33661 33629 +f 33115 33117 33658 +f 33658 33117 33660 +f 33128 33127 34051 +f 33128 34051 34052 +f 33692 33694 34065 +f 33692 34065 34066 +f 33728 33730 34095 +f 33728 34095 34096 +f 33762 33764 34110 +f 33762 34110 34111 +f 33813 33815 34125 +f 33813 34125 34126 +f 32911 32909 34192 +f 34192 32909 34202 +f 34192 34202 34193 +f 34193 34202 34203 +f 34193 34203 34194 +f 34194 34203 34204 +f 34194 34204 34195 +f 34195 34204 33013 +f 34195 33013 33012 +f 32973 32972 34175 +f 32973 34175 34176 +f 33903 33905 32850 +f 33903 32850 32852 +f 33261 33259 33985 +f 33261 33985 33986 +f 33463 33401 34205 +f 34205 33401 33400 +f 34205 33400 34206 +f 34206 33400 33399 +f 34206 33399 34207 +f 34207 33399 33398 +f 34207 33398 33433 +f 33491 33493 33460 +f 33460 33493 33462 +f 33492 33490 34196 +f 34196 33490 34208 +f 34196 34208 33527 +f 33527 34208 33525 +f 33526 33524 34197 +f 34197 33524 34209 +f 34197 34209 34198 +f 34198 34209 34210 +f 34198 34210 33561 +f 33561 34210 33559 +f 33560 33558 34199 +f 34199 33558 34211 +f 34199 34211 34200 +f 34200 34211 34212 +f 34200 34212 34201 +f 34201 34212 34213 +f 34201 34213 33595 +f 33595 34213 33593 +f 33626 33628 33592 +f 33592 33628 33594 +f 33657 33659 33625 +f 33625 33659 33627 +f 33113 33115 33656 +f 33656 33115 33658 +f 33129 33128 34052 +f 33129 34052 34053 +f 33690 33692 34066 +f 33690 34066 34067 +f 33726 33728 34096 +f 33726 34096 34097 +f 33760 33762 34111 +f 33760 34111 34112 +f 33811 33813 34126 +f 33811 34126 34127 +f 32909 32907 34202 +f 34202 32907 34214 +f 34202 34214 34203 +f 34203 34214 34215 +f 34203 34215 34204 +f 34204 34215 33014 +f 34204 33014 33013 +f 32974 32973 34176 +f 32974 34176 34177 +f 33904 33903 32852 +f 33904 32852 32854 +f 33263 33261 33986 +f 33263 33986 33987 +f 33463 34205 33461 +f 33461 34205 34216 +f 33461 34216 33459 +f 33459 34216 34217 +f 33459 34217 33457 +f 33457 34217 34218 +f 33457 34218 33455 +f 33455 34218 34219 +f 33455 34219 33453 +f 33453 34219 34220 +f 33453 34220 33451 +f 33451 34220 34221 +f 33451 34221 33449 +f 33449 34221 34222 +f 33449 34222 33447 +f 33447 34222 34223 +f 33447 34223 33445 +f 33445 34223 34224 +f 33445 34224 33443 +f 33443 34224 34225 +f 33443 34225 33441 +f 33441 34225 34226 +f 33441 34226 33439 +f 33439 34226 34227 +f 33439 34227 33437 +f 33437 34227 33413 +f 34216 34205 34206 +f 33489 33491 33458 +f 33458 33491 33460 +f 33490 33488 34208 +f 34208 33488 34228 +f 34208 34228 33525 +f 33525 34228 33523 +f 33524 33522 34209 +f 34209 33522 34229 +f 34209 34229 34210 +f 34210 34229 34230 +f 34210 34230 33559 +f 33559 34230 33557 +f 33558 33556 34211 +f 34211 33556 34231 +f 34211 34231 34212 +f 34212 34231 34232 +f 34212 34232 34213 +f 34213 34232 34233 +f 34213 34233 33593 +f 33593 34233 33591 +f 33624 33626 33590 +f 33590 33626 33592 +f 33655 33657 33623 +f 33623 33657 33625 +f 33111 33113 33654 +f 33654 33113 33656 +f 33130 33129 34053 +f 33130 34053 34054 +f 33688 33690 34067 +f 33688 34067 34068 +f 33724 33726 34097 +f 33724 34097 34098 +f 33758 33760 34112 +f 33758 34112 34113 +f 33809 33811 34127 +f 33809 34127 34128 +f 32906 32908 33842 +f 32907 32905 34214 +f 34214 32905 34234 +f 34214 34234 34215 +f 34215 34234 33015 +f 34215 33015 33014 +f 32975 32974 34177 +f 32975 34177 34178 +f 33265 33263 33987 +f 33265 33987 33988 +f 34216 34206 34235 +f 34235 34206 34207 +f 34235 34207 34236 +f 34236 34207 33433 +f 34236 33433 33431 +f 33487 33489 33456 +f 33456 33489 33458 +f 33488 33486 34228 +f 34228 33486 34237 +f 34228 34237 33523 +f 33523 34237 33521 +f 33522 33520 34229 +f 34229 33520 34238 +f 34229 34238 34230 +f 34230 34238 34239 +f 34230 34239 33557 +f 33557 34239 33555 +f 33556 33554 34231 +f 34231 33554 34240 +f 34231 34240 34232 +f 34232 34240 34241 +f 34232 34241 34233 +f 34233 34241 34242 +f 34233 34242 33591 +f 33591 34242 33589 +f 33622 33624 33588 +f 33588 33624 33590 +f 33653 33655 33621 +f 33621 33655 33623 +f 33109 33111 33652 +f 33652 33111 33654 +f 33131 33130 34054 +f 33131 34054 34055 +f 33686 33688 34068 +f 33686 34068 34069 +f 33722 33724 34098 +f 33722 34098 34099 +f 33756 33758 34113 +f 33756 34113 34114 +f 33807 33809 34128 +f 33807 34128 34129 +f 32904 32906 33884 +f 33884 32906 33842 +f 33016 33015 34234 +f 33016 34234 32903 +f 32903 34234 32905 +f 32976 32975 34178 +f 32976 34178 34179 +f 33901 33900 32856 +f 33901 32856 32858 +f 33267 33265 33988 +f 33267 33988 33989 +f 34216 34235 34217 +f 34217 34235 34243 +f 34217 34243 34218 +f 34218 34243 34244 +f 34218 34244 34219 +f 34219 34244 34245 +f 34219 34245 34220 +f 34220 34245 34246 +f 34220 34246 34221 +f 34221 34246 34247 +f 34221 34247 34222 +f 34222 34247 34248 +f 34222 34248 34223 +f 34223 34248 34249 +f 34223 34249 34224 +f 34224 34249 34250 +f 34224 34250 34225 +f 34225 34250 34251 +f 34225 34251 34226 +f 34226 34251 34252 +f 34226 34252 34227 +f 34227 34252 33413 +f 34243 34235 34236 +f 33485 33487 33454 +f 33454 33487 33456 +f 33486 33484 34237 +f 34237 33484 34253 +f 34237 34253 33521 +f 33521 34253 33519 +f 33520 33518 34238 +f 34238 33518 34254 +f 34238 34254 34239 +f 34239 34254 34255 +f 34239 34255 33555 +f 33555 34255 33553 +f 33554 33552 34240 +f 34240 33552 34256 +f 34240 34256 34241 +f 34241 34256 34257 +f 34241 34257 34242 +f 34242 34257 34258 +f 34242 34258 33589 +f 33589 34258 33587 +f 33620 33622 33586 +f 33586 33622 33588 +f 33651 33653 33619 +f 33619 33653 33621 +f 33107 33109 33650 +f 33650 33109 33652 +f 33132 33131 34055 +f 33132 34055 34056 +f 33684 33686 34069 +f 33684 34069 34070 +f 33720 33722 34099 +f 33720 34099 34100 +f 33754 33756 34114 +f 33754 34114 34115 +f 33805 33807 34129 +f 33805 34129 34130 +f 33883 33841 33840 +f 32902 32904 33882 +f 33882 32904 33884 +f 32901 33016 32903 +f 32977 32976 34179 +f 32977 34179 34180 +f 33269 33267 33989 +f 33269 33989 33990 +f 33432 33397 33396 +f 34243 34236 34259 +f 34259 34236 33431 +f 34259 33431 33429 +f 33483 33485 33452 +f 33452 33485 33454 +f 33484 33482 34253 +f 34253 33482 34260 +f 34253 34260 33519 +f 33519 34260 33517 +f 33518 33516 34254 +f 34254 33516 34261 +f 34254 34261 34255 +f 34255 34261 34262 +f 34255 34262 33553 +f 33553 34262 33551 +f 33552 33550 34256 +f 34256 33550 34263 +f 34256 34263 34257 +f 34257 34263 34264 +f 34257 34264 34258 +f 34258 34264 34265 +f 34258 34265 33587 +f 33587 34265 33585 +f 33618 33620 33584 +f 33584 33620 33586 +f 33649 33651 33617 +f 33617 33651 33619 +f 33105 33107 33648 +f 33648 33107 33650 +f 33133 33132 34056 +f 33133 34056 34057 +f 33682 33684 34070 +f 33682 34070 34071 +f 33718 33720 34100 +f 33718 34100 34101 +f 33752 33754 34115 +f 33752 34115 34116 +f 33803 33805 34130 +f 33803 34130 34131 +f 33883 33840 34266 +f 34266 33840 33839 +f 34266 33839 34267 +f 34267 33839 33838 +f 34267 33838 34268 +f 34268 33838 33837 +f 34268 33837 34269 +f 34269 33837 33836 +f 34269 33836 34270 +f 34270 33836 33835 +f 34270 33835 34271 +f 34271 33835 33834 +f 34271 33834 34272 +f 34272 33834 33833 +f 34272 33833 34273 +f 34273 33833 33832 +f 34273 33832 33843 +f 33843 33832 33831 +f 32900 32902 33880 +f 33880 32902 33882 +f 32978 32977 34180 +f 32978 34180 34181 +f 33271 33269 33990 +f 33271 33990 33991 +f 33432 33396 34274 +f 34274 33396 33395 +f 34274 33395 34275 +f 34275 33395 33394 +f 34275 33394 34276 +f 34276 33394 33393 +f 34276 33393 34277 +f 34277 33393 33392 +f 34277 33392 33412 +f 34243 34259 34244 +f 34244 34259 34278 +f 34244 34278 34245 +f 34245 34278 34279 +f 34245 34279 34246 +f 34246 34279 34280 +f 34246 34280 34247 +f 34247 34280 34281 +f 34247 34281 34248 +f 34248 34281 34282 +f 34248 34282 34249 +f 34249 34282 34283 +f 34249 34283 34250 +f 34250 34283 34284 +f 34250 34284 34251 +f 34251 34284 33414 +f 34251 33414 34252 +f 34252 33414 33413 +f 34278 34259 33429 +f 33481 33483 33450 +f 33450 33483 33452 +f 33482 33480 34260 +f 34260 33480 34285 +f 34260 34285 33517 +f 33517 34285 33515 +f 33516 33514 34261 +f 34261 33514 34286 +f 34261 34286 34262 +f 34262 34286 34287 +f 34262 34287 33551 +f 33551 34287 33549 +f 33550 33548 34263 +f 34263 33548 34288 +f 34263 34288 34264 +f 34264 34288 34289 +f 34264 34289 34265 +f 34265 34289 34290 +f 34265 34290 33585 +f 33585 34290 33583 +f 33616 33618 33582 +f 33582 33618 33584 +f 33647 33649 33615 +f 33615 33649 33617 +f 33103 33105 33646 +f 33646 33105 33648 +f 33134 33133 34057 +f 33134 34057 34058 +f 33680 33682 34071 +f 33680 34071 34072 +f 33716 33718 34101 +f 33716 34101 34102 +f 33750 33752 34116 +f 33750 34116 34117 +f 33801 33803 34131 +f 33801 34131 34132 +f 33883 34266 33881 +f 33881 34266 34291 +f 33881 34291 33879 +f 33879 34291 34292 +f 33879 34292 33877 +f 33877 34292 34293 +f 33877 34293 33875 +f 33875 34293 34294 +f 33875 34294 33873 +f 33873 34294 34295 +f 33873 34295 33871 +f 33871 34295 34296 +f 33871 34296 33869 +f 33869 34296 34297 +f 33869 34297 33867 +f 33867 34297 33860 +f 33867 33860 33862 +f 34291 34266 34267 +f 32898 32900 33878 +f 33878 32900 33880 +f 32979 32978 34181 +f 32979 34181 34182 +f 33897 33896 32862 +f 33897 32862 32864 +f 33273 33271 33991 +f 33273 33991 33992 +f 33432 34274 33430 +f 33430 34274 34298 +f 33430 34298 33428 +f 33428 34298 34299 +f 33428 34299 33426 +f 33426 34299 34300 +f 33426 34300 33424 +f 33424 34300 34301 +f 33424 34301 33422 +f 33422 34301 34302 +f 33422 34302 33420 +f 33420 34302 34303 +f 33420 34303 33418 +f 33418 34303 34304 +f 33418 34304 33416 +f 33416 34304 33404 +f 34298 34274 34275 +f 34279 34278 33427 +f 33427 34278 33429 +f 33479 33481 33448 +f 33448 33481 33450 +f 33480 33478 34285 +f 34285 33478 34305 +f 34285 34305 33515 +f 33515 34305 33513 +f 33514 33512 34286 +f 34286 33512 34306 +f 34286 34306 34287 +f 34287 34306 34307 +f 34287 34307 33549 +f 33549 34307 33547 +f 33548 33546 34288 +f 34288 33546 34308 +f 34288 34308 34289 +f 34289 34308 34309 +f 34289 34309 34290 +f 34290 34309 34310 +f 34290 34310 33583 +f 33583 34310 33581 +f 33614 33616 33580 +f 33580 33616 33582 +f 33645 33647 33613 +f 33613 33647 33615 +f 33101 33103 33644 +f 33644 33103 33646 +f 33135 33134 34058 +f 33135 34058 34059 +f 33678 33680 34072 +f 33678 34072 34073 +f 33714 33716 34102 +f 33714 34102 34103 +f 33748 33750 34117 +f 33748 34117 34118 +f 33799 33801 34132 +f 33799 34132 34133 +f 34291 34267 34311 +f 34311 34267 34268 +f 34311 34268 34312 +f 34312 34268 34269 +f 34312 34269 34313 +f 34313 34269 34270 +f 34313 34270 34314 +f 34314 34270 34271 +f 34314 34271 34315 +f 34315 34271 34272 +f 34315 34272 34316 +f 34316 34272 34273 +f 34316 34273 33845 +f 33845 34273 33843 +f 32896 32898 33876 +f 33876 32898 33878 +f 32980 32979 34182 +f 32980 34182 34183 +f 33275 33273 33992 +f 33275 33992 33993 +f 34298 34275 34317 +f 34317 34275 34276 +f 34317 34276 34318 +f 34318 34276 34277 +f 34318 34277 34319 +f 34319 34277 33412 +f 34319 33412 33410 +f 34280 34279 33425 +f 33425 34279 33427 +f 33477 33479 33446 +f 33446 33479 33448 +f 33478 33476 34305 +f 34305 33476 34320 +f 34305 34320 33513 +f 33513 34320 33511 +f 33512 33510 34306 +f 34306 33510 34321 +f 34306 34321 34307 +f 34307 34321 34322 +f 34307 34322 33547 +f 33547 34322 33545 +f 33546 33544 34308 +f 34308 33544 34323 +f 34308 34323 34309 +f 34309 34323 34324 +f 34309 34324 34310 +f 34310 34324 34325 +f 34310 34325 33581 +f 33581 34325 33579 +f 33612 33614 33578 +f 33578 33614 33580 +f 33643 33645 33611 +f 33611 33645 33613 +f 33099 33101 33642 +f 33642 33101 33644 +f 33136 33135 34059 +f 33136 34059 34060 +f 33676 33678 34073 +f 33676 34073 34074 +f 33712 33714 34103 +f 33712 34103 34104 +f 33746 33748 34118 +f 33746 34118 34119 +f 33797 33799 34133 +f 33797 34133 34134 +f 34291 34311 34292 +f 34292 34311 34326 +f 34292 34326 34293 +f 34293 34326 34327 +f 34293 34327 34294 +f 34294 34327 34328 +f 34294 34328 34295 +f 34295 34328 34329 +f 34295 34329 34296 +f 34296 34329 34330 +f 34296 34330 34297 +f 34297 34330 33858 +f 34297 33858 33860 +f 34326 34311 34312 +f 32894 32896 33874 +f 33874 32896 33876 +f 32981 32980 34183 +f 32981 34183 34184 +f 33892 33898 32866 +f 33892 32866 32868 +f 33277 33275 33993 +f 33277 33993 33994 +f 34298 34317 34299 +f 34299 34317 34331 +f 34299 34331 34300 +f 34300 34331 34332 +f 34300 34332 34301 +f 34301 34332 34333 +f 34301 34333 34302 +f 34302 34333 34334 +f 34302 34334 34303 +f 34303 34334 34335 +f 34303 34335 34304 +f 34304 34335 33404 +f 34331 34317 34318 +f 34281 34280 33423 +f 33423 34280 33425 +f 33475 33477 33444 +f 33444 33477 33446 +f 33476 33474 34320 +f 34320 33474 34336 +f 34320 34336 33511 +f 33511 34336 33509 +f 33510 33508 34321 +f 34321 33508 34337 +f 34321 34337 34322 +f 34322 34337 34338 +f 34322 34338 33545 +f 33545 34338 33543 +f 33544 33542 34323 +f 34323 33542 34339 +f 34323 34339 34324 +f 34324 34339 34340 +f 34324 34340 34325 +f 34325 34340 34341 +f 34325 34341 33579 +f 33579 34341 33577 +f 33610 33612 33576 +f 33576 33612 33578 +f 33641 33643 33609 +f 33609 33643 33611 +f 33097 33099 33640 +f 33640 33099 33642 +f 33137 33136 34060 +f 33137 34060 34061 +f 33674 33676 34074 +f 33674 34074 34075 +f 33710 33712 34104 +f 33710 34104 34105 +f 33744 33746 34119 +f 33744 34119 34120 +f 33795 33797 34134 +f 33795 34134 34135 +f 34326 34312 34342 +f 34342 34312 34313 +f 34342 34313 34343 +f 34343 34313 34314 +f 34343 34314 34344 +f 34344 34314 34315 +f 34344 34315 34345 +f 34345 34315 34316 +f 34345 34316 33847 +f 33847 34316 33845 +f 32892 32894 33872 +f 33872 32894 33874 +f 32982 32981 34184 +f 32982 34184 34185 +f 33893 33892 32868 +f 33893 32868 32870 +f 33279 33277 33994 +f 33279 33994 33995 +f 34331 34318 34346 +f 34346 34318 34319 +f 34346 34319 34347 +f 34347 34319 33410 +f 34347 33410 33408 +f 34282 34281 33421 +f 33421 34281 33423 +f 33473 33475 33442 +f 33442 33475 33444 +f 33474 33472 34336 +f 34336 33472 34348 +f 34336 34348 33509 +f 33509 34348 33507 +f 33508 33506 34337 +f 34337 33506 34349 +f 34337 34349 34338 +f 34338 34349 34350 +f 34338 34350 33543 +f 33543 34350 33541 +f 33542 33540 34339 +f 34339 33540 34351 +f 34339 34351 34340 +f 34340 34351 34352 +f 34340 34352 34341 +f 34341 34352 34353 +f 34341 34353 33577 +f 33577 34353 33575 +f 33608 33610 33574 +f 33574 33610 33576 +f 33639 33641 33607 +f 33607 33641 33609 +f 33095 33097 33638 +f 33638 33097 33640 +f 33138 33137 34061 +f 33138 34061 34062 +f 33672 33674 34075 +f 33672 34075 34076 +f 33708 33710 34105 +f 33708 34105 34106 +f 33742 33744 34120 +f 33742 34120 34121 +f 33793 33795 34135 +f 33793 34135 34136 +f 34326 34342 34327 +f 34327 34342 34354 +f 34327 34354 34328 +f 34328 34354 34355 +f 34328 34355 34329 +f 34329 34355 34356 +f 34329 34356 34330 +f 34330 34356 33855 +f 34330 33855 33858 +f 34354 34342 34343 +f 32890 32892 33870 +f 33870 32892 33872 +f 32983 32982 34185 +f 32983 34185 32889 +f 33281 33279 33995 +f 33281 33995 33996 +f 33411 33391 33390 +f 34331 34346 34332 +f 34332 34346 34357 +f 34332 34357 34333 +f 34333 34357 34358 +f 34333 34358 34334 +f 34334 34358 34359 +f 34334 34359 34335 +f 34335 34359 33404 +f 34357 34346 34347 +f 34283 34282 33419 +f 33419 34282 33421 +f 33471 33473 33440 +f 33440 33473 33442 +f 33472 33470 34348 +f 34348 33470 34360 +f 34348 34360 33507 +f 33507 34360 33505 +f 33506 33504 34349 +f 34349 33504 34361 +f 34349 34361 34350 +f 34350 34361 34362 +f 34350 34362 33541 +f 33541 34362 33539 +f 33540 33538 34351 +f 34351 33538 34363 +f 34351 34363 34352 +f 34352 34363 34364 +f 34352 34364 34353 +f 34353 34364 34365 +f 34353 34365 33575 +f 33575 34365 33573 +f 33606 33608 33572 +f 33572 33608 33574 +f 33637 33639 33605 +f 33605 33639 33607 +f 33093 33095 33636 +f 33636 33095 33638 +f 33139 33138 34062 +f 33139 34062 34063 +f 33670 33672 34076 +f 33670 34076 34077 +f 33706 33708 34106 +f 33706 34106 34107 +f 33740 33742 34121 +f 33740 34121 34122 +f 33791 33793 34136 +f 33791 34136 34137 +f 34354 34343 34366 +f 34366 34343 34344 +f 34366 34344 34367 +f 34367 34344 34345 +f 34367 34345 33849 +f 33849 34345 33847 +f 32888 32890 33868 +f 33868 32890 33870 +f 32887 32983 32889 +f 33283 33281 33996 +f 33283 33996 33997 +f 33411 33390 34368 +f 34368 33390 33389 +f 34368 33389 34369 +f 34369 33389 33388 +f 34369 33388 33387 +f 34357 34347 34370 +f 34370 34347 33408 +f 34370 33408 33406 +f 34284 34283 33417 +f 33417 34283 33419 +f 33469 33471 33438 +f 33438 33471 33440 +f 33470 33468 34360 +f 34360 33468 34371 +f 34360 34371 33505 +f 33505 34371 33503 +f 33504 33502 34361 +f 34361 33502 34372 +f 34361 34372 34362 +f 34362 34372 34373 +f 34362 34373 33539 +f 33539 34373 33537 +f 33538 33536 34363 +f 34363 33536 34374 +f 34363 34374 34364 +f 34364 34374 34375 +f 34364 34375 34365 +f 34365 34375 34376 +f 34365 34376 33573 +f 33573 34376 33571 +f 33604 33606 33570 +f 33570 33606 33572 +f 33635 33637 33603 +f 33603 33637 33605 +f 33091 33093 33634 +f 33634 33093 33636 +f 33140 33139 34063 +f 33140 34063 33090 +f 33668 33670 34077 +f 33668 34077 34078 +f 33704 33706 34107 +f 33704 34107 34108 +f 33738 33740 34122 +f 33738 34122 34123 +f 33789 33791 34137 +f 33789 34137 34138 +f 34354 34366 34355 +f 34355 34366 34377 +f 34355 34377 34356 +f 34356 34377 33853 +f 34356 33853 33855 +f 34377 34366 34367 +f 32886 32888 33866 +f 33866 32888 33868 +f 33890 33889 32874 +f 33890 32874 32876 +f 33285 33283 33997 +f 33285 33997 33287 +f 33411 34368 33409 +f 33409 34368 34378 +f 33409 34378 33407 +f 33407 34378 33387 +f 34378 34368 34369 +f 34357 34370 34358 +f 34358 34370 33405 +f 34358 33405 34359 +f 34359 33405 33404 +f 33405 34370 33406 +f 33414 34284 33415 +f 33415 34284 33417 +f 33435 33469 33436 +f 33436 33469 33438 +f 33468 33467 34371 +f 34371 33467 33466 +f 34371 33466 33503 +f 33503 33466 33501 +f 33502 33500 34372 +f 34372 33500 33499 +f 34372 33499 34373 +f 34373 33499 34379 +f 34373 34379 33537 +f 33537 34379 33535 +f 33536 33534 34374 +f 34374 33534 33533 +f 34374 33533 34375 +f 34375 33533 34380 +f 34375 34380 34376 +f 34376 34380 34381 +f 34376 34381 33571 +f 33571 34381 33569 +f 33567 33604 33568 +f 33568 33604 33570 +f 33601 33635 33602 +f 33602 33635 33603 +f 33089 33091 33633 +f 33633 33091 33634 +f 33088 33140 33090 +f 33666 33668 34078 +f 33666 34078 33664 +f 33702 33704 34108 +f 33702 34108 33700 +f 33736 33738 34123 +f 33736 34123 33734 +f 33787 33789 34138 +f 33787 34138 33785 +f 33849 33851 34367 +f 34367 33851 34377 +f 33851 33853 34377 +f 32884 32886 33865 +f 33865 32886 33866 +f 33387 34378 34369 +f 33465 33501 33466 +f 33498 33535 34379 +f 34379 33499 33498 +f 34381 34380 33532 +f 33532 34380 33533 +f 33532 33569 34381 +f 33325 33326 34382 +f 34382 33326 34383 +f 34382 34383 34384 +f 34384 34383 34385 +f 34384 34385 34386 +f 34386 34385 34387 +f 34386 34387 34388 +f 34388 34387 34389 +f 34388 34389 34390 +f 34390 34389 34391 +f 34390 34391 34392 +f 34392 34391 34393 +f 34392 34393 34394 +f 34394 34393 34395 +f 34394 34395 34396 +f 34396 34395 34397 +f 34396 34397 34398 +f 34398 34397 34399 +f 34398 34399 34400 +f 34400 34399 34401 +f 34400 34401 34402 +f 34402 34401 34403 +f 34402 34403 34404 +f 34404 34403 34405 +f 34404 34405 34406 +f 34406 34405 34407 +f 34406 34407 34408 +f 34408 34407 34409 +f 34408 34409 34410 +f 34410 34409 34411 +f 34410 34411 34412 +f 34412 34411 34413 +f 34412 34413 34414 +f 34414 34413 34415 +f 34414 34415 34416 +f 34416 34415 34417 +f 34417 34415 34418 +f 34417 34418 34419 +f 34419 34418 34420 +f 34419 34420 34421 +f 34421 34420 34422 +f 34421 34422 34423 +f 34423 34422 34424 +f 34423 34424 34425 +f 34425 34424 34426 +f 34425 34426 34427 +f 34427 34426 34428 +f 34427 34428 34429 +f 34429 34428 34430 +f 34429 34430 34431 +f 34431 34430 34432 +f 34431 34432 34433 +f 34433 34432 34434 +f 34433 34434 34435 +f 34435 34434 34436 +f 34435 34436 34437 +f 34437 34436 34438 +f 34437 34438 34439 +f 34439 34438 34440 +f 34439 34440 34441 +f 34441 34440 34442 +f 34441 34442 34443 +f 34443 34442 34444 +f 34443 34444 34445 +f 34445 34444 34446 +f 34445 34446 34447 +f 34447 34446 34448 +f 34447 34448 34449 +f 34385 34450 34387 +f 34387 34450 34451 +f 34387 34451 34389 +f 34389 34451 34452 +f 34389 34452 34391 +f 34391 34452 34453 +f 34391 34453 34393 +f 34393 34453 34454 +f 34393 34454 34395 +f 34395 34454 34455 +f 34395 34455 34397 +f 34397 34455 34456 +f 34397 34456 34399 +f 34399 34456 34457 +f 34399 34457 34401 +f 34401 34457 34458 +f 34401 34458 34403 +f 34403 34458 34459 +f 34403 34459 34405 +f 34405 34459 34460 +f 34405 34460 34407 +f 34407 34460 34461 +f 34407 34461 34409 +f 34409 34461 34462 +f 34409 34462 34411 +f 34411 34462 34463 +f 34411 34463 34413 +f 34413 34463 34464 +f 34413 34464 34415 +f 34415 34464 34418 +f 34450 34465 34451 +f 34451 34465 34466 +f 34451 34466 34452 +f 34452 34466 34467 +f 34452 34467 34453 +f 34453 34467 34468 +f 34453 34468 34454 +f 34454 34468 34469 +f 34454 34469 34455 +f 34455 34469 34470 +f 34455 34470 34456 +f 34456 34470 34471 +f 34456 34471 34457 +f 34457 34471 34472 +f 34457 34472 34458 +f 34458 34472 34473 +f 34458 34473 34459 +f 34459 34473 34474 +f 34459 34474 34460 +f 34460 34474 34475 +f 34460 34475 34461 +f 34461 34475 34476 +f 34461 34476 34462 +f 34462 34476 34477 +f 34462 34477 34463 +f 34463 34477 34478 +f 34463 34478 34464 +f 34464 34478 34420 +f 34464 34420 34418 +f 34465 34479 34466 +f 34466 34479 34480 +f 34466 34480 34467 +f 34467 34480 34481 +f 34467 34481 34468 +f 34468 34481 34482 +f 34468 34482 34469 +f 34469 34482 34483 +f 34469 34483 34470 +f 34470 34483 34484 +f 34470 34484 34471 +f 34471 34484 34485 +f 34471 34485 34472 +f 34472 34485 34486 +f 34472 34486 34473 +f 34473 34486 34487 +f 34473 34487 34474 +f 34474 34487 34488 +f 34474 34488 34475 +f 34475 34488 34489 +f 34475 34489 34476 +f 34476 34489 34490 +f 34476 34490 34477 +f 34477 34490 34491 +f 34477 34491 34478 +f 34478 34491 34422 +f 34478 34422 34420 +f 34479 34492 34480 +f 34480 34492 34493 +f 34480 34493 34481 +f 34481 34493 34494 +f 34481 34494 34482 +f 34482 34494 34495 +f 34482 34495 34483 +f 34483 34495 34496 +f 34483 34496 34484 +f 34484 34496 34497 +f 34484 34497 34485 +f 34485 34497 34498 +f 34485 34498 34486 +f 34486 34498 34499 +f 34486 34499 34487 +f 34487 34499 34500 +f 34487 34500 34488 +f 34488 34500 34501 +f 34488 34501 34489 +f 34489 34501 34502 +f 34489 34502 34490 +f 34490 34502 34503 +f 34490 34503 34491 +f 34491 34503 34424 +f 34491 34424 34422 +f 34493 34492 34504 +f 34504 34492 34505 +f 34504 34505 34506 +f 34506 34505 34507 +f 34506 34507 34508 +f 34508 34507 34509 +f 34508 34509 34510 +f 34510 34509 34511 +f 34510 34511 34512 +f 34512 34511 34513 +f 34512 34513 34514 +f 34514 34513 34515 +f 34514 34515 34516 +f 34516 34515 34517 +f 34516 34517 34518 +f 34518 34517 34519 +f 34518 34519 34520 +f 34520 34519 34521 +f 34520 34521 34522 +f 34522 34521 34440 +f 34522 34440 34438 +f 34515 34523 34517 +f 34517 34523 34524 +f 34517 34524 34519 +f 34519 34524 34525 +f 34519 34525 34521 +f 34521 34525 34442 +f 34521 34442 34440 +f 34523 34526 34524 +f 34524 34526 34527 +f 34524 34527 34525 +f 34525 34527 34444 +f 34525 34444 34442 +f 34526 34528 34527 +f 34527 34528 34446 +f 34527 34446 34444 +f 34528 34448 34446 +f 34529 34530 34449 +f 34449 34530 34531 +f 34449 34531 34447 +f 34447 34531 34532 +f 34447 34532 34445 +f 34445 34532 34533 +f 34445 34533 34443 +f 34443 34533 34534 +f 34443 34534 34441 +f 34441 34534 34535 +f 34441 34535 34439 +f 34439 34535 34536 +f 34439 34536 34437 +f 34437 34536 34537 +f 34437 34537 34435 +f 34435 34537 34538 +f 34435 34538 34433 +f 34433 34538 34539 +f 34433 34539 34431 +f 34431 34539 34540 +f 34431 34540 34429 +f 34429 34540 34541 +f 34429 34541 34427 +f 34427 34541 34542 +f 34427 34542 34425 +f 34425 34542 34543 +f 34425 34543 34423 +f 34423 34543 34544 +f 34423 34544 34421 +f 34421 34544 34545 +f 34421 34545 34419 +f 34419 34545 34417 +f 34529 34546 34530 +f 34530 34546 34547 +f 34530 34547 34548 +f 34548 34547 34549 +f 34548 34549 34550 +f 34550 34549 34551 +f 34550 34551 34552 +f 34552 34551 34553 +f 34552 34553 34554 +f 34554 34553 34555 +f 34554 34555 34556 +f 34556 34555 34557 +f 34556 34557 34558 +f 34558 34557 34559 +f 34558 34559 34560 +f 34560 34559 34561 +f 34560 34561 34562 +f 34562 34561 34563 +f 34562 34563 34564 +f 34564 34563 34565 +f 34564 34565 34566 +f 34566 34565 34567 +f 34566 34567 34568 +f 34568 34567 34569 +f 34568 34569 34570 +f 34570 34569 34571 +f 34570 34571 34572 +f 34572 34571 34573 +f 34572 34573 34574 +f 34574 34573 34575 +f 34574 34575 34576 +f 34576 34575 34577 +f 34577 34575 34578 +f 34577 34578 34579 +f 34579 34578 34580 +f 34579 34580 34581 +f 34581 34580 34582 +f 34581 34582 34583 +f 34583 34582 34584 +f 34583 34584 34585 +f 34585 34584 34586 +f 34585 34586 34587 +f 34587 34586 34588 +f 34587 34588 34589 +f 34589 34588 34590 +f 34589 34590 34591 +f 34591 34590 34592 +f 34591 34592 34593 +f 34593 34592 34594 +f 34593 34594 34595 +f 34595 34594 34596 +f 34595 34596 34597 +f 34597 34596 34598 +f 34597 34598 34599 +f 34599 34598 34600 +f 34599 34600 34601 +f 34601 34600 34602 +f 34601 34602 34603 +f 34603 34602 34604 +f 34603 34604 34605 +f 34605 34604 34606 +f 34605 34606 34607 +f 34607 34606 34608 +f 34607 34608 34609 +f 34546 34610 34547 +f 34547 34610 34611 +f 34547 34611 34549 +f 34549 34611 34612 +f 34549 34612 34551 +f 34551 34612 34613 +f 34551 34613 34553 +f 34553 34613 34614 +f 34553 34614 34555 +f 34555 34614 34615 +f 34555 34615 34557 +f 34557 34615 34616 +f 34557 34616 34559 +f 34559 34616 34617 +f 34559 34617 34561 +f 34561 34617 34618 +f 34561 34618 34563 +f 34563 34618 34619 +f 34563 34619 34565 +f 34565 34619 34620 +f 34565 34620 34567 +f 34567 34620 34621 +f 34567 34621 34569 +f 34569 34621 34622 +f 34569 34622 34571 +f 34571 34622 34623 +f 34571 34623 34573 +f 34573 34623 34624 +f 34573 34624 34575 +f 34575 34624 34578 +f 34610 34625 34611 +f 34611 34625 34626 +f 34611 34626 34627 +f 34627 34626 34628 +f 34627 34628 34629 +f 34629 34628 34630 +f 34629 34630 34631 +f 34631 34630 34632 +f 34631 34632 34633 +f 34633 34632 34634 +f 34633 34634 34635 +f 34635 34634 34636 +f 34635 34636 34637 +f 34637 34636 34638 +f 34637 34638 34639 +f 34639 34638 34640 +f 34639 34640 34641 +f 34641 34640 34642 +f 34641 34642 34643 +f 34643 34642 34644 +f 34643 34644 34645 +f 34645 34644 34646 +f 34645 34646 34647 +f 34647 34646 34648 +f 34647 34648 34649 +f 34649 34648 34650 +f 34649 34650 34651 +f 34651 34650 34598 +f 34651 34598 34596 +f 34642 34652 34644 +f 34644 34652 34653 +f 34644 34653 34646 +f 34646 34653 34654 +f 34646 34654 34648 +f 34648 34654 34655 +f 34648 34655 34650 +f 34650 34655 34600 +f 34650 34600 34598 +f 34652 34656 34653 +f 34653 34656 34657 +f 34653 34657 34654 +f 34654 34657 34658 +f 34654 34658 34655 +f 34655 34658 34602 +f 34655 34602 34600 +f 34656 34659 34657 +f 34657 34659 34660 +f 34657 34660 34658 +f 34658 34660 34604 +f 34658 34604 34602 +f 34659 34661 34660 +f 34660 34661 34606 +f 34660 34606 34604 +f 34661 34608 34606 +f 34607 34609 34662 +f 34662 34609 34663 +f 34662 34663 34664 +f 34664 34663 34665 +f 34664 34665 34666 +f 34666 34665 34667 +f 34666 34667 34668 +f 34668 34667 34669 +f 34668 34669 34670 +f 34670 34669 34671 +f 34670 34671 34672 +f 34672 34671 34673 +f 34672 34673 34674 +f 34674 34673 34675 +f 34674 34675 34676 +f 34676 34675 34677 +f 34676 34677 34678 +f 34678 34677 34679 +f 34678 34679 34680 +f 34680 34679 34681 +f 34680 34681 34682 +f 34682 34681 34683 +f 34682 34683 34684 +f 34684 34683 34685 +f 34684 34685 34686 +f 34686 34685 34687 +f 34686 34687 34688 +f 34688 34687 34689 +f 34688 34689 34690 +f 34690 34689 34691 +f 34690 34691 34692 +f 34692 34691 34693 +f 34692 34693 34694 +f 34694 34693 34695 +f 34694 34695 34696 +f 34696 34695 34697 +f 34696 34697 34698 +f 34698 34697 34699 +f 34698 34699 34700 +f 34700 34699 34701 +f 34700 34701 34702 +f 34702 34701 34703 +f 34702 34703 33886 +f 33886 34703 34704 +f 33886 34704 33887 +f 33887 34704 34705 +f 33887 34705 34706 +f 34706 34705 34707 +f 34706 34707 34708 +f 34708 34707 34699 +f 34708 34699 34697 +f 34671 34709 34673 +f 34673 34709 34710 +f 34673 34710 34675 +f 34675 34710 34711 +f 34675 34711 34677 +f 34677 34711 34712 +f 34677 34712 34679 +f 34679 34712 34713 +f 34679 34713 34681 +f 34681 34713 34714 +f 34681 34714 34683 +f 34683 34714 34715 +f 34683 34715 34685 +f 34685 34715 34716 +f 34685 34716 34687 +f 34687 34716 34717 +f 34687 34717 34689 +f 34689 34717 34718 +f 34689 34718 34691 +f 34691 34718 34719 +f 34691 34719 34693 +f 34693 34719 34720 +f 34693 34720 34695 +f 34695 34720 34721 +f 34695 34721 34697 +f 34697 34721 34708 +f 34709 34722 34710 +f 34710 34722 34723 +f 34710 34723 34711 +f 34711 34723 34724 +f 34711 34724 34712 +f 34712 34724 34725 +f 34712 34725 34713 +f 34713 34725 34726 +f 34713 34726 34714 +f 34714 34726 34727 +f 34714 34727 34715 +f 34715 34727 34728 +f 34715 34728 34716 +f 34716 34728 34729 +f 34716 34729 34717 +f 34717 34729 34730 +f 34717 34730 34718 +f 34718 34730 34731 +f 34718 34731 34719 +f 34719 34731 34732 +f 34719 34732 34720 +f 34720 34732 34733 +f 34720 34733 34721 +f 34721 34733 34734 +f 34721 34734 34708 +f 34708 34734 34706 +f 34722 32841 34723 +f 34723 32841 34724 +f 32841 32840 34724 +f 34724 32840 34725 +f 33899 34727 32840 +f 32840 34727 34726 +f 32840 34726 34725 +f 33895 34729 33899 +f 33899 34729 34728 +f 33899 34728 34727 +f 34729 33895 34730 +f 34730 33895 33891 +f 34730 33891 34731 +f 34731 33891 34732 +f 33891 33888 34732 +f 34732 33888 34733 +f 33887 34706 33888 +f 33888 34706 34734 +f 33888 34734 34733 +f 34735 34736 34702 +f 34702 34736 34737 +f 34702 34737 34738 +f 34738 34737 34739 +f 34738 34739 34698 +f 34698 34739 34696 +f 34577 34740 34735 +f 34735 34740 34741 +f 34735 34741 34742 +f 34742 34741 34743 +f 34742 34743 34744 +f 34744 34743 34745 +f 34744 34745 34746 +f 34746 34745 34747 +f 34746 34747 34748 +f 34748 34747 34749 +f 34748 34749 34750 +f 34750 34749 34751 +f 34750 34751 34752 +f 34752 34751 34753 +f 34752 34753 34754 +f 34754 34753 34755 +f 34754 34755 34756 +f 34756 34755 34757 +f 34756 34757 34684 +f 34684 34757 34682 +f 34758 34759 34576 +f 34576 34759 34760 +f 34576 34760 34761 +f 34761 34760 34762 +f 34761 34762 34763 +f 34763 34762 34764 +f 34763 34764 34765 +f 34765 34764 34766 +f 34765 34766 34767 +f 34767 34766 34768 +f 34767 34768 34769 +f 34769 34768 34770 +f 34769 34770 34771 +f 34771 34770 34772 +f 34771 34772 34562 +f 34562 34772 34560 +f 34417 34545 34758 +f 34758 34545 34773 +f 34758 34773 34774 +f 34774 34773 34775 +f 34774 34775 34776 +f 34776 34775 34777 +f 34776 34777 34778 +f 34778 34777 34779 +f 34778 34779 34780 +f 34780 34779 34781 +f 34780 34781 34782 +f 34782 34781 34783 +f 34782 34783 34784 +f 34784 34783 34785 +f 34784 34785 34786 +f 34786 34785 34787 +f 34786 34787 34788 +f 34788 34787 34789 +f 34788 34789 34790 +f 34790 34789 34791 +f 34790 34791 34792 +f 34792 34791 34793 +f 34792 34793 34794 +f 34794 34793 34795 +f 34794 34795 34796 +f 34796 34795 34797 +f 34796 34797 34798 +f 34798 34797 34799 +f 34798 34799 34548 +f 34548 34799 34530 +f 24021 34800 34416 +f 34416 34800 34801 +f 34416 34801 34414 +f 34414 34801 34412 +f 24021 33384 34800 +f 34800 33384 33380 +f 34800 33380 34802 +f 34802 33380 33375 +f 34802 33375 34803 +f 34803 33375 34804 +f 34803 34804 34805 +f 34805 34804 34806 +f 34805 34806 34406 +f 34406 34806 34404 +f 33375 33369 34804 +f 34804 33369 33363 +f 34804 33363 34807 +f 34807 33363 33355 +f 34807 33355 34808 +f 34808 33355 33347 +f 34808 33347 34809 +f 34809 33347 33304 +f 34809 33304 33305 +f 34809 33305 34810 +f 34810 33305 33307 +f 34810 33307 33308 +f 34810 33308 34811 +f 34811 33308 33310 +f 34811 33310 33311 +f 34811 33311 34812 +f 34812 33311 33313 +f 34812 33313 33315 +f 34812 33315 34813 +f 34813 33315 33316 +f 34813 33316 33318 +f 34813 33318 34814 +f 34814 33318 33320 +f 34814 33320 33321 +f 34814 33321 34815 +f 34815 33321 33323 +f 34815 33323 34816 +f 34816 33323 34382 +f 34816 34382 34384 +f 33323 33325 34382 +f 34670 34672 34817 +f 34817 34672 34674 +f 34817 34674 34818 +f 34818 34674 34676 +f 34818 34676 34819 +f 34819 34676 34678 +f 34819 34678 34820 +f 34820 34678 34680 +f 34820 34680 34821 +f 34821 34680 34682 +f 34821 34682 34757 +f 34668 34670 34822 +f 34822 34670 34817 +f 34822 34817 34823 +f 34823 34817 34818 +f 34823 34818 34824 +f 34824 34818 34819 +f 34824 34819 34825 +f 34825 34819 34820 +f 34825 34820 34826 +f 34826 34820 34821 +f 34826 34821 34827 +f 34827 34821 34757 +f 34827 34757 34755 +f 34666 34668 34828 +f 34828 34668 34822 +f 34828 34822 34829 +f 34829 34822 34823 +f 34829 34823 34830 +f 34830 34823 34824 +f 34830 34824 34831 +f 34831 34824 34825 +f 34831 34825 34832 +f 34832 34825 34826 +f 34832 34826 34833 +f 34833 34826 34827 +f 34833 34827 34834 +f 34834 34827 34755 +f 34834 34755 34753 +f 34664 34666 34835 +f 34835 34666 34828 +f 34835 34828 34836 +f 34836 34828 34829 +f 34836 34829 34837 +f 34837 34829 34830 +f 34837 34830 34838 +f 34838 34830 34831 +f 34838 34831 34839 +f 34839 34831 34832 +f 34839 34832 34840 +f 34840 34832 34833 +f 34840 34833 34841 +f 34841 34833 34834 +f 34841 34834 34842 +f 34842 34834 34753 +f 34842 34753 34751 +f 34662 34664 34843 +f 34843 34664 34835 +f 34843 34835 34844 +f 34844 34835 34836 +f 34844 34836 34845 +f 34845 34836 34837 +f 34845 34837 34846 +f 34846 34837 34838 +f 34846 34838 34847 +f 34847 34838 34839 +f 34847 34839 34848 +f 34848 34839 34840 +f 34848 34840 34849 +f 34849 34840 34841 +f 34849 34841 34850 +f 34850 34841 34842 +f 34850 34842 34851 +f 34851 34842 34751 +f 34851 34751 34749 +f 34607 34662 34852 +f 34852 34662 34843 +f 34852 34843 34853 +f 34853 34843 34844 +f 34853 34844 34854 +f 34854 34844 34845 +f 34854 34845 34855 +f 34855 34845 34846 +f 34855 34846 34856 +f 34856 34846 34847 +f 34856 34847 34857 +f 34857 34847 34848 +f 34857 34848 34858 +f 34858 34848 34849 +f 34858 34849 34859 +f 34859 34849 34850 +f 34859 34850 34860 +f 34860 34850 34851 +f 34860 34851 34861 +f 34861 34851 34749 +f 34861 34749 34747 +f 34641 34643 34862 +f 34862 34643 34645 +f 34862 34645 34863 +f 34863 34645 34647 +f 34863 34647 34864 +f 34864 34647 34649 +f 34864 34649 34865 +f 34865 34649 34651 +f 34865 34651 34866 +f 34866 34651 34596 +f 34866 34596 34594 +f 34639 34641 34867 +f 34867 34641 34862 +f 34867 34862 34868 +f 34868 34862 34863 +f 34868 34863 34869 +f 34869 34863 34864 +f 34869 34864 34870 +f 34870 34864 34865 +f 34870 34865 34871 +f 34871 34865 34866 +f 34871 34866 34872 +f 34872 34866 34594 +f 34872 34594 34592 +f 34637 34639 34873 +f 34873 34639 34867 +f 34873 34867 34874 +f 34874 34867 34868 +f 34874 34868 34875 +f 34875 34868 34869 +f 34875 34869 34876 +f 34876 34869 34870 +f 34876 34870 34877 +f 34877 34870 34871 +f 34877 34871 34878 +f 34878 34871 34872 +f 34878 34872 34879 +f 34879 34872 34592 +f 34879 34592 34590 +f 34635 34637 34880 +f 34880 34637 34873 +f 34880 34873 34881 +f 34881 34873 34874 +f 34881 34874 34882 +f 34882 34874 34875 +f 34882 34875 34883 +f 34883 34875 34876 +f 34883 34876 34884 +f 34884 34876 34877 +f 34884 34877 34885 +f 34885 34877 34878 +f 34885 34878 34886 +f 34886 34878 34879 +f 34886 34879 34887 +f 34887 34879 34590 +f 34887 34590 34588 +f 34633 34635 34888 +f 34888 34635 34880 +f 34888 34880 34889 +f 34889 34880 34881 +f 34889 34881 34890 +f 34890 34881 34882 +f 34890 34882 34891 +f 34891 34882 34883 +f 34891 34883 34892 +f 34892 34883 34884 +f 34892 34884 34893 +f 34893 34884 34885 +f 34893 34885 34894 +f 34894 34885 34886 +f 34894 34886 34895 +f 34895 34886 34887 +f 34895 34887 34896 +f 34896 34887 34588 +f 34896 34588 34586 +f 34631 34633 34897 +f 34897 34633 34888 +f 34897 34888 34898 +f 34898 34888 34889 +f 34898 34889 34899 +f 34899 34889 34890 +f 34899 34890 34900 +f 34900 34890 34891 +f 34900 34891 34901 +f 34901 34891 34892 +f 34901 34892 34902 +f 34902 34892 34893 +f 34902 34893 34903 +f 34903 34893 34894 +f 34903 34894 34904 +f 34904 34894 34895 +f 34904 34895 34905 +f 34905 34895 34896 +f 34905 34896 34906 +f 34906 34896 34586 +f 34906 34586 34584 +f 34629 34631 34907 +f 34907 34631 34897 +f 34907 34897 34908 +f 34908 34897 34898 +f 34908 34898 34909 +f 34909 34898 34899 +f 34909 34899 34910 +f 34910 34899 34900 +f 34910 34900 34911 +f 34911 34900 34901 +f 34911 34901 34912 +f 34912 34901 34902 +f 34912 34902 34913 +f 34913 34902 34903 +f 34913 34903 34914 +f 34914 34903 34904 +f 34914 34904 34915 +f 34915 34904 34905 +f 34915 34905 34916 +f 34916 34905 34906 +f 34916 34906 34917 +f 34917 34906 34584 +f 34917 34584 34582 +f 34612 34611 34627 +f 34627 34629 34918 +f 34918 34629 34907 +f 34918 34907 34919 +f 34919 34907 34908 +f 34919 34908 34920 +f 34920 34908 34909 +f 34920 34909 34921 +f 34921 34909 34910 +f 34921 34910 34922 +f 34922 34910 34911 +f 34922 34911 34923 +f 34923 34911 34912 +f 34923 34912 34924 +f 34924 34912 34913 +f 34924 34913 34925 +f 34925 34913 34914 +f 34925 34914 34926 +f 34926 34914 34915 +f 34926 34915 34927 +f 34927 34915 34916 +f 34927 34916 34928 +f 34928 34916 34917 +f 34928 34917 34929 +f 34929 34917 34582 +f 34929 34582 34580 +f 34532 34531 34799 +f 34799 34531 34530 +f 34514 34516 34930 +f 34930 34516 34518 +f 34930 34518 34931 +f 34931 34518 34520 +f 34931 34520 34932 +f 34932 34520 34522 +f 34932 34522 34933 +f 34933 34522 34438 +f 34933 34438 34436 +f 34512 34514 34934 +f 34934 34514 34930 +f 34934 34930 34935 +f 34935 34930 34931 +f 34935 34931 34936 +f 34936 34931 34932 +f 34936 34932 34937 +f 34937 34932 34933 +f 34937 34933 34938 +f 34938 34933 34436 +f 34938 34436 34434 +f 34510 34512 34939 +f 34939 34512 34934 +f 34939 34934 34940 +f 34940 34934 34935 +f 34940 34935 34941 +f 34941 34935 34936 +f 34941 34936 34942 +f 34942 34936 34937 +f 34942 34937 34943 +f 34943 34937 34938 +f 34943 34938 34944 +f 34944 34938 34434 +f 34944 34434 34432 +f 34508 34510 34945 +f 34945 34510 34939 +f 34945 34939 34946 +f 34946 34939 34940 +f 34946 34940 34947 +f 34947 34940 34941 +f 34947 34941 34948 +f 34948 34941 34942 +f 34948 34942 34949 +f 34949 34942 34943 +f 34949 34943 34950 +f 34950 34943 34944 +f 34950 34944 34951 +f 34951 34944 34432 +f 34951 34432 34430 +f 34506 34508 34952 +f 34952 34508 34945 +f 34952 34945 34953 +f 34953 34945 34946 +f 34953 34946 34954 +f 34954 34946 34947 +f 34954 34947 34955 +f 34955 34947 34948 +f 34955 34948 34956 +f 34956 34948 34949 +f 34956 34949 34957 +f 34957 34949 34950 +f 34957 34950 34958 +f 34958 34950 34951 +f 34958 34951 34959 +f 34959 34951 34430 +f 34959 34430 34428 +f 34494 34493 34504 +f 34504 34506 34960 +f 34960 34506 34952 +f 34960 34952 34961 +f 34961 34952 34953 +f 34961 34953 34962 +f 34962 34953 34954 +f 34962 34954 34963 +f 34963 34954 34955 +f 34963 34955 34964 +f 34964 34955 34956 +f 34964 34956 34965 +f 34965 34956 34957 +f 34965 34957 34966 +f 34966 34957 34958 +f 34966 34958 34967 +f 34967 34958 34959 +f 34967 34959 34968 +f 34968 34959 34428 +f 34968 34428 34426 +f 34384 34386 34969 +f 34969 34386 34388 +f 34969 34388 34970 +f 34970 34388 34390 +f 34970 34390 34971 +f 34971 34390 34392 +f 34971 34392 34972 +f 34972 34392 34394 +f 34972 34394 34973 +f 34973 34394 34396 +f 34973 34396 34974 +f 34974 34396 34398 +f 34974 34398 34975 +f 34975 34398 34400 +f 34975 34400 34976 +f 34976 34400 34402 +f 34976 34402 34977 +f 34977 34402 34404 +f 34977 34404 34806 +f 34854 34978 34853 +f 34853 34978 34979 +f 34853 34979 34852 +f 34852 34979 34605 +f 34852 34605 34607 +f 34978 34980 34979 +f 34979 34980 34603 +f 34979 34603 34605 +f 34978 34854 34981 +f 34981 34854 34855 +f 34981 34855 34982 +f 34982 34855 34856 +f 34982 34856 34983 +f 34983 34856 34857 +f 34983 34857 34984 +f 34984 34857 34858 +f 34984 34858 34985 +f 34985 34858 34859 +f 34985 34859 34986 +f 34986 34859 34860 +f 34986 34860 34987 +f 34987 34860 34861 +f 34987 34861 34988 +f 34988 34861 34747 +f 34988 34747 34745 +f 34603 34980 34601 +f 34601 34980 34989 +f 34601 34989 34599 +f 34599 34989 34990 +f 34599 34990 34597 +f 34597 34990 34991 +f 34597 34991 34595 +f 34595 34991 34992 +f 34595 34992 34593 +f 34593 34992 34993 +f 34593 34993 34591 +f 34591 34993 34994 +f 34591 34994 34589 +f 34589 34994 34995 +f 34589 34995 34587 +f 34587 34995 34996 +f 34587 34996 34585 +f 34585 34996 34997 +f 34585 34997 34583 +f 34583 34997 34998 +f 34583 34998 34581 +f 34581 34998 34999 +f 34581 34999 34579 +f 34579 34999 34577 +f 34980 34978 35000 +f 35000 34978 34981 +f 35000 34981 35001 +f 35001 34981 34982 +f 35001 34982 35002 +f 35002 34982 34983 +f 35002 34983 35003 +f 35003 34983 34984 +f 35003 34984 35004 +f 35004 34984 34985 +f 35004 34985 35005 +f 35005 34985 34986 +f 35005 34986 35006 +f 35006 34986 34987 +f 35006 34987 35007 +f 35007 34987 34988 +f 35007 34988 35008 +f 35008 34988 34745 +f 35008 34745 34743 +f 34920 34614 34919 +f 34919 34614 34613 +f 34919 34613 34918 +f 34918 34613 34612 +f 34918 34612 34627 +f 34614 34920 34615 +f 34615 34920 34921 +f 34615 34921 34616 +f 34616 34921 34922 +f 34616 34922 34617 +f 34617 34922 34923 +f 34617 34923 34618 +f 34618 34923 34924 +f 34618 34924 34619 +f 34619 34924 34925 +f 34619 34925 34620 +f 34620 34925 34926 +f 34620 34926 34621 +f 34621 34926 34927 +f 34621 34927 34622 +f 34622 34927 34928 +f 34622 34928 34623 +f 34623 34928 34929 +f 34623 34929 34624 +f 34624 34929 34580 +f 34624 34580 34578 +f 34552 35009 34550 +f 34550 35009 34798 +f 34550 34798 34548 +f 34798 35009 34796 +f 34796 35009 35010 +f 34796 35010 34794 +f 34794 35010 35011 +f 34794 35011 34792 +f 34792 35011 35012 +f 34792 35012 34790 +f 34790 35012 35013 +f 34790 35013 34788 +f 34788 35013 35014 +f 34788 35014 34786 +f 34786 35014 35015 +f 34786 35015 34784 +f 34784 35015 35016 +f 34784 35016 34782 +f 34782 35016 35017 +f 34782 35017 34780 +f 34780 35017 35018 +f 34780 35018 34778 +f 34778 35018 35019 +f 34778 35019 34776 +f 34776 35019 35020 +f 34776 35020 34774 +f 34774 35020 34758 +f 35009 34552 35021 +f 35021 34552 34554 +f 35021 34554 35022 +f 35022 34554 34556 +f 35022 34556 35023 +f 35023 34556 34558 +f 35023 34558 35024 +f 35024 34558 34560 +f 35024 34560 34772 +f 34797 34795 34533 +f 34533 34795 34534 +f 34535 34534 34793 +f 34793 34534 34795 +f 34962 34496 34961 +f 34961 34496 34495 +f 34961 34495 34960 +f 34960 34495 34494 +f 34960 34494 34504 +f 34496 34962 34497 +f 34497 34962 34963 +f 34497 34963 34498 +f 34498 34963 34964 +f 34498 34964 34499 +f 34499 34964 34965 +f 34499 34965 34500 +f 34500 34965 34966 +f 34500 34966 34501 +f 34501 34966 34967 +f 34501 34967 34502 +f 34502 34967 34968 +f 34502 34968 34503 +f 34503 34968 34426 +f 34503 34426 34424 +f 34971 34814 34970 +f 34970 34814 34815 +f 34970 34815 34969 +f 34969 34815 34816 +f 34969 34816 34384 +f 34814 34971 34813 +f 34813 34971 34972 +f 34813 34972 34812 +f 34812 34972 34973 +f 34812 34973 34811 +f 34811 34973 34974 +f 34811 34974 34810 +f 34810 34974 34975 +f 34810 34975 34809 +f 34809 34975 34976 +f 34809 34976 34808 +f 34808 34976 34977 +f 34808 34977 34807 +f 34807 34977 34806 +f 34807 34806 34804 +f 34799 34797 34532 +f 34532 34797 34533 +f 35001 35025 35000 +f 35000 35025 34989 +f 35000 34989 34980 +f 34989 35025 34990 +f 34990 35025 35026 +f 34990 35026 34991 +f 34991 35026 35027 +f 34991 35027 34992 +f 34992 35027 35028 +f 34992 35028 34993 +f 34993 35028 35029 +f 34993 35029 34994 +f 34994 35029 35030 +f 34994 35030 34995 +f 34995 35030 35031 +f 34995 35031 34996 +f 34996 35031 35032 +f 34996 35032 34997 +f 34997 35032 35033 +f 34997 35033 34998 +f 34998 35033 35034 +f 34998 35034 34999 +f 34999 35034 34577 +f 35025 35001 35035 +f 35035 35001 35002 +f 35035 35002 35036 +f 35036 35002 35003 +f 35036 35003 35037 +f 35037 35003 35004 +f 35037 35004 35038 +f 35038 35004 35005 +f 35038 35005 35039 +f 35039 35005 35006 +f 35039 35006 35040 +f 35040 35006 35007 +f 35040 35007 35041 +f 35041 35007 35008 +f 35041 35008 35042 +f 35042 35008 34743 +f 35042 34743 34741 +f 35022 35043 35021 +f 35021 35043 35010 +f 35021 35010 35009 +f 35010 35043 35011 +f 35011 35043 35044 +f 35011 35044 35012 +f 35012 35044 35045 +f 35012 35045 35013 +f 35013 35045 35046 +f 35013 35046 35014 +f 35014 35046 35047 +f 35014 35047 35015 +f 35015 35047 35048 +f 35015 35048 35016 +f 35016 35048 35049 +f 35016 35049 35017 +f 35017 35049 35050 +f 35017 35050 35018 +f 35018 35050 35051 +f 35018 35051 35019 +f 35019 35051 35052 +f 35019 35052 35020 +f 35020 35052 34758 +f 35043 35022 35053 +f 35053 35022 35023 +f 35053 35023 35054 +f 35054 35023 35024 +f 35054 35024 35055 +f 35055 35024 34772 +f 35055 34772 34770 +f 34535 34793 34791 +f 34535 34791 34536 +f 34536 34791 34789 +f 34536 34789 34537 +f 34537 34789 34787 +f 34537 34787 34538 +f 34538 34787 34785 +f 34538 34785 34539 +f 34539 34785 34783 +f 34539 34783 34540 +f 34540 34783 34781 +f 34540 34781 34541 +f 34541 34781 34779 +f 34541 34779 34542 +f 34542 34779 34777 +f 34542 34777 34543 +f 34543 34777 34775 +f 34543 34775 34544 +f 34544 34775 34773 +f 34544 34773 34545 +f 34684 34686 34756 +f 34756 34686 35056 +f 34756 35056 34754 +f 34754 35056 35057 +f 34754 35057 34752 +f 34752 35057 35058 +f 34752 35058 34750 +f 34750 35058 35059 +f 34750 35059 34748 +f 34748 35059 35060 +f 34748 35060 34746 +f 34746 35060 35061 +f 34746 35061 34744 +f 34744 35061 35062 +f 34744 35062 34742 +f 34742 35062 34735 +f 35056 34686 34688 +f 35036 35063 35035 +f 35035 35063 35026 +f 35035 35026 35025 +f 35026 35063 35027 +f 35027 35063 35064 +f 35027 35064 35028 +f 35028 35064 35065 +f 35028 35065 35029 +f 35029 35065 35066 +f 35029 35066 35030 +f 35030 35066 35067 +f 35030 35067 35031 +f 35031 35067 35068 +f 35031 35068 35032 +f 35032 35068 35069 +f 35032 35069 35033 +f 35033 35069 35070 +f 35033 35070 35034 +f 35034 35070 34577 +f 35063 35036 35071 +f 35071 35036 35037 +f 35071 35037 35072 +f 35072 35037 35038 +f 35072 35038 35073 +f 35073 35038 35039 +f 35073 35039 35074 +f 35074 35039 35040 +f 35074 35040 35075 +f 35075 35040 35041 +f 35075 35041 35076 +f 35076 35041 35042 +f 35076 35042 34740 +f 34740 35042 34741 +f 35054 35077 35053 +f 35053 35077 35044 +f 35053 35044 35043 +f 35044 35077 35045 +f 35045 35077 35078 +f 35045 35078 35046 +f 35046 35078 35079 +f 35046 35079 35047 +f 35047 35079 35080 +f 35047 35080 35048 +f 35048 35080 35081 +f 35048 35081 35049 +f 35049 35081 35082 +f 35049 35082 35050 +f 35050 35082 35083 +f 35050 35083 35051 +f 35051 35083 35084 +f 35051 35084 35052 +f 35052 35084 34758 +f 35077 35054 35085 +f 35085 35054 35055 +f 35085 35055 35086 +f 35086 35055 34770 +f 35086 34770 34768 +f 35056 34688 35087 +f 35087 34688 34690 +f 35087 34690 35088 +f 35088 34690 34692 +f 35088 34692 35089 +f 35089 34692 34694 +f 35089 34694 35090 +f 35090 34694 34696 +f 35090 34696 34739 +f 35063 35071 35064 +f 35064 35071 35091 +f 35064 35091 35065 +f 35065 35091 35092 +f 35065 35092 35066 +f 35066 35092 35093 +f 35066 35093 35067 +f 35067 35093 35094 +f 35067 35094 35068 +f 35068 35094 35095 +f 35068 35095 35069 +f 35069 35095 35096 +f 35069 35096 35070 +f 35070 35096 34577 +f 35091 35071 35072 +f 34771 34562 34564 +f 35077 35085 35078 +f 35078 35085 35097 +f 35078 35097 35079 +f 35079 35097 35098 +f 35079 35098 35080 +f 35080 35098 35099 +f 35080 35099 35081 +f 35081 35099 35100 +f 35081 35100 35082 +f 35082 35100 35101 +f 35082 35101 35083 +f 35083 35101 35102 +f 35083 35102 35084 +f 35084 35102 34758 +f 35097 35085 35086 +f 35089 35103 35088 +f 35088 35103 35104 +f 35088 35104 35087 +f 35087 35104 35057 +f 35087 35057 35056 +f 35103 35105 35104 +f 35104 35105 35058 +f 35104 35058 35057 +f 35103 35089 35106 +f 35106 35089 35090 +f 35106 35090 35107 +f 35107 35090 34739 +f 35107 34739 34737 +f 35058 35105 35059 +f 35059 35105 35108 +f 35059 35108 35060 +f 35060 35108 35109 +f 35060 35109 35061 +f 35061 35109 35110 +f 35061 35110 35062 +f 35062 35110 34735 +f 35105 35103 35111 +f 35111 35103 35106 +f 35111 35106 35112 +f 35112 35106 35107 +f 35112 35107 34736 +f 34736 35107 34737 +f 35074 35113 35073 +f 35073 35113 35114 +f 35073 35114 35072 +f 35072 35114 35091 +f 35113 35115 35114 +f 35114 35115 35092 +f 35114 35092 35091 +f 35113 35074 35116 +f 35116 35074 35075 +f 35116 35075 35117 +f 35117 35075 35076 +f 35117 35076 35118 +f 35118 35076 34740 +f 35118 34740 34577 +f 35092 35115 35093 +f 35093 35115 35119 +f 35093 35119 35094 +f 35094 35119 35120 +f 35094 35120 35095 +f 35095 35120 35121 +f 35095 35121 35096 +f 35096 35121 34577 +f 35115 35113 35122 +f 35122 35113 35116 +f 35122 35116 35123 +f 35123 35116 35117 +f 35123 35117 35124 +f 35124 35117 35118 +f 35124 35118 34577 +f 34568 35125 34566 +f 34566 35125 35126 +f 34566 35126 34564 +f 34564 35126 34771 +f 35125 35127 35126 +f 35126 35127 34769 +f 35126 34769 34771 +f 35125 34568 35128 +f 35128 34568 34570 +f 35128 34570 35129 +f 35129 34570 34572 +f 35129 34572 35130 +f 35130 34572 34574 +f 35130 34574 34576 +f 34769 35127 34767 +f 34767 35127 35131 +f 34767 35131 34765 +f 34765 35131 35132 +f 34765 35132 34763 +f 34763 35132 35133 +f 34763 35133 34761 +f 34761 35133 34576 +f 35127 35125 35134 +f 35134 35125 35128 +f 35134 35128 35135 +f 35135 35128 35129 +f 35135 35129 35136 +f 35136 35129 35130 +f 35136 35130 34576 +f 34766 35137 35138 +f 35138 35137 35098 +f 35138 35098 35097 +f 35098 35137 35099 +f 35099 35137 35139 +f 35099 35139 35100 +f 35100 35139 35140 +f 35100 35140 35101 +f 35101 35140 34759 +f 35101 34759 35102 +f 35102 34759 34758 +f 35139 35137 34764 +f 34764 35137 34766 +f 34406 34408 34805 +f 34805 34408 35141 +f 34805 35141 34803 +f 34803 35141 34802 +f 35141 34408 34410 +f 35086 34768 35138 +f 35138 34768 34766 +f 35086 35138 35097 +f 34707 34705 34703 +f 34703 34705 34704 +f 34699 34707 34701 +f 34701 34707 34703 +f 34702 34738 34700 +f 34700 34738 34698 +f 34736 35142 35112 +f 35112 35142 35143 +f 35112 35143 35111 +f 35111 35143 35108 +f 35111 35108 35105 +f 35142 35144 35143 +f 35143 35144 35109 +f 35143 35109 35108 +f 35144 35142 34735 +f 34735 35142 34736 +f 34735 35110 35144 +f 35144 35110 35109 +f 35124 35145 35123 +f 35123 35145 35146 +f 35123 35146 35122 +f 35122 35146 35119 +f 35122 35119 35115 +f 35145 35124 34577 +f 35145 35147 35146 +f 35146 35147 35120 +f 35146 35120 35119 +f 35147 35145 34577 +f 34577 35121 35147 +f 35147 35121 35120 +f 35136 35148 35135 +f 35135 35148 35149 +f 35135 35149 35134 +f 35134 35149 35131 +f 35134 35131 35127 +f 35148 35136 34576 +f 35148 35150 35149 +f 35149 35150 35132 +f 35149 35132 35131 +f 35150 35148 34576 +f 34576 35133 35150 +f 35150 35133 35132 +f 34762 34760 35140 +f 35140 34760 34759 +f 34801 34800 35151 +f 35151 34800 34802 +f 35151 34802 35141 +f 34410 34412 35151 +f 35151 34412 34801 +f 34410 35151 35141 +f 34764 34762 35139 +f 35139 34762 35140 +f 32880 32882 33886 +f 33886 32882 33864 +f 33886 33864 34702 +f 34702 33864 33863 +f 34702 33863 33861 +f 34702 33861 34735 +f 34735 33861 33859 +f 34735 33859 33857 +f 33857 33856 34735 +f 34735 33856 34577 +f 34577 33856 33854 +f 34577 33854 33852 +f 33852 33850 34577 +f 34577 33850 33848 +f 34577 33848 33846 +f 33846 33844 34577 +f 34577 33844 33830 +f 34577 33830 33816 +f 34577 33816 34576 +f 34576 33816 33786 +f 34576 33786 33768 +f 34576 33768 33404 +f 33404 33768 33735 +f 33404 33735 33413 +f 33413 33735 33701 +f 33413 33701 33699 +f 33413 33699 33434 +f 33434 33699 33665 +f 33434 33665 33465 +f 33465 33665 33087 +f 33465 33087 33600 +f 33600 33566 33465 +f 33465 33566 33532 +f 33465 33532 33498 +f 33404 33387 34576 +f 34576 33387 33286 +f 34576 33286 34758 +f 34758 33286 33362 +f 34758 33362 34417 +f 34417 33362 33374 +f 34417 33374 33379 +f 33379 33383 34417 +f 34417 33383 34416 +f 34416 33383 33386 +f 34416 33386 24021 +f 33326 33327 35152 +f 35152 33327 35153 +f 35152 35153 35154 +f 35154 35153 35155 +f 35154 35155 35156 +f 35156 35155 35157 +f 35156 35157 35158 +f 35158 35157 35159 +f 35159 35157 35160 +f 35159 35160 35161 +f 35161 35160 35162 +f 35161 35162 35163 +f 35163 35162 35164 +f 35164 35162 35165 +f 35164 35165 35166 +f 35166 35165 35167 +f 35166 35167 35168 +f 35168 35167 35169 +f 35169 35167 35170 +f 35169 35170 35171 +f 35171 35170 35172 +f 35172 35170 35173 +f 35172 35173 35174 +f 35174 35173 35175 +f 35174 35175 35176 +f 35176 35175 35177 +f 35176 35177 35178 +f 35178 35177 35179 +f 35178 35179 35180 +f 35180 35179 35181 +f 35180 35181 35182 +f 35182 35181 35183 +f 35182 35183 35184 +f 35184 35183 35185 +f 35184 35185 35186 +f 35186 35185 35187 +f 35186 35187 35188 +f 35188 35187 35189 +f 35188 35189 22617 +f 22617 35189 35190 +f 35190 35189 35191 +f 35190 35191 35192 +f 35192 35191 35193 +f 35192 35193 35194 +f 35194 35193 35195 +f 35194 35195 35196 +f 35196 35195 35197 +f 35196 35197 35198 +f 35198 35197 35199 +f 35198 35199 35200 +f 35200 35199 35201 +f 35200 35201 35202 +f 35202 35201 35203 +f 35202 35203 35204 +f 35204 35203 35205 +f 35204 35205 35206 +f 35206 35205 35207 +f 35206 35207 35208 +f 35208 35207 35209 +f 35208 35209 35210 +f 35210 35209 35211 +f 35210 35211 35212 +f 35212 35211 35213 +f 35212 35213 35214 +f 35214 35213 35215 +f 35214 35215 35216 +f 35216 35215 35217 +f 35216 35217 35218 +f 35218 35217 35219 +f 35218 35219 35220 +f 35220 35219 35221 +f 35220 35221 35222 +f 35222 35221 35223 +f 35222 35223 35224 +f 35224 35223 35225 +f 35224 35225 35226 +f 35226 35225 35227 +f 35226 35227 35228 +f 35228 35227 35229 +f 35228 35229 35230 +f 35230 35229 35231 +f 35230 35231 35232 +f 35232 35231 33230 +f 35232 33230 33228 +f 33327 33328 35153 +f 35153 33328 35233 +f 35153 35233 35155 +f 35155 35233 35234 +f 35155 35234 35157 +f 35157 35234 35235 +f 35157 35235 35160 +f 35160 35235 35236 +f 35160 35236 35162 +f 35162 35236 35237 +f 35162 35237 35165 +f 35165 35237 35238 +f 35165 35238 35239 +f 35239 35238 35240 +f 35239 35240 35241 +f 35241 35240 35242 +f 35241 35242 35243 +f 35243 35242 35244 +f 35243 35244 35245 +f 35245 35244 35246 +f 35245 35246 35247 +f 35247 35246 35248 +f 35247 35248 35249 +f 35249 35248 35250 +f 35249 35250 35251 +f 35251 35250 35252 +f 35251 35252 35253 +f 35253 35252 35254 +f 35253 35254 35255 +f 35255 35254 35256 +f 35255 35256 35257 +f 35257 35256 35258 +f 35257 35258 35191 +f 35191 35258 35193 +f 33328 33330 35233 +f 35233 33330 35259 +f 35233 35259 35234 +f 35234 35259 35260 +f 35234 35260 35235 +f 35235 35260 35261 +f 35235 35261 35236 +f 35236 35261 35262 +f 35236 35262 35237 +f 35237 35262 35263 +f 35237 35263 35238 +f 35238 35263 35264 +f 35238 35264 35240 +f 35240 35264 35265 +f 35240 35265 35242 +f 35242 35265 35266 +f 35242 35266 35244 +f 35244 35266 35267 +f 35244 35267 35246 +f 35246 35267 35268 +f 35246 35268 35248 +f 35248 35268 35269 +f 35248 35269 35250 +f 35250 35269 35270 +f 35250 35270 35252 +f 35252 35270 35271 +f 35252 35271 35254 +f 35254 35271 35272 +f 35254 35272 35256 +f 35256 35272 35273 +f 35256 35273 35258 +f 35258 35273 35274 +f 35258 35274 35193 +f 35193 35274 35195 +f 33330 33332 35259 +f 35259 33332 35275 +f 35259 35275 35260 +f 35260 35275 35276 +f 35260 35276 35261 +f 35261 35276 35277 +f 35261 35277 35262 +f 35262 35277 35278 +f 35262 35278 35263 +f 35263 35278 35279 +f 35263 35279 35264 +f 35264 35279 35280 +f 35264 35280 35265 +f 35265 35280 35281 +f 35265 35281 35266 +f 35266 35281 35282 +f 35266 35282 35267 +f 35267 35282 35283 +f 35267 35283 35268 +f 35268 35283 35284 +f 35268 35284 35269 +f 35269 35284 35285 +f 35269 35285 35270 +f 35270 35285 35286 +f 35270 35286 35271 +f 35271 35286 35287 +f 35271 35287 35272 +f 35272 35287 35288 +f 35272 35288 35273 +f 35273 35288 35289 +f 35273 35289 35274 +f 35274 35289 35290 +f 35274 35290 35195 +f 35195 35290 35197 +f 33332 33334 35275 +f 35275 33334 33335 +f 35275 33335 35291 +f 35291 33335 33337 +f 35291 33337 35292 +f 35292 33337 33339 +f 35292 33339 33340 +f 35292 33340 35293 +f 35293 33340 33342 +f 35293 33342 35294 +f 35294 33342 33344 +f 35294 33344 35295 +f 35295 33344 33346 +f 35295 33346 35296 +f 35296 33346 33251 +f 35296 33251 35297 +f 35297 33251 35298 +f 35297 35298 35299 +f 35299 35298 35300 +f 35299 35300 35301 +f 35301 35300 35302 +f 35301 35302 35303 +f 35303 35302 35304 +f 35303 35304 35305 +f 35305 35304 35306 +f 35305 35306 35307 +f 35307 35306 35308 +f 35307 35308 35309 +f 35309 35308 35310 +f 35309 35310 35311 +f 35311 35310 35312 +f 35311 35312 35313 +f 35313 35312 35314 +f 35313 35314 35315 +f 35315 35314 35213 +f 35315 35213 35211 +f 33251 33249 35298 +f 35298 33249 35316 +f 35298 35316 35300 +f 35300 35316 35317 +f 35300 35317 35302 +f 35302 35317 35318 +f 35302 35318 35304 +f 35304 35318 35319 +f 35304 35319 35306 +f 35306 35319 35320 +f 35306 35320 35308 +f 35308 35320 35321 +f 35308 35321 35310 +f 35310 35321 35322 +f 35310 35322 35312 +f 35312 35322 35323 +f 35312 35323 35314 +f 35314 35323 35215 +f 35314 35215 35213 +f 33249 33247 35316 +f 35316 33247 35324 +f 35316 35324 35317 +f 35317 35324 35325 +f 35317 35325 35318 +f 35318 35325 35326 +f 35318 35326 35319 +f 35319 35326 35327 +f 35319 35327 35320 +f 35320 35327 35328 +f 35320 35328 35321 +f 35321 35328 35329 +f 35321 35329 35322 +f 35322 35329 35330 +f 35322 35330 35323 +f 35323 35330 35217 +f 35323 35217 35215 +f 33247 33245 35324 +f 35324 33245 35331 +f 35324 35331 35325 +f 35325 35331 35332 +f 35325 35332 35326 +f 35326 35332 35333 +f 35326 35333 35327 +f 35327 35333 35334 +f 35327 35334 35328 +f 35328 35334 35335 +f 35328 35335 35329 +f 35329 35335 35336 +f 35329 35336 35330 +f 35330 35336 35219 +f 35330 35219 35217 +f 33245 33243 35331 +f 35331 33243 35337 +f 35331 35337 35332 +f 35332 35337 35338 +f 35332 35338 35333 +f 35333 35338 35339 +f 35333 35339 35334 +f 35334 35339 35340 +f 35334 35340 35335 +f 35335 35340 35341 +f 35335 35341 35336 +f 35336 35341 35221 +f 35336 35221 35219 +f 33243 33241 35337 +f 35337 33241 33240 +f 35337 33240 35342 +f 35342 33240 33238 +f 35342 33238 35343 +f 35343 33238 33236 +f 35343 33236 35344 +f 35344 33236 33234 +f 35344 33234 35345 +f 35345 33234 33232 +f 35345 33232 35231 +f 35231 33232 33230 +f 35232 33228 35346 +f 35346 33228 33226 +f 35346 33226 35347 +f 35347 33226 33224 +f 35347 33224 35348 +f 35348 33224 33222 +f 35348 33222 35349 +f 35349 33222 33220 +f 35349 33220 35350 +f 35350 33220 33218 +f 35350 33218 35351 +f 35351 33218 33216 +f 35351 33216 35352 +f 35352 33216 33123 +f 35352 33123 35353 +f 35353 33123 33122 +f 35353 33122 35354 +f 35354 33122 33214 +f 35354 33214 35355 +f 35355 33214 33212 +f 35355 33212 35356 +f 35356 33212 33209 +f 35356 33209 35357 +f 35357 33209 33205 +f 35357 33205 33200 +f 35357 33200 35358 +f 35358 33200 33194 +f 35358 33194 35359 +f 35359 33194 33187 +f 35359 33187 35360 +f 35360 33187 33179 +f 35360 33179 35361 +f 35361 33179 33170 +f 35361 33170 35362 +f 35362 33170 35363 +f 35362 35363 35364 +f 35364 35363 35365 +f 35364 35365 35366 +f 35366 35365 35367 +f 35366 35367 35368 +f 35368 35367 35369 +f 35368 35369 35370 +f 35370 35369 35371 +f 35370 35371 35372 +f 35372 35371 35373 +f 35372 35373 35374 +f 35374 35373 35375 +f 35374 35375 35376 +f 35376 35375 35377 +f 35376 35377 35378 +f 35378 35377 35379 +f 35378 35379 35380 +f 35380 35379 35381 +f 35380 35381 35382 +f 35382 35381 35383 +f 35382 35383 35384 +f 35384 35383 35385 +f 35384 35385 35386 +f 35386 35385 35387 +f 35386 35387 35388 +f 35388 35387 35389 +f 35388 35389 35390 +f 35390 35389 35391 +f 35390 35391 35392 +f 35392 35391 35393 +f 35392 35393 35394 +f 35394 35393 35395 +f 35394 35395 35396 +f 35396 35395 35397 +f 35396 35397 35398 +f 35398 35397 35399 +f 35398 35399 35400 +f 35400 35399 35401 +f 35400 35401 35402 +f 35402 35401 35403 +f 35402 35403 35404 +f 35404 35403 35405 +f 35404 35405 35406 +f 35406 35405 35407 +f 35406 35407 35408 +f 35408 35407 35409 +f 35408 35409 35410 +f 35410 35409 35411 +f 35410 35411 35412 +f 35412 35411 35413 +f 35412 35413 35414 +f 35414 35413 35415 +f 35414 35415 35416 +f 35416 35415 35417 +f 35416 35417 35418 +f 35418 35417 35419 +f 35418 35419 35420 +f 35420 35419 35421 +f 35420 35421 35422 +f 35422 35421 35423 +f 35422 35423 35424 +f 35424 35423 35425 +f 35424 35425 35426 +f 35426 35425 35427 +f 35426 35427 35428 +f 35428 35427 35429 +f 35428 35429 35430 +f 35430 35429 33036 +f 35430 33036 33035 +f 33170 33150 35363 +f 35363 33150 35431 +f 35363 35431 35365 +f 35365 35431 35432 +f 35365 35432 35367 +f 35367 35432 35433 +f 35367 35433 35369 +f 35369 35433 35434 +f 35369 35434 35371 +f 35371 35434 35435 +f 35371 35435 35373 +f 35373 35435 35436 +f 35373 35436 35375 +f 35375 35436 35437 +f 35375 35437 35377 +f 35377 35437 35438 +f 35377 35438 35379 +f 35379 35438 35439 +f 35379 35439 35381 +f 35381 35439 35440 +f 35381 35440 35383 +f 35383 35440 35441 +f 35383 35441 35385 +f 35385 35441 35442 +f 35385 35442 35387 +f 35387 35442 35443 +f 35387 35443 35389 +f 35389 35443 35444 +f 35389 35444 35391 +f 35391 35444 35445 +f 35391 35445 35393 +f 35393 35445 35446 +f 35393 35446 35395 +f 35395 35446 35397 +f 33150 33148 35431 +f 35431 33148 35447 +f 35431 35447 35432 +f 35432 35447 35448 +f 35432 35448 35433 +f 35433 35448 35449 +f 35433 35449 35434 +f 35434 35449 35450 +f 35434 35450 35435 +f 35435 35450 35451 +f 35435 35451 35436 +f 35436 35451 35452 +f 35436 35452 35437 +f 35437 35452 35453 +f 35437 35453 35438 +f 35438 35453 35454 +f 35438 35454 35439 +f 35439 35454 35455 +f 35439 35455 35440 +f 35440 35455 35456 +f 35440 35456 35441 +f 35441 35456 35457 +f 35441 35457 35442 +f 35442 35457 35458 +f 35442 35458 35443 +f 35443 35458 35459 +f 35443 35459 35444 +f 35444 35459 35460 +f 35444 35460 35445 +f 35445 35460 35461 +f 35445 35461 35446 +f 35446 35461 35399 +f 35446 35399 35397 +f 33148 33146 35447 +f 35447 33146 35462 +f 35447 35462 35448 +f 35448 35462 35463 +f 35448 35463 35449 +f 35449 35463 35464 +f 35449 35464 35450 +f 35450 35464 35465 +f 35450 35465 35451 +f 35451 35465 35466 +f 35451 35466 35452 +f 35452 35466 35467 +f 35452 35467 35453 +f 35453 35467 35468 +f 35453 35468 35454 +f 35454 35468 35469 +f 35454 35469 35455 +f 35455 35469 35470 +f 35455 35470 35456 +f 35456 35470 35471 +f 35456 35471 35457 +f 35457 35471 35472 +f 35457 35472 35458 +f 35458 35472 35473 +f 35458 35473 35459 +f 35459 35473 35474 +f 35459 35474 35460 +f 35460 35474 35475 +f 35460 35475 35461 +f 35461 35475 35401 +f 35461 35401 35399 +f 33146 33144 35462 +f 35462 33144 35476 +f 35462 35476 35463 +f 35463 35476 35477 +f 35463 35477 35464 +f 35464 35477 35478 +f 35464 35478 35465 +f 35465 35478 35479 +f 35465 35479 35466 +f 35466 35479 35480 +f 35466 35480 35467 +f 35467 35480 35481 +f 35467 35481 35468 +f 35468 35481 35482 +f 35468 35482 35469 +f 35469 35482 35483 +f 35469 35483 35470 +f 35470 35483 35484 +f 35470 35484 35471 +f 35471 35484 35485 +f 35471 35485 35472 +f 35472 35485 35486 +f 35472 35486 35473 +f 35473 35486 35487 +f 35473 35487 35474 +f 35474 35487 35488 +f 35474 35488 35475 +f 35475 35488 35403 +f 35475 35403 35401 +f 33144 33142 35476 +f 35476 33142 35489 +f 35476 35489 35477 +f 35477 35489 35490 +f 35477 35490 35478 +f 35478 35490 35491 +f 35478 35491 35479 +f 35479 35491 35492 +f 35479 35492 35480 +f 35480 35492 35493 +f 35480 35493 35481 +f 35481 35493 35494 +f 35481 35494 35482 +f 35482 35494 35495 +f 35482 35495 35483 +f 35483 35495 35496 +f 35483 35496 35484 +f 35484 35496 35497 +f 35484 35497 35485 +f 35485 35497 35498 +f 35485 35498 35486 +f 35486 35498 35499 +f 35486 35499 35487 +f 35487 35499 35500 +f 35487 35500 35488 +f 35488 35500 35405 +f 35488 35405 35403 +f 33142 33124 35489 +f 35489 33124 35501 +f 35489 35501 35490 +f 35490 35501 35502 +f 35490 35502 35491 +f 35491 35502 35503 +f 35491 35503 35492 +f 35492 35503 35504 +f 35492 35504 35493 +f 35493 35504 35505 +f 35493 35505 35494 +f 35494 35505 35506 +f 35494 35506 35495 +f 35495 35506 35507 +f 35495 35507 35508 +f 35508 35507 35509 +f 35508 35509 35510 +f 35510 35509 35511 +f 35510 35511 35512 +f 35512 35511 35513 +f 35512 35513 35514 +f 35514 35513 35515 +f 35514 35515 35415 +f 35415 35515 35417 +f 33052 35516 33124 +f 33124 35516 35517 +f 33124 35517 35501 +f 35501 35517 35502 +f 35516 33052 35518 +f 35518 33052 33050 +f 35518 33050 35519 +f 35519 33050 33048 +f 35519 33048 35520 +f 35520 33048 33046 +f 35520 33046 35521 +f 35521 33046 33044 +f 35521 33044 35522 +f 35522 33044 35523 +f 35522 35523 35524 +f 35524 35523 35525 +f 35524 35525 35526 +f 35526 35525 35527 +f 35526 35527 35528 +f 35528 35527 35423 +f 35528 35423 35421 +f 33044 33042 35523 +f 35523 33042 35529 +f 35523 35529 35525 +f 35525 35529 35530 +f 35525 35530 35527 +f 35527 35530 35425 +f 35527 35425 35423 +f 33042 33040 35529 +f 35529 33040 35531 +f 35529 35531 35530 +f 35530 35531 35427 +f 35530 35427 35425 +f 33040 33038 35531 +f 35531 33038 35429 +f 35531 35429 35427 +f 33038 33036 35429 +f 33035 33033 35430 +f 35430 33033 35532 +f 35430 35532 35533 +f 35533 35532 35534 +f 35533 35534 35535 +f 35535 35534 35536 +f 35535 35536 35537 +f 35537 35536 35538 +f 35537 35538 35539 +f 35539 35538 35540 +f 35539 35540 35541 +f 35541 35540 35542 +f 35541 35542 35543 +f 35543 35542 35544 +f 35543 35544 35545 +f 35545 35544 35546 +f 35545 35546 35547 +f 35547 35546 35548 +f 35547 35548 35549 +f 35549 35548 35550 +f 35549 35550 35551 +f 35551 35550 35552 +f 35551 35552 35553 +f 35553 35552 35554 +f 35553 35554 35555 +f 35555 35554 35556 +f 35555 35556 35557 +f 35557 35556 35558 +f 35557 35558 35559 +f 35559 35558 35560 +f 35559 35560 35561 +f 35561 35560 35562 +f 35561 35562 35563 +f 35563 35562 35564 +f 35563 35564 35565 +f 35565 35564 35566 +f 35566 35564 35567 +f 35566 35567 35568 +f 35568 35567 35569 +f 35568 35569 35570 +f 35570 35569 35571 +f 35570 35571 35572 +f 35572 35571 35573 +f 35572 35573 35574 +f 35574 35573 35575 +f 35574 35575 35576 +f 35576 35575 35577 +f 35576 35577 35578 +f 35578 35577 35579 +f 35578 35579 35580 +f 35580 35579 35581 +f 35580 35581 35582 +f 35582 35581 35583 +f 35582 35583 35584 +f 35584 35583 35585 +f 35584 35585 35586 +f 35586 35585 35587 +f 35586 35587 35588 +f 35588 35587 35589 +f 35588 35589 35590 +f 35590 35589 35591 +f 35590 35591 35592 +f 35592 35591 35593 +f 35592 35593 35594 +f 35594 35593 35595 +f 35594 35595 35596 +f 35596 35595 35597 +f 35596 35597 35598 +f 35598 35597 35599 +f 35598 35599 35600 +f 35600 35599 32953 +f 35600 32953 32936 +f 33033 33032 35532 +f 35532 33032 33030 +f 35532 33030 35601 +f 35601 33030 32918 +f 35601 32918 35602 +f 35602 32918 32917 +f 35602 32917 33028 +f 35602 33028 35603 +f 35603 33028 33027 +f 35603 33027 35604 +f 35604 33027 33025 +f 35604 33025 35605 +f 35605 33025 33023 +f 35605 33023 35606 +f 35606 33023 33021 +f 35606 33021 35607 +f 35607 33021 33017 +f 35607 33017 35608 +f 35608 33017 33009 +f 35608 33009 35609 +f 35609 33009 35610 +f 35609 35610 35611 +f 35611 35610 35612 +f 35611 35612 35613 +f 35613 35612 35614 +f 35613 35614 35615 +f 35615 35614 35616 +f 35615 35616 35617 +f 35617 35616 35618 +f 35617 35618 35619 +f 35619 35618 35620 +f 35619 35620 35621 +f 35621 35620 35622 +f 35621 35622 35623 +f 35623 35622 35585 +f 35623 35585 35583 +f 35610 33009 35624 +f 35624 33009 32991 +f 35624 32991 35625 +f 35625 32991 35626 +f 35625 35626 35627 +f 35627 35626 35628 +f 35627 35628 35629 +f 35629 35628 35630 +f 35629 35630 35631 +f 35631 35630 35632 +f 35631 35632 35633 +f 35633 35632 35591 +f 35633 35591 35589 +f 32991 32989 35626 +f 35626 32989 35634 +f 35626 35634 35628 +f 35628 35634 35635 +f 35628 35635 35630 +f 35630 35635 35636 +f 35630 35636 35632 +f 35632 35636 35593 +f 35632 35593 35591 +f 32989 32987 35634 +f 35634 32987 35637 +f 35634 35637 35635 +f 35635 35637 35638 +f 35635 35638 35636 +f 35636 35638 35595 +f 35636 35595 35593 +f 32987 32985 35637 +f 35637 32985 35639 +f 35637 35639 35638 +f 35638 35639 35597 +f 35638 35597 35595 +f 32985 32969 35639 +f 35639 32969 35599 +f 35639 35599 35597 +f 32969 32953 35599 +f 35600 32936 35640 +f 35640 32936 32919 +f 35640 32919 35641 +f 35641 32919 35642 +f 35641 35642 35643 +f 35643 35642 35644 +f 35643 35644 35645 +f 35645 35644 35646 +f 35645 35646 35647 +f 35647 35646 35648 +f 35647 35648 35649 +f 35649 35648 35650 +f 35649 35650 35651 +f 35651 35650 35652 +f 35651 35652 35653 +f 35653 35652 35654 +f 35653 35654 35655 +f 35655 35654 35656 +f 35655 35656 35657 +f 35657 35656 35658 +f 35657 35658 35659 +f 35659 35658 35660 +f 35659 35660 35661 +f 35661 35660 35662 +f 35661 35662 35663 +f 35663 35662 35664 +f 35663 35664 35665 +f 35665 35664 35666 +f 35665 35666 35667 +f 35667 35666 35668 +f 35667 35668 35669 +f 35669 35668 35670 +f 35669 35670 35671 +f 35671 35670 35672 +f 35671 35672 35673 +f 35673 35672 35674 +f 35673 35674 35675 +f 35675 35674 35676 +f 35676 35674 35677 +f 35676 35677 35678 +f 35678 35677 35679 +f 35679 35677 35680 +f 35679 35680 35681 +f 35681 35680 35672 +f 35681 35672 35670 +f 32919 32845 35642 +f 35642 32845 35682 +f 35642 35682 35644 +f 35644 35682 35683 +f 35644 35683 35646 +f 35646 35683 35684 +f 35646 35684 35648 +f 35648 35684 35685 +f 35648 35685 35650 +f 35650 35685 35686 +f 35650 35686 35652 +f 35652 35686 35687 +f 35652 35687 35654 +f 35654 35687 35688 +f 35654 35688 35656 +f 35656 35688 35689 +f 35656 35689 35658 +f 35658 35689 35690 +f 35658 35690 35660 +f 35660 35690 35691 +f 35660 35691 35662 +f 35662 35691 35692 +f 35662 35692 35664 +f 35664 35692 35693 +f 35664 35693 35666 +f 35666 35693 35694 +f 35666 35694 35668 +f 35668 35694 35695 +f 35668 35695 35670 +f 35670 35695 35681 +f 35682 32845 35696 +f 35696 32845 32843 +f 35696 32843 32841 +f 32841 35697 35696 +f 35696 35697 35698 +f 35696 35698 35683 +f 35683 35698 35684 +f 35699 35700 35697 +f 35697 35700 35701 +f 35697 35701 35698 +f 35698 35701 35684 +f 35702 35703 35699 +f 35699 35703 35704 +f 35699 35704 35700 +f 35700 35704 35686 +f 35700 35686 35685 +f 35705 35690 35702 +f 35702 35690 35689 +f 35702 35689 35688 +f 35706 35692 35705 +f 35705 35692 35691 +f 35705 35691 35690 +f 35679 35695 35706 +f 35706 35695 35694 +f 35706 35694 35693 +f 35707 35708 35675 +f 35675 35708 35709 +f 35675 35709 35673 +f 35673 35709 35671 +f 35710 35711 35707 +f 35707 35711 35712 +f 35707 35712 35708 +f 35708 35712 35713 +f 35708 35713 35714 +f 35714 35713 35715 +f 35714 35715 35669 +f 35669 35715 35667 +f 35711 35710 35716 +f 35716 35710 35717 +f 35716 35717 35718 +f 35718 35717 35719 +f 35718 35719 35720 +f 35720 35719 35721 +f 35720 35721 35722 +f 35722 35721 35723 +f 35722 35723 35724 +f 35722 35724 35725 +f 35725 35724 35726 +f 35725 35726 35727 +f 35727 35726 35728 +f 35727 35728 35729 +f 35729 35728 35730 +f 35729 35730 35731 +f 35731 35730 35732 +f 35731 35732 35733 +f 35733 35732 35734 +f 35733 35734 35735 +f 35735 35734 35736 +f 35735 35736 35737 +f 35737 35736 35738 +f 35737 35738 35739 +f 35739 35738 35568 +f 35739 35568 35570 +f 35738 35566 35568 +f 35563 35565 35740 +f 35740 35565 35741 +f 35740 35741 35742 +f 35742 35741 35743 +f 35742 35743 35744 +f 35744 35743 35745 +f 35744 35745 35746 +f 35746 35745 35747 +f 35746 35747 35748 +f 35748 35747 35749 +f 35748 35749 35750 +f 35750 35749 35751 +f 35750 35751 35752 +f 35752 35751 35753 +f 35752 35753 35754 +f 35754 35753 35755 +f 35754 35755 35756 +f 35756 35755 35757 +f 35756 35757 35758 +f 35758 35757 35759 +f 35758 35759 35760 +f 35760 35759 35761 +f 35760 35761 35762 +f 35762 35761 35763 +f 35762 35763 35764 +f 35764 35763 35765 +f 35764 35765 35766 +f 35766 35765 35767 +f 35766 35767 35768 +f 35768 35767 35769 +f 35768 35769 35418 +f 35418 35769 35416 +f 35741 35770 35743 +f 35743 35770 35771 +f 35743 35771 35745 +f 35745 35771 35772 +f 35745 35772 35747 +f 35747 35772 35773 +f 35747 35773 35749 +f 35749 35773 35774 +f 35749 35774 35751 +f 35751 35774 35775 +f 35751 35775 35753 +f 35753 35775 35776 +f 35753 35776 35755 +f 35755 35776 35777 +f 35755 35777 35757 +f 35757 35777 35778 +f 35757 35778 35759 +f 35759 35778 35779 +f 35759 35779 35761 +f 35761 35779 35763 +f 35771 35770 35780 +f 35780 35770 35781 +f 35780 35781 35782 +f 35782 35781 35783 +f 35782 35783 35784 +f 35784 35783 35785 +f 35784 35785 35786 +f 35786 35785 35787 +f 35786 35787 35788 +f 35788 35787 35789 +f 35788 35789 35790 +f 35790 35789 35791 +f 35790 35791 35792 +f 35792 35791 35793 +f 35792 35793 35794 +f 35794 35793 35795 +f 35794 35795 35796 +f 35796 35795 35797 +f 35796 35797 35798 +f 35798 35797 35799 +f 35798 35799 35767 +f 35767 35799 35769 +f 35781 35800 35783 +f 35783 35800 35801 +f 35783 35801 35785 +f 35785 35801 35802 +f 35785 35802 35787 +f 35787 35802 35803 +f 35787 35803 35789 +f 35789 35803 35804 +f 35789 35804 35791 +f 35791 35804 35805 +f 35791 35805 35793 +f 35793 35805 35806 +f 35793 35806 35795 +f 35795 35806 35807 +f 35795 35807 35797 +f 35797 35807 35808 +f 35797 35808 35799 +f 35799 35808 35809 +f 35799 35809 35769 +f 35769 35809 35416 +f 35810 35811 35800 +f 35800 35811 35812 +f 35800 35812 35801 +f 35801 35812 35802 +f 35813 35814 35810 +f 35810 35814 35815 +f 35810 35815 35816 +f 35816 35815 35817 +f 35816 35817 35818 +f 35818 35817 35819 +f 35818 35819 35820 +f 35820 35819 35821 +f 35820 35821 35822 +f 35822 35821 35823 +f 35822 35823 35805 +f 35805 35823 35806 +f 35824 35825 35813 +f 35813 35825 35826 +f 35813 35826 35814 +f 35814 35826 35827 +f 35814 35827 35828 +f 35828 35827 35829 +f 35828 35829 35830 +f 35830 35829 35831 +f 35830 35831 35832 +f 35832 35831 35833 +f 35832 35833 35834 +f 35834 35833 35835 +f 35834 35835 35836 +f 35836 35835 35837 +f 35836 35837 35807 +f 35807 35837 35808 +f 35825 35824 35398 +f 35398 35824 35396 +f 35838 35839 35396 +f 35396 35839 35840 +f 35396 35840 35394 +f 35394 35840 35392 +f 35841 35842 35838 +f 35838 35842 35843 +f 35838 35843 35844 +f 35844 35843 35845 +f 35844 35845 35846 +f 35846 35845 35847 +f 35846 35847 35848 +f 35848 35847 35849 +f 35848 35849 35850 +f 35850 35849 35851 +f 35850 35851 35852 +f 35852 35851 35853 +f 35852 35853 35384 +f 35384 35853 35382 +f 35854 35855 35841 +f 35841 35855 35856 +f 35841 35856 35842 +f 35842 35856 35857 +f 35842 35857 35858 +f 35858 35857 35859 +f 35858 35859 35860 +f 35860 35859 35861 +f 35860 35861 35862 +f 35862 35861 35863 +f 35862 35863 35864 +f 35864 35863 35865 +f 35864 35865 35866 +f 35866 35865 35867 +f 35866 35867 35868 +f 35868 35867 35869 +f 35868 35869 35380 +f 35380 35869 35378 +f 35870 35871 35854 +f 35854 35871 35872 +f 35854 35872 35873 +f 35873 35872 35874 +f 35873 35874 35875 +f 35875 35874 35876 +f 35875 35876 35877 +f 35877 35876 35878 +f 35877 35878 35879 +f 35879 35878 35880 +f 35879 35880 35881 +f 35881 35880 35882 +f 35881 35882 35883 +f 35883 35882 35884 +f 35883 35884 35885 +f 35885 35884 35886 +f 35885 35886 35887 +f 35887 35886 35888 +f 35887 35888 35889 +f 35889 35888 35890 +f 35889 35890 35891 +f 35891 35890 35892 +f 35891 35892 35374 +f 35374 35892 35372 +f 35893 35894 35870 +f 35870 35894 35895 +f 35870 35895 35896 +f 35896 35895 35897 +f 35896 35897 35898 +f 35898 35897 35899 +f 35898 35899 35900 +f 35900 35899 35901 +f 35900 35901 35902 +f 35902 35901 35903 +f 35902 35903 35904 +f 35904 35903 35905 +f 35904 35905 35906 +f 35906 35905 35907 +f 35906 35907 35908 +f 35908 35907 35909 +f 35908 35909 35910 +f 35910 35909 35911 +f 35910 35911 35912 +f 35912 35911 35913 +f 35912 35913 35914 +f 35914 35913 35915 +f 35914 35915 35916 +f 35916 35915 35917 +f 35916 35917 35918 +f 35918 35917 35919 +f 35918 35919 35920 +f 35920 35919 35921 +f 35920 35921 35922 +f 35922 35921 35923 +f 35922 35923 35366 +f 35366 35923 35364 +f 35924 35925 35893 +f 35893 35925 35926 +f 35893 35926 35927 +f 35927 35926 35928 +f 35927 35928 35929 +f 35929 35928 35930 +f 35929 35930 35931 +f 35931 35930 35932 +f 35931 35932 35933 +f 35933 35932 35934 +f 35933 35934 35935 +f 35935 35934 35936 +f 35935 35936 35937 +f 35937 35936 35938 +f 35937 35938 35939 +f 35939 35938 35940 +f 35939 35940 35941 +f 35941 35940 35942 +f 35941 35942 35943 +f 35943 35942 35944 +f 35943 35944 35945 +f 35945 35944 35946 +f 35945 35946 35947 +f 35947 35946 35948 +f 35947 35948 35949 +f 35949 35948 35950 +f 35949 35950 35951 +f 35951 35950 35952 +f 35951 35952 35953 +f 35953 35952 35954 +f 35953 35954 35955 +f 35955 35954 35956 +f 35955 35956 35957 +f 35957 35956 35356 +f 35957 35356 35357 +f 35958 35959 35924 +f 35924 35959 35960 +f 35924 35960 35961 +f 35961 35960 35962 +f 35961 35962 35963 +f 35963 35962 35964 +f 35963 35964 35965 +f 35965 35964 35966 +f 35965 35966 35967 +f 35967 35966 35968 +f 35967 35968 35969 +f 35969 35968 35970 +f 35969 35970 35971 +f 35971 35970 35972 +f 35971 35972 35973 +f 35973 35972 35974 +f 35973 35974 35975 +f 35975 35974 35976 +f 35975 35976 35977 +f 35977 35976 35978 +f 35977 35978 35979 +f 35979 35978 35980 +f 35979 35980 35981 +f 35981 35980 35982 +f 35981 35982 35983 +f 35983 35982 35984 +f 35983 35984 35985 +f 35985 35984 35986 +f 35985 35986 35987 +f 35987 35986 35988 +f 35987 35988 35989 +f 35989 35988 35990 +f 35989 35990 35991 +f 35991 35990 35351 +f 35991 35351 35352 +f 35198 35992 35958 +f 35958 35992 35993 +f 35958 35993 35994 +f 35994 35993 35995 +f 35994 35995 35996 +f 35996 35995 35997 +f 35996 35997 35998 +f 35998 35997 35999 +f 35998 35999 36000 +f 36000 35999 36001 +f 36000 36001 36002 +f 36002 36001 36003 +f 36002 36003 36004 +f 36004 36003 36005 +f 36004 36005 36006 +f 36006 36005 36007 +f 36006 36007 36008 +f 36008 36007 36009 +f 36008 36009 36010 +f 36010 36009 36011 +f 36010 36011 36012 +f 36012 36011 36013 +f 36012 36013 36014 +f 36014 36013 36015 +f 36014 36015 36016 +f 36016 36015 36017 +f 36016 36017 36018 +f 36018 36017 36019 +f 36018 36019 36020 +f 36020 36019 36021 +f 36020 36021 36022 +f 36022 36021 36023 +f 36022 36023 36024 +f 36024 36023 35347 +f 36024 35347 35348 +f 35702 35688 35703 +f 35703 35688 35687 +f 35703 35687 35704 +f 35704 35687 35686 +f 35692 35706 35693 +f 35695 35679 35681 +f 35683 35682 35696 +f 35640 35641 36025 +f 36025 35641 35643 +f 36025 35643 36026 +f 36026 35643 35645 +f 36026 35645 36027 +f 36027 35645 35647 +f 36027 35647 36028 +f 36028 35647 35649 +f 36028 35649 36029 +f 36029 35649 35651 +f 36029 35651 36030 +f 36030 35651 35653 +f 36030 35653 36031 +f 36031 35653 35655 +f 36031 35655 36032 +f 36032 35655 35657 +f 36032 35657 36033 +f 36033 35657 35659 +f 36033 35659 36034 +f 36034 35659 35661 +f 36034 35661 36035 +f 36035 35661 35663 +f 36035 35663 36036 +f 36036 35663 35665 +f 36036 35665 36037 +f 36037 35665 35667 +f 36037 35667 35715 +f 35600 35640 36038 +f 36038 35640 36025 +f 36038 36025 36039 +f 36039 36025 36026 +f 36039 36026 36040 +f 36040 36026 36027 +f 36040 36027 36041 +f 36041 36027 36028 +f 36041 36028 36042 +f 36042 36028 36029 +f 36042 36029 36043 +f 36043 36029 36030 +f 36043 36030 36044 +f 36044 36030 36031 +f 36044 36031 36045 +f 36045 36031 36032 +f 36045 36032 36046 +f 36046 36032 36033 +f 36046 36033 36047 +f 36047 36033 36034 +f 36047 36034 36048 +f 36048 36034 36035 +f 36048 36035 36049 +f 36049 36035 36036 +f 36049 36036 36050 +f 36050 36036 36037 +f 36050 36037 36051 +f 36051 36037 35715 +f 36051 35715 35713 +f 35612 35610 35624 +f 35624 35625 36052 +f 36052 35625 35627 +f 36052 35627 36053 +f 36053 35627 35629 +f 36053 35629 36054 +f 36054 35629 35631 +f 36054 35631 36055 +f 36055 35631 35633 +f 36055 35633 36056 +f 36056 35633 35589 +f 36056 35589 35587 +f 35608 35609 36057 +f 36057 35609 35611 +f 36057 35611 36058 +f 36058 35611 35613 +f 36058 35613 36059 +f 36059 35613 35615 +f 36059 35615 36060 +f 36060 35615 35617 +f 36060 35617 36061 +f 36061 35617 35619 +f 36061 35619 36062 +f 36062 35619 35621 +f 36062 35621 36063 +f 36063 35621 35623 +f 36063 35623 36064 +f 36064 35623 35583 +f 36064 35583 35581 +f 35607 35608 36065 +f 36065 35608 36057 +f 36065 36057 36066 +f 36066 36057 36058 +f 36066 36058 36067 +f 36067 36058 36059 +f 36067 36059 36068 +f 36068 36059 36060 +f 36068 36060 36069 +f 36069 36060 36061 +f 36069 36061 36070 +f 36070 36061 36062 +f 36070 36062 36071 +f 36071 36062 36063 +f 36071 36063 36072 +f 36072 36063 36064 +f 36072 36064 36073 +f 36073 36064 35581 +f 36073 35581 35579 +f 35606 35607 36074 +f 36074 35607 36065 +f 36074 36065 36075 +f 36075 36065 36066 +f 36075 36066 36076 +f 36076 36066 36067 +f 36076 36067 36077 +f 36077 36067 36068 +f 36077 36068 36078 +f 36078 36068 36069 +f 36078 36069 36079 +f 36079 36069 36070 +f 36079 36070 36080 +f 36080 36070 36071 +f 36080 36071 36081 +f 36081 36071 36072 +f 36081 36072 36082 +f 36082 36072 36073 +f 36082 36073 36083 +f 36083 36073 35579 +f 36083 35579 35577 +f 35605 35606 36084 +f 36084 35606 36074 +f 36084 36074 36085 +f 36085 36074 36075 +f 36085 36075 36086 +f 36086 36075 36076 +f 36086 36076 36087 +f 36087 36076 36077 +f 36087 36077 36088 +f 36088 36077 36078 +f 36088 36078 36089 +f 36089 36078 36079 +f 36089 36079 36090 +f 36090 36079 36080 +f 36090 36080 36091 +f 36091 36080 36081 +f 36091 36081 36092 +f 36092 36081 36082 +f 36092 36082 36093 +f 36093 36082 36083 +f 36093 36083 36094 +f 36094 36083 35577 +f 36094 35577 35575 +f 35604 35605 36095 +f 36095 35605 36084 +f 36095 36084 36096 +f 36096 36084 36085 +f 36096 36085 36097 +f 36097 36085 36086 +f 36097 36086 36098 +f 36098 36086 36087 +f 36098 36087 36099 +f 36099 36087 36088 +f 36099 36088 36100 +f 36100 36088 36089 +f 36100 36089 36101 +f 36101 36089 36090 +f 36101 36090 36102 +f 36102 36090 36091 +f 36102 36091 36103 +f 36103 36091 36092 +f 36103 36092 36104 +f 36104 36092 36093 +f 36104 36093 36105 +f 36105 36093 36094 +f 36105 36094 36106 +f 36106 36094 35575 +f 36106 35575 35573 +f 35603 35604 36107 +f 36107 35604 36095 +f 36107 36095 36108 +f 36108 36095 36096 +f 36108 36096 36109 +f 36109 36096 36097 +f 36109 36097 36110 +f 36110 36097 36098 +f 36110 36098 36111 +f 36111 36098 36099 +f 36111 36099 36112 +f 36112 36099 36100 +f 36112 36100 36113 +f 36113 36100 36101 +f 36113 36101 36114 +f 36114 36101 36102 +f 36114 36102 36115 +f 36115 36102 36103 +f 36115 36103 36116 +f 36116 36103 36104 +f 36116 36104 36117 +f 36117 36104 36105 +f 36117 36105 36118 +f 36118 36105 36106 +f 36118 36106 36119 +f 36119 36106 35573 +f 36119 35573 35571 +f 35602 35603 36120 +f 36120 35603 36107 +f 36120 36107 36121 +f 36121 36107 36108 +f 36121 36108 36122 +f 36122 36108 36109 +f 36122 36109 36123 +f 36123 36109 36110 +f 36123 36110 36124 +f 36124 36110 36111 +f 36124 36111 36125 +f 36125 36111 36112 +f 36125 36112 36126 +f 36126 36112 36113 +f 36126 36113 36127 +f 36127 36113 36114 +f 36127 36114 36128 +f 36128 36114 36115 +f 36128 36115 36129 +f 36129 36115 36116 +f 36129 36116 36130 +f 36130 36116 36117 +f 36130 36117 36131 +f 36131 36117 36118 +f 36131 36118 36132 +f 36132 36118 36119 +f 36132 36119 36133 +f 36133 36119 35571 +f 36133 35571 35569 +f 35534 35532 35601 +f 35601 35602 36134 +f 36134 35602 36120 +f 36134 36120 36135 +f 36135 36120 36121 +f 36135 36121 36136 +f 36136 36121 36122 +f 36136 36122 36137 +f 36137 36122 36123 +f 36137 36123 36138 +f 36138 36123 36124 +f 36138 36124 36139 +f 36139 36124 36125 +f 36139 36125 36140 +f 36140 36125 36126 +f 36140 36126 36141 +f 36141 36126 36127 +f 36141 36127 36142 +f 36142 36127 36128 +f 36142 36128 36143 +f 36143 36128 36129 +f 36143 36129 36144 +f 36144 36129 36130 +f 36144 36130 36145 +f 36145 36130 36131 +f 36145 36131 36146 +f 36146 36131 36132 +f 36146 36132 36147 +f 36147 36132 36133 +f 36147 36133 36148 +f 36148 36133 35569 +f 36148 35569 35567 +f 35428 35430 35533 +f 35521 35522 36149 +f 36149 35522 35524 +f 36149 35524 36150 +f 36150 35524 35526 +f 36150 35526 36151 +f 36151 35526 35528 +f 36151 35528 36152 +f 36152 35528 35421 +f 36152 35421 35419 +f 35520 35521 36153 +f 36153 35521 36149 +f 36153 36149 36154 +f 36154 36149 36150 +f 36154 36150 36155 +f 36155 36150 36151 +f 36155 36151 36156 +f 36156 36151 36152 +f 36156 36152 36157 +f 36157 36152 35419 +f 36157 35419 35417 +f 35519 35520 36158 +f 36158 35520 36153 +f 36158 36153 36159 +f 36159 36153 36154 +f 36159 36154 36160 +f 36160 36154 36155 +f 36160 36155 36161 +f 36161 36155 36156 +f 36161 36156 36162 +f 36162 36156 36157 +f 36162 36157 35515 +f 35515 36157 35417 +f 35518 35519 36163 +f 36163 35519 36158 +f 36163 36158 36164 +f 36164 36158 36159 +f 36164 36159 36165 +f 36165 36159 36160 +f 36165 36160 36166 +f 36166 36160 36161 +f 36166 36161 36167 +f 36167 36161 36162 +f 36167 36162 35513 +f 35513 36162 35515 +f 35516 35518 36168 +f 36168 35518 36163 +f 36168 36163 36169 +f 36169 36163 36164 +f 36169 36164 36170 +f 36170 36164 36165 +f 36170 36165 36171 +f 36171 36165 36166 +f 36171 36166 36172 +f 36172 36166 36167 +f 36172 36167 35511 +f 35511 36167 35513 +f 35517 35516 36173 +f 36173 35516 36168 +f 36173 36168 36174 +f 36174 36168 36169 +f 36174 36169 36175 +f 36175 36169 36170 +f 36175 36170 36176 +f 36176 36170 36171 +f 36176 36171 36177 +f 36177 36171 36172 +f 36177 36172 35509 +f 35509 36172 35511 +f 35361 35362 36178 +f 36178 35362 35364 +f 36178 35364 35923 +f 35360 35361 36179 +f 36179 35361 36178 +f 36179 36178 36180 +f 36180 36178 35923 +f 36180 35923 35921 +f 35359 35360 36181 +f 36181 35360 36179 +f 36181 36179 36182 +f 36182 36179 36180 +f 36182 36180 36183 +f 36183 36180 35921 +f 36183 35921 35919 +f 35358 35359 36184 +f 36184 35359 36181 +f 36184 36181 36185 +f 36185 36181 36182 +f 36185 36182 36186 +f 36186 36182 36183 +f 36186 36183 36187 +f 36187 36183 35919 +f 36187 35919 35917 +f 35357 35358 36188 +f 36188 35358 36184 +f 36188 36184 36189 +f 36189 36184 36185 +f 36189 36185 36190 +f 36190 36185 36186 +f 36190 36186 36191 +f 36191 36186 36187 +f 36191 36187 36192 +f 36192 36187 35917 +f 36192 35917 35915 +f 35356 35956 35355 +f 35355 35956 36193 +f 35355 36193 35354 +f 35354 36193 36194 +f 35354 36194 35353 +f 35353 36194 36195 +f 35353 36195 35352 +f 35352 36195 35991 +f 35351 35990 35350 +f 35350 35990 36196 +f 35350 36196 35349 +f 35349 36196 36197 +f 35349 36197 35348 +f 35348 36197 36024 +f 35347 36023 35346 +f 35346 36023 36198 +f 35346 36198 35232 +f 35232 36198 35230 +f 35231 35229 35345 +f 35345 35229 36199 +f 35345 36199 35344 +f 35344 36199 36200 +f 35344 36200 35343 +f 35343 36200 36201 +f 35343 36201 35342 +f 35342 36201 35338 +f 35342 35338 35337 +f 35296 35297 36202 +f 36202 35297 35299 +f 36202 35299 36203 +f 36203 35299 35301 +f 36203 35301 36204 +f 36204 35301 35303 +f 36204 35303 36205 +f 36205 35303 35305 +f 36205 35305 36206 +f 36206 35305 35307 +f 36206 35307 36207 +f 36207 35307 35309 +f 36207 35309 36208 +f 36208 35309 35311 +f 36208 35311 36209 +f 36209 35311 35313 +f 36209 35313 36210 +f 36210 35313 35315 +f 36210 35315 36211 +f 36211 35315 35211 +f 36211 35211 35209 +f 35295 35296 36212 +f 36212 35296 36202 +f 36212 36202 36213 +f 36213 36202 36203 +f 36213 36203 36214 +f 36214 36203 36204 +f 36214 36204 36215 +f 36215 36204 36205 +f 36215 36205 36216 +f 36216 36205 36206 +f 36216 36206 36217 +f 36217 36206 36207 +f 36217 36207 36218 +f 36218 36207 36208 +f 36218 36208 36219 +f 36219 36208 36209 +f 36219 36209 36220 +f 36220 36209 36210 +f 36220 36210 36221 +f 36221 36210 36211 +f 36221 36211 36222 +f 36222 36211 35209 +f 36222 35209 35207 +f 35294 35295 36223 +f 36223 35295 36212 +f 36223 36212 36224 +f 36224 36212 36213 +f 36224 36213 36225 +f 36225 36213 36214 +f 36225 36214 36226 +f 36226 36214 36215 +f 36226 36215 36227 +f 36227 36215 36216 +f 36227 36216 36228 +f 36228 36216 36217 +f 36228 36217 36229 +f 36229 36217 36218 +f 36229 36218 36230 +f 36230 36218 36219 +f 36230 36219 36231 +f 36231 36219 36220 +f 36231 36220 36232 +f 36232 36220 36221 +f 36232 36221 36233 +f 36233 36221 36222 +f 36233 36222 36234 +f 36234 36222 35207 +f 36234 35207 35205 +f 35293 35294 36235 +f 36235 35294 36223 +f 36235 36223 36236 +f 36236 36223 36224 +f 36236 36224 36237 +f 36237 36224 36225 +f 36237 36225 36238 +f 36238 36225 36226 +f 36238 36226 36239 +f 36239 36226 36227 +f 36239 36227 36240 +f 36240 36227 36228 +f 36240 36228 36241 +f 36241 36228 36229 +f 36241 36229 36242 +f 36242 36229 36230 +f 36242 36230 36243 +f 36243 36230 36231 +f 36243 36231 36244 +f 36244 36231 36232 +f 36244 36232 36245 +f 36245 36232 36233 +f 36245 36233 36246 +f 36246 36233 36234 +f 36246 36234 36247 +f 36247 36234 35205 +f 36247 35205 35203 +f 35292 35293 36248 +f 36248 35293 36235 +f 36248 36235 36249 +f 36249 36235 36236 +f 36249 36236 36250 +f 36250 36236 36237 +f 36250 36237 36251 +f 36251 36237 36238 +f 36251 36238 36252 +f 36252 36238 36239 +f 36252 36239 36253 +f 36253 36239 36240 +f 36253 36240 36254 +f 36254 36240 36241 +f 36254 36241 36255 +f 36255 36241 36242 +f 36255 36242 36256 +f 36256 36242 36243 +f 36256 36243 36257 +f 36257 36243 36244 +f 36257 36244 36258 +f 36258 36244 36245 +f 36258 36245 36259 +f 36259 36245 36246 +f 36259 36246 36260 +f 36260 36246 36247 +f 36260 36247 36261 +f 36261 36247 35203 +f 36261 35203 35201 +f 35276 35275 35291 +f 35291 35292 36262 +f 36262 35292 36248 +f 36262 36248 36263 +f 36263 36248 36249 +f 36263 36249 36264 +f 36264 36249 36250 +f 36264 36250 36265 +f 36265 36250 36251 +f 36265 36251 36266 +f 36266 36251 36252 +f 36266 36252 36267 +f 36267 36252 36253 +f 36267 36253 36268 +f 36268 36253 36254 +f 36268 36254 36269 +f 36269 36254 36255 +f 36269 36255 36270 +f 36270 36255 36256 +f 36270 36256 36271 +f 36271 36256 36257 +f 36271 36257 36272 +f 36272 36257 36258 +f 36272 36258 36273 +f 36273 36258 36259 +f 36273 36259 36274 +f 36274 36259 36260 +f 36274 36260 36275 +f 36275 36260 36261 +f 36275 36261 36276 +f 36276 36261 35201 +f 36276 35201 35199 +f 35685 35684 35701 +f 35700 35685 35701 +f 36039 36277 36038 +f 36038 36277 35598 +f 36038 35598 35600 +f 35598 36277 35596 +f 35596 36277 36278 +f 35596 36278 35594 +f 35594 36278 36279 +f 35594 36279 35592 +f 35592 36279 36280 +f 35592 36280 35590 +f 35590 36280 36281 +f 35590 36281 35588 +f 35588 36281 36282 +f 35588 36282 35586 +f 35586 36282 36283 +f 35586 36283 35584 +f 35584 36283 36284 +f 35584 36284 35582 +f 35582 36284 36285 +f 35582 36285 35580 +f 35580 36285 36286 +f 35580 36286 35578 +f 35578 36286 36287 +f 35578 36287 35576 +f 35576 36287 36288 +f 35576 36288 35574 +f 35574 36288 36289 +f 35574 36289 35572 +f 35572 36289 36290 +f 35572 36290 35570 +f 35570 36290 35739 +f 36277 36039 36291 +f 36291 36039 36040 +f 36291 36040 36292 +f 36292 36040 36041 +f 36292 36041 36293 +f 36293 36041 36042 +f 36293 36042 36294 +f 36294 36042 36043 +f 36294 36043 36295 +f 36295 36043 36044 +f 36295 36044 36296 +f 36296 36044 36045 +f 36296 36045 36297 +f 36297 36045 36046 +f 36297 36046 36298 +f 36298 36046 36047 +f 36298 36047 36299 +f 36299 36047 36048 +f 36299 36048 36300 +f 36300 36048 36049 +f 36300 36049 36301 +f 36301 36049 36050 +f 36301 36050 36302 +f 36302 36050 36051 +f 36302 36051 36303 +f 36303 36051 35713 +f 36303 35713 35712 +f 36053 35614 36052 +f 36052 35614 35612 +f 36052 35612 35624 +f 35614 36053 35616 +f 35616 36053 36054 +f 35616 36054 35618 +f 35618 36054 36055 +f 35618 36055 35620 +f 35620 36055 36056 +f 35620 36056 35622 +f 35622 36056 35587 +f 35622 35587 35585 +f 36135 35536 36134 +f 36134 35536 35534 +f 36134 35534 35601 +f 35536 36135 35538 +f 35538 36135 36136 +f 35538 36136 35540 +f 35540 36136 36137 +f 35540 36137 35542 +f 35542 36137 36138 +f 35542 36138 35544 +f 35544 36138 36139 +f 35544 36139 35546 +f 35546 36139 36140 +f 35546 36140 35548 +f 35548 36140 36141 +f 35548 36141 35550 +f 35550 36141 36142 +f 35550 36142 35552 +f 35552 36142 36143 +f 35552 36143 35554 +f 35554 36143 36144 +f 35554 36144 35556 +f 35556 36144 36145 +f 35556 36145 35558 +f 35558 36145 36146 +f 35558 36146 35560 +f 35560 36146 36147 +f 35560 36147 35562 +f 35562 36147 36148 +f 35562 36148 35564 +f 35564 36148 35567 +f 35428 35533 36304 +f 36304 35533 35535 +f 36304 35535 36305 +f 36305 35535 35537 +f 36305 35537 36306 +f 36306 35537 35539 +f 36306 35539 36307 +f 36307 35539 35541 +f 36307 35541 36308 +f 36308 35541 35543 +f 36308 35543 36309 +f 36309 35543 35545 +f 36309 35545 36310 +f 36310 35545 35547 +f 36310 35547 36311 +f 36311 35547 35549 +f 36311 35549 36312 +f 36312 35549 35551 +f 36312 35551 36313 +f 36313 35551 35553 +f 36313 35553 36314 +f 36314 35553 35555 +f 36314 35555 36315 +f 36315 35555 35557 +f 36315 35557 36316 +f 36316 35557 35559 +f 36316 35559 36317 +f 36317 35559 35561 +f 36317 35561 35740 +f 35740 35561 35563 +f 35428 36304 35426 +f 35426 36304 36318 +f 35426 36318 35424 +f 35424 36318 36319 +f 35424 36319 35422 +f 35422 36319 36320 +f 35422 36320 35420 +f 35420 36320 35768 +f 35420 35768 35418 +f 36318 36304 36305 +f 36174 35503 36173 +f 36173 35503 35502 +f 36173 35502 35517 +f 35503 36174 35504 +f 35504 36174 36175 +f 35504 36175 35505 +f 35505 36175 36176 +f 35505 36176 35506 +f 35506 36176 36177 +f 35506 36177 35507 +f 35507 36177 35509 +f 35922 35366 35368 +f 36189 36321 36188 +f 36188 36321 35957 +f 36188 35957 35357 +f 35957 36321 35955 +f 35955 36321 36322 +f 35955 36322 35953 +f 35953 36322 36323 +f 35953 36323 35951 +f 35951 36323 36324 +f 35951 36324 35949 +f 35949 36324 36325 +f 35949 36325 35947 +f 35947 36325 36326 +f 35947 36326 35945 +f 35945 36326 36327 +f 35945 36327 35943 +f 35943 36327 36328 +f 35943 36328 35941 +f 35941 36328 36329 +f 35941 36329 35939 +f 35939 36329 36330 +f 35939 36330 35937 +f 35937 36330 36331 +f 35937 36331 35935 +f 35935 36331 36332 +f 35935 36332 35933 +f 35933 36332 36333 +f 35933 36333 35931 +f 35931 36333 36334 +f 35931 36334 35929 +f 35929 36334 36335 +f 35929 36335 35927 +f 35927 36335 35893 +f 36321 36189 36336 +f 36336 36189 36190 +f 36336 36190 36337 +f 36337 36190 36191 +f 36337 36191 36338 +f 36338 36191 36192 +f 36338 36192 36339 +f 36339 36192 35915 +f 36339 35915 35913 +f 36193 35956 35954 +f 36194 36193 36340 +f 36340 36193 35954 +f 36340 35954 35952 +f 36195 36194 36341 +f 36341 36194 36340 +f 36341 36340 36342 +f 36342 36340 35952 +f 36342 35952 35950 +f 35991 36195 36343 +f 36343 36195 36341 +f 36343 36341 36344 +f 36344 36341 36342 +f 36344 36342 36345 +f 36345 36342 35950 +f 36345 35950 35948 +f 35991 36343 35989 +f 35989 36343 36346 +f 35989 36346 35987 +f 35987 36346 36347 +f 35987 36347 35985 +f 35985 36347 36348 +f 35985 36348 35983 +f 35983 36348 36349 +f 35983 36349 35981 +f 35981 36349 36350 +f 35981 36350 35979 +f 35979 36350 36351 +f 35979 36351 35977 +f 35977 36351 36352 +f 35977 36352 35975 +f 35975 36352 36353 +f 35975 36353 35973 +f 35973 36353 36354 +f 35973 36354 35971 +f 35971 36354 36355 +f 35971 36355 35969 +f 35969 36355 36356 +f 35969 36356 35967 +f 35967 36356 36357 +f 35967 36357 35965 +f 35965 36357 36358 +f 35965 36358 35963 +f 35963 36358 36359 +f 35963 36359 35961 +f 35961 36359 35924 +f 36346 36343 36344 +f 36196 35990 35988 +f 36197 36196 36360 +f 36360 36196 35988 +f 36360 35988 35986 +f 36024 36197 36361 +f 36361 36197 36360 +f 36361 36360 36362 +f 36362 36360 35986 +f 36362 35986 35984 +f 36024 36361 36022 +f 36022 36361 36363 +f 36022 36363 36020 +f 36020 36363 36364 +f 36020 36364 36018 +f 36018 36364 36365 +f 36018 36365 36016 +f 36016 36365 36366 +f 36016 36366 36014 +f 36014 36366 36367 +f 36014 36367 36012 +f 36012 36367 36368 +f 36012 36368 36010 +f 36010 36368 36369 +f 36010 36369 36008 +f 36008 36369 36370 +f 36008 36370 36006 +f 36006 36370 36371 +f 36006 36371 36004 +f 36004 36371 36372 +f 36004 36372 36002 +f 36002 36372 36373 +f 36002 36373 36000 +f 36000 36373 36374 +f 36000 36374 35998 +f 35998 36374 36375 +f 35998 36375 35996 +f 35996 36375 36376 +f 35996 36376 35994 +f 35994 36376 35958 +f 36363 36361 36362 +f 36198 36023 36021 +f 35230 36198 36377 +f 36377 36198 36021 +f 36377 36021 36019 +f 35230 36377 35228 +f 35228 36377 36378 +f 35228 36378 35226 +f 35226 36378 36379 +f 35226 36379 35224 +f 35224 36379 36380 +f 35224 36380 35222 +f 35222 36380 36381 +f 35222 36381 35220 +f 35220 36381 36382 +f 35220 36382 35218 +f 35218 36382 36383 +f 35218 36383 35216 +f 35216 36383 36384 +f 35216 36384 35214 +f 35214 36384 36385 +f 35214 36385 35212 +f 35212 36385 36386 +f 35212 36386 35210 +f 35210 36386 36387 +f 35210 36387 35208 +f 35208 36387 36388 +f 35208 36388 35206 +f 35206 36388 36389 +f 35206 36389 35204 +f 35204 36389 36390 +f 35204 36390 35202 +f 35202 36390 35992 +f 35202 35992 35200 +f 35200 35992 35198 +f 36378 36377 36019 +f 36199 35229 35227 +f 36200 36199 36391 +f 36391 36199 35227 +f 36391 35227 35225 +f 36201 36200 36392 +f 36392 36200 36391 +f 36392 36391 36393 +f 36393 36391 35225 +f 36393 35225 35223 +f 35338 36201 35339 +f 35339 36201 36392 +f 35339 36392 35340 +f 35340 36392 36393 +f 35340 36393 35341 +f 35341 36393 35223 +f 35341 35223 35221 +f 36263 35277 36262 +f 36262 35277 35276 +f 36262 35276 35291 +f 35277 36263 35278 +f 35278 36263 36264 +f 35278 36264 35279 +f 35279 36264 36265 +f 35279 36265 35280 +f 35280 36265 36266 +f 35280 36266 35281 +f 35281 36266 36267 +f 35281 36267 35282 +f 35282 36267 36268 +f 35282 36268 35283 +f 35283 36268 36269 +f 35283 36269 35284 +f 35284 36269 36270 +f 35284 36270 35285 +f 35285 36270 36271 +f 35285 36271 35286 +f 35286 36271 36272 +f 35286 36272 35287 +f 35287 36272 36273 +f 35287 36273 35288 +f 35288 36273 36274 +f 35288 36274 35289 +f 35289 36274 36275 +f 35289 36275 35290 +f 35290 36275 36276 +f 35290 36276 35197 +f 35197 36276 35199 +f 36293 36394 36292 +f 36292 36394 36395 +f 36292 36395 36291 +f 36291 36395 36278 +f 36291 36278 36277 +f 36394 36396 36395 +f 36395 36396 36279 +f 36395 36279 36278 +f 36394 36293 36397 +f 36397 36293 36294 +f 36397 36294 36398 +f 36398 36294 36295 +f 36398 36295 36399 +f 36399 36295 36296 +f 36399 36296 36400 +f 36400 36296 36297 +f 36400 36297 36401 +f 36401 36297 36298 +f 36401 36298 36402 +f 36402 36298 36299 +f 36402 36299 36403 +f 36403 36299 36300 +f 36403 36300 36404 +f 36404 36300 36301 +f 36404 36301 36405 +f 36405 36301 36302 +f 36405 36302 36406 +f 36406 36302 36303 +f 36406 36303 35711 +f 35711 36303 35712 +f 36279 36396 36280 +f 36280 36396 36407 +f 36280 36407 36281 +f 36281 36407 36408 +f 36281 36408 36282 +f 36282 36408 36409 +f 36282 36409 36283 +f 36283 36409 36410 +f 36283 36410 36284 +f 36284 36410 36411 +f 36284 36411 36285 +f 36285 36411 36412 +f 36285 36412 36286 +f 36286 36412 36413 +f 36286 36413 36287 +f 36287 36413 36414 +f 36287 36414 36288 +f 36288 36414 36415 +f 36288 36415 36289 +f 36289 36415 36416 +f 36289 36416 36290 +f 36290 36416 35737 +f 36290 35737 35739 +f 36396 36394 36417 +f 36417 36394 36397 +f 36417 36397 36418 +f 36418 36397 36398 +f 36418 36398 36419 +f 36419 36398 36399 +f 36419 36399 36420 +f 36420 36399 36400 +f 36420 36400 36421 +f 36421 36400 36401 +f 36421 36401 36422 +f 36422 36401 36402 +f 36422 36402 36423 +f 36423 36402 36403 +f 36423 36403 36424 +f 36424 36403 36404 +f 36424 36404 36425 +f 36425 36404 36405 +f 36425 36405 36426 +f 36426 36405 36406 +f 36426 36406 35716 +f 35716 36406 35711 +f 36307 36427 36306 +f 36306 36427 36428 +f 36306 36428 36305 +f 36305 36428 36318 +f 36427 36429 36428 +f 36428 36429 36319 +f 36428 36319 36318 +f 36427 36307 35762 +f 35762 36307 36308 +f 35762 36308 35760 +f 35760 36308 36309 +f 35760 36309 35758 +f 35758 36309 36310 +f 35758 36310 35756 +f 35756 36310 36311 +f 35756 36311 35754 +f 35754 36311 36312 +f 35754 36312 35752 +f 35752 36312 36313 +f 35752 36313 35750 +f 35750 36313 36314 +f 35750 36314 35748 +f 35748 36314 36315 +f 35748 36315 35746 +f 35746 36315 36316 +f 35746 36316 35744 +f 35744 36316 36317 +f 35744 36317 35742 +f 35742 36317 35740 +f 36319 36429 36320 +f 36320 36429 35766 +f 36320 35766 35768 +f 35762 35764 36427 +f 36427 35764 36429 +f 35764 35766 36429 +f 35372 36430 35370 +f 35370 36430 36431 +f 35370 36431 35368 +f 35368 36431 35922 +f 36430 36432 36431 +f 36431 36432 35920 +f 36431 35920 35922 +f 35372 35892 36430 +f 36430 35892 36433 +f 36430 36433 36432 +f 36432 36433 36434 +f 36432 36434 35918 +f 35918 36434 35916 +f 36432 35918 35920 +f 36338 36435 36337 +f 36337 36435 36436 +f 36337 36436 36336 +f 36336 36436 36322 +f 36336 36322 36321 +f 36435 36437 36436 +f 36436 36437 36323 +f 36436 36323 36322 +f 36435 36338 36438 +f 36438 36338 36339 +f 36438 36339 36439 +f 36439 36339 35913 +f 36439 35913 35911 +f 36323 36437 36324 +f 36324 36437 36440 +f 36324 36440 36325 +f 36325 36440 36441 +f 36325 36441 36326 +f 36326 36441 36442 +f 36326 36442 36327 +f 36327 36442 36443 +f 36327 36443 36328 +f 36328 36443 36444 +f 36328 36444 36329 +f 36329 36444 36445 +f 36329 36445 36330 +f 36330 36445 36446 +f 36330 36446 36331 +f 36331 36446 36447 +f 36331 36447 36332 +f 36332 36447 36448 +f 36332 36448 36333 +f 36333 36448 36449 +f 36333 36449 36334 +f 36334 36449 36450 +f 36334 36450 36335 +f 36335 36450 35893 +f 36437 36435 36451 +f 36451 36435 36438 +f 36451 36438 36452 +f 36452 36438 36439 +f 36452 36439 36453 +f 36453 36439 35911 +f 36453 35911 35909 +f 35948 36454 36345 +f 36345 36454 36455 +f 36345 36455 36344 +f 36344 36455 36346 +f 36454 36456 36455 +f 36455 36456 36347 +f 36455 36347 36346 +f 35948 35946 36454 +f 36454 35946 36457 +f 36454 36457 36456 +f 36456 36457 36458 +f 36456 36458 36348 +f 36348 36458 36349 +f 36456 36348 36347 +f 35982 36459 36460 +f 36460 36459 36364 +f 36460 36364 36363 +f 36364 36459 36365 +f 36365 36459 36461 +f 36365 36461 36366 +f 36366 36461 36462 +f 36366 36462 36367 +f 36367 36462 36463 +f 36367 36463 36368 +f 36368 36463 36464 +f 36368 36464 36369 +f 36369 36464 36465 +f 36369 36465 36370 +f 36370 36465 36466 +f 36370 36466 36371 +f 36371 36466 36467 +f 36371 36467 36372 +f 36372 36467 36468 +f 36372 36468 36373 +f 36373 36468 36469 +f 36373 36469 36374 +f 36374 36469 36470 +f 36374 36470 36375 +f 36375 36470 35959 +f 36375 35959 36376 +f 36376 35959 35958 +f 36461 36459 35980 +f 35980 36459 35982 +f 36017 36015 36379 +f 36379 36015 36380 +f 36381 36380 36013 +f 36013 36380 36015 +f 35167 35165 35239 +f 36019 36017 36378 +f 36378 36017 36379 +f 36362 35984 36460 +f 36460 35984 35982 +f 36362 36460 36363 +f 36417 36418 36407 +f 36407 36418 36408 +f 36408 36418 36471 +f 36471 36418 36419 +f 36471 36419 36472 +f 36472 36419 36420 +f 36472 36420 36473 +f 36473 36420 36421 +f 36473 36421 36474 +f 36474 36421 36422 +f 36474 36422 36475 +f 36475 36422 36423 +f 36475 36423 36476 +f 36476 36423 36424 +f 36476 36424 36477 +f 36477 36424 36425 +f 36477 36425 36478 +f 36478 36425 36426 +f 36478 36426 35718 +f 35718 36426 35716 +f 35798 35767 35765 +f 35765 35763 36479 +f 36479 35763 35779 +f 36479 35779 36480 +f 36480 35779 35778 +f 36480 35778 36481 +f 36481 35778 35777 +f 36481 35777 36482 +f 36482 35777 35776 +f 36482 35776 36483 +f 36483 35776 35775 +f 36483 35775 36484 +f 36484 35775 35774 +f 36484 35774 36485 +f 36485 35774 35773 +f 36485 35773 36486 +f 36486 35773 35772 +f 36486 35772 35780 +f 35780 35772 35771 +f 35414 35416 35809 +f 35415 35413 35514 +f 35514 35413 36487 +f 35514 36487 35512 +f 35512 36487 36488 +f 35512 36488 35510 +f 35510 36488 36489 +f 35510 36489 35508 +f 35508 36489 35497 +f 35508 35497 35496 +f 35508 35496 35495 +f 35374 35376 35891 +f 35891 35376 36490 +f 35891 36490 35889 +f 35889 36490 36491 +f 35889 36491 35887 +f 35887 36491 36492 +f 35887 36492 35885 +f 35885 36492 36493 +f 35885 36493 35883 +f 35883 36493 36494 +f 35883 36494 35881 +f 35881 36494 36495 +f 35881 36495 35879 +f 35879 36495 36496 +f 35879 36496 35877 +f 35877 36496 36497 +f 35877 36497 35875 +f 35875 36497 35855 +f 35875 35855 35873 +f 35873 35855 35854 +f 36490 35376 35378 +f 36433 35892 35890 +f 36434 36433 36498 +f 36498 36433 35890 +f 36498 35890 35888 +f 35916 36434 36499 +f 36499 36434 36498 +f 36499 36498 36500 +f 36500 36498 35888 +f 36500 35888 35886 +f 35916 36499 35914 +f 35914 36499 36501 +f 35914 36501 35912 +f 35912 36501 36502 +f 35912 36502 35910 +f 35910 36502 36503 +f 35910 36503 35908 +f 35908 36503 36504 +f 35908 36504 35906 +f 35906 36504 36505 +f 35906 36505 35904 +f 35904 36505 36506 +f 35904 36506 35902 +f 35902 36506 36507 +f 35902 36507 35900 +f 35900 36507 36508 +f 35900 36508 35898 +f 35898 36508 36509 +f 35898 36509 35896 +f 35896 36509 35870 +f 36501 36499 36500 +f 36452 36510 36451 +f 36451 36510 36440 +f 36451 36440 36437 +f 36440 36510 36441 +f 36441 36510 36511 +f 36441 36511 36442 +f 36442 36511 36512 +f 36442 36512 36443 +f 36443 36512 36513 +f 36443 36513 36444 +f 36444 36513 36514 +f 36444 36514 36445 +f 36445 36514 36515 +f 36445 36515 36446 +f 36446 36515 36516 +f 36446 36516 36447 +f 36447 36516 36517 +f 36447 36517 36448 +f 36448 36517 36518 +f 36448 36518 36449 +f 36449 36518 36519 +f 36449 36519 36450 +f 36450 36519 35893 +f 36510 36452 36520 +f 36520 36452 36453 +f 36520 36453 36521 +f 36521 36453 35909 +f 36521 35909 35907 +f 36457 35946 35944 +f 36458 36457 36522 +f 36522 36457 35944 +f 36522 35944 35942 +f 36349 36458 36523 +f 36523 36458 36522 +f 36523 36522 36524 +f 36524 36522 35942 +f 36524 35942 35940 +f 36349 36523 36350 +f 36350 36523 36525 +f 36350 36525 36351 +f 36351 36525 36526 +f 36351 36526 36352 +f 36352 36526 36527 +f 36352 36527 36353 +f 36353 36527 36528 +f 36353 36528 36354 +f 36354 36528 36529 +f 36354 36529 36355 +f 36355 36529 36530 +f 36355 36530 36356 +f 36356 36530 36531 +f 36356 36531 36357 +f 36357 36531 36532 +f 36357 36532 36358 +f 36358 36532 36533 +f 36358 36533 36359 +f 36359 36533 35924 +f 36525 36523 36524 +f 36461 35980 35978 +f 36461 35978 36462 +f 36462 35978 35976 +f 36462 35976 36463 +f 36463 35976 35974 +f 36463 35974 36464 +f 36464 35974 35972 +f 36464 35972 36465 +f 36465 35972 35970 +f 36465 35970 36466 +f 36466 35970 35968 +f 36466 35968 36467 +f 36467 35968 35966 +f 36467 35966 36468 +f 36468 35966 35964 +f 36468 35964 36469 +f 36469 35964 35962 +f 36469 35962 36470 +f 36470 35962 35960 +f 36470 35960 35959 +f 36381 36013 36011 +f 36381 36011 36382 +f 36382 36011 36009 +f 36382 36009 36383 +f 36383 36009 36007 +f 36383 36007 36384 +f 36384 36007 36005 +f 36384 36005 36385 +f 36385 36005 36003 +f 36385 36003 36386 +f 36386 36003 36001 +f 36386 36001 36387 +f 36387 36001 35999 +f 36387 35999 36388 +f 36388 35999 35997 +f 36388 35997 36389 +f 36389 35997 35995 +f 36389 35995 36390 +f 36390 35995 35993 +f 36390 35993 35992 +f 35167 35239 35170 +f 35170 35239 35241 +f 35170 35241 35173 +f 35173 35241 35243 +f 35173 35243 35175 +f 35175 35243 35245 +f 35175 35245 35177 +f 35177 35245 35247 +f 35177 35247 35179 +f 35179 35247 35249 +f 35179 35249 35181 +f 35181 35249 35251 +f 35181 35251 35183 +f 35183 35251 35253 +f 35183 35253 35185 +f 35185 35253 35255 +f 35185 35255 35187 +f 35187 35255 35257 +f 35187 35257 35189 +f 35189 35257 35191 +f 36396 36417 36407 +f 36472 36534 36471 +f 36471 36534 36409 +f 36471 36409 36408 +f 36409 36534 36410 +f 36410 36534 36535 +f 36410 36535 36411 +f 36411 36535 36536 +f 36411 36536 36412 +f 36412 36536 36537 +f 36412 36537 36413 +f 36413 36537 36538 +f 36413 36538 36414 +f 36414 36538 36539 +f 36414 36539 36415 +f 36415 36539 36540 +f 36415 36540 36416 +f 36416 36540 35735 +f 36416 35735 35737 +f 36534 36472 36541 +f 36541 36472 36473 +f 36541 36473 36542 +f 36542 36473 36474 +f 36542 36474 36543 +f 36543 36474 36475 +f 36543 36475 36544 +f 36544 36475 36476 +f 36544 36476 36545 +f 36545 36476 36477 +f 36545 36477 36546 +f 36546 36477 36478 +f 36546 36478 35720 +f 35720 36478 35718 +f 36480 35796 36479 +f 36479 35796 35798 +f 36479 35798 35765 +f 35796 36480 35794 +f 35794 36480 36481 +f 35794 36481 35792 +f 35792 36481 36482 +f 35792 36482 35790 +f 35790 36482 36483 +f 35790 36483 35788 +f 35788 36483 36484 +f 35788 36484 35786 +f 35786 36484 36485 +f 35786 36485 35784 +f 35784 36485 36486 +f 35784 36486 35782 +f 35782 36486 35780 +f 35414 35809 36547 +f 36547 35809 35808 +f 36547 35808 35837 +f 35414 36547 35412 +f 35412 36547 36548 +f 35412 36548 35410 +f 35410 36548 36549 +f 35410 36549 35408 +f 35408 36549 36550 +f 35408 36550 35406 +f 35406 36550 36551 +f 35406 36551 35404 +f 35404 36551 36552 +f 35404 36552 35402 +f 35402 36552 36553 +f 35402 36553 35400 +f 35400 36553 35825 +f 35400 35825 35398 +f 36548 36547 35837 +f 36487 35413 35411 +f 36488 36487 36554 +f 36554 36487 35411 +f 36554 35411 35409 +f 36489 36488 36555 +f 36555 36488 36554 +f 36555 36554 36556 +f 36556 36554 35409 +f 36556 35409 35407 +f 35497 36489 35498 +f 35498 36489 36555 +f 35498 36555 35499 +f 35499 36555 36556 +f 35499 36556 35500 +f 35500 36556 35407 +f 35500 35407 35405 +f 36490 35378 35869 +f 35868 35380 35382 +f 36490 35869 36491 +f 36491 35869 35867 +f 36491 35867 36492 +f 36492 35867 35865 +f 36492 35865 36493 +f 36493 35865 35863 +f 36493 35863 36494 +f 36494 35863 35861 +f 36494 35861 36495 +f 36495 35861 35859 +f 36495 35859 36496 +f 36496 35859 35857 +f 36496 35857 36497 +f 36497 35857 35856 +f 36497 35856 35855 +f 36501 36500 36557 +f 36557 36500 35886 +f 36557 35886 35884 +f 36501 36557 36502 +f 36502 36557 36558 +f 36502 36558 36503 +f 36503 36558 36559 +f 36503 36559 36504 +f 36504 36559 36560 +f 36504 36560 36505 +f 36505 36560 36561 +f 36505 36561 36506 +f 36506 36561 36562 +f 36506 36562 36507 +f 36507 36562 36563 +f 36507 36563 36508 +f 36508 36563 35871 +f 36508 35871 36509 +f 36509 35871 35870 +f 36558 36557 35884 +f 36521 36564 36520 +f 36520 36564 36511 +f 36520 36511 36510 +f 36511 36564 36512 +f 36512 36564 36565 +f 36512 36565 36513 +f 36513 36565 36566 +f 36513 36566 36514 +f 36514 36566 36567 +f 36514 36567 36515 +f 36515 36567 36568 +f 36515 36568 36516 +f 36516 36568 36569 +f 36516 36569 36517 +f 36517 36569 36570 +f 36517 36570 36518 +f 36518 36570 36571 +f 36518 36571 36519 +f 36519 36571 35893 +f 36564 36521 36572 +f 36572 36521 35907 +f 36572 35907 35905 +f 36525 36524 36573 +f 36573 36524 35940 +f 36573 35940 35938 +f 36525 36573 36526 +f 36526 36573 36574 +f 36526 36574 36527 +f 36527 36574 36575 +f 36527 36575 36528 +f 36528 36575 36576 +f 36528 36576 36529 +f 36529 36576 36577 +f 36529 36577 36530 +f 36530 36577 36578 +f 36530 36578 36531 +f 36531 36578 36579 +f 36531 36579 36532 +f 36532 36579 35925 +f 36532 35925 36533 +f 36533 35925 35924 +f 36574 36573 35938 +f 36544 36580 36543 +f 36543 36580 36581 +f 36543 36581 36542 +f 36542 36581 36582 +f 36542 36582 36541 +f 36541 36582 36535 +f 36541 36535 36534 +f 36580 36583 36581 +f 36581 36583 36584 +f 36581 36584 36582 +f 36582 36584 36536 +f 36582 36536 36535 +f 36580 36544 36585 +f 36585 36544 36545 +f 36585 36545 36586 +f 36586 36545 36546 +f 36586 36546 35722 +f 35722 36546 35720 +f 36583 36587 36584 +f 36584 36587 36537 +f 36584 36537 36536 +f 36583 36580 36588 +f 36588 36580 36585 +f 36588 36585 36589 +f 36589 36585 36586 +f 36589 36586 35725 +f 35725 36586 35722 +f 36537 36587 36538 +f 36538 36587 36590 +f 36538 36590 36539 +f 36539 36590 36591 +f 36539 36591 36540 +f 36540 36591 35733 +f 36540 35733 35735 +f 36587 36583 36592 +f 36592 36583 36588 +f 36592 36588 36593 +f 36593 36588 36589 +f 36593 36589 35727 +f 35727 36589 35725 +f 35805 35804 35822 +f 35822 35804 36594 +f 35822 36594 35820 +f 35820 36594 36595 +f 35820 36595 35818 +f 35818 36595 36596 +f 35818 36596 35816 +f 35816 36596 35810 +f 36594 35804 35803 +f 35823 35821 35834 +f 35834 35821 35832 +f 35830 35832 35819 +f 35819 35832 35821 +f 35833 35831 36550 +f 36550 35831 36551 +f 36552 36551 35829 +f 35829 36551 35831 +f 35388 36597 35386 +f 35386 36597 35852 +f 35386 35852 35384 +f 35852 36597 35850 +f 35850 36597 36598 +f 35850 36598 35848 +f 35848 36598 36599 +f 35848 36599 35846 +f 35846 36599 36600 +f 35846 36600 35844 +f 35844 36600 35838 +f 36597 35388 36601 +f 36601 35388 35390 +f 36601 35390 36602 +f 36602 35390 35392 +f 36602 35392 35840 +f 35851 35849 35864 +f 35864 35849 35862 +f 35860 35862 35847 +f 35847 35862 35849 +f 35880 35878 36560 +f 36560 35878 36561 +f 36562 36561 35876 +f 35876 36561 35878 +f 35901 36603 36604 +f 36604 36603 36567 +f 36604 36567 36566 +f 36567 36603 36568 +f 36568 36603 36605 +f 36568 36605 36569 +f 36569 36605 36606 +f 36569 36606 36570 +f 36570 36606 35894 +f 36570 35894 36571 +f 36571 35894 35893 +f 36605 36603 35899 +f 35899 36603 35901 +f 35934 35932 36576 +f 36576 35932 36577 +f 36578 36577 35930 +f 35930 36577 35932 +f 35936 35934 36575 +f 36575 35934 36576 +f 35901 36604 35903 +f 35903 36604 36607 +f 35903 36607 35905 +f 35905 36607 36572 +f 36607 36604 36566 +f 35882 35880 36559 +f 36559 35880 36560 +f 35853 35851 35866 +f 35866 35851 35864 +f 35835 35833 36549 +f 36549 35833 36550 +f 35806 35823 35836 +f 35836 35823 35834 +f 35674 35672 35680 +f 35677 35674 35680 +f 35669 35671 35714 +f 35714 35671 35709 +f 35714 35709 35708 +f 36593 36608 36592 +f 36592 36608 36590 +f 36592 36590 36587 +f 36590 36608 36591 +f 36591 36608 35731 +f 36591 35731 35733 +f 35727 35729 36593 +f 36593 35729 36608 +f 35729 35731 36608 +f 36594 35803 36609 +f 36609 35803 35802 +f 36609 35802 35812 +f 36594 36609 36595 +f 36595 36609 35811 +f 36595 35811 36596 +f 36596 35811 35810 +f 35811 36609 35812 +f 35830 35819 35817 +f 35830 35817 35828 +f 35828 35817 35815 +f 35828 35815 35814 +f 36552 35829 35827 +f 36552 35827 36553 +f 36553 35827 35826 +f 36553 35826 35825 +f 36602 36610 36601 +f 36601 36610 36598 +f 36601 36598 36597 +f 36598 36610 36599 +f 36599 36610 36611 +f 36599 36611 36600 +f 36600 36611 35838 +f 35840 35839 36602 +f 36602 35839 36610 +f 35860 35847 35845 +f 35860 35845 35858 +f 35858 35845 35843 +f 35858 35843 35842 +f 36562 35876 35874 +f 36562 35874 36563 +f 36563 35874 35872 +f 36563 35872 35871 +f 36605 35899 35897 +f 36605 35897 36606 +f 36606 35897 35895 +f 36606 35895 35894 +f 36578 35930 35928 +f 36578 35928 36579 +f 36579 35928 35926 +f 36579 35926 35925 +f 35839 35838 36611 +f 36610 35839 36611 +f 35938 35936 36574 +f 36574 35936 36575 +f 36572 36607 36565 +f 36565 36607 36566 +f 35884 35882 36558 +f 36558 35882 36559 +f 35382 35853 35868 +f 35868 35853 35866 +f 35837 35835 36548 +f 36548 35835 36549 +f 35807 35806 35836 +f 36564 36572 36565 +f 34722 36612 32841 +f 32841 36612 36613 +f 32841 36613 35697 +f 35697 36613 36614 +f 35697 36614 36615 +f 36615 36614 36616 +f 36615 36616 36617 +f 36617 36616 36618 +f 36617 36618 36619 +f 36619 36618 36620 +f 36619 36620 36621 +f 36621 36620 36622 +f 36621 36622 36623 +f 36623 36622 36624 +f 36623 36624 36625 +f 36625 36624 36626 +f 36625 36626 36627 +f 36627 36626 36628 +f 36627 36628 36629 +f 36629 36628 36630 +f 36629 36630 36631 +f 36631 36630 36632 +f 36631 36632 36633 +f 36633 36632 36634 +f 36633 36634 36635 +f 36635 36634 36636 +f 36635 36636 36637 +f 36637 36636 36638 +f 36637 36638 36639 +f 36639 36638 36640 +f 36639 36640 36641 +f 36641 36640 36642 +f 36641 36642 36643 +f 36643 36642 36644 +f 36643 36644 36645 +f 36645 36644 36646 +f 36645 36646 36647 +f 36647 36646 36648 +f 36647 36648 36649 +f 36649 36648 36650 +f 36649 36650 36651 +f 36651 36650 36652 +f 36651 36652 36653 +f 36653 36652 36654 +f 36653 36654 36655 +f 36655 36654 36656 +f 36655 36656 36657 +f 36657 36656 36658 +f 36657 36658 36659 +f 36659 36658 36660 +f 36659 36660 36661 +f 36661 36660 36662 +f 36661 36662 36663 +f 36663 36662 36664 +f 36663 36664 36665 +f 36665 36664 36666 +f 36665 36666 36667 +f 36667 36666 36668 +f 36667 36668 36669 +f 36669 36668 36670 +f 36669 36670 36671 +f 36671 36670 36672 +f 36671 36672 36673 +f 36673 36672 36674 +f 36673 36674 36675 +f 36675 36674 36676 +f 36675 36676 36677 +f 36677 36676 36678 +f 36677 36678 36679 +f 36679 36678 36680 +f 36679 36680 36681 +f 36681 36680 36682 +f 36681 36682 36683 +f 36683 36682 36684 +f 36683 36684 36685 +f 36685 36684 36686 +f 36685 36686 36687 +f 36687 36686 36688 +f 36687 36688 36689 +f 36689 36688 36690 +f 36689 36690 36691 +f 36691 36690 36692 +f 36691 36692 36693 +f 36693 36692 36694 +f 36693 36694 36695 +f 36695 36694 36696 +f 36695 36696 36697 +f 36697 36696 36698 +f 36697 36698 36699 +f 36699 36698 36700 +f 36699 36700 36701 +f 36701 36700 36702 +f 36701 36702 36703 +f 36703 36702 36704 +f 36703 36704 36705 +f 36705 36704 36706 +f 36705 36706 36707 +f 36707 36706 36708 +f 36707 36708 36709 +f 36709 36708 35156 +f 36709 35156 35158 +f 36612 34722 36710 +f 36710 34722 34709 +f 36710 34709 36711 +f 36711 34709 34671 +f 36711 34671 36712 +f 36712 34671 34669 +f 36712 34669 36713 +f 36713 34669 34667 +f 36713 34667 36714 +f 36714 34667 34665 +f 36714 34665 36715 +f 36715 34665 34663 +f 36715 34663 36716 +f 36716 34663 36717 +f 36716 36717 36718 +f 36718 36717 36719 +f 36718 36719 36628 +f 36628 36719 36630 +f 34663 34609 36717 +f 36717 34609 36720 +f 36717 36720 36719 +f 36719 36720 36721 +f 36719 36721 36630 +f 36630 36721 36632 +f 34609 34608 36720 +f 36720 34608 36722 +f 36720 36722 36721 +f 36721 36722 36723 +f 36721 36723 36632 +f 36632 36723 36634 +f 34608 34661 36722 +f 36722 34661 36724 +f 36722 36724 36723 +f 36723 36724 36725 +f 36723 36725 36634 +f 36634 36725 36636 +f 34661 34659 36724 +f 36724 34659 36726 +f 36724 36726 36725 +f 36725 36726 36727 +f 36725 36727 36636 +f 36636 36727 36638 +f 34659 34656 36726 +f 36726 34656 36728 +f 36726 36728 36727 +f 36727 36728 36729 +f 36727 36729 36638 +f 36638 36729 36640 +f 34656 34652 36728 +f 36728 34652 36730 +f 36728 36730 36729 +f 36729 36730 36731 +f 36729 36731 36640 +f 36640 36731 36642 +f 34652 34642 36730 +f 36730 34642 36732 +f 36730 36732 36731 +f 36731 36732 36733 +f 36731 36733 36642 +f 36642 36733 36644 +f 34642 34640 36732 +f 36732 34640 36734 +f 36732 36734 36733 +f 36733 36734 36735 +f 36733 36735 36644 +f 36644 36735 36646 +f 36734 34640 36736 +f 36736 34640 34638 +f 36736 34638 36737 +f 36737 34638 34636 +f 36737 34636 36738 +f 36738 34636 34634 +f 36738 34634 36739 +f 36739 34634 34632 +f 36739 34632 36740 +f 36740 34632 34630 +f 36740 34630 36741 +f 36741 34630 34628 +f 36741 34628 36742 +f 36742 34628 34626 +f 36742 34626 36743 +f 36743 34626 34625 +f 36743 34625 34610 +f 36743 34610 36744 +f 36744 34610 34546 +f 36744 34546 34529 +f 36744 34529 36745 +f 36745 34529 34449 +f 36745 34449 36746 +f 36746 34449 34448 +f 36746 34448 36747 +f 36747 34448 36748 +f 36747 36748 36749 +f 36749 36748 36750 +f 36749 36750 36670 +f 36670 36750 36672 +f 34448 34528 36748 +f 36748 34528 36751 +f 36748 36751 36750 +f 36750 36751 36752 +f 36750 36752 36672 +f 36672 36752 36674 +f 34528 34526 36751 +f 36751 34526 36753 +f 36751 36753 36752 +f 36752 36753 36754 +f 36752 36754 36674 +f 36674 36754 36676 +f 34526 34523 36753 +f 36753 34523 36755 +f 36753 36755 36754 +f 36754 36755 36756 +f 36754 36756 36676 +f 36676 36756 36678 +f 34523 34515 36755 +f 36755 34515 36757 +f 36755 36757 36756 +f 36756 36757 36758 +f 36756 36758 36678 +f 36678 36758 36680 +f 34515 34513 36757 +f 36757 34513 36759 +f 36757 36759 36758 +f 36758 36759 36760 +f 36758 36760 36680 +f 36680 36760 36682 +f 34513 34511 36759 +f 36759 34511 36761 +f 36759 36761 36760 +f 36760 36761 36762 +f 36760 36762 36682 +f 36682 36762 36684 +f 34511 34509 36761 +f 36761 34509 36763 +f 36761 36763 36762 +f 36762 36763 36764 +f 36762 36764 36684 +f 36684 36764 36686 +f 36763 34509 36765 +f 36765 34509 34507 +f 36765 34507 36766 +f 36766 34507 34505 +f 36766 34505 36767 +f 36767 34505 34492 +f 36767 34492 36768 +f 36768 34492 34479 +f 36768 34479 36769 +f 36769 34479 34465 +f 36769 34465 36770 +f 36770 34465 34450 +f 36770 34450 36771 +f 36771 34450 34385 +f 36771 34385 36772 +f 36772 34385 36773 +f 36772 36773 36774 +f 36774 36773 36775 +f 36774 36775 36702 +f 36702 36775 36704 +f 34385 34383 36773 +f 36773 34383 36776 +f 36773 36776 36775 +f 36775 36776 36777 +f 36775 36777 36704 +f 36704 36777 36706 +f 36776 34383 36778 +f 36778 34383 33326 +f 36778 33326 35152 +f 35152 35154 36778 +f 36778 35154 36779 +f 36778 36779 36777 +f 36777 36779 36706 +f 35154 35156 36779 +f 36779 35156 36708 +f 36779 36708 36706 +f 35158 35159 36709 +f 36709 35159 36780 +f 36709 36780 36781 +f 36781 36780 36782 +f 36781 36782 36783 +f 36783 36782 36784 +f 36783 36784 36785 +f 36785 36784 36786 +f 36785 36786 36787 +f 36787 36786 36788 +f 36787 36788 36789 +f 36789 36788 36790 +f 36789 36790 36791 +f 36791 36790 36792 +f 36791 36792 36793 +f 36793 36792 36794 +f 36793 36794 36795 +f 36795 36794 36796 +f 36795 36796 36797 +f 36797 36796 36798 +f 36797 36798 36799 +f 36799 36798 36800 +f 36799 36800 36801 +f 36801 36800 36802 +f 36801 36802 36803 +f 36803 36802 36804 +f 36803 36804 36805 +f 36805 36804 36806 +f 36805 36806 36807 +f 36807 36806 36808 +f 36807 36808 36809 +f 36809 36808 36810 +f 36809 36810 36811 +f 36811 36810 36812 +f 36811 36812 36813 +f 36813 36812 36814 +f 36813 36814 36815 +f 36815 36814 36816 +f 36815 36816 36817 +f 36817 36816 36818 +f 36817 36818 36819 +f 36819 36818 36820 +f 36819 36820 36821 +f 36821 36820 36822 +f 36821 36822 36823 +f 36823 36822 36824 +f 36823 36824 36685 +f 36685 36824 36683 +f 35159 35161 36780 +f 36780 35161 35163 +f 36780 35163 36825 +f 36825 35163 35164 +f 36825 35164 35166 +f 36825 35166 36826 +f 36826 35166 35168 +f 36826 35168 35169 +f 36826 35169 36827 +f 36827 35169 35171 +f 36827 35171 35172 +f 36827 35172 36828 +f 36828 35172 35174 +f 36828 35174 35176 +f 36828 35176 36829 +f 36829 35176 35178 +f 36829 35178 36830 +f 36830 35178 35180 +f 36830 35180 36831 +f 36831 35180 35182 +f 36831 35182 35184 +f 35186 36832 35184 +f 35184 36832 36833 +f 35184 36833 36831 +f 36831 36833 36834 +f 36831 36834 36830 +f 36830 36834 36835 +f 36830 36835 36829 +f 36829 36835 36836 +f 36829 36836 36828 +f 36828 36836 36837 +f 36828 36837 36827 +f 36827 36837 36838 +f 36827 36838 36826 +f 36826 36838 36839 +f 36826 36839 36825 +f 36825 36839 36782 +f 36825 36782 36780 +f 36832 35186 36840 +f 36840 35186 35188 +f 36840 35188 22617 +f 22617 36841 36840 +f 36840 36841 36842 +f 36840 36842 36832 +f 36832 36842 36843 +f 36832 36843 36844 +f 36844 36843 36845 +f 36844 36845 36846 +f 36846 36845 36847 +f 36846 36847 36848 +f 36848 36847 36849 +f 36848 36849 36850 +f 36850 36849 36851 +f 36850 36851 36852 +f 36852 36851 36853 +f 36852 36853 36854 +f 36854 36853 36786 +f 36854 36786 36784 +f 36855 36856 36841 +f 36841 36856 36857 +f 36841 36857 36842 +f 36842 36857 36843 +f 36802 36858 36855 +f 36855 36858 36859 +f 36855 36859 36860 +f 36860 36859 36861 +f 36860 36861 36862 +f 36862 36861 36863 +f 36862 36863 36845 +f 36845 36863 36847 +f 36864 36865 36802 +f 36802 36865 36866 +f 36802 36866 36804 +f 36804 36866 36806 +f 36867 36868 36864 +f 36864 36868 36869 +f 36864 36869 36870 +f 36870 36869 36871 +f 36870 36871 36872 +f 36872 36871 36873 +f 36872 36873 36874 +f 36874 36873 36875 +f 36874 36875 36876 +f 36876 36875 36877 +f 36876 36877 36878 +f 36878 36877 36879 +f 36878 36879 36880 +f 36880 36879 36881 +f 36880 36881 36882 +f 36882 36881 36883 +f 36882 36883 36884 +f 36884 36883 36885 +f 36884 36885 36886 +f 36886 36885 36887 +f 36886 36887 36822 +f 36822 36887 36824 +f 36888 36889 36867 +f 36867 36889 36890 +f 36867 36890 36891 +f 36891 36890 36892 +f 36891 36892 36893 +f 36893 36892 36894 +f 36893 36894 36895 +f 36895 36894 36896 +f 36895 36896 36897 +f 36897 36896 36898 +f 36897 36898 36899 +f 36899 36898 36900 +f 36899 36900 36901 +f 36901 36900 36902 +f 36901 36902 36903 +f 36903 36902 36904 +f 36903 36904 36905 +f 36905 36904 36906 +f 36905 36906 36907 +f 36907 36906 36908 +f 36907 36908 36909 +f 36909 36908 36910 +f 36909 36910 36911 +f 36911 36910 36665 +f 36911 36665 36667 +f 36912 36913 36888 +f 36888 36913 36914 +f 36888 36914 36915 +f 36915 36914 36916 +f 36915 36916 36917 +f 36917 36916 36918 +f 36917 36918 36919 +f 36919 36918 36920 +f 36919 36920 36921 +f 36921 36920 36922 +f 36921 36922 36923 +f 36923 36922 36924 +f 36923 36924 36925 +f 36925 36924 36926 +f 36925 36926 36927 +f 36927 36926 36928 +f 36927 36928 36929 +f 36929 36928 36930 +f 36929 36930 36931 +f 36931 36930 36932 +f 36931 36932 36933 +f 36933 36932 36934 +f 36933 36934 36935 +f 36935 36934 36651 +f 36935 36651 36653 +f 35678 36936 36912 +f 36912 36936 36937 +f 36912 36937 36938 +f 36938 36937 36939 +f 36938 36939 36940 +f 36940 36939 36941 +f 36940 36941 36942 +f 36942 36941 36943 +f 36942 36943 36944 +f 36944 36943 36945 +f 36944 36945 36946 +f 36946 36945 36947 +f 36946 36947 36948 +f 36948 36947 36949 +f 36948 36949 36950 +f 36950 36949 36951 +f 36950 36951 36952 +f 36952 36951 36953 +f 36952 36953 36954 +f 36954 36953 36955 +f 36954 36955 36956 +f 36956 36955 36957 +f 36956 36957 36958 +f 36958 36957 36639 +f 36958 36639 36641 +f 36936 35678 36959 +f 36959 35678 35679 +f 36959 35679 36960 +f 36960 35679 35706 +f 36960 35706 36961 +f 36961 35706 36962 +f 36961 36962 36963 +f 36963 36962 36964 +f 36963 36964 36965 +f 36965 36964 36966 +f 36965 36966 36967 +f 36967 36966 36968 +f 36967 36968 36941 +f 36941 36968 36943 +f 36962 35706 36969 +f 36969 35706 35705 +f 36969 35705 36970 +f 36970 35705 36971 +f 36970 36971 36972 +f 36972 36971 36973 +f 36972 36973 36974 +f 36974 36973 36975 +f 36974 36975 36976 +f 36976 36975 36977 +f 36976 36977 36978 +f 36978 36977 36979 +f 36978 36979 36980 +f 36980 36979 36625 +f 36980 36625 36627 +f 36971 35705 36981 +f 36981 35705 35702 +f 36981 35702 36982 +f 36982 35702 35699 +f 36982 35699 36983 +f 36983 35699 36984 +f 36983 36984 36985 +f 36985 36984 36617 +f 36985 36617 36619 +f 35699 35697 36984 +f 36984 35697 36615 +f 36984 36615 36617 +f 36777 36776 36778 +f 36771 36772 36986 +f 36986 36772 36774 +f 36986 36774 36700 +f 36700 36774 36702 +f 36770 36771 36987 +f 36987 36771 36986 +f 36987 36986 36698 +f 36698 36986 36700 +f 36769 36770 36988 +f 36988 36770 36987 +f 36988 36987 36696 +f 36696 36987 36698 +f 36768 36769 36989 +f 36989 36769 36988 +f 36989 36988 36694 +f 36694 36988 36696 +f 36767 36768 36990 +f 36990 36768 36989 +f 36990 36989 36692 +f 36692 36989 36694 +f 36766 36767 36991 +f 36991 36767 36990 +f 36991 36990 36690 +f 36690 36990 36692 +f 36764 36763 36765 +f 36765 36766 36992 +f 36992 36766 36991 +f 36992 36991 36688 +f 36688 36991 36690 +f 36746 36747 36993 +f 36993 36747 36749 +f 36993 36749 36668 +f 36668 36749 36670 +f 36745 36746 36994 +f 36994 36746 36993 +f 36994 36993 36666 +f 36666 36993 36668 +f 36744 36745 36995 +f 36995 36745 36994 +f 36995 36994 36664 +f 36664 36994 36666 +f 36743 36744 36996 +f 36996 36744 36995 +f 36996 36995 36662 +f 36662 36995 36664 +f 36742 36743 36997 +f 36997 36743 36996 +f 36997 36996 36660 +f 36660 36996 36662 +f 36741 36742 36998 +f 36998 36742 36997 +f 36998 36997 36658 +f 36658 36997 36660 +f 36740 36741 36999 +f 36999 36741 36998 +f 36999 36998 36656 +f 36656 36998 36658 +f 36739 36740 37000 +f 37000 36740 36999 +f 37000 36999 36654 +f 36654 36999 36656 +f 36738 36739 37001 +f 37001 36739 37000 +f 37001 37000 36652 +f 36652 37000 36654 +f 36737 36738 37002 +f 37002 36738 37001 +f 37002 37001 36650 +f 36650 37001 36652 +f 36735 36734 36736 +f 36736 36737 37003 +f 37003 36737 37002 +f 37003 37002 36648 +f 36648 37002 36650 +f 36715 36716 37004 +f 37004 36716 36718 +f 37004 36718 36626 +f 36626 36718 36628 +f 36714 36715 37005 +f 37005 36715 37004 +f 37005 37004 36624 +f 36624 37004 36626 +f 36713 36714 37006 +f 37006 36714 37005 +f 37006 37005 36622 +f 36622 37005 36624 +f 36712 36713 37007 +f 37007 36713 37006 +f 37007 37006 36620 +f 36620 37006 36622 +f 36711 36712 37008 +f 37008 36712 37007 +f 37008 37007 36618 +f 36618 37007 36620 +f 36613 36612 36710 +f 36710 36711 37009 +f 37009 36711 37008 +f 37009 37008 36616 +f 36616 37008 36618 +f 36686 36764 36992 +f 36992 36764 36765 +f 36686 36992 36688 +f 36646 36735 37003 +f 37003 36735 36736 +f 36646 37003 36648 +f 36614 36613 37009 +f 37009 36613 36710 +f 36614 37009 36616 +f 36709 36781 36707 +f 36707 36781 37010 +f 36707 37010 36705 +f 36705 37010 37011 +f 36705 37011 36703 +f 36703 37011 37012 +f 36703 37012 36701 +f 36701 37012 37013 +f 36701 37013 36699 +f 36699 37013 37014 +f 36699 37014 36697 +f 36697 37014 37015 +f 36697 37015 36695 +f 36695 37015 37016 +f 36695 37016 36693 +f 36693 37016 37017 +f 36693 37017 36691 +f 36691 37017 37018 +f 36691 37018 36689 +f 36689 37018 37019 +f 36689 37019 36687 +f 36687 37019 36823 +f 36687 36823 36685 +f 36681 36683 37020 +f 37020 36683 36824 +f 37020 36824 36887 +f 36679 36681 37021 +f 37021 36681 37020 +f 37021 37020 37022 +f 37022 37020 36887 +f 37022 36887 36885 +f 36677 36679 37023 +f 37023 36679 37021 +f 37023 37021 37024 +f 37024 37021 37022 +f 37024 37022 37025 +f 37025 37022 36885 +f 37025 36885 36883 +f 36675 36677 37026 +f 37026 36677 37023 +f 37026 37023 37027 +f 37027 37023 37024 +f 37027 37024 37028 +f 37028 37024 37025 +f 37028 37025 37029 +f 37029 37025 36883 +f 37029 36883 36881 +f 36673 36675 37030 +f 37030 36675 37026 +f 37030 37026 37031 +f 37031 37026 37027 +f 37031 37027 37032 +f 37032 37027 37028 +f 37032 37028 37033 +f 37033 37028 37029 +f 37033 37029 37034 +f 37034 37029 36881 +f 37034 36881 36879 +f 36671 36673 37035 +f 37035 36673 37030 +f 37035 37030 37036 +f 37036 37030 37031 +f 37036 37031 37037 +f 37037 37031 37032 +f 37037 37032 37038 +f 37038 37032 37033 +f 37038 37033 37039 +f 37039 37033 37034 +f 37039 37034 37040 +f 37040 37034 36879 +f 37040 36879 36877 +f 36669 36671 37041 +f 37041 36671 37035 +f 37041 37035 37042 +f 37042 37035 37036 +f 37042 37036 37043 +f 37043 37036 37037 +f 37043 37037 37044 +f 37044 37037 37038 +f 37044 37038 37045 +f 37045 37038 37039 +f 37045 37039 37046 +f 37046 37039 37040 +f 37046 37040 37047 +f 37047 37040 36877 +f 37047 36877 36875 +f 36667 36669 37048 +f 37048 36669 37041 +f 37048 37041 37049 +f 37049 37041 37042 +f 37049 37042 37050 +f 37050 37042 37043 +f 37050 37043 37051 +f 37051 37043 37044 +f 37051 37044 37052 +f 37052 37044 37045 +f 37052 37045 37053 +f 37053 37045 37046 +f 37053 37046 37054 +f 37054 37046 37047 +f 37054 37047 37055 +f 37055 37047 36875 +f 37055 36875 36873 +f 36665 36910 36663 +f 36663 36910 37056 +f 36663 37056 36661 +f 36661 37056 37057 +f 36661 37057 36659 +f 36659 37057 37058 +f 36659 37058 36657 +f 36657 37058 37059 +f 36657 37059 36655 +f 36655 37059 37060 +f 36655 37060 36653 +f 36653 37060 36935 +f 36651 36934 36649 +f 36649 36934 37061 +f 36649 37061 36647 +f 36647 37061 37062 +f 36647 37062 36645 +f 36645 37062 37063 +f 36645 37063 36643 +f 36643 37063 37064 +f 36643 37064 36641 +f 36641 37064 36958 +f 36639 36957 36637 +f 36637 36957 37065 +f 36637 37065 36635 +f 36635 37065 37066 +f 36635 37066 36633 +f 36633 37066 37067 +f 36633 37067 36631 +f 36631 37067 37068 +f 36631 37068 36629 +f 36629 37068 37069 +f 36629 37069 36627 +f 36627 37069 36980 +f 36625 36979 36623 +f 36623 36979 37070 +f 36623 37070 36621 +f 36621 37070 37071 +f 36621 37071 36619 +f 36619 37071 36985 +f 36781 36783 37010 +f 37010 36783 37072 +f 37010 37072 37011 +f 37011 37072 37073 +f 37011 37073 37012 +f 37012 37073 37074 +f 37012 37074 37013 +f 37013 37074 37075 +f 37013 37075 37014 +f 37014 37075 37076 +f 37014 37076 37015 +f 37015 37076 37077 +f 37015 37077 37016 +f 37016 37077 37078 +f 37016 37078 37017 +f 37017 37078 37079 +f 37017 37079 37018 +f 37018 37079 37080 +f 37018 37080 37019 +f 37019 37080 36821 +f 37019 36821 36823 +f 36667 37048 36911 +f 36911 37048 37081 +f 36911 37081 36909 +f 36909 37081 37082 +f 36909 37082 36907 +f 36907 37082 37083 +f 36907 37083 36905 +f 36905 37083 37084 +f 36905 37084 36903 +f 36903 37084 37085 +f 36903 37085 36901 +f 36901 37085 37086 +f 36901 37086 36899 +f 36899 37086 37087 +f 36899 37087 36897 +f 36897 37087 37088 +f 36897 37088 36895 +f 36895 37088 37089 +f 36895 37089 36893 +f 36893 37089 37090 +f 36893 37090 36891 +f 36891 37090 36867 +f 37081 37048 37049 +f 36910 36908 37056 +f 37056 36908 37091 +f 37056 37091 37057 +f 37057 37091 37092 +f 37057 37092 37058 +f 37058 37092 37093 +f 37058 37093 37059 +f 37059 37093 37094 +f 37059 37094 37060 +f 37060 37094 37095 +f 37060 37095 36935 +f 36935 37095 36933 +f 36934 36932 37061 +f 37061 36932 37096 +f 37061 37096 37062 +f 37062 37096 37097 +f 37062 37097 37063 +f 37063 37097 37098 +f 37063 37098 37064 +f 37064 37098 37099 +f 37064 37099 36958 +f 36958 37099 36956 +f 36957 36955 37065 +f 37065 36955 37100 +f 37065 37100 37066 +f 37066 37100 37101 +f 37066 37101 37067 +f 37067 37101 37102 +f 37067 37102 37068 +f 37068 37102 37103 +f 37068 37103 37069 +f 37069 37103 37104 +f 37069 37104 36980 +f 36980 37104 36978 +f 36979 36977 37070 +f 37070 36977 37105 +f 37070 37105 37071 +f 37071 37105 37106 +f 37071 37106 36985 +f 36985 37106 36983 +f 36784 36782 36839 +f 36783 36785 37072 +f 37072 36785 37107 +f 37072 37107 37073 +f 37073 37107 37108 +f 37073 37108 37074 +f 37074 37108 37109 +f 37074 37109 37075 +f 37075 37109 37110 +f 37075 37110 37076 +f 37076 37110 37111 +f 37076 37111 37077 +f 37077 37111 37112 +f 37077 37112 37078 +f 37078 37112 37113 +f 37078 37113 37079 +f 37079 37113 37114 +f 37079 37114 37080 +f 37080 37114 36819 +f 37080 36819 36821 +f 36886 36822 36820 +f 37081 37049 37115 +f 37115 37049 37050 +f 37115 37050 37116 +f 37116 37050 37051 +f 37116 37051 37117 +f 37117 37051 37052 +f 37117 37052 37118 +f 37118 37052 37053 +f 37118 37053 37119 +f 37119 37053 37054 +f 37119 37054 37120 +f 37120 37054 37055 +f 37120 37055 37121 +f 37121 37055 36873 +f 37121 36873 36871 +f 36908 36906 37091 +f 37091 36906 37122 +f 37091 37122 37092 +f 37092 37122 37123 +f 37092 37123 37093 +f 37093 37123 37124 +f 37093 37124 37094 +f 37094 37124 37125 +f 37094 37125 37095 +f 37095 37125 37126 +f 37095 37126 36933 +f 36933 37126 36931 +f 36932 36930 37096 +f 37096 36930 37127 +f 37096 37127 37097 +f 37097 37127 37128 +f 37097 37128 37098 +f 37098 37128 37129 +f 37098 37129 37099 +f 37099 37129 37130 +f 37099 37130 36956 +f 36956 37130 36954 +f 36955 36953 37100 +f 37100 36953 37131 +f 37100 37131 37101 +f 37101 37131 37132 +f 37101 37132 37102 +f 37102 37132 37133 +f 37102 37133 37103 +f 37103 37133 37134 +f 37103 37134 37104 +f 37104 37134 37135 +f 37104 37135 36978 +f 36978 37135 36976 +f 36977 36975 37105 +f 37105 36975 37136 +f 37105 37136 37106 +f 37106 37136 36982 +f 37106 36982 36983 +f 36854 36784 36839 +f 36854 36839 36838 +f 36785 36787 37107 +f 37107 36787 37137 +f 37107 37137 37108 +f 37108 37137 37138 +f 37108 37138 37109 +f 37109 37138 37139 +f 37109 37139 37110 +f 37110 37139 37140 +f 37110 37140 37111 +f 37111 37140 37141 +f 37111 37141 37112 +f 37112 37141 37142 +f 37112 37142 37113 +f 37113 37142 37143 +f 37113 37143 37114 +f 37114 37143 36817 +f 37114 36817 36819 +f 36886 36820 37144 +f 37144 36820 36818 +f 37144 36818 37145 +f 37145 36818 36816 +f 37145 36816 37146 +f 37146 36816 36814 +f 37146 36814 37147 +f 37147 36814 36812 +f 37147 36812 37148 +f 37148 36812 36810 +f 37148 36810 37149 +f 37149 36810 36808 +f 37149 36808 37150 +f 37150 36808 36806 +f 37150 36806 36866 +f 37081 37115 37082 +f 37082 37115 37151 +f 37082 37151 37083 +f 37083 37151 37152 +f 37083 37152 37084 +f 37084 37152 37153 +f 37084 37153 37085 +f 37085 37153 37154 +f 37085 37154 37086 +f 37086 37154 37155 +f 37086 37155 37087 +f 37087 37155 37156 +f 37087 37156 37088 +f 37088 37156 37157 +f 37088 37157 37089 +f 37089 37157 37158 +f 37089 37158 37090 +f 37090 37158 36867 +f 37151 37115 37116 +f 36906 36904 37122 +f 37122 36904 37159 +f 37122 37159 37123 +f 37123 37159 37160 +f 37123 37160 37124 +f 37124 37160 37161 +f 37124 37161 37125 +f 37125 37161 37162 +f 37125 37162 37126 +f 37126 37162 37163 +f 37126 37163 36931 +f 36931 37163 36929 +f 36930 36928 37127 +f 37127 36928 37164 +f 37127 37164 37128 +f 37128 37164 37165 +f 37128 37165 37129 +f 37129 37165 37166 +f 37129 37166 37130 +f 37130 37166 37167 +f 37130 37167 36954 +f 36954 37167 36952 +f 36953 36951 37131 +f 37131 36951 37168 +f 37131 37168 37132 +f 37132 37168 37169 +f 37132 37169 37133 +f 37133 37169 37170 +f 37133 37170 37134 +f 37134 37170 37171 +f 37134 37171 37135 +f 37135 37171 37172 +f 37135 37172 36976 +f 36976 37172 36974 +f 36981 36982 37136 +f 36981 37136 36973 +f 36973 37136 36975 +f 36852 36854 36838 +f 36852 36838 36837 +f 36788 36786 36853 +f 36787 36789 37137 +f 37137 36789 37173 +f 37137 37173 37138 +f 37138 37173 37174 +f 37138 37174 37139 +f 37139 37174 37175 +f 37139 37175 37140 +f 37140 37175 37176 +f 37140 37176 37141 +f 37141 37176 37177 +f 37141 37177 37142 +f 37142 37177 37178 +f 37142 37178 37143 +f 37143 37178 36815 +f 37143 36815 36817 +f 36886 37144 36884 +f 36884 37144 37179 +f 36884 37179 36882 +f 36882 37179 37180 +f 36882 37180 36880 +f 36880 37180 37181 +f 36880 37181 36878 +f 36878 37181 37182 +f 36878 37182 36876 +f 36876 37182 37183 +f 36876 37183 36874 +f 36874 37183 37184 +f 36874 37184 36872 +f 36872 37184 37185 +f 36872 37185 36870 +f 36870 37185 36864 +f 37179 37144 37145 +f 37151 37116 37186 +f 37186 37116 37117 +f 37186 37117 37187 +f 37187 37117 37118 +f 37187 37118 37188 +f 37188 37118 37119 +f 37188 37119 37189 +f 37189 37119 37120 +f 37189 37120 37190 +f 37190 37120 37121 +f 37190 37121 37191 +f 37191 37121 36871 +f 37191 36871 36869 +f 36904 36902 37159 +f 37159 36902 37192 +f 37159 37192 37160 +f 37160 37192 37193 +f 37160 37193 37161 +f 37161 37193 37194 +f 37161 37194 37162 +f 37162 37194 37195 +f 37162 37195 37163 +f 37163 37195 37196 +f 37163 37196 36929 +f 36929 37196 36927 +f 36928 36926 37164 +f 37164 36926 37197 +f 37164 37197 37165 +f 37165 37197 37198 +f 37165 37198 37166 +f 37166 37198 37199 +f 37166 37199 37167 +f 37167 37199 37200 +f 37167 37200 36952 +f 36952 37200 36950 +f 36951 36949 37168 +f 37168 36949 37201 +f 37168 37201 37169 +f 37169 37201 37202 +f 37169 37202 37170 +f 37170 37202 37203 +f 37170 37203 37171 +f 37171 37203 37204 +f 37171 37204 37172 +f 37172 37204 37205 +f 37172 37205 36974 +f 36974 37205 36972 +f 36971 36981 36973 +f 36850 36852 36837 +f 36850 36837 36836 +f 36788 36853 37206 +f 37206 36853 36851 +f 37206 36851 37207 +f 37207 36851 36849 +f 37207 36849 37208 +f 37208 36849 36847 +f 37208 36847 36863 +f 36789 36791 37173 +f 37173 36791 37209 +f 37173 37209 37174 +f 37174 37209 37210 +f 37174 37210 37175 +f 37175 37210 37211 +f 37175 37211 37176 +f 37176 37211 37212 +f 37176 37212 37177 +f 37177 37212 37213 +f 37177 37213 37178 +f 37178 37213 36813 +f 37178 36813 36815 +f 37179 37145 37214 +f 37214 37145 37146 +f 37214 37146 37215 +f 37215 37146 37147 +f 37215 37147 37216 +f 37216 37147 37148 +f 37216 37148 37217 +f 37217 37148 37149 +f 37217 37149 37218 +f 37218 37149 37150 +f 37218 37150 36865 +f 36865 37150 36866 +f 37151 37186 37152 +f 37152 37186 37219 +f 37152 37219 37153 +f 37153 37219 37220 +f 37153 37220 37154 +f 37154 37220 37221 +f 37154 37221 37155 +f 37155 37221 37222 +f 37155 37222 37156 +f 37156 37222 37223 +f 37156 37223 37157 +f 37157 37223 37224 +f 37157 37224 37158 +f 37158 37224 36867 +f 37219 37186 37187 +f 36902 36900 37192 +f 37192 36900 37225 +f 37192 37225 37193 +f 37193 37225 37226 +f 37193 37226 37194 +f 37194 37226 37227 +f 37194 37227 37195 +f 37195 37227 37228 +f 37195 37228 37196 +f 37196 37228 37229 +f 37196 37229 36927 +f 36927 37229 36925 +f 36926 36924 37197 +f 37197 36924 37230 +f 37197 37230 37198 +f 37198 37230 37231 +f 37198 37231 37199 +f 37199 37231 37232 +f 37199 37232 37200 +f 37200 37232 37233 +f 37200 37233 36950 +f 36950 37233 36948 +f 36949 36947 37201 +f 37201 36947 37234 +f 37201 37234 37202 +f 37202 37234 37235 +f 37202 37235 37203 +f 37203 37235 37236 +f 37203 37236 37204 +f 37204 37236 37237 +f 37204 37237 37205 +f 37205 37237 37238 +f 37205 37238 36972 +f 36972 37238 36970 +f 36848 36850 36836 +f 36848 36836 36835 +f 36788 37206 36790 +f 36790 37206 37239 +f 36790 37239 36792 +f 36792 37239 37240 +f 36792 37240 36794 +f 36794 37240 37241 +f 36794 37241 36796 +f 36796 37241 36798 +f 37239 37206 37207 +f 36791 36793 37209 +f 37209 36793 37242 +f 37209 37242 37210 +f 37210 37242 37243 +f 37210 37243 37211 +f 37211 37243 37244 +f 37211 37244 37212 +f 37212 37244 37245 +f 37212 37245 37213 +f 37213 37245 36811 +f 37213 36811 36813 +f 37179 37214 37180 +f 37180 37214 37246 +f 37180 37246 37181 +f 37181 37246 37247 +f 37181 37247 37182 +f 37182 37247 37248 +f 37182 37248 37183 +f 37183 37248 37249 +f 37183 37249 37184 +f 37184 37249 37250 +f 37184 37250 37185 +f 37185 37250 36864 +f 37246 37214 37215 +f 37219 37187 37251 +f 37251 37187 37188 +f 37251 37188 37252 +f 37252 37188 37189 +f 37252 37189 37253 +f 37253 37189 37190 +f 37253 37190 37254 +f 37254 37190 37191 +f 37254 37191 36868 +f 36868 37191 36869 +f 36900 36898 37225 +f 37225 36898 37255 +f 37225 37255 37226 +f 37226 37255 37256 +f 37226 37256 37227 +f 37227 37256 37257 +f 37227 37257 37228 +f 37228 37257 37258 +f 37228 37258 37229 +f 37229 37258 37259 +f 37229 37259 36925 +f 36925 37259 36923 +f 36924 36922 37230 +f 37230 36922 37260 +f 37230 37260 37231 +f 37231 37260 37261 +f 37231 37261 37232 +f 37232 37261 37262 +f 37232 37262 37233 +f 37233 37262 37263 +f 37233 37263 36948 +f 36948 37263 36946 +f 36947 36945 37234 +f 37234 36945 37264 +f 37234 37264 37235 +f 37235 37264 37265 +f 37235 37265 37236 +f 37236 37265 37266 +f 37236 37266 37237 +f 37237 37266 37267 +f 37237 37267 37238 +f 37238 37267 36969 +f 37238 36969 36970 +f 36846 36848 36835 +f 36846 36835 36834 +f 37239 37207 37268 +f 37268 37207 37208 +f 37268 37208 37269 +f 37269 37208 36863 +f 37269 36863 36861 +f 36793 36795 37242 +f 37242 36795 37270 +f 37242 37270 37243 +f 37243 37270 37271 +f 37243 37271 37244 +f 37244 37271 37272 +f 37244 37272 37245 +f 37245 37272 36809 +f 37245 36809 36811 +f 37246 37215 37273 +f 37273 37215 37216 +f 37273 37216 37274 +f 37274 37216 37217 +f 37274 37217 37275 +f 37275 37217 37218 +f 37275 37218 37276 +f 37276 37218 36865 +f 37276 36865 36864 +f 37219 37251 37220 +f 37220 37251 37277 +f 37220 37277 37221 +f 37221 37277 37278 +f 37221 37278 37222 +f 37222 37278 37279 +f 37222 37279 37223 +f 37223 37279 37280 +f 37223 37280 37224 +f 37224 37280 36867 +f 37277 37251 37252 +f 36898 36896 37255 +f 37255 36896 37281 +f 37255 37281 37256 +f 37256 37281 37282 +f 37256 37282 37257 +f 37257 37282 37283 +f 37257 37283 37258 +f 37258 37283 37284 +f 37258 37284 37259 +f 37259 37284 37285 +f 37259 37285 36923 +f 36923 37285 36921 +f 36922 36920 37260 +f 37260 36920 37286 +f 37260 37286 37261 +f 37261 37286 37287 +f 37261 37287 37262 +f 37262 37287 37288 +f 37262 37288 37263 +f 37263 37288 37289 +f 37263 37289 36946 +f 36946 37289 36944 +f 36945 36943 37264 +f 37264 36943 36968 +f 37264 36968 37265 +f 37265 36968 36966 +f 37265 36966 37266 +f 37266 36966 36964 +f 37266 36964 37267 +f 37267 36964 36962 +f 37267 36962 36969 +f 36844 36846 36834 +f 36844 36834 36833 +f 37239 37268 37240 +f 37240 37268 37290 +f 37240 37290 37241 +f 37241 37290 37291 +f 37241 37291 36798 +f 36798 37291 37292 +f 36798 37292 36800 +f 36800 37292 36802 +f 37290 37268 37269 +f 36795 36797 37270 +f 37270 36797 37293 +f 37270 37293 37271 +f 37271 37293 37294 +f 37271 37294 37272 +f 37272 37294 36807 +f 37272 36807 36809 +f 37246 37273 37247 +f 37247 37273 37295 +f 37247 37295 37248 +f 37248 37295 37296 +f 37248 37296 37249 +f 37249 37296 37297 +f 37249 37297 37250 +f 37250 37297 36864 +f 37295 37273 37274 +f 37277 37252 37298 +f 37298 37252 37253 +f 37298 37253 37299 +f 37299 37253 37254 +f 37299 37254 37300 +f 37300 37254 36868 +f 37300 36868 36867 +f 36896 36894 37281 +f 37281 36894 37301 +f 37281 37301 37282 +f 37282 37301 37302 +f 37282 37302 37283 +f 37283 37302 37303 +f 37283 37303 37284 +f 37284 37303 37304 +f 37284 37304 37285 +f 37285 37304 37305 +f 37285 37305 36921 +f 36921 37305 36919 +f 36920 36918 37286 +f 37286 36918 37306 +f 37286 37306 37287 +f 37287 37306 37307 +f 37287 37307 37288 +f 37288 37307 37308 +f 37288 37308 37289 +f 37289 37308 37309 +f 37289 37309 36944 +f 36944 37309 36942 +f 36833 36832 36844 +f 36862 36845 37310 +f 37310 36845 36843 +f 37310 36843 36857 +f 36857 36856 37310 +f 37310 36856 36862 +f 37290 37269 37311 +f 37311 37269 36861 +f 37311 36861 36859 +f 37290 37311 37291 +f 37291 37311 36858 +f 37291 36858 37292 +f 37292 36858 36802 +f 36858 37311 36859 +f 37293 36797 36799 +f 37294 37293 37312 +f 37312 37293 36799 +f 37312 36799 36801 +f 36807 37294 36805 +f 36805 37294 37312 +f 36805 37312 36803 +f 36803 37312 36801 +f 37295 37274 37313 +f 37313 37274 37275 +f 37313 37275 37314 +f 37314 37275 37276 +f 37314 37276 36864 +f 37295 37313 37296 +f 37296 37313 37315 +f 37296 37315 37297 +f 37297 37315 36864 +f 37315 37313 37314 +f 37299 37316 37298 +f 37298 37316 37317 +f 37298 37317 37278 +f 37278 37317 37279 +f 37316 37299 37318 +f 37318 37299 37300 +f 37318 37300 36867 +f 37317 37316 37319 +f 37319 37316 37318 +f 37319 37318 36867 +f 37279 37317 37320 +f 37320 37317 37319 +f 37320 37319 36867 +f 37301 36894 36892 +f 37302 37301 37321 +f 37321 37301 36892 +f 37321 36892 36890 +f 37303 37302 37322 +f 37322 37302 37321 +f 37322 37321 36889 +f 36889 37321 36890 +f 37304 37303 37323 +f 37323 37303 37322 +f 37323 37322 37324 +f 37324 37322 36889 +f 37324 36889 36888 +f 37305 37304 37325 +f 37325 37304 37323 +f 37325 37323 37326 +f 37326 37323 37324 +f 37326 37324 36888 +f 36919 37305 37327 +f 37327 37305 37325 +f 37327 37325 37328 +f 37328 37325 37326 +f 37328 37326 36888 +f 36919 37327 36917 +f 36917 37327 37329 +f 36917 37329 36915 +f 36915 37329 36888 +f 37329 37327 37328 +f 37306 36918 36916 +f 37307 37306 37330 +f 37330 37306 36916 +f 37330 36916 36914 +f 37308 37307 37331 +f 37331 37307 37330 +f 37331 37330 36913 +f 36913 37330 36914 +f 37309 37308 37332 +f 37332 37308 37331 +f 37332 37331 37333 +f 37333 37331 36913 +f 37333 36913 36912 +f 36942 37309 37334 +f 37334 37309 37332 +f 37334 37332 37335 +f 37335 37332 37333 +f 37335 37333 36912 +f 36942 37334 36940 +f 36940 37334 37336 +f 36940 37336 36938 +f 36938 37336 36912 +f 37336 37334 37335 +f 36967 36941 36939 +f 36963 36965 37337 +f 37337 36965 36939 +f 37337 36939 36937 +f 36961 36963 37338 +f 37338 36963 37337 +f 37338 37337 36936 +f 36936 37337 36937 +f 36959 36960 37338 +f 37338 36960 36961 +f 36959 37338 36936 +f 36965 36967 36939 +f 37277 37298 37278 +f 36855 36860 36856 +f 36856 36860 36862 +f 36864 37315 37314 +f 36867 37280 37320 +f 37320 37280 37279 +f 36888 37329 37328 +f 36912 37336 37335 +f 22617 35190 36841 +f 36841 35190 35192 +f 36841 35192 36855 +f 36855 35192 35194 +f 36855 35194 35196 +f 35196 35198 36855 +f 36855 35198 36802 +f 36802 35198 35958 +f 36802 35958 36864 +f 36864 35958 35924 +f 36864 35924 35893 +f 35870 35741 35893 +f 35893 35741 35565 +f 35893 35565 36864 +f 36864 35565 35566 +f 36864 35566 35738 +f 35854 35781 35870 +f 35870 35781 35770 +f 35870 35770 35741 +f 35781 35854 35800 +f 35800 35854 35841 +f 35800 35841 35810 +f 35810 35841 35813 +f 35813 35841 35824 +f 35824 35841 35396 +f 35396 35841 35838 +f 36864 35738 36867 +f 36867 35738 35736 +f 36867 35736 35734 +f 35734 35732 36867 +f 36867 35732 35730 +f 36867 35730 35728 +f 35728 35726 36867 +f 36867 35726 35724 +f 36867 35724 35723 +f 36867 35723 36888 +f 36888 35723 35721 +f 36888 35721 35719 +f 35719 35717 36888 +f 36888 35717 36912 +f 36912 35717 35710 +f 36912 35710 35707 +f 36912 35707 35678 +f 35678 35707 35675 +f 35678 35675 35676 +# 90013 faces, 0 coords texture + +# End of File diff --git a/apps/lbmMultiRes/run.sh b/apps/lbmMultiRes/run.sh new file mode 100644 index 00000000..a1fab0dc --- /dev/null +++ b/apps/lbmMultiRes/run.sh @@ -0,0 +1,15 @@ +#!/bin/bash +exe="../../build/bin/app-lbmMultiRes" +numIter=50 +deviceId=7 + +for scale in 1 2 3 4 5 6 7 8 9; do +for dataType in "float" "double"; do +for collideOption in "--storeCoarse" "--storeFine" "--collisionFusedStore" "--fusedFinest --collisionFusedStore"; do +for streamOption in " " "--streamFusedExpl" "--streamFusedCoal" "--streamFuseAll"; do +echo ${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType lid $problemId --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType lid $problemId --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +done +done +done +done \ No newline at end of file diff --git a/apps/lbmMultiRes/scripts/MultiResNeon_vs_ghia1982.png b/apps/lbmMultiRes/scripts/MultiResNeon_vs_ghia1982.png index 0cbc03d6..9c04c98b 100644 Binary files a/apps/lbmMultiRes/scripts/MultiResNeon_vs_ghia1982.png and b/apps/lbmMultiRes/scripts/MultiResNeon_vs_ghia1982.png differ diff --git a/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_X.dat b/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_X.dat index 441fdeed..dac5d71c 100644 --- a/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_X.dat +++ b/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_X.dat @@ -1,72 +1,72 @@ 0 0 -0.00625 0.00502993 -0.0125 0.0148638 -0.01875 0.024286 -0.025 0.0332976 -0.03125 0.0419005 -0.0375 0.0500975 -0.04375 0.0578921 -0.05 0.0652889 -0.05625 0.072293 -0.0625 0.0789102 -0.06875 0.0851473 -0.075 0.0910089 -0.08125 0.0964983 -0.0875 0.101626 -0.09375 0.106373 -0.1 0.114088 -0.1125 0.121865 -0.125 0.128392 -0.1375 0.133751 -0.15 0.138016 -0.1625 0.141278 -0.175 0.143563 -0.1875 0.144956 -0.2 0.148451 -0.225 0.147268 -0.25 0.143555 -0.275 0.137619 -0.3 0.12976 -0.325 0.12011 -0.35 0.108841 -0.375 0.0959903 -0.4 0.0816492 -0.425 0.0657769 -0.45 0.0484371 -0.475 0.0295593 -0.5 0.00920465 -0.525 -0.0126842 -0.55 -0.0359524 -0.575 -0.0605887 -0.6 -0.0862206 -0.625 -0.112617 -0.65 -0.139037 -0.675 -0.164881 -0.7 -0.188844 -0.725 -0.209927 -0.75 -0.226289 -0.775 -0.236754 -0.8 -0.238208 -0.8125 -0.237331 -0.825 -0.234108 -0.8375 -0.228288 -0.85 -0.220009 -0.8625 -0.209136 -0.875 -0.195896 -0.8875 -0.180214 -0.9 -0.165143 -0.90625 -0.155942 -0.9125 -0.146193 -0.91875 -0.136015 -0.925 -0.125422 -0.93125 -0.114467 -0.9375 -0.103191 -0.94375 -0.0916331 -0.95 -0.0798326 -0.95625 -0.0678306 -0.9625 -0.0556674 -0.96875 -0.0433838 -0.975 -0.0310188 -0.98125 -0.0186132 -0.9875 -0.00620094 +0.00625 0.00502983 +0.0125 0.0148641 +0.01875 0.0242857 +0.025 0.0332961 +0.03125 0.0418968 +0.0375 0.0500937 +0.04375 0.0578872 +0.05 0.0652798 +0.05625 0.0722821 +0.0625 0.0788985 +0.06875 0.0851335 +0.075 0.090994 +0.08125 0.0964818 +0.0875 0.101608 +0.09375 0.106354 +0.1 0.114067 +0.1125 0.121842 +0.125 0.128367 +0.1375 0.133727 +0.15 0.13799 +0.1625 0.141253 +0.175 0.14354 +0.1875 0.144934 +0.2 0.148427 +0.225 0.147245 +0.25 0.143532 +0.275 0.137598 +0.3 0.12974 +0.325 0.120092 +0.35 0.108823 +0.375 0.0959736 +0.4 0.0816349 +0.425 0.0657651 +0.45 0.0484288 +0.475 0.0295561 +0.5 0.00920213 +0.525 -0.0126804 +0.55 -0.0359455 +0.575 -0.0605738 +0.6 -0.0862009 +0.625 -0.112587 +0.65 -0.138998 +0.675 -0.164834 +0.7 -0.188787 +0.725 -0.209863 +0.75 -0.226215 +0.775 -0.236672 +0.8 -0.238124 +0.8125 -0.237247 +0.825 -0.234025 +0.8375 -0.228205 +0.85 -0.219927 +0.8625 -0.209058 +0.875 -0.195822 +0.8875 -0.180146 +0.9 -0.165079 +0.90625 -0.155881 +0.9125 -0.146135 +0.91875 -0.135959 +0.925 -0.12537 +0.93125 -0.11442 +0.9375 -0.103147 +0.94375 -0.091594 +0.95 -0.0797976 +0.95625 -0.0677995 +0.9625 -0.0556406 +0.96875 -0.0433618 +0.975 -0.0310046 +0.98125 -0.0186048 +0.9875 -0.00619845 0.99375 0 diff --git a/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_Y.dat b/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_Y.dat index 9c61b3ea..3e6458ae 100644 --- a/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_Y.dat +++ b/apps/lbmMultiRes/scripts/NeonMultiResLBM_5000_Y.dat @@ -1,72 +1,72 @@ 0 0 -0.00625 -0.00238129 -0.0125 -0.00705114 -0.01875 -0.0115592 -0.025 -0.0159152 -0.03125 -0.02013 -0.0375 -0.0242132 -0.04375 -0.0281742 -0.05 -0.0320214 -0.05625 -0.0357629 -0.0625 -0.0394056 -0.06875 -0.0429568 -0.075 -0.0464211 -0.08125 -0.049809 -0.0875 -0.0531161 -0.09375 -0.0563635 -0.1 -0.0613109 -0.1125 -0.0675756 -0.125 -0.0736697 -0.1375 -0.079592 -0.15 -0.0853696 -0.1625 -0.0910855 -0.175 -0.096605 -0.1875 -0.102159 -0.2 -0.112043 -0.225 -0.124006 -0.25 -0.136118 -0.275 -0.147724 -0.3 -0.15925 -0.325 -0.170125 -0.35 -0.180444 -0.375 -0.189663 -0.4 -0.197661 -0.425 -0.203911 -0.45 -0.208193 -0.475 -0.21003 -0.5 -0.209216 -0.525 -0.205368 -0.55 -0.198384 -0.575 -0.188003 -0.6 -0.174257 -0.625 -0.156946 -0.65 -0.136186 -0.675 -0.11167 -0.7 -0.0833621 -0.725 -0.0504859 -0.75 -0.0124805 -0.775 0.0324895 -0.8 0.0649158 -0.8125 0.0945619 -0.825 0.127374 -0.8375 0.163771 -0.85 0.204323 -0.8625 0.249584 -0.875 0.300013 -0.8875 0.356194 -0.9 0.398759 -0.90625 0.431479 -0.9125 0.465759 -0.91875 0.501606 -0.925 0.539018 -0.93125 0.577947 -0.9375 0.618332 -0.94375 0.660079 -0.95 0.70307 -0.95625 0.747159 -0.9625 0.792173 -0.96875 0.837912 -0.975 0.884151 -0.98125 0.930646 -0.9875 0.977126 +0.00625 -0.00237802 +0.0125 -0.00703871 +0.01875 -0.0115381 +0.025 -0.0158865 +0.03125 -0.0200945 +0.0375 -0.0241728 +0.04375 -0.0281294 +0.05 -0.0319723 +0.05625 -0.0357124 +0.0625 -0.039355 +0.06875 -0.0429034 +0.075 -0.0463665 +0.08125 -0.0497548 +0.0875 -0.053061 +0.09375 -0.0563093 +0.1 -0.0612549 +0.1125 -0.0675175 +0.125 -0.0736087 +0.1375 -0.0795296 +0.15 -0.0853046 +0.1625 -0.0910193 +0.175 -0.0965385 +0.1875 -0.10209 +0.2 -0.111972 +0.225 -0.123931 +0.25 -0.136039 +0.275 -0.147644 +0.3 -0.159167 +0.325 -0.170039 +0.35 -0.180356 +0.375 -0.189575 +0.4 -0.19757 +0.425 -0.20382 +0.45 -0.208102 +0.475 -0.209942 +0.5 -0.209128 +0.525 -0.205284 +0.55 -0.198304 +0.575 -0.187928 +0.6 -0.174187 +0.625 -0.156883 +0.65 -0.136128 +0.675 -0.111619 +0.7 -0.0833159 +0.725 -0.0504426 +0.75 -0.0124454 +0.775 0.0325189 +0.8 0.064941 +0.8125 0.0945839 +0.825 0.127392 +0.8375 0.163784 +0.85 0.204329 +0.8625 0.249581 +0.875 0.299998 +0.8875 0.356166 +0.9 0.39872 +0.90625 0.431432 +0.9125 0.465701 +0.91875 0.501539 +0.925 0.53894 +0.93125 0.577857 +0.9375 0.618228 +0.94375 0.659958 +0.95 0.702931 +0.95625 0.747 +0.9625 0.791993 +0.96875 0.837708 +0.975 0.883923 +0.98125 0.930391 +0.9875 0.976844 0.99375 1 diff --git a/apps/lbmMultiRes/scripts/UniformNeon_vs_ghia1982.png b/apps/lbmMultiRes/scripts/UniformNeon_vs_ghia1982.png index f5f98011..a8e02af4 100644 Binary files a/apps/lbmMultiRes/scripts/UniformNeon_vs_ghia1982.png and b/apps/lbmMultiRes/scripts/UniformNeon_vs_ghia1982.png differ diff --git a/apps/lbmMultiRes/scripts/plot.py b/apps/lbmMultiRes/scripts/plot.py index 4e6c1548..64738507 100644 --- a/apps/lbmMultiRes/scripts/plot.py +++ b/apps/lbmMultiRes/scripts/plot.py @@ -1,40 +1,69 @@ +#https://help.altair.com/hwcfdsolvers/nfx/topics/nanofluidx/lid_driven_cavity_2d_r.htm import os import numpy as np import matplotlib.pyplot as plt +from matplotlib import rcParams +rcParams['font.family'] = ['Palatino Linotype', 'serif'] +rcParams['font.size'] = 10 +rcParams["mathtext.default"] = 'regular' def plotme(dat_filename_X="", dat_filename_Y="", label="", png_filename="", scale=1): - fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(4, 3), dpi=200) - if (dat_filename_Y!=""): - y_neon, u_neon = np.loadtxt(dat_filename_Y, unpack=True, usecols=(0, 1)) - axes.plot(y_neon, scale*u_neon, 'y.-', label=label) - - y_ref, u_ref = np.loadtxt('ghia1982.dat', unpack=True, skiprows=2, usecols=(0, 1)) - axes.plot(y_ref, u_ref, 'bs', markerfacecolor='none', label='Ghia et al. 1982') + fig, ax1 = plt.subplots(nrows=1, ncols=1, figsize=(4, 3), dpi=1000) if (dat_filename_X!=""): x_neon, v_neon = np.loadtxt(dat_filename_X, unpack=True, usecols=(0, 1)) - axes.plot(x_neon, scale*v_neon, 'g.-', label=label) + x_neon -= 0.5 + x_neon *= 2.0 + ax1.plot(x_neon, scale*v_neon, 'k-', label=label) x_ref, v_ref = np.loadtxt('ghia1982.dat', unpack=True, skiprows=2, usecols=(6, 7)) - axes.plot(x_ref, v_ref, 'ks', markerfacecolor='none', - label='Ghia et al. 1982') + x_ref -= 0.5 + x_ref *= 2.0 + ax1.plot(x_ref, v_ref, 'o', markerfacecolor='none', + label='Ghia 1982') + + ax1.set_xlabel(r'x') + ax1.set_ylabel('v/u$_{lid}$') + ax1.legend(loc = "upper left") + + if (dat_filename_Y!=""): + ax2 = ax1 .twinx() + ax3 = ax1 .twiny() + + y_neon, u_neon = np.loadtxt(dat_filename_Y, unpack=True, usecols=(0, 1)) + y_neon -=0.5 + y_neon *= 2.0 + ax2.plot(scale*u_neon, y_neon, 'k-', label=label) + + ax3.set_xlim(ax2.get_ylim()) + + y_ref, u_ref = np.loadtxt('ghia1982.dat', unpack=True, skiprows=2, usecols=(0, 1)) + y_ref -=0.5 + y_ref *= 2.0 + ax3.plot(u_ref, y_ref, 'o', markerfacecolor='none', label='Ghia 1982') + + ax2.set_ylabel('u/u$_{lid}$') + ax3.set_xlabel(r'y') + + #h1, l1 = ax1.get_legend_handles_labels() + #h2, l2 = ax2.get_legend_handles_labels() + #h3, l3 = ax3.get_legend_handles_labels() + #ax1.legend(h1+h2+h3, l1+l2+l3, loc=2) - axes.legend() - axes.set_xlabel(r'Y') - axes.set_ylabel(r'Velocity') + plt.tight_layout() plt.savefig(png_filename) plotme(dat_filename_X='NeonMultiResLBM_5000_X.dat', dat_filename_Y='NeonMultiResLBM_5000_Y.dat', - label='Neon MultiRes LBM', + label='Ours', png_filename='MultiResNeon_vs_ghia1982.png', scale=1) plotme(dat_filename_Y='NeonUniformLBM_20000_Y.dat', - label='Neon Uniform LBM', + label='Uniform LBM', png_filename='UniformNeon_vs_ghia1982.png', scale=25) diff --git a/apps/lbmMultiRes/sphere/run.sh b/apps/lbmMultiRes/sphere/run.sh new file mode 100644 index 00000000..ed396f21 --- /dev/null +++ b/apps/lbmMultiRes/sphere/run.sh @@ -0,0 +1,15 @@ +#!/bin/bash +exe="../../../build/bin/app-lbmMultiRes" +numIter=50 +deviceId=7 + +for scale in 2 4 6 8 10; do +for dataType in "float" "double"; do +for collideOption in "--storeCoarse" "--storeFine" "--collisionFusedStore" "--fusedFinest --collisionFusedStore"; do +for streamOption in " " "--streamFusedExpl" "--streamFusedCoal" "--streamFuseAll"; do +echo ${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType sphere --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +${exe} --numIter $numIter --deviceType gpu --deviceId $deviceId --problemType sphere --benchmark --dataType $dataType --re 100 --scale $scale $collideOption $streamOption +done +done +done +done \ No newline at end of file diff --git a/apps/lbmMultiRes/sphere3.obj b/apps/lbmMultiRes/sphere3.obj new file mode 100644 index 00000000..74cce4aa --- /dev/null +++ b/apps/lbmMultiRes/sphere3.obj @@ -0,0 +1,1156 @@ + #v 386 +#f 768 +v 0 0 0 +v 0 1 0 +v 1 1 0 +v 1 0 0 +v 0 0 1 +v 0 1 1 +v 1 1 1 +v 1 0 1 +v -0.11237243569579447 0.5 -0.11237243569579447 +v 0.5 1.1123724356957945 -0.11237243569579447 +v 0.5 0.5 -0.3660254037844386 +v 1.1123724356957945 0.5 -0.11237243569579447 +v 0.5 -0.11237243569579447 -0.11237243569579447 +v -0.11237243569579447 1.1123724356957945 0.5 +v 0.5 1.3660254037844386 0.5 +v 0.5 1.1123724356957945 1.1123724356957945 +v 1.1123724356957945 1.1123724356957945 0.5 +v 1.3660254037844386 0.5 0.5 +v 1.1123724356957945 -0.11237243569579447 0.5 +v 1.1123724356957945 0.5 1.1123724356957945 +v 0.5 -0.3660254037844386 0.5 +v 0.5 -0.11237243569579447 1.1123724356957945 +v -0.11237243569579447 -0.11237243569579447 0.5 +v -0.3660254037844386 0.5 0.5 +v -0.11237243569579447 0.5 1.1123724356957945 +v 0.5 0.5 1.3660254037844386 +v -0.083603554584744333 0.23767618836235482 -0.083603554584744333 +v 0.1685864259644082 0.5 -0.30010314519126546 +v 0.21849187484737642 0.21849187484737642 -0.26909450066042573 +v -0.083603554584744333 0.76232381163764518 -0.083603554584744333 +v 0.23767618836235488 1.0836035545847444 -0.083603554584744222 +v 0.14644660940672621 0.85355339059327373 -0.20710678118654757 +v 0.76232381163764518 1.0836035545847444 -0.083603554584744222 +v 0.78150812515262358 0.78150812515262358 -0.26909450066042573 +v 0.5 0.8314135740355918 -0.30010314519126546 +v 0.5 0.1685864259644082 -0.30010314519126546 +v 0.23767618836235482 -0.083603554584744333 -0.083603554584744333 +v 1.0836035545847444 0.76232381163764518 -0.083603554584744222 +v 0.8314135740355918 0.5 -0.30010314519126546 +v 1.0836035545847444 0.23767618836235488 -0.083603554584744222 +v 0.76232381163764518 -0.083603554584744333 -0.083603554584744333 +v 0.85355339059327373 0.14644660940672621 -0.20710678118654757 +v -0.083603554584744222 1.0836035545847444 0.23767618836235488 +v 0.14644660940672621 1.2071067811865475 0.14644660940672621 +v -0.083603554584744222 1.0836035545847444 0.76232381163764518 +v 0.21849187484737642 1.2690945006604257 0.78150812515262358 +v 0.1685864259644082 1.3001031451912655 0.5 +v 0.78150812515262358 1.2690945006604257 0.21849187484737642 +v 0.5 1.3001031451912655 0.1685864259644082 +v 0.8314135740355918 1.3001031451912655 0.5 +v 1.0836035545847442 1.0836035545847442 0.23767618836235493 +v 0.23767618836235493 1.0836035545847442 1.0836035545847442 +v 0.5 1.3001031451912655 0.8314135740355918 +v 0.76232381163764507 1.0836035545847442 1.0836035545847442 +v 1.0836035545847442 1.0836035545847442 0.76232381163764507 +v 0.85355339059327373 1.2071067811865475 0.85355339059327373 +v 1.2690945006604257 0.78150812515262358 0.21849187484737642 +v 1.3001031451912655 0.5 0.1685864259644082 +v 1.2690945006604257 0.21849187484737642 0.78150812515262358 +v 1.0836035545847444 -0.083603554584744222 0.76232381163764518 +v 1.3001031451912655 0.1685864259644082 0.5 +v 1.0836035545847444 -0.083603554584744222 0.23767618836235488 +v 1.2071067811865475 0.14644660940672621 0.14644660940672621 +v 1.3001031451912655 0.8314135740355918 0.5 +v 1.0836035545847442 0.76232381163764507 1.0836035545847442 +v 1.2071067811865475 0.85355339059327373 0.85355339059327373 +v 1.0836035545847442 0.23767618836235493 1.0836035545847442 +v 1.3001031451912655 0.5 0.8314135740355918 +v 0.5 -0.30010314519126546 0.1685864259644082 +v 0.21849187484737642 -0.26909450066042573 0.21849187484737642 +v 0.85355339059327373 -0.20710678118654757 0.14644660940672621 +v 0.78150812515262358 -0.26909450066042573 0.78150812515262358 +v 0.8314135740355918 -0.30010314519126546 0.5 +v 0.1685864259644082 -0.30010314519126546 0.5 +v -0.083603554584744333 -0.083603554584744333 0.23767618836235482 +v 0.76232381163764518 -0.083603554584744222 1.0836035545847444 +v 0.5 -0.30010314519126546 0.8314135740355918 +v 0.23767618836235488 -0.083603554584744222 1.0836035545847444 +v -0.083603554584744333 -0.083603554584744333 0.76232381163764518 +v 0.14644660940672621 -0.20710678118654757 0.85355339059327373 +v -0.26909450066042573 0.21849187484737642 0.21849187484737642 +v -0.30010314519126546 0.5 0.1685864259644082 +v -0.26909450066042573 0.78150812515262358 0.78150812515262358 +v -0.30010314519126546 0.8314135740355918 0.5 +v -0.20710678118654757 0.85355339059327373 0.14644660940672621 +v -0.30010314519126546 0.1685864259644082 0.5 +v -0.083603554584744222 0.23767618836235488 1.0836035545847444 +v -0.20710678118654757 0.14644660940672621 0.85355339059327373 +v -0.083603554584744222 0.76232381163764518 1.0836035545847444 +v -0.30010314519126546 0.5 0.8314135740355918 +v 0.1685864259644082 0.5 1.3001031451912655 +v 0.21849187484737642 0.78150812515262358 1.2690945006604257 +v 0.14644660940672621 0.14644660940672621 1.2071067811865475 +v 0.78150812515262358 0.21849187484737642 1.2690945006604257 +v 0.5 0.1685864259644082 1.3001031451912655 +v 0.5 0.8314135740355918 1.3001031451912655 +v 0.8314135740355918 0.5 1.3001031451912655 +v 0.85355339059327373 0.85355339059327373 1.2071067811865475 +v -0.048279501888845333 0.11428096285373845 -0.048279501888845333 +v 0.058061142255070752 0.22218561998461639 -0.19102041668229675 +v 0.097830609437263794 0.097830609437263794 -0.15308465193173426 +v -0.10513747619932756 0.36726993634365812 -0.10513747619932756 +v 0.018862064618584307 0.5 -0.22007380672880228 +v 0.028175703607340008 0.36473395526530272 -0.21350187839654777 +v 0.33104682510154637 0.5 -0.34938496848704137 +v 0.35513400630482361 0.35513400630482361 -0.34144381139884683 +v 0.18922576807042513 0.35726484885082155 -0.29564191279431984 +v -0.10513747619932756 0.63273006365634188 -0.10513747619932756 +v 0.025330492828624207 0.81194148383065634 -0.1537441163232075 +v 5.5511151231257827e-017 0.6830127018922193 -0.1830127018922193 +v -0.048279501888845333 0.88571903714626155 -0.048279501888845333 +v 0.1142809628537384 1.0482795018888456 -0.048279501888845333 +v 0.061686537989773749 0.93831346201022625 -0.10478311653122385 +v 0.36726993634365818 1.1051374761993276 -0.10513747619932745 +v 0.3169872981077807 1 -0.1830127018922193 +v 0.18805851616934366 0.97466950717137579 -0.1537441163232075 +v 0.63273006365634177 1.1051374761993276 -0.10513747619932745 +v 0.63526604473469728 0.97182429639265999 -0.21350187839654766 +v 0.5 0.98113793538141558 -0.22007380672880228 +v 0.88571903714626155 1.0482795018888456 -0.048279501888845333 +v 0.90216939056273615 0.90216939056273615 -0.15308465193173437 +v 0.77781438001538361 0.94193885774492925 -0.19102041668229675 +v 0.64486599369517639 0.64486599369517639 -0.34144381139884683 +v 0.5 0.66895317489845374 -0.34938496848704137 +v 0.64273515114917845 0.81077423192957487 -0.29564191279431984 +v 0.14959309262618387 0.6808664601167177 -0.27103976737232283 +v 0.3191335398832823 0.85040690737381608 -0.27103976737232283 +v 0.32787151576590556 0.67212848423409455 -0.33110984221734852 +v 0.22218561998461639 0.058061142255070752 -0.19102041668229675 +v 0.11428096285373845 -0.048279501888845333 -0.048279501888845333 +v 0.5 0.33104682510154637 -0.34938496848704137 +v 0.35726484885082155 0.18922576807042513 -0.29564191279431984 +v 0.5 0.018862064618584307 -0.22007380672880228 +v 0.36726993634365812 -0.10513747619932756 -0.10513747619932756 +v 0.36473395526530272 0.028175703607340008 -0.21350187839654777 +v 0.81077423192957487 0.64273515114917845 -0.29564191279431984 +v 0.66895317489845374 0.5 -0.34938496848704137 +v 1.0482795018888456 0.88571903714626155 -0.048279501888845333 +v 0.94193885774492925 0.77781438001538361 -0.19102041668229675 +v 1.1051374761993276 0.63273006365634177 -0.10513747619932745 +v 0.98113793538141558 0.5 -0.22007380672880228 +v 0.97182429639265999 0.63526604473469728 -0.21350187839654766 +v 1.1051374761993276 0.36726993634365818 -0.10513747619932745 +v 0.97466950717137579 0.18805851616934366 -0.1537441163232075 +v 1 0.3169872981077807 -0.1830127018922193 +v 1.0482795018888456 0.1142809628537384 -0.048279501888845333 +v 0.88571903714626155 -0.048279501888845333 -0.048279501888845333 +v 0.93831346201022625 0.061686537989773749 -0.10478311653122385 +v 0.63273006365634188 -0.10513747619932756 -0.10513747619932756 +v 0.6830127018922193 5.5511151231257827e-017 -0.1830127018922193 +v 0.81194148383065634 0.025330492828624207 -0.1537441163232075 +v 0.67212848423409455 0.32787151576590556 -0.33110984221734852 +v 0.85040690737381608 0.3191335398832823 -0.27103976737232283 +v 0.6808664601167177 0.14959309262618387 -0.27103976737232283 +v -0.048279501888845333 1.0482795018888453 0.11428096285373845 +v 0.061686537989773804 1.1047831165312239 0.061686537989773804 +v -0.10513747619932745 1.1051374761993276 0.36726993634365818 +v 0 1.1830127018922192 0.3169872981077807 +v 0.025330492828624263 1.1537441163232076 0.1880585161693436 +v 0.3169872981077807 1.1830127018922192 0 +v 0.1880585161693436 1.1537441163232076 0.025330492828624263 +v -0.10513747619932745 1.1051374761993276 0.63273006365634177 +v 0.028175703607340008 1.2135018783965479 0.63526604473469728 +v 0.018862064618584307 1.2200738067288022 0.5 +v -0.048279501888845333 1.0482795018888453 0.88571903714626155 +v 0.097830609437263849 1.1530846519317344 0.90216939056273615 +v 0.058061142255070863 1.1910204166822971 0.77781438001538361 +v 0.35513400630482361 1.3414438113988467 0.64486599369517639 +v 0.33104682510154637 1.3493849684870414 0.5 +v 0.18922576807042513 1.2956419127943199 0.64273515114917845 +v 0.64486599369517639 1.3414438113988467 0.35513400630482361 +v 0.64273515114917845 1.2956419127943199 0.18922576807042513 +v 0.5 1.3493849684870414 0.33104682510154637 +v 0.90216939056273615 1.1530846519317344 0.097830609437263794 +v 0.77781438001538361 1.1910204166822971 0.058061142255070863 +v 0.5 1.2200738067288022 0.018862064618584307 +v 0.63526604473469728 1.2135018783965479 0.028175703607340008 +v 0.14959309262618387 1.2710397673723228 0.3191335398832823 +v 0.32787151576590556 1.3311098422173484 0.32787151576590556 +v 0.3191335398832823 1.2710397673723228 0.14959309262618387 +v 0.94193885774492925 1.1910204166822966 0.22218561998461644 +v 1.0482795018888453 1.0482795018888453 0.11428096285373851 +v 0.66895317489845374 1.3493849684870414 0.5 +v 0.81077423192957487 1.2956419127943199 0.35726484885082155 +v 0.98113793538141558 1.2200738067288022 0.5 +v 1.1051374761993276 1.1051374761993276 0.36726993634365823 +v 0.97182429639265999 1.2135018783965479 0.36473395526530278 +v 0.35726484885082155 1.2956419127943199 0.81077423192957487 +v 0.5 1.3493849684870414 0.66895317489845374 +v 0.11428096285373851 1.0482795018888453 1.0482795018888453 +v 0.22218561998461644 1.1910204166822966 0.94193885774492925 +v 0.36726993634365823 1.1051374761993276 1.1051374761993276 +v 0.5 1.2200738067288022 0.98113793538141558 +v 0.36473395526530278 1.2135018783965479 0.97182429639265999 +v 0.63273006365634177 1.1051374761993276 1.1051374761993276 +v 0.81194148383065645 1.1537441163232076 0.97466950717137579 +v 0.6830127018922193 1.1830127018922192 1 +v 0.88571903714626132 1.0482795018888453 1.0482795018888453 +v 1.0482795018888453 1.0482795018888453 0.88571903714626132 +v 0.93831346201022625 1.1047831165312239 0.93831346201022625 +v 1.1051374761993276 1.1051374761993276 0.63273006365634177 +v 1 1.1830127018922192 0.6830127018922193 +v 0.97466950717137579 1.1537441163232076 0.81194148383065645 +v 0.67212848423409455 1.3311098422173484 0.67212848423409455 +v 0.6808664601167177 1.2710397673723228 0.85040690737381608 +v 0.85040690737381608 1.2710397673723228 0.6808664601167177 +v 1.1530846519317344 0.90216939056273615 0.097830609437263794 +v 1.1910204166822971 0.77781438001538361 0.058061142255070863 +v 1.3414438113988467 0.64486599369517639 0.35513400630482361 +v 1.3493849684870414 0.5 0.33104682510154637 +v 1.2956419127943199 0.64273515114917845 0.18922576807042513 +v 1.2200738067288022 0.5 0.018862064618584307 +v 1.2135018783965479 0.63526604473469728 0.028175703607340008 +v 1.3414438113988467 0.35513400630482361 0.64486599369517639 +v 1.2956419127943199 0.18922576807042513 0.64273515114917845 +v 1.3493849684870414 0.33104682510154637 0.5 +v 1.1530846519317344 0.097830609437263849 0.90216939056273615 +v 1.0482795018888453 -0.048279501888845333 0.88571903714626155 +v 1.1910204166822971 0.058061142255070863 0.77781438001538361 +v 1.1051374761993276 -0.10513747619932745 0.63273006365634177 +v 1.2200738067288022 0.018862064618584307 0.5 +v 1.2135018783965479 0.028175703607340008 0.63526604473469728 +v 1.1051374761993276 -0.10513747619932745 0.36726993634365818 +v 1.1537441163232076 0.025330492828624263 0.1880585161693436 +v 1.1830127018922192 0 0.3169872981077807 +v 1.0482795018888453 -0.048279501888845333 0.11428096285373845 +v 1.1047831165312239 0.061686537989773804 0.061686537989773804 +v 1.1830127018922192 0.3169872981077807 0 +v 1.1537441163232076 0.1880585161693436 0.025330492828624263 +v 1.3311098422173484 0.32787151576590556 0.32787151576590556 +v 1.2710397673723228 0.14959309262618387 0.3191335398832823 +v 1.2710397673723228 0.3191335398832823 0.14959309262618387 +v 1.1910204166822966 0.94193885774492925 0.22218561998461644 +v 1.2200738067288022 0.98113793538141558 0.5 +v 1.2135018783965479 0.97182429639265999 0.36473395526530278 +v 1.3493849684870414 0.66895317489845374 0.5 +v 1.2956419127943199 0.81077423192957487 0.35726484885082155 +v 1.1537441163232076 0.97466950717137579 0.81194148383065645 +v 1.1830127018922192 1 0.6830127018922193 +v 1.0482795018888453 0.88571903714626132 1.0482795018888453 +v 1.1047831165312239 0.93831346201022625 0.93831346201022625 +v 1.1051374761993276 0.63273006365634177 1.1051374761993276 +v 1.1830127018922192 0.6830127018922193 1 +v 1.1537441163232076 0.81194148383065645 0.97466950717137579 +v 1.1051374761993276 0.36726993634365823 1.1051374761993276 +v 1.2135018783965479 0.36473395526530278 0.97182429639265999 +v 1.2200738067288022 0.5 0.98113793538141558 +v 1.0482795018888453 0.11428096285373851 1.0482795018888453 +v 1.1910204166822966 0.22218561998461644 0.94193885774492925 +v 1.3493849684870414 0.5 0.66895317489845374 +v 1.2956419127943199 0.35726484885082155 0.81077423192957487 +v 1.2710397673723228 0.85040690737381608 0.6808664601167177 +v 1.2710397673723228 0.6808664601167177 0.85040690737381608 +v 1.3311098422173484 0.67212848423409455 0.67212848423409455 +v 0.22218561998461639 -0.19102041668229675 0.058061142255070752 +v 0.097830609437263794 -0.15308465193173426 0.097830609437263794 +v 0.5 -0.22007380672880228 0.018862064618584307 +v 0.36473395526530272 -0.21350187839654777 0.028175703607340008 +v 0.5 -0.34938496848704137 0.33104682510154637 +v 0.35513400630482361 -0.34144381139884672 0.35513400630482361 +v 0.35726484885082155 -0.29564191279431984 0.18922576807042513 +v 0.81194148383065634 -0.1537441163232075 0.025330492828624207 +v 0.6830127018922193 -0.1830127018922193 5.5511151231257827e-017 +v 0.93831346201022625 -0.10478311653122385 0.061686537989773749 +v 1 -0.1830127018922193 0.3169872981077807 +v 0.97466950717137579 -0.1537441163232075 0.18805851616934366 +v 0.9718242963926601 -0.21350187839654777 0.63526604473469728 +v 0.98113793538141558 -0.22007380672880228 0.5 +v 0.90216939056273615 -0.15308465193173426 0.90216939056273615 +v 0.94193885774492925 -0.19102041668229675 0.77781438001538361 +v 0.64486599369517639 -0.34144381139884672 0.64486599369517639 +v 0.66895317489845374 -0.34938496848704137 0.5 +v 0.81077423192957487 -0.29564191279431984 0.64273515114917845 +v 0.6808664601167177 -0.27103976737232283 0.14959309262618387 +v 0.85040690737381608 -0.27103976737232283 0.3191335398832823 +v 0.67212848423409455 -0.33110984221734852 0.32787151576590556 +v 0.058061142255070752 -0.19102041668229675 0.22218561998461639 +v -0.048279501888845333 -0.048279501888845333 0.11428096285373845 +v 0.33104682510154637 -0.34938496848704137 0.5 +v 0.18922576807042513 -0.29564191279431984 0.35726484885082155 +v 0.018862064618584307 -0.22007380672880228 0.5 +v -0.10513747619932756 -0.10513747619932756 0.36726993634365812 +v 0.028175703607340008 -0.21350187839654777 0.36473395526530272 +v 0.64273515114917845 -0.29564191279431984 0.81077423192957487 +v 0.5 -0.34938496848704137 0.66895317489845374 +v 0.88571903714626155 -0.048279501888845333 1.0482795018888453 +v 0.77781438001538361 -0.19102041668229675 0.94193885774492925 +v 0.63273006365634177 -0.10513747619932745 1.1051374761993276 +v 0.5 -0.22007380672880228 0.98113793538141558 +v 0.63526604473469728 -0.21350187839654777 0.9718242963926601 +v 0.36726993634365818 -0.10513747619932745 1.1051374761993276 +v 0.18805851616934366 -0.1537441163232075 0.97466950717137579 +v 0.3169872981077807 -0.1830127018922193 1 +v 0.11428096285373845 -0.048279501888845333 1.0482795018888453 +v -0.048279501888845333 -0.048279501888845333 0.88571903714626155 +v 0.061686537989773749 -0.10478311653122385 0.93831346201022625 +v -0.10513747619932756 -0.10513747619932756 0.63273006365634188 +v 5.5511151231257827e-017 -0.1830127018922193 0.6830127018922193 +v 0.025330492828624207 -0.1537441163232075 0.81194148383065634 +v 0.32787151576590556 -0.33110984221734852 0.67212848423409455 +v 0.3191335398832823 -0.27103976737232283 0.85040690737381608 +v 0.14959309262618387 -0.27103976737232283 0.6808664601167177 +v -0.15308465193173426 0.097830609437263794 0.097830609437263794 +v -0.19102041668229675 0.22218561998461639 0.058061142255070752 +v -0.34144381139884672 0.35513400630482361 0.35513400630482361 +v -0.34938496848704137 0.5 0.33104682510154637 +v -0.29564191279431984 0.35726484885082155 0.18922576807042513 +v -0.22007380672880228 0.5 0.018862064618584307 +v -0.21350187839654777 0.36473395526530272 0.028175703607340008 +v -0.34144381139884672 0.64486599369517639 0.64486599369517639 +v -0.29564191279431984 0.81077423192957487 0.64273515114917845 +v -0.34938496848704137 0.66895317489845374 0.5 +v -0.15308465193173426 0.90216939056273615 0.90216939056273615 +v -0.19102041668229675 0.94193885774492925 0.77781438001538361 +v -0.22007380672880228 0.98113793538141558 0.5 +v -0.21350187839654777 0.9718242963926601 0.63526604473469728 +v -0.1537441163232075 0.97466950717137579 0.18805851616934366 +v -0.1830127018922193 1 0.3169872981077807 +v -0.10478311653122385 0.93831346201022625 0.061686537989773749 +v -0.1830127018922193 0.6830127018922193 5.5511151231257827e-017 +v -0.1537441163232075 0.81194148383065634 0.025330492828624207 +v -0.33110984221734852 0.67212848423409455 0.32787151576590556 +v -0.27103976737232283 0.85040690737381608 0.3191335398832823 +v -0.27103976737232283 0.6808664601167177 0.14959309262618387 +v -0.19102041668229675 0.058061142255070752 0.22218561998461639 +v -0.22007380672880228 0.018862064618584307 0.5 +v -0.21350187839654777 0.028175703607340008 0.36473395526530272 +v -0.34938496848704137 0.33104682510154637 0.5 +v -0.29564191279431984 0.18922576807042513 0.35726484885082155 +v -0.1537441163232075 0.025330492828624207 0.81194148383065634 +v -0.1830127018922193 5.5511151231257827e-017 0.6830127018922193 +v -0.048279501888845333 0.11428096285373845 1.0482795018888453 +v -0.10478311653122385 0.061686537989773749 0.93831346201022625 +v -0.10513747619932745 0.36726993634365818 1.1051374761993276 +v -0.1830127018922193 0.3169872981077807 1 +v -0.1537441163232075 0.18805851616934366 0.97466950717137579 +v -0.10513747619932745 0.63273006365634177 1.1051374761993276 +v -0.21350187839654777 0.63526604473469728 0.9718242963926601 +v -0.22007380672880228 0.5 0.98113793538141558 +v -0.048279501888845333 0.88571903714626155 1.0482795018888453 +v -0.19102041668229675 0.77781438001538361 0.94193885774492925 +v -0.34938496848704137 0.5 0.66895317489845374 +v -0.29564191279431984 0.64273515114917845 0.81077423192957487 +v -0.27103976737232283 0.14959309262618387 0.6808664601167177 +v -0.27103976737232283 0.3191335398832823 0.85040690737381608 +v -0.33110984221734852 0.32787151576590556 0.67212848423409455 +v 0.058061142255070863 0.77781438001538361 1.1910204166822971 +v 0.097830609437263794 0.90216939056273615 1.1530846519317344 +v 0.018862064618584307 0.5 1.2200738067288022 +v 0.028175703607340008 0.63526604473469728 1.2135018783965479 +v 0.33104682510154637 0.5 1.3493849684870414 +v 0.35513400630482361 0.64486599369517639 1.3414438113988467 +v 0.18922576807042513 0.64273515114917845 1.2956419127943199 +v 0.025330492828624263 0.1880585161693436 1.1537441163232076 +v 0 0.3169872981077807 1.1830127018922192 +v 0.061686537989773804 0.061686537989773804 1.1047831165312239 +v 0.3169872981077807 0 1.1830127018922192 +v 0.1880585161693436 0.025330492828624263 1.1537441163232076 +v 0.63526604473469728 0.028175703607340008 1.2135018783965479 +v 0.5 0.018862064618584307 1.2200738067288022 +v 0.90216939056273615 0.097830609437263794 1.1530846519317344 +v 0.77781438001538361 0.058061142255070863 1.1910204166822971 +v 0.64486599369517639 0.35513400630482361 1.3414438113988467 +v 0.5 0.33104682510154637 1.3493849684870414 +v 0.64273515114917845 0.18922576807042513 1.2956419127943199 +v 0.14959309262618387 0.3191335398832823 1.2710397673723228 +v 0.3191335398832823 0.14959309262618387 1.2710397673723228 +v 0.32787151576590556 0.32787151576590556 1.3311098422173484 +v 0.22218561998461644 0.94193885774492925 1.1910204166822966 +v 0.5 0.66895317489845374 1.3493849684870414 +v 0.35726484885082155 0.81077423192957487 1.2956419127943199 +v 0.5 0.98113793538141558 1.2200738067288022 +v 0.36473395526530278 0.97182429639265999 1.2135018783965479 +v 0.81077423192957487 0.35726484885082155 1.2956419127943199 +v 0.66895317489845374 0.5 1.3493849684870414 +v 0.94193885774492925 0.22218561998461644 1.1910204166822966 +v 0.98113793538141558 0.5 1.2200738067288022 +v 0.97182429639265999 0.36473395526530278 1.2135018783965479 +v 0.97466950717137579 0.81194148383065645 1.1537441163232076 +v 1 0.6830127018922193 1.1830127018922192 +v 0.93831346201022625 0.93831346201022625 1.1047831165312239 +v 0.6830127018922193 1 1.1830127018922192 +v 0.81194148383065645 0.97466950717137579 1.1537441163232076 +v 0.67212848423409455 0.67212848423409455 1.3311098422173484 +v 0.85040690737381608 0.6808664601167177 1.2710397673723228 +v 0.6808664601167177 0.85040690737381608 1.2710397673723228 +f 1 99 101 +f 99 27 100 +f 100 29 101 +f 99 100 101 +f 27 102 104 +f 102 9 103 +f 103 28 104 +f 102 103 104 +f 28 105 107 +f 105 11 106 +f 106 29 107 +f 105 106 107 +f 27 104 100 +f 104 28 107 +f 107 29 100 +f 104 107 100 +f 9 108 110 +f 108 30 109 +f 109 32 110 +f 108 109 110 +f 30 111 113 +f 111 2 112 +f 112 31 113 +f 111 112 113 +f 31 114 116 +f 114 10 115 +f 115 32 116 +f 114 115 116 +f 30 113 109 +f 113 31 116 +f 116 32 109 +f 113 116 109 +f 10 117 119 +f 117 33 118 +f 118 35 119 +f 117 118 119 +f 33 120 122 +f 120 3 121 +f 121 34 122 +f 120 121 122 +f 34 123 125 +f 123 11 124 +f 124 35 125 +f 123 124 125 +f 33 122 118 +f 122 34 125 +f 125 35 118 +f 122 125 118 +f 9 110 103 +f 110 32 126 +f 126 28 103 +f 110 126 103 +f 32 115 127 +f 115 10 119 +f 119 35 127 +f 115 119 127 +f 35 124 128 +f 124 11 105 +f 105 28 128 +f 124 105 128 +f 32 127 126 +f 127 35 128 +f 128 28 126 +f 127 128 126 +f 1 101 130 +f 101 29 129 +f 129 37 130 +f 101 129 130 +f 29 106 132 +f 106 11 131 +f 131 36 132 +f 106 131 132 +f 36 133 135 +f 133 13 134 +f 134 37 135 +f 133 134 135 +f 29 132 129 +f 132 36 135 +f 135 37 129 +f 132 135 129 +f 11 123 137 +f 123 34 136 +f 136 39 137 +f 123 136 137 +f 34 121 139 +f 121 3 138 +f 138 38 139 +f 121 138 139 +f 38 140 142 +f 140 12 141 +f 141 39 142 +f 140 141 142 +f 34 139 136 +f 139 38 142 +f 142 39 136 +f 139 142 136 +f 12 143 145 +f 143 40 144 +f 144 42 145 +f 143 144 145 +f 40 146 148 +f 146 4 147 +f 147 41 148 +f 146 147 148 +f 41 149 151 +f 149 13 150 +f 150 42 151 +f 149 150 151 +f 40 148 144 +f 148 41 151 +f 151 42 144 +f 148 151 144 +f 11 137 131 +f 137 39 152 +f 152 36 131 +f 137 152 131 +f 39 141 153 +f 141 12 145 +f 145 42 153 +f 141 145 153 +f 42 150 154 +f 150 13 133 +f 133 36 154 +f 150 133 154 +f 39 153 152 +f 153 42 154 +f 154 36 152 +f 153 154 152 +f 2 155 112 +f 155 43 156 +f 156 31 112 +f 155 156 112 +f 43 157 159 +f 157 14 158 +f 158 44 159 +f 157 158 159 +f 44 160 161 +f 160 10 114 +f 114 31 161 +f 160 114 161 +f 43 159 156 +f 159 44 161 +f 161 31 156 +f 159 161 156 +f 14 162 164 +f 162 45 163 +f 163 47 164 +f 162 163 164 +f 45 165 167 +f 165 6 166 +f 166 46 167 +f 165 166 167 +f 46 168 170 +f 168 15 169 +f 169 47 170 +f 168 169 170 +f 45 167 163 +f 167 46 170 +f 170 47 163 +f 167 170 163 +f 15 171 173 +f 171 48 172 +f 172 49 173 +f 171 172 173 +f 48 174 175 +f 174 3 120 +f 120 33 175 +f 174 120 175 +f 33 117 177 +f 117 10 176 +f 176 49 177 +f 117 176 177 +f 48 175 172 +f 175 33 177 +f 177 49 172 +f 175 177 172 +f 14 164 158 +f 164 47 178 +f 178 44 158 +f 164 178 158 +f 47 169 179 +f 169 15 173 +f 173 49 179 +f 169 173 179 +f 49 176 180 +f 176 10 160 +f 160 44 180 +f 176 160 180 +f 47 179 178 +f 179 49 180 +f 180 44 178 +f 179 180 178 +f 3 174 182 +f 174 48 181 +f 181 51 182 +f 174 181 182 +f 48 171 184 +f 171 15 183 +f 183 50 184 +f 171 183 184 +f 50 185 187 +f 185 17 186 +f 186 51 187 +f 185 186 187 +f 48 184 181 +f 184 50 187 +f 187 51 181 +f 184 187 181 +f 15 168 189 +f 168 46 188 +f 188 53 189 +f 168 188 189 +f 46 166 191 +f 166 6 190 +f 190 52 191 +f 166 190 191 +f 52 192 194 +f 192 16 193 +f 193 53 194 +f 192 193 194 +f 46 191 188 +f 191 52 194 +f 194 53 188 +f 191 194 188 +f 16 195 197 +f 195 54 196 +f 196 56 197 +f 195 196 197 +f 54 198 200 +f 198 7 199 +f 199 55 200 +f 198 199 200 +f 55 201 203 +f 201 17 202 +f 202 56 203 +f 201 202 203 +f 54 200 196 +f 200 55 203 +f 203 56 196 +f 200 203 196 +f 15 189 183 +f 189 53 204 +f 204 50 183 +f 189 204 183 +f 53 193 205 +f 193 16 197 +f 197 56 205 +f 193 197 205 +f 56 202 206 +f 202 17 185 +f 185 50 206 +f 202 185 206 +f 53 205 204 +f 205 56 206 +f 206 50 204 +f 205 206 204 +f 3 207 138 +f 207 57 208 +f 208 38 138 +f 207 208 138 +f 57 209 211 +f 209 18 210 +f 210 58 211 +f 209 210 211 +f 58 212 213 +f 212 12 140 +f 140 38 213 +f 212 140 213 +f 57 211 208 +f 211 58 213 +f 213 38 208 +f 211 213 208 +f 18 214 216 +f 214 59 215 +f 215 61 216 +f 214 215 216 +f 59 217 219 +f 217 8 218 +f 218 60 219 +f 217 218 219 +f 60 220 222 +f 220 19 221 +f 221 61 222 +f 220 221 222 +f 59 219 215 +f 219 60 222 +f 222 61 215 +f 219 222 215 +f 19 223 225 +f 223 62 224 +f 224 63 225 +f 223 224 225 +f 62 226 227 +f 226 4 146 +f 146 40 227 +f 226 146 227 +f 40 143 229 +f 143 12 228 +f 228 63 229 +f 143 228 229 +f 62 227 224 +f 227 40 229 +f 229 63 224 +f 227 229 224 +f 18 216 210 +f 216 61 230 +f 230 58 210 +f 216 230 210 +f 61 221 231 +f 221 19 225 +f 225 63 231 +f 221 225 231 +f 63 228 232 +f 228 12 212 +f 212 58 232 +f 228 212 232 +f 61 231 230 +f 231 63 232 +f 232 58 230 +f 231 232 230 +f 3 182 207 +f 182 51 233 +f 233 57 207 +f 182 233 207 +f 51 186 235 +f 186 17 234 +f 234 64 235 +f 186 234 235 +f 64 236 237 +f 236 18 209 +f 209 57 237 +f 236 209 237 +f 51 235 233 +f 235 64 237 +f 237 57 233 +f 235 237 233 +f 17 201 239 +f 201 55 238 +f 238 66 239 +f 201 238 239 +f 55 199 241 +f 199 7 240 +f 240 65 241 +f 199 240 241 +f 65 242 244 +f 242 20 243 +f 243 66 244 +f 242 243 244 +f 55 241 238 +f 241 65 244 +f 244 66 238 +f 241 244 238 +f 20 245 247 +f 245 67 246 +f 246 68 247 +f 245 246 247 +f 67 248 249 +f 248 8 217 +f 217 59 249 +f 248 217 249 +f 59 214 251 +f 214 18 250 +f 250 68 251 +f 214 250 251 +f 67 249 246 +f 249 59 251 +f 251 68 246 +f 249 251 246 +f 17 239 234 +f 239 66 252 +f 252 64 234 +f 239 252 234 +f 66 243 253 +f 243 20 247 +f 247 68 253 +f 243 247 253 +f 68 250 254 +f 250 18 236 +f 236 64 254 +f 250 236 254 +f 66 253 252 +f 253 68 254 +f 254 64 252 +f 253 254 252 +f 1 130 256 +f 130 37 255 +f 255 70 256 +f 130 255 256 +f 37 134 258 +f 134 13 257 +f 257 69 258 +f 134 257 258 +f 69 259 261 +f 259 21 260 +f 260 70 261 +f 259 260 261 +f 37 258 255 +f 258 69 261 +f 261 70 255 +f 258 261 255 +f 13 149 263 +f 149 41 262 +f 262 71 263 +f 149 262 263 +f 41 147 264 +f 147 4 226 +f 226 62 264 +f 147 226 264 +f 62 223 266 +f 223 19 265 +f 265 71 266 +f 223 265 266 +f 41 264 262 +f 264 62 266 +f 266 71 262 +f 264 266 262 +f 19 220 268 +f 220 60 267 +f 267 73 268 +f 220 267 268 +f 60 218 270 +f 218 8 269 +f 269 72 270 +f 218 269 270 +f 72 271 273 +f 271 21 272 +f 272 73 273 +f 271 272 273 +f 60 270 267 +f 270 72 273 +f 273 73 267 +f 270 273 267 +f 13 263 257 +f 263 71 274 +f 274 69 257 +f 263 274 257 +f 71 265 275 +f 265 19 268 +f 268 73 275 +f 265 268 275 +f 73 272 276 +f 272 21 259 +f 259 69 276 +f 272 259 276 +f 71 275 274 +f 275 73 276 +f 276 69 274 +f 275 276 274 +f 1 256 278 +f 256 70 277 +f 277 75 278 +f 256 277 278 +f 70 260 280 +f 260 21 279 +f 279 74 280 +f 260 279 280 +f 74 281 283 +f 281 23 282 +f 282 75 283 +f 281 282 283 +f 70 280 277 +f 280 74 283 +f 283 75 277 +f 280 283 277 +f 21 271 285 +f 271 72 284 +f 284 77 285 +f 271 284 285 +f 72 269 287 +f 269 8 286 +f 286 76 287 +f 269 286 287 +f 76 288 290 +f 288 22 289 +f 289 77 290 +f 288 289 290 +f 72 287 284 +f 287 76 290 +f 290 77 284 +f 287 290 284 +f 22 291 293 +f 291 78 292 +f 292 80 293 +f 291 292 293 +f 78 294 296 +f 294 5 295 +f 295 79 296 +f 294 295 296 +f 79 297 299 +f 297 23 298 +f 298 80 299 +f 297 298 299 +f 78 296 292 +f 296 79 299 +f 299 80 292 +f 296 299 292 +f 21 285 279 +f 285 77 300 +f 300 74 279 +f 285 300 279 +f 77 289 301 +f 289 22 293 +f 293 80 301 +f 289 293 301 +f 80 298 302 +f 298 23 281 +f 281 74 302 +f 298 281 302 +f 77 301 300 +f 301 80 302 +f 302 74 300 +f 301 302 300 +f 1 303 99 +f 303 81 304 +f 304 27 99 +f 303 304 99 +f 81 305 307 +f 305 24 306 +f 306 82 307 +f 305 306 307 +f 82 308 309 +f 308 9 102 +f 102 27 309 +f 308 102 309 +f 81 307 304 +f 307 82 309 +f 309 27 304 +f 307 309 304 +f 24 310 312 +f 310 83 311 +f 311 84 312 +f 310 311 312 +f 83 313 314 +f 313 6 165 +f 165 45 314 +f 313 165 314 +f 45 162 316 +f 162 14 315 +f 315 84 316 +f 162 315 316 +f 83 314 311 +f 314 45 316 +f 316 84 311 +f 314 316 311 +f 14 157 318 +f 157 43 317 +f 317 85 318 +f 157 317 318 +f 43 155 319 +f 155 2 111 +f 111 30 319 +f 155 111 319 +f 30 108 321 +f 108 9 320 +f 320 85 321 +f 108 320 321 +f 43 319 317 +f 319 30 321 +f 321 85 317 +f 319 321 317 +f 24 312 306 +f 312 84 322 +f 322 82 306 +f 312 322 306 +f 84 315 323 +f 315 14 318 +f 318 85 323 +f 315 318 323 +f 85 320 324 +f 320 9 308 +f 308 82 324 +f 320 308 324 +f 84 323 322 +f 323 85 324 +f 324 82 322 +f 323 324 322 +f 1 278 303 +f 278 75 325 +f 325 81 303 +f 278 325 303 +f 75 282 327 +f 282 23 326 +f 326 86 327 +f 282 326 327 +f 86 328 329 +f 328 24 305 +f 305 81 329 +f 328 305 329 +f 75 327 325 +f 327 86 329 +f 329 81 325 +f 327 329 325 +f 23 297 331 +f 297 79 330 +f 330 88 331 +f 297 330 331 +f 79 295 333 +f 295 5 332 +f 332 87 333 +f 295 332 333 +f 87 334 336 +f 334 25 335 +f 335 88 336 +f 334 335 336 +f 79 333 330 +f 333 87 336 +f 336 88 330 +f 333 336 330 +f 25 337 339 +f 337 89 338 +f 338 90 339 +f 337 338 339 +f 89 340 341 +f 340 6 313 +f 313 83 341 +f 340 313 341 +f 83 310 343 +f 310 24 342 +f 342 90 343 +f 310 342 343 +f 89 341 338 +f 341 83 343 +f 343 90 338 +f 341 343 338 +f 23 331 326 +f 331 88 344 +f 344 86 326 +f 331 344 326 +f 88 335 345 +f 335 25 339 +f 339 90 345 +f 335 339 345 +f 90 342 346 +f 342 24 328 +f 328 86 346 +f 342 328 346 +f 88 345 344 +f 345 90 346 +f 346 86 344 +f 345 346 344 +f 6 340 348 +f 340 89 347 +f 347 92 348 +f 340 347 348 +f 89 337 350 +f 337 25 349 +f 349 91 350 +f 337 349 350 +f 91 351 353 +f 351 26 352 +f 352 92 353 +f 351 352 353 +f 89 350 347 +f 350 91 353 +f 353 92 347 +f 350 353 347 +f 25 334 355 +f 334 87 354 +f 354 93 355 +f 334 354 355 +f 87 332 356 +f 332 5 294 +f 294 78 356 +f 332 294 356 +f 78 291 358 +f 291 22 357 +f 357 93 358 +f 291 357 358 +f 87 356 354 +f 356 78 358 +f 358 93 354 +f 356 358 354 +f 22 288 360 +f 288 76 359 +f 359 95 360 +f 288 359 360 +f 76 286 362 +f 286 8 361 +f 361 94 362 +f 286 361 362 +f 94 363 365 +f 363 26 364 +f 364 95 365 +f 363 364 365 +f 76 362 359 +f 362 94 365 +f 365 95 359 +f 362 365 359 +f 25 355 349 +f 355 93 366 +f 366 91 349 +f 355 366 349 +f 93 357 367 +f 357 22 360 +f 360 95 367 +f 357 360 367 +f 95 364 368 +f 364 26 351 +f 351 91 368 +f 364 351 368 +f 93 367 366 +f 367 95 368 +f 368 91 366 +f 367 368 366 +f 6 348 190 +f 348 92 369 +f 369 52 190 +f 348 369 190 +f 92 352 371 +f 352 26 370 +f 370 96 371 +f 352 370 371 +f 96 372 373 +f 372 16 192 +f 192 52 373 +f 372 192 373 +f 92 371 369 +f 371 96 373 +f 373 52 369 +f 371 373 369 +f 26 363 375 +f 363 94 374 +f 374 97 375 +f 363 374 375 +f 94 361 376 +f 361 8 248 +f 248 67 376 +f 361 248 376 +f 67 245 378 +f 245 20 377 +f 377 97 378 +f 245 377 378 +f 94 376 374 +f 376 67 378 +f 378 97 374 +f 376 378 374 +f 20 242 380 +f 242 65 379 +f 379 98 380 +f 242 379 380 +f 65 240 381 +f 240 7 198 +f 198 54 381 +f 240 198 381 +f 54 195 383 +f 195 16 382 +f 382 98 383 +f 195 382 383 +f 65 381 379 +f 381 54 383 +f 383 98 379 +f 381 383 379 +f 26 375 370 +f 375 97 384 +f 384 96 370 +f 375 384 370 +f 97 377 385 +f 377 20 380 +f 380 98 385 +f 377 380 385 +f 98 382 386 +f 382 16 372 +f 372 96 386 +f 382 372 386 +f 97 385 384 +f 385 98 386 +f 386 96 384 +f 385 386 384 diff --git a/apps/lbmMultiRes/store.h b/apps/lbmMultiRes/store.h index c974db2b..e1ff22d2 100644 --- a/apps/lbmMultiRes/store.h +++ b/apps/lbmMultiRes/store.h @@ -114,9 +114,7 @@ inline Neon::set::Container storeFine(Neon::domain::mGrid& grid, fout.load(loader, level + 1, Neon::MultiResCompute::MAP); return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { - assert(pout.hasParent(cell)); - - if (!pout.hasChildren(cell)) { + if (!pout.hasChildren(cell) && pout.hasParent(cell)) { for (int8_t q = 0; q < Q; ++q) { const Neon::int8_3d qDir = getDir(q); @@ -132,9 +130,9 @@ inline Neon::set::Container storeFine(Neon::domain::mGrid& grid, //cn may not be active because 1. it is outside the domain, or 2. this location is occupied by a coarse cell //we are interested in 2. - if (!cn.isActive()) { + if (!pout.isActive(cn)) { - //now, we can get the uncle but we need to make sure it is active i.e., + //now, we can get the uncle (Cu) but we need to make sure it is active i.e., //it is not out side the domain boundary const auto uncle = pout.getUncle(cell, uncleDir); if (uncle.isActive()) { @@ -144,7 +142,9 @@ inline Neon::set::Container storeFine(Neon::domain::mGrid& grid, const auto cs = pout.getUncle(cell, CsDir); - if (cs.isActive()) { + const auto csChild = pout.helpGetNghIdx(cell, CsDir); + + if (cs.isActive() && pout.isActive(csChild)) { const T cellVal = pout(cell, q); diff --git a/apps/lbmMultiRes/stream.h b/apps/lbmMultiRes/stream.h index 14d0ea5d..f1c9926b 100644 --- a/apps/lbmMultiRes/stream.h +++ b/apps/lbmMultiRes/stream.h @@ -77,39 +77,25 @@ inline Neon::set::Container streamFusedExplosion(Neon::domain::mGrid& //We only do streaming in the bulk i.e., non-boundary condition voxels. Since we only allow grid //transition on bulk, then it is okay to do explosion inside this condition because //if the voxel is not bulk then all its neighbours are on the same level and no explosion is needed + if (type(cell, 0) == CellType::bulk) { - //If this cell has children i.e., it is been refined, than we should not work on it - //because this cell is only there to allow query and not to operate on if (!pin.hasChildren(cell)) { for (int8_t q = 0; q < Q; ++q) { const Neon::int8_3d dir = -getDir(q); - - //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction if (!pin.hasChildren(cell, dir)) { - auto neighborCell = pout.helpGetNghIdx(cell, dir); + auto nghType = type.getNghData(cell, dir, 0); - if (neighborCell.isActive()) { - auto nghType = type.getNghData(cell, dir, 0); - assert(nghType.mIsValid); + if (nghType.mIsValid) { if (nghType.mData == CellType::bulk) { pin(cell, q) = pout.getNghData(cell, dir, q).mData; } else { const int8_t opposte_q = latticeOppositeID[q]; pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; } - } else if (level != numLevels - 1 && !(dir.x == 0 && dir.y == 0 && dir.z == 0)) { - //only if we are not on the coarsest level and - //only if we can not do normal streaming, then we may have a coarser neighbor from which - //we can read this pop - - //get the uncle direction/offset i.e., the neighbor of the cell's parent - //this direction/offset is wrt to the cell's parent + } else if (pin.hasParent(cell) && !(dir.x == 0 && dir.y == 0 && dir.z == 0)) { Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); - - auto uncleLoc = pout.getUncle(cell, uncleDir); - - auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); + auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); if (uncle.mIsValid) { pin(cell, q) = uncle.mData; } @@ -126,7 +112,7 @@ template inline Neon::set::Container streamFusedCoalescence(Neon::domain::mGrid& grid, const bool fineInitStore, const int level, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& cellType, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin) @@ -138,42 +124,36 @@ inline Neon::set::Container streamFusedCoalescence(Neon::domain::mGrid& const auto& pout = fout.load(loader, level, Neon::MultiResCompute::STENCIL); auto pin = fin.load(loader, level, Neon::MultiResCompute::MAP); const auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::STENCIL); + constexpr T repRefFactor = 0.5; return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { if (type(cell, 0) == CellType::bulk) { - //If this cell has children i.e., it is been refined, than we should not work on it - //because this cell is only there to allow query and not to operate on if (!pin.hasChildren(cell)) { - const int refFactor = pout.getRefFactor(level); - for (int8_t q = 0; q < Q; ++q) { const Neon::int8_3d dir = -getDir(q); + //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction auto nghType = type.getNghData(cell, dir, 0); - if (nghType.mIsValid) { - if (nghType.mData == CellType::bulk) { - if (!pin.hasChildren(cell, dir)) { - //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction + if (!pin.hasChildren(cell, dir)) { + if (nghType.mIsValid) { + if (nghType.mData == CellType::bulk) { pin(cell, q) = pout.getNghData(cell, dir, q).mData; - } else if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { - //if we have a neighbor at the same level that has been refined, then cell is on - //the interface and this is where we should do the coalescence. Only if it is not the center - //We only do coalescence if the neighbour is bulk since the transition from one level to - //another happens in the bulk (not at the boundary condition) - assert(level != 0); - if (fineInitStore) { - auto ssVal = ss.getNghData(cell, dir, q); - assert(ssVal.mData != 0); - pin(cell, q) = pout.getNghData(cell, dir, q).mData / static_cast(ssVal.mData * refFactor); - } else { - pin(cell, q) = pout.getNghData(cell, dir, q).mData / static_cast(refFactor); - } + } else { + const int8_t opposte_q = latticeOppositeID[q]; + pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; + } + } + } else if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + if (nghType.mIsValid) { + auto neighbor = pout.getNghData(cell, dir, q); + if (fineInitStore) { + auto ssVal = ss.getNghData(cell, dir, q); + assert(ssVal.mData != 0); + pin(cell, q) = neighbor.mData * ssVal.mData; + } else { + pin(cell, q) = neighbor.mData * repRefFactor; } - } else { - assert(!pin.hasChildren(cell, dir)); - const int8_t opposte_q = latticeOppositeID[q]; - pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; } } } @@ -188,7 +168,7 @@ inline Neon::set::Container streamFusedCoalescenceExplosion(Neon::domain::mGrid& const bool fineInitStore, const int level, const int numLevels, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& cellType, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin) @@ -200,59 +180,45 @@ inline Neon::set::Container streamFusedCoalescenceExplosion(Neon::domain::mGrid& auto pin = fin.load(loader, level, Neon::MultiResCompute::MAP); const auto& pout = fout.load(loader, level, Neon::MultiResCompute::STENCIL); const auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::STENCIL); + constexpr T repRefFactor = 0.5; if (level != numLevels - 1) { fout.load(loader, level, Neon::MultiResCompute::STENCIL_UP); } return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { if (type(cell, 0) == CellType::bulk) { - //If this cell has children i.e., it is been refined, then we should not work on it - //because this cell is only there to allow query and not to operate on if (!pin.hasChildren(cell)) { - const int refFactor = pout.getRefFactor(level); - for (int8_t q = 0; q < Q; ++q) { const Neon::int8_3d dir = -getDir(q); + //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction auto nghType = type.getNghData(cell, dir, 0); - if (nghType.mIsValid) { - if (nghType.mData == CellType::bulk) { - if (!pin.hasChildren(cell, dir)) { - //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction + if (!pin.hasChildren(cell, dir)) { + if (nghType.mIsValid) { + if (nghType.mData == CellType::bulk) { pin(cell, q) = pout.getNghData(cell, dir, q).mData; - } else if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { - //if we have a neighbor at the same level that has been refined, then cell is on - //the interface and this is where we should do the coalescence. Only if it is not the center - //We only do coalescence if the neighbour is bulk since the transition from one level to - //another happens in the bulk (not at the boundary condition) - assert(level != 0); - if (fineInitStore) { - auto ssVal = ss.getNghData(cell, dir, q); - assert(ssVal.mData != 0); - pin(cell, q) = pout.getNghData(cell, dir, q).mData / static_cast(ssVal.mData * refFactor); - } else { - pin(cell, q) = pout.getNghData(cell, dir, q).mData / static_cast(refFactor); - } + } else { + const int8_t opposte_q = latticeOppositeID[q]; + pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; + } + } else if (pin.hasParent(cell) && !(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); + auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); + if (uncle.mIsValid) { + pin(cell, q) = uncle.mData; } - } else { - assert(!pin.hasChildren(cell, dir)); - const int8_t opposte_q = latticeOppositeID[q]; - pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; } - } else if (level != numLevels - 1 && !(dir.x == 0 && dir.y == 0 && dir.z == 0)) { - //only if we can not do normal streaming, then we may have a coarser neighbor from which - //we can read this pop - - //get the uncle direction/offset i.e., the neighbor of the cell's parent - //this direction/offset is wrt to the cell's parent - Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); - - auto uncleLoc = pout.getUncle(cell, uncleDir); - - auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); - if (uncle.mIsValid) { - pin(cell, q) = uncle.mData; + } else if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + if (nghType.mIsValid) { + auto neighbor = pout.getNghData(cell, dir, q); + if (fineInitStore) { + auto ssVal = ss.getNghData(cell, dir, q); + assert(ssVal.mData != 0); + pin(cell, q) = neighbor.mData * ssVal.mData; + } else { + pin(cell, q) = neighbor.mData * repRefFactor; + } } } } @@ -268,7 +234,7 @@ inline void stream(Neon::domain::mGrid& grid, const int level, const int numLevels, const Neon::domain::mGrid::Field& cellType, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin, std::vector& containers) @@ -302,7 +268,7 @@ inline void streamFusedExplosion(Neon::domain::mGrid& gri const int level, const int numLevels, const Neon::domain::mGrid::Field& cellType, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin, std::vector& containers) @@ -333,7 +299,7 @@ inline void streamFusedCoalescence(Neon::domain::mGrid& g const int level, const int numLevels, const Neon::domain::mGrid::Field& cellType, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin, std::vector& containers) @@ -360,7 +326,7 @@ inline void streamFusedCoalescenceExplosion(Neon::domain::mGrid& const int level, const int numLevels, const Neon::domain::mGrid::Field& cellType, - const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& sumStore, const Neon::domain::mGrid::Field& fout, Neon::domain::mGrid::Field& fin, std::vector& containers) diff --git a/apps/lbmMultiRes/util.h b/apps/lbmMultiRes/util.h index 6260e1a0..bbdb18ab 100644 --- a/apps/lbmMultiRes/util.h +++ b/apps/lbmMultiRes/util.h @@ -1,7 +1,15 @@ #pragma once + +#include + #include "Neon/Neon.h" #include "lattice.h" + +#define GLM_FORCE_SWIZZLE +#include +#include + constexpr NEON_CUDA_HOST_DEVICE Neon::int8_3d getDir(const int8_t q) { return Neon::int8_3d(latticeVelocity[q][0], latticeVelocity[q][1], latticeVelocity[q][2]); @@ -70,4 +78,481 @@ inline float sdfCube(Neon::index_3d id, Neon::index_3d dim, Neon::float_3d b = { float len = std::sqrt(d_max.x * d_max.x + d_max.y * d_max.y + d_max.z * d_max.z); float val = std::min(std::max(d.x, std::max(d.y, d.z)), 0.f) + len; return val; +} + + +NEON_CUDA_HOST_DEVICE inline float sdfJetfighter(glm::ivec3 id, glm::ivec3 dim) +{ + float turn = 0.f; + float pitch = 0.f + glm::pi(); + float roll = 0.f; + float rudderAngle = 0.f; + float speed = 0.5; + glm::vec3 checkPos = glm::vec3(0.f); + glm::vec3 planePos = glm::vec3(0.f); + float winDist = 10000.0; + float engineDist = 10000.0; + float eFlameDist = 10000.0; + float blackDist = 10000.0; + float bombDist = 10000.0; + float bombDist2 = 10000.0; + float missileDist = 10000.0; + float frontWingDist = 10000.0; + float rearWingDist = 10000.0; + float topWingDist = 10000.0; + glm::vec2 missilesLaunched = glm::vec2(0.f); + + //https://github.com/tovacinni/sdf-explorer/blob/master/data-files/sdf/Vehicle/Jetfighter.glsl + auto mapToCube = [&](glm::ivec3 id) { + //map p to an axis-aligned cube from -1 to 1 + glm::vec3 half_dim(dim.x, dim.y, dim.z); + half_dim *= 0.5f; + glm::vec3 ret = (glm::vec3(id.x, id.y, id.z) - half_dim) / half_dim; + return ret; + }; + + auto RotMat = [](glm::vec3 axis, float angle) -> glm::mat3 { + // http://www.neilmendoza.com/glsl-rotation-about-an-arbitrary-axis/ + axis = glm::normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return glm::mat3(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c); + }; + + auto sgn = [](float x) -> float { + return (x < 0.) ? -1. : 1.; + }; + + auto sdJetBox = [](glm::vec3 p, glm::vec3 b) -> float { + glm::vec3 d = abs(p) - b; + return std::min(std::max(d.x, std::max(d.y, d.z)), 0.0f) + glm::length(glm::max(d, 0.0f)); + }; + + auto sdJetTorus = [](glm::vec3 p, glm::vec2 t) -> float { + glm::vec2 q = glm::vec2(glm::length(p.xz()) - t.x, p.y); + return glm::length(q) - t.y; + }; + + + auto sdJetCapsule = [&](glm::vec3 p, glm::vec3 a, glm::vec3 b, float r) -> float { + glm::vec3 pa = p - a, ba = b - a; + float h = glm::clamp(glm::dot(pa, ba) / glm::dot(ba, ba), 0.0f, 1.0f); + return glm::length(pa - ba * h) - r; + }; + + auto sdJetEllipsoid = [&](glm::vec3 p, glm::vec3 r) -> float { + return (glm::length(p / r.xyz()) - 1.0f) * r.y; + }; + + + auto sdJetConeSection = [&](glm::vec3 p, float h, float r1, float r2) -> float { + float d1 = -p.z - h; + float q = p.z - h; + float si = 0.5f * (r1 - r2) / h; + float d2 = std::max(std::sqrt(glm::dot(p.xy(), p.xy()) * (1.0f - si * si)) + q * si - r2, q); + return glm::length(glm::max(glm::vec2(d1, d2), 0.0f)) + std::min(std::max(d1, d2), 0.f); + }; + + auto fCylinder = [](glm::vec3 p, float r, float height) -> float { + float d = glm::length(p.xy()) - r; + d = std::max(d, std::abs(p.z) - height); + return d; + }; + + auto fSphere = [](glm::vec3 p, float r) -> float { + return glm::length(p) - r; + }; + + + auto sdJetHexPrism = [](glm::vec3 p, glm::vec2 h) -> float { + glm::vec3 q = glm::abs(p); + return std::max(q.y - h.y, std::max((q.z * 0.866025f + q.x * 0.5f), q.x) - h.x); + }; + + auto fOpPipe = [](float a, float b, float r) -> float { + return glm::length(glm::vec2(a, b)) - r; + }; + + + auto pModPolar = [](glm::vec2 p, float repetitions) -> glm::vec2 { + float angle = 2. * glm::pi() / repetitions; + float a = glm::atan(p.y, p.x) + angle / 2.f; + float r = glm::length(p); + float c = std::floor(a / angle); + a = glm::mod(a, angle) - angle / 2.f; + p = glm::vec2(glm::cos(a), glm::sin(a)) * r; + if (std::abs(c) >= (repetitions / 2.)) { + c = std::abs(c); + } + return p; + }; + + auto pModInterval1 = [](float& p, float size, float start, float stop) -> float { + float halfsize = size * 0.5; + float c = std::floor((p + halfsize) / size); + p = glm::mod(p + halfsize, size) - halfsize; + if (c > stop) { + p += size * (c - stop); + c = stop; + } + if (c < start) { + p += size * (c - start); + c = start; + } + return c; + }; + + auto pMirror = [sgn](float& p, float dist) -> float { + float s = sgn(p); + p = std::abs(p) - dist; + return s; + }; + + + auto r2 = [](float r) -> glm::mat2 { + float c = glm::cos(r); + float s = glm::sin(r); + return glm::mat2(c, s, -s, c); + }; + + auto pR = [r2](glm::vec2& p, float a) { + p = p * r2(a); + }; + + auto pR_glm = [pR](glm::vec3& p, float a, int idx, int idy) { + glm::vec2 temp(p[idx], p[idy]); + pR(temp, a); + p[idx] = temp[0]; + p[idy] = temp[1]; + }; + + auto fOpUnionRound = [](float a, float b, float r) -> float { + glm::vec2 u = glm::max(glm::vec2(r - a, r - b), glm::vec2(0)); + return std::max(r, std::min(a, b)) - glm::length(u); + }; + + auto fOpIntersectionRound = [](float a, float b, float r) -> float { + glm::vec2 u = glm::max(glm::vec2(r + a, r + b), glm::vec2(0)); + return std::min(-r, std::max(a, b)) + glm::length(u); + }; + + auto TranslatePos = [&](glm::vec3 p, float _pitch, float _roll) -> glm::vec3 { + // limited by euler rotation. I wont get a good plane rotation without quaternions! :-( + pR_glm(p, _roll - glm::pi(), 0, 1); + p.z += 5.f; + pR_glm(p, _pitch, 2, 1); + p.z -= 5.f; + return p; + }; + + auto MapEsmPod = [&](glm::vec3 p) -> float { + float dist = fCylinder(p, 0.15f, 1.0f); + checkPos = p - glm::vec3(0.f, 0.f, -1.0f); + pModInterval1(checkPos.z, 2.0f, .0f, 1.0f); + return std::min(dist, sdJetEllipsoid(checkPos, glm::vec3(0.15f, 0.15f, .5f))); + }; + + auto MapMissile = [&](glm::vec3 p) -> float { + float d = fCylinder(p, 0.70f, 1.7f); + if (d < 1.0f) { + missileDist = std::min(missileDist, fCylinder(p, 0.12f, 1.2f)); + missileDist = std::min(missileDist, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, 1.10f), glm::vec3(0.12f, 0.12f, 1.0f))); + + checkPos = p; + pR_glm(checkPos, 0.785f, 0, 1); + checkPos.xy() = pModPolar(checkPos.xy(), 4.0f); + + missileDist = std::min(missileDist, sdJetHexPrism(checkPos - glm::vec3(0.f, 0.f, .60f), glm::vec2(0.50f, 0.01f))); + missileDist = std::min(missileDist, sdJetHexPrism(checkPos + glm::vec3(0.f, 0.f, 1.03f), glm::vec2(0.50f, 0.01f))); + missileDist = std::max(missileDist, -sdJetBox(p + glm::vec3(0.f, 0.f, 3.15f), glm::vec3(3.0f, 3.0f, 2.0f))); + missileDist = std::max(missileDist, -fCylinder(p + glm::vec3(0.f, 0.f, 2.15f), 0.09f, 1.2f)); + } + return missileDist; + }; + + auto MapFrontWing = [&](glm::vec3 p, float mirrored) -> float { + missileDist = 10000.0f; + + checkPos = p; + pR_glm(checkPos, -0.02f, 0, 1); + float wing = sdJetBox(checkPos - glm::vec3(4.50f, 0.25f, -4.6f), glm::vec3(3.75f, 0.04f, 2.6f)); + + if (wing < 5.f) //Bounding Box test + { + // cutouts + checkPos = p - glm::vec3(3.0f, 0.3f, -.30f); + pR_glm(checkPos, -0.5f, 0, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(8.0f, 0.3f, -8.80f); + pR_glm(checkPos, -0.05f, 0, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(10.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(9.5f, 0.3f, -8.50f); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(2.0f, 1.4f, 6.75f)), 0.6f); + + // join wing and engine + wing = std::min(wing, sdJetCapsule(p - glm::vec3(2.20f, 0.3f, -4.2f), glm::vec3(0.f, 0.f, -1.20f), glm::vec3(0.f, 0.f, 0.8f), 0.04f)); + wing = std::min(wing, sdJetCapsule(p - glm::vec3(3.f, 0.23f, -4.2f), glm::vec3(0.f, 0.f, -1.20f), glm::vec3(0.f, 0.f, 0.5f), 0.04f)); + + checkPos = p; + pR_glm(checkPos, -0.03f, 0, 2); + wing = std::min(wing, sdJetConeSection(checkPos - glm::vec3(0.70f, -0.1f, -4.52f), 5.0f, 0.25f, 0.9f)); + + checkPos = p; + pR_glm(checkPos, 0.75f, 1, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos - glm::vec3(3.0f, -.5f, 1.50f), glm::vec3(3.75f, 3.4f, 2.0f)), 0.12f); + pR_glm(checkPos, -1.95f, 1, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos - glm::vec3(2.0f, .70f, 2.20f), glm::vec3(3.75f, 3.4f, 2.0f)), 0.12f); + + checkPos = p - glm::vec3(0.47f, 0.0f, -4.3f); + pR_glm(checkPos, 1.57f, 1, 2); + wing = std::min(wing, sdJetTorus(checkPos - glm::vec3(0.0f, -3.f, .0f), glm::vec2(.3f, 0.05f))); + + // flaps + wing = std::max(wing, -sdJetBox(p - glm::vec3(3.565f, 0.1f, -6.4f), glm::vec3(1.50f, 1.4f, .5f))); + wing = std::max(wing, -std::max(sdJetBox(p - glm::vec3(5.065f, 0.1f, -8.4f), glm::vec3(0.90f, 1.4f, 2.5f)), -sdJetBox(p - glm::vec3(5.065f, 0.f, -8.4f), glm::vec3(0.89f, 1.4f, 2.49f)))); + + checkPos = p - glm::vec3(3.565f, 0.18f, -6.20f + 0.30f); + pR_glm(checkPos, -0.15f + (0.8f * pitch), 1, 2); + wing = std::min(wing, sdJetBox(checkPos + glm::vec3(0.0f, 0.0f, 0.30f), glm::vec3(1.46f, 0.007f, 0.3f))); + + // missile holder + float holder = sdJetBox(p - glm::vec3(3.8f, -0.26f, -4.70f), glm::vec3(0.04f, 0.4f, 0.8f)); + + checkPos = p; + pR_glm(checkPos, 0.85f, 1, 2); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(2.8f, -1.8f, -3.0f), glm::vec3(1.75f, 1.4f, 1.0f))); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(2.8f, -5.8f, -3.0f), glm::vec3(1.75f, 1.4f, 1.0f))); + holder = fOpUnionRound(holder, sdJetBox(p - glm::vec3(3.8f, -0.23f, -4.70f), glm::vec3(1.0f, 0.03f, 0.5f)), 0.1f); + + // bomb + bombDist = fCylinder(p - glm::vec3(3.8f, -0.8f, -4.50f), 0.35f, 1.f); + bombDist = std::min(bombDist, sdJetEllipsoid(p - glm::vec3(3.8f, -0.8f, -3.50f), glm::vec3(0.35f, 0.35f, 1.0f))); + bombDist = std::min(bombDist, sdJetEllipsoid(p - glm::vec3(3.8f, -0.8f, -5.50f), glm::vec3(0.35f, 0.35f, 1.0f))); + + // missiles + checkPos = p - glm::vec3(2.9f, -0.45f, -4.50f); + + // check if any missile has been fired. If so, do NOT mod missile position + float maxMissiles = 0.f; + if (mirrored > 0.f) { + maxMissiles = glm::mix(1.0f, 0.f, glm::step(1.f, missilesLaunched.x)); + } else { + maxMissiles = glm::mix(1.0f, 0.f, glm::step(1.f, missilesLaunched.y)); + } + + pModInterval1(checkPos.x, 1.8f, .0f, maxMissiles); + holder = std::min(holder, MapMissile(checkPos)); + + // ESM Pod + holder = std::min(holder, MapEsmPod(p - glm::vec3(7.2f, 0.06f, -5.68f))); + + // wheelholder + wing = std::min(wing, sdJetBox(p - glm::vec3(0.6f, -0.25f, -3.8f), glm::vec3(0.8f, 0.4f, .50f))); + + wing = std::min(bombDist, std::min(wing, holder)); + } + + return wing; + }; + + auto MapRearWing = [&](glm::vec3 p) -> float { + float wing2 = sdJetBox(p - glm::vec3(2.50f, 0.1f, -8.9f), glm::vec3(1.5f, 0.017f, 1.3f)); + if (wing2 < 0.15f) //Bounding Box test + { + // cutouts + checkPos = p - glm::vec3(3.0f, 0.0f, -5.9f); + pR_glm(checkPos, -0.5f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.2f); + + checkPos = p - glm::vec3(0.0f, 0.0f, -4.9f); + pR_glm(checkPos, -0.5f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(3.3f, 1.4f, 1.70f)), 0.2f); + + checkPos = p - glm::vec3(3.0f, 0.0f, -11.70f); + pR_glm(checkPos, -0.05f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(4.30f, 0.0f, -11.80f); + pR_glm(checkPos, 1.15f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + } + return wing2; + }; + + auto MapTailFlap = [&](glm::vec3 p, float mirrored) -> float { + p.z += 0.3f; + pR_glm(p, rudderAngle * (-1.f * mirrored), 0, 2); + p.z -= 0.3f; + + float tailFlap = sdJetBox(p - glm::vec3(0.f, -0.04f, -.42f), glm::vec3(0.025f, .45f, .30f)); + + // tailFlap front cutout + checkPos = p - glm::vec3(0.f, 0.f, 1.15f); + pR_glm(checkPos, 1.32f, 1, 2); + tailFlap = std::max(tailFlap, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f))); + + // tailFlap rear cutout + checkPos = p - glm::vec3(0.f, 0.f, -2.75f); + pR_glm(checkPos, -0.15f, 1, 2); + tailFlap = fOpIntersectionRound(tailFlap, -sdJetBox(checkPos, glm::vec3(.75f, 1.4f, 2.0f)), 0.05f); + + checkPos = p - glm::vec3(0.f, 0.f, -.65f); + tailFlap = std::min(tailFlap, sdJetEllipsoid(checkPos - glm::vec3(0.00f, 0.25f, 0.f), glm::vec3(0.06f, 0.05f, 0.15f))); + tailFlap = std::min(tailFlap, sdJetEllipsoid(checkPos - glm::vec3(0.00f, 0.10f, 0.f), glm::vec3(0.06f, 0.05f, 0.15f))); + + return tailFlap; + }; + + auto MapTopWing = [&](glm::vec3 p, float mirrored) -> float { + checkPos = p - glm::vec3(1.15f, 1.04f, -8.5f); + pR_glm(checkPos, -0.15f, 0, 1); + float topWing = sdJetBox(checkPos, glm::vec3(0.014f, 0.8f, 1.2f)); + if (topWing < .15f) //Bounding Box test + { + float flapDist = MapTailFlap(checkPos, mirrored); + + checkPos = p - glm::vec3(1.15f, 1.04f, -8.5f); + pR_glm(checkPos, -0.15f, 0, 1); + // top border + topWing = std::min(topWing, sdJetBox(checkPos - glm::vec3(0.f, 0.55f, 0.f), glm::vec3(0.04f, 0.1f, 1.25f))); + + float flapCutout = sdJetBox(checkPos - glm::vec3(0.f, -0.04f, -1.19f), glm::vec3(0.02f, .45f, 1.0f)); + // tailFlap front cutout + checkPos = p - glm::vec3(1.15f, 2.f, -7.65f); + pR_glm(checkPos, 1.32f, 1, 2); + flapCutout = std::max(flapCutout, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f))); + + // make hole for tail flap + topWing = std::max(topWing, -flapCutout); + + // front cutouts + checkPos = p - glm::vec3(1.15f, 2.f, -7.f); + pR_glm(checkPos, 1.02f, 1, 2); + topWing = fOpIntersectionRound(topWing, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f)), 0.05f); + + // rear cutout + checkPos = p - glm::vec3(1.15f, 1.f, -11.25f); + pR_glm(checkPos, -0.15f, 1, 2); + topWing = fOpIntersectionRound(topWing, -sdJetBox(checkPos, glm::vec3(.75f, 1.4f, 2.0f)), 0.05f); + + // top roll + topWing = std::min(topWing, sdJetCapsule(p - glm::vec3(1.26f, 1.8f, -8.84f), glm::vec3(0.f, 0.f, -.50f), glm::vec3(0.f, 0.f, 0.3f), 0.06f)); + + topWing = std::min(topWing, flapDist); + } + return topWing; + }; + + auto MapPlane = [&](glm::vec3 p) -> float { + float d = 100000.0f; + glm::vec3 pOriginal = p; + // rotate position + p = TranslatePos(p, pitch, roll); + float mirrored = 0.f; + + // mirror position at x=0.0. Both sides of the plane are equal. + mirrored = pMirror(p.x, 0.0f); + + float body = std::min(d, sdJetEllipsoid(p - glm::vec3(0.f, 0.1f, -4.40f), glm::vec3(0.50f, 0.30f, 2.f))); + body = fOpUnionRound(body, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, .50f), glm::vec3(0.50f, 0.40f, 3.25f)), 1.f); + body = std::min(body, sdJetConeSection(p - glm::vec3(0.f, 0.f, 3.8f), 0.1f, 0.15f, 0.06f)); + + body = std::min(body, sdJetConeSection(p - glm::vec3(0.f, 0.f, 3.8f), 0.7f, 0.07f, 0.01f)); + + // window + winDist = sdJetEllipsoid(p - glm::vec3(0.f, 0.3f, -0.10f), glm::vec3(0.45f, 0.4f, 1.45f)); + winDist = fOpUnionRound(winDist, sdJetEllipsoid(p - glm::vec3(0.f, 0.3f, 0.60f), glm::vec3(0.3f, 0.6f, .75f)), 0.4f); + winDist = std::max(winDist, -body); + body = std::min(body, winDist) * 0.8f; + body = std::min(body, fOpPipe(winDist, sdJetBox(p - glm::vec3(0.f, 0.f, 1.0f), glm::vec3(3.0f, 1.f, .01f)), 0.03f) * 0.7f); + body = std::min(body, fOpPipe(winDist, sdJetBox(p - glm::vec3(0.f, 0.f, 0.0f), glm::vec3(3.0f, 1.f, .01f)), 0.03f) * 0.7f); + + // front (nose) + body = std::max(body, -std::max(fCylinder(p - glm::vec3(0.f, 0.f, 2.5f), .46f, 0.04f), -fCylinder(p - glm::vec3(0.f, 0.f, 2.5f), .35f, 0.1f))); + checkPos = p - glm::vec3(0.f, 0.f, 2.5f); + pR_glm(checkPos, 1.57f, 1, 2); + body = fOpIntersectionRound(body, -sdJetTorus(checkPos + glm::vec3(0.f, 0.80f, 0.f), glm::vec2(.6f, 0.05f)), 0.015f); + body = fOpIntersectionRound(body, -sdJetTorus(checkPos + glm::vec3(0.f, 2.30f, 0.f), glm::vec2(.62f, 0.06f)), 0.015f); + + // wings + frontWingDist = MapFrontWing(p, mirrored); + d = std::min(d, frontWingDist); + rearWingDist = MapRearWing(p); + d = std::min(d, rearWingDist); + topWingDist = MapTopWing(p, mirrored); + d = std::min(d, topWingDist); + + // bottom + checkPos = p - glm::vec3(0.f, -0.6f, -5.0f); + pR_glm(checkPos, 0.07f, 1, 2); + d = fOpUnionRound(d, sdJetBox(checkPos, glm::vec3(0.5f, 0.2f, 3.1f)), 0.40f); + + float holder = sdJetBox(p - glm::vec3(0.0f, -1.1f, -4.30f), glm::vec3(0.08f, 0.4f, 0.8f)); + checkPos = p; + pR_glm(checkPos, 0.85f, 1, 2); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(0.0f, -5.64f, -2.8f), glm::vec3(1.75f, 1.4f, 1.0f))); + d = fOpUnionRound(d, holder, 0.25f); + + // large bomb + bombDist2 = fCylinder(p - glm::vec3(0.0f, -1.6f, -4.0f), 0.45f, 1.0f); + bombDist2 = std::min(bombDist2, sdJetEllipsoid(p - glm::vec3(0.0f, -1.6f, -3.20f), glm::vec3(0.45f, 0.45f, 2.f))); + bombDist2 = std::min(bombDist2, sdJetEllipsoid(p - glm::vec3(0.0f, -1.6f, -4.80f), glm::vec3(0.45f, 0.45f, 2.f))); + + d = std::min(d, bombDist2); + + d = std::min(d, sdJetEllipsoid(p - glm::vec3(1.05f, 0.13f, -8.4f), glm::vec3(0.11f, 0.18f, 1.0f))); + + checkPos = p - glm::vec3(0.f, 0.2f, -5.0f); + d = fOpUnionRound(d, fOpIntersectionRound(sdJetBox(checkPos, glm::vec3(1.2f, 0.14f, 3.7f)), -sdJetBox(checkPos, glm::vec3(1.f, 1.14f, 4.7f)), 0.2f), 0.25f); + + d = fOpUnionRound(d, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, -4.f), glm::vec3(1.21f, 0.5f, 2.50f)), 0.75f); + + // engine cutout + blackDist = std::max(d, fCylinder(p - glm::vec3(.8f, -0.15f, 0.f), 0.5f, 2.4f)); + d = std::max(d, -fCylinder(p - glm::vec3(.8f, -0.15f, 0.f), 0.45f, 2.4f)); + + // engine + d = std::max(d, -sdJetBox(p - glm::vec3(0.f, 0.f, -9.5f), glm::vec3(1.5f, 0.4f, 0.7f))); + + engineDist = fCylinder(p - glm::vec3(0.40f, -0.1f, -8.7f), .42f, 0.2f); + checkPos = p - glm::vec3(0.4f, -0.1f, -8.3f); + pR_glm(checkPos, 1.57f, 1, 2); + engineDist = std::min(engineDist, sdJetTorus(checkPos, glm::vec2(.25f, 0.25f))); + engineDist = std::min(engineDist, sdJetConeSection(p - glm::vec3(0.40f, -0.1f, -9.2f), 0.3f, .22f, .36f)); + + checkPos = p - glm::vec3(0.f, 0.f, -9.24f); + checkPos.xy() -= glm::vec2(0.4f, -0.1f); + checkPos.xy() = pModPolar(checkPos.xy(), 22.0f); + + float engineCone = fOpPipe(engineDist, sdJetBox(checkPos, glm::vec3(.6f, 0.001f, 0.26f)), 0.015f); + engineDist = std::min(engineDist, engineCone); + + d = std::min(d, engineDist); + + d = std::min(d, winDist); + d = std::min(d, body); + + d = std::min(d, sdJetBox(p - glm::vec3(1.1f, 0.f, -6.90f), glm::vec3(.33f, .12f, .17f))); + checkPos = p - glm::vec3(0.65f, 0.55f, -1.4f); + pR_glm(checkPos, -0.35f, 1, 2); + d = std::min(d, sdJetBox(checkPos, glm::vec3(0.2f, 0.1f, 0.45f))); + + return d; + }; + + + glm::vec3 p = mapToCube(id); + p.z += 0.8; + + p = p * RotMat(glm::vec3(0.f, 1.f, 0.f), glm::pi()); + const float scale = 0.12; + p *= (1.0 / scale); + + return MapPlane(p) * 0.9 * scale; } \ No newline at end of file diff --git a/apps/lbmMultiResDisg/CMakeLists.txt b/apps/lbmMultiResDisg/CMakeLists.txt new file mode 100644 index 00000000..fd0e9d4f --- /dev/null +++ b/apps/lbmMultiResDisg/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +set (APP_NAME app-lbmMultiResDisg) +file(GLOB_RECURSE SrcFiles lbmMultiRes.cu lbmMultiRes.h lattice.h init.h postProcess.h util.h collide.h stream.h verify.h flowOverShape.h lidDrivenCavity.h fusedFinest.h) + +add_executable(${APP_NAME} ${SrcFiles}) + +target_link_libraries(${APP_NAME} + PUBLIC libNeonSkeleton glm::glm igl::core) + +if(${NEON_USE_POLYSCOPE}) + target_link_libraries(${APP_NAME} + PUBLIC libNeonSkeleton polyscope) +endif() + +set_target_properties(${APP_NAME} PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS ON) +set_target_properties(${APP_NAME} PROPERTIES FOLDER "apps") +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} PREFIX "${APP_NAME}" FILES ${SrcFiles}) + +#add_test(NAME ${APP_NAME} COMMAND ${APP_NAME}) \ No newline at end of file diff --git a/apps/lbmMultiResDisg/collide.h b/apps/lbmMultiResDisg/collide.h new file mode 100644 index 00000000..e9a57ee9 --- /dev/null +++ b/apps/lbmMultiResDisg/collide.h @@ -0,0 +1,381 @@ +#pragma once + +#include "lattice.h" +#include "util.h" + +template +inline NEON_CUDA_HOST_DEVICE void store(const typename Neon::domain::mGrid::Idx& cell, + FieldT& pout, + const int8_t q, + const T cellVal) +{ + + const Neon::int8_3d qDir = getDir(q); + if (qDir.x == 0 && qDir.y == 0 && qDir.z == 0) { + return; + } + + const Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, qDir); + + //we try to access a cell on the same level (i.e., the refined level) along the same + //direction as the uncle and we use this a proxy to check if there is an unrefined uncle + const auto cn = pout.helpGetNghIdx(cell, uncleDir); + + //cn may not be active because 1. it is outside the domain, or 2. this location is occupied by a coarse cell + //we are interested in 2. + if (!pout.isActive(cn)) { + + //now, we can get the uncle but we need to make sure it is active i.e., + //it is not out side the domain boundary + const auto uncle = pout.getUncle(cell, uncleDir); + if (uncle.isActive()) { + + //locate the coarse cell where we should store this cell info + const Neon::int8_3d CsDir = uncleDir - qDir; + + const auto cs = pout.getUncle(cell, CsDir); + + const auto csChild = pout.helpGetNghIdx(cell, CsDir); + + if (cs.isActive() && pout.isActive(csChild)) { + +#ifdef NEON_PLACE_CUDA_DEVICE + atomicAdd(&pout.uncleVal(cell, CsDir, q), cellVal); +#else +#pragma omp atomic + pout.uncleVal(cell, CsDir, q) += cellVal; +#endif + } + } + } +} + +template +inline Neon::set::Container collideBGKUnrolledFusedStore(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout) +{ + return grid.newContainer( + "CH" + std::to_string(level), level, !atInterface, + [&, level, omega0, numLevels](Neon::set::Loader& loader) { + const auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + + if (level < numLevels - 1) { + //reload the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + if (!in.hasChildren(cell)) { + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + + const T X_M1 = ins[0] + ins[3] + ins[4] + ins[5] + ins[6]; + const T X_P1 = ins[10] + ins[13] + ins[14] + ins[15] + ins[16]; + const T X_0 = ins[9] + ins[1] + ins[2] + ins[7] + ins[8] + ins[11] + ins[12] + ins[17] + ins[18]; + const T Y_M1 = ins[1] + ins[3] + ins[7] + ins[8] + ins[14]; + const T Y_P1 = ins[4] + ins[11] + ins[13] + ins[17] + ins[18]; + const T Z_M1 = ins[2] + ins[5] + ins[7] + ins[16] + ins[18]; + const T Z_P1 = ins[6] + ins[8] + ins[12] + ins[15] + ins[17]; + + //density + const T rho = X_M1 + X_P1 + X_0; + + //velocity + Neon::Vec_3d vel; + + vel.v[0] = (X_P1 - X_M1) / rho; + vel.v[1] = (Y_P1 - Y_M1) / rho; + vel.v[2] = (Z_P1 - Z_M1) / rho; + + + const T usqr = T(1.5) * (vel.v[0] * vel.v[0] + vel.v[1] * vel.v[1] + vel.v[2] * vel.v[2]); + + //collide + const T ck_u03 = vel.v[0] + vel.v[1]; + const T ck_u04 = vel.v[0] - vel.v[1]; + const T ck_u05 = vel.v[0] + vel.v[2]; + const T ck_u06 = vel.v[0] - vel.v[2]; + const T ck_u07 = vel.v[1] + vel.v[2]; + const T ck_u08 = vel.v[1] - vel.v[2]; + + constexpr T c1over18 = 1. / 18.; + constexpr T c1over36 = 1. / 36.; + constexpr T c1over3 = 1. / 3.; + constexpr T c4dot5 = 4.5; + constexpr T c3 = 3.; + constexpr T c1 = 1.; + constexpr T c6 = 6.; + + const T eq_00 = rho * c1over18 * (c1 - c3 * vel.v[0] + c4dot5 * vel.v[0] * vel.v[0] - usqr); + const T eq_01 = rho * c1over18 * (c1 - c3 * vel.v[1] + c4dot5 * vel.v[1] * vel.v[1] - usqr); + const T eq_02 = rho * c1over18 * (c1 - c3 * vel.v[2] + c4dot5 * vel.v[2] * vel.v[2] - usqr); + const T eq_03 = rho * c1over36 * (c1 - c3 * ck_u03 + c4dot5 * ck_u03 * ck_u03 - usqr); + const T eq_04 = rho * c1over36 * (c1 - c3 * ck_u04 + c4dot5 * ck_u04 * ck_u04 - usqr); + const T eq_05 = rho * c1over36 * (c1 - c3 * ck_u05 + c4dot5 * ck_u05 * ck_u05 - usqr); + const T eq_06 = rho * c1over36 * (c1 - c3 * ck_u06 + c4dot5 * ck_u06 * ck_u06 - usqr); + const T eq_07 = rho * c1over36 * (c1 - c3 * ck_u07 + c4dot5 * ck_u07 * ck_u07 - usqr); + const T eq_08 = rho * c1over36 * (c1 - c3 * ck_u08 + c4dot5 * ck_u08 * ck_u08 - usqr); + + const T eqopp_00 = eq_00 + rho * c1over18 * c6 * vel.v[0]; + const T eqopp_01 = eq_01 + rho * c1over18 * c6 * vel.v[1]; + const T eqopp_02 = eq_02 + rho * c1over18 * c6 * vel.v[2]; + const T eqopp_03 = eq_03 + rho * c1over36 * c6 * ck_u03; + const T eqopp_04 = eq_04 + rho * c1over36 * c6 * ck_u04; + const T eqopp_05 = eq_05 + rho * c1over36 * c6 * ck_u05; + const T eqopp_06 = eq_06 + rho * c1over36 * c6 * ck_u06; + const T eqopp_07 = eq_07 + rho * c1over36 * c6 * ck_u07; + const T eqopp_08 = eq_08 + rho * c1over36 * c6 * ck_u08; + + const T pop_out_00 = (c1 - omega) * ins[0] + omega * eq_00; + const T pop_out_01 = (c1 - omega) * ins[1] + omega * eq_01; + const T pop_out_02 = (c1 - omega) * ins[2] + omega * eq_02; + const T pop_out_03 = (c1 - omega) * ins[3] + omega * eq_03; + const T pop_out_04 = (c1 - omega) * ins[4] + omega * eq_04; + const T pop_out_05 = (c1 - omega) * ins[5] + omega * eq_05; + const T pop_out_06 = (c1 - omega) * ins[6] + omega * eq_06; + const T pop_out_07 = (c1 - omega) * ins[7] + omega * eq_07; + const T pop_out_08 = (c1 - omega) * ins[8] + omega * eq_08; + + const T pop_out_opp_00 = (c1 - omega) * ins[10] + omega * eqopp_00; + const T pop_out_opp_01 = (c1 - omega) * ins[11] + omega * eqopp_01; + const T pop_out_opp_02 = (c1 - omega) * ins[12] + omega * eqopp_02; + const T pop_out_opp_03 = (c1 - omega) * ins[13] + omega * eqopp_03; + const T pop_out_opp_04 = (c1 - omega) * ins[14] + omega * eqopp_04; + const T pop_out_opp_05 = (c1 - omega) * ins[15] + omega * eqopp_05; + const T pop_out_opp_06 = (c1 - omega) * ins[16] + omega * eqopp_06; + const T pop_out_opp_07 = (c1 - omega) * ins[17] + omega * eqopp_07; + const T pop_out_opp_08 = (c1 - omega) * ins[18] + omega * eqopp_08; + + +#define COMPUTE_GO_AND_BACK(GOid, BKid) \ + out(cell, GOid) = pop_out_0##GOid; \ + out(cell, BKid) = pop_out_opp_0##GOid; + + COMPUTE_GO_AND_BACK(0, 10) + COMPUTE_GO_AND_BACK(1, 11) + COMPUTE_GO_AND_BACK(2, 12) + COMPUTE_GO_AND_BACK(3, 13) + COMPUTE_GO_AND_BACK(4, 14) + COMPUTE_GO_AND_BACK(5, 15) + COMPUTE_GO_AND_BACK(6, 16) + COMPUTE_GO_AND_BACK(7, 17) + COMPUTE_GO_AND_BACK(8, 18) + +#undef COMPUTE_GO_AND_BACK + const T eq_09 = rho * c1over3 * (c1 - usqr); + const T pop_out_09 = (c1 - omega) * ins[9] + omega * eq_09; + out(cell, 9) = pop_out_09; + + bool doStore = level < numLevels - 1; + + if constexpr (atInterface) { + if (doStore) { + //store operation + store(cell, out, 0, pop_out_00); + store(cell, out, 1, pop_out_01); + store(cell, out, 2, pop_out_02); + store(cell, out, 3, pop_out_03); + store(cell, out, 4, pop_out_04); + store(cell, out, 5, pop_out_05); + store(cell, out, 6, pop_out_06); + store(cell, out, 7, pop_out_07); + store(cell, out, 8, pop_out_08); + store(cell, out, 9, pop_out_09); + + store(cell, out, 10, pop_out_opp_00); + store(cell, out, 11, pop_out_opp_01); + store(cell, out, 12, pop_out_opp_02); + store(cell, out, 13, pop_out_opp_03); + store(cell, out, 14, pop_out_opp_04); + store(cell, out, 15, pop_out_opp_05); + store(cell, out, 16, pop_out_opp_06); + store(cell, out, 17, pop_out_opp_07); + store(cell, out, 18, pop_out_opp_08); + } + } + + } else { + if (level != 0) { + //zero out the center only if we are not of the finest level + //this is because we use the refined voxels the interface to + //accumulate the fine level information in Store operation + //which should be reset after each collide + for (int8_t q = 0; q < Q; ++q) { + out(cell, q) = 0; + } + } + } + } + }; + }); +} + + +template +inline Neon::set::Container collideKBCFusedStore(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout) +{ + return grid.newContainer( + "CH" + std::to_string(level), level, !atInterface, + [&, level, omega0, numLevels](Neon::set::Loader& loader) { + const auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + const T beta = omega * 0.5; + const T invBeta = 1.0 / beta; + + if (level < numLevels - 1) { + //reload the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + constexpr T tiny = 1e-7; + + if (!in.hasChildren(cell)) { + + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + //density + T rho = 0; + for (int i = 0; i < Q; ++i) { + rho += ins[i]; + } + + //velocity + const Neon::Vec_3d vel = velocity(ins, rho); + + T Pi[6] = {0, 0, 0, 0, 0, 0}; + T e0 = 0; + T e1 = 0; + T deltaS[Q]; + T fneq[Q]; + T feq[Q]; + + + auto fdecompose_shear = [&](const int q) -> T { + const T Nxz = Pi[0] - Pi[5]; + const T Nyz = Pi[3] - Pi[5]; + if (q == 9) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 18) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 3) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 6) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 1) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 2) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 12 || q == 24) { + return Pi[1] / 4.0; + } else if (q == 21 || q == 15) { + return -Pi[1] / 4.0; + } else if (q == 10 || q == 20) { + return Pi[2] / 4.0; + } else if (q == 19 || q == 11) { + return -Pi[2] / 4.0; + } else if (q == 8 || q == 4) { + return Pi[4] / 4.0; + } else if (q == 7 || q == 5) { + return -Pi[4] / 4.0; + } else { + return T(0); + } + }; + + + //equilibrium + const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); + for (int8_t q = 0; q < Q; ++q) { + T cu = 0; + for (int d = 0; d < 3; ++d) { + cu += latticeVelocity[q][d] * vel.v[d]; + } + cu *= 3.0; + + feq[q] = rho * latticeWeights[q] * (1. + cu + 0.5 * cu * cu - usqr); + + fneq[q] = ins[q] - feq[q]; + } + + //momentum_flux + for (int8_t q = 0; q < Q; ++q) { + for (int i = 0; i < 6; ++i) { + Pi[i] += fneq[q] * latticeMoment[q][i]; + } + } + + + //fdecompose_shear + for (int8_t q = 0; q < Q; ++q) { + deltaS[q] = rho * fdecompose_shear(q); + + T deltaH = fneq[q] - deltaS[q]; + + e0 += (deltaS[q] * deltaH / feq[q]); + e1 += (deltaH * deltaH / feq[q]); + } + + //gamma + T gamma = invBeta - (2.0 - invBeta) * e0 / (tiny + e1); + + bool doStore = level < numLevels - 1; + + //fout + for (int8_t q = 0; q < Q; ++q) { + const T deltaH = fneq[q] - deltaS[q]; + + const T res = ins[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); + + out(cell, q) = res; + + if constexpr (atInterface) { + if (doStore) { + //store operation + store(cell, out, q, res); + } + } + } + } else { + if (level != 0) { + //zero out the center only if we are not of the finest level + //this is because we use the refined voxels the interface to + //accumulate the fine level information in Store operation + //which should be reset after each collide + for (int q = 0; q < Q; ++q) { + out(cell, q) = 0; + } + } + } + } + }; + }); +} diff --git a/apps/lbmMultiResDisg/flowOverShape.h b/apps/lbmMultiResDisg/flowOverShape.h new file mode 100644 index 00000000..ff45cd61 --- /dev/null +++ b/apps/lbmMultiResDisg/flowOverShape.h @@ -0,0 +1,489 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "lbmMultiRes.h" + +#include "init.h" + +#include "igl/AABB.h" +#include "igl/WindingNumberAABB.h" +#include "igl/max.h" +#include "igl/min.h" +#include "igl/read_triangle_mesh.h" +#include "igl/remove_unreferenced.h" +#include "igl/writeOBJ.h" + +template +void initFlowOverShape(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& cellType, + const Neon::double_3d inletVelocity, + const sdfT shapeSDF) +{ + + const Neon::index_3d gridDim = grid.getDimension(); + + // init fields + for (int level = 0; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "Init_" + std::to_string(level), level, + [&fin, &fout, &cellType, &sumStore, level, gridDim, inletVelocity, shapeSDF](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto& out = fout.load(loader, level, Neon::MultiResCompute::MAP); + auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + const T usqr = (3.0 / 2.0) * (inletVelocity.x * inletVelocity.x + inletVelocity.y * inletVelocity.y + inletVelocity.z * inletVelocity.z); + + + Neon::domain::mGrid::Partition sdf; + if constexpr (std::is_same_v>) { + sdf = shapeSDF.load(loader, level, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + // velocity and density + (void)sdf; + (void)shapeSDF; + + type(cell, 0) = CellType::bulk; + + for (int q = 0; q < Q; ++q) { + ss(cell, q) = 0; + in(cell, q) = 0; + out(cell, q) = 0; + } + + if (!in.hasChildren(cell)) { + const Neon::index_3d idx = in.getGlobalIndex(cell); + + if (idx.x == 0) { + type(cell, 0) = CellType::inlet; + } + + if constexpr (std::is_same_v>) { + if (sdf(cell, 0) == 1) { + type(cell, 0) = CellType::bounceBack; + } + } else { + if (shapeSDF(idx)) { + type(cell, 0) = CellType::bounceBack; + } + } + + // the cell classification + if (idx.y == 0 || idx.y == gridDim.y - (1 << level) || + idx.z == 0 || idx.z == gridDim.z - (1 << level)) { + type(cell, 0) = CellType::bounceBack; + } + + // population init value + for (int q = 0; q < Q; ++q) { + T pop_init_val = latticeWeights[q]; + + // bounce back + if (type(cell, 0) == CellType::bounceBack) { + pop_init_val = 0; + } + + if (type(cell, 0) == CellType::inlet) { + pop_init_val = 0; + + for (int d = 0; d < 3; ++d) { + pop_init_val += latticeVelocity[q][d] * inletVelocity.v[d]; + } + pop_init_val *= -6. * latticeWeights[q]; + } + + out(cell, q) = pop_init_val; + in(cell, q) = pop_init_val; + } + } + }; + }); + + container.run(0); + } + + + // init sumStore + initSumStore(grid, sumStore); +} + +template +void flowOverJet(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + Neon::index_3d gridDim(19 * params.scale, 8 * params.scale, 8 * params.scale); + + Neon::index_3d jetBoxDim(2 * params.scale, 2 * params.scale, 2 * params.scale); + Neon::index_3d jetBoxPosition(3 * params.scale, 3 * params.scale, 3 * params.scale); + + int depth = 3; + + const Neon::mGridDescriptor<1> descriptor(depth); + + Neon::domain::mGrid grid( + backend, gridDim, + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 2 * params.scale && idx.x < 7 * params.scale && + idx.y >= 3 * params.scale && idx.y < 5 * params.scale && + idx.z >= 3 * params.scale && idx.z < 5 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= params.scale && idx.x < 11 * params.scale && + idx.y >= 2 * params.scale && idx.y < 6 * params.scale && + idx.z >= 2 * params.scale && idx.z < 6 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}, + Neon::domain::Stencil::s19_t(false), descriptor); + + + // LBM problem + const T uin = 0.04; + const T clength = T((jetBoxDim.x / 2) / (1 << (depth - 1))); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + // auto test = grid.newField("test", 1, 0); + // test.ioToVtk("Test", true, true, true, true, {-1, -1, 1}); + // exit(0); + + // allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + + // init fields + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, [=] NEON_CUDA_HOST_DEVICE(Neon::index_3d idx) { + idx.x -= jetBoxPosition.x; + idx.y -= jetBoxPosition.y; + idx.z -= jetBoxPosition.z; + if (idx.x < 0 || idx.y < 0 || idx.z < 0) { + return false; + } + + idx.x = (jetBoxDim.x / 2) - (idx.x - (jetBoxDim.x / 2)); + return sdfJetfighter(glm::ivec3(idx.z, idx.y, idx.x), glm::ivec3(jetBoxDim.x, jetBoxDim.y, jetBoxDim.z)) <= 0; + + // Neon::index_4d sphere(jetBoxPosition.x + jetBoxDim.x / 2, jetBoxPosition.y + jetBoxDim.y / 2, jetBoxPosition.z + jetBoxDim.z / 2, jetBoxDim.x / 4); + // const T dx = sphere.x - idx.x; + // const T dy = sphere.y - idx.y; + // const T dz = sphere.z - idx.z; + // if ((dx * dx + dy * dy + dz * dz) < sphere.w * sphere.w) { + // return true; + // } else { + // return false; + // } + }); + + // cellType.updateHostData(); + // cellType.ioToVtk("cellType", true, true, true, true); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} + +template +void flowOverSphere(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + + Neon::index_3d gridDim(136 * params.scale, 96 * params.scale, 136 * params.scale); + + Neon::index_4d sphere(52 * params.scale, 52 * params.scale, 68 * params.scale, 8 * params.scale); + + int depth = 3; + + const Neon::mGridDescriptor<1> descriptor(depth); + + Neon::domain::mGrid grid( + backend, gridDim, + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 40 * params.scale && idx.x < 96 * params.scale && idx.y >= 40 * params.scale && idx.y < 64 * params.scale && idx.z >= 40 * params.scale && idx.z < 96 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= 24 * params.scale && idx.x < 112 * params.scale && idx.y >= 24 * params.scale && idx.y < 72 * params.scale && idx.z >= 24 * params.scale && idx.z < 112 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}, + Neon::domain::Stencil::s19_t(false), descriptor); + + + // LBM problem + const T uin = 0.04; + // const T clength = T(grid.getDimension(descriptor.getDepth() - 1).x); + const T clength = T(sphere.w / (1 << (depth - 1))); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + // auto test = grid.newField("test", 1, 0); + // test.ioToVtk("Test", true, true, true, false); + // exit(0); + + // allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + // init fields + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, [sphere] NEON_CUDA_HOST_DEVICE(const Neon::index_3d idx) { + const T dx = sphere.x - idx.x; + const T dy = sphere.y - idx.y; + const T dz = sphere.z - idx.z; + + if ((dx * dx + dy * dy + dz * dz) < sphere.w * sphere.w) { + return true; + } else { + return false; + } + }); + + // cellType.updateHostData(); + // cellType.ioToVtk("cellType", true, true, true, true); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} + + +template +void flowOverMesh(const Neon::Backend backend, + const Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + //define the gird and the box that will encompass the mesh + Neon::index_3d gridDim(19 * params.scale, 10 * params.scale, 10 * params.scale); + Eigen::RowVector3d meshBoxDim(3.5 * params.scale, 3.5 * params.scale, 3.5 * params.scale); + Eigen::RowVector3d meshBoxCenter(5 * params.scale, 5 * params.scale, 5 * params.scale); + + //Neon::index_3d gridDim(1.5 * 29 * params.scale, 10 * params.scale, 10 * params.scale); + //Eigen::RowVector3d meshBoxDim(2 * params.scale, 2 * params.scale, 2 * params.scale); + //Eigen::RowVector3d meshBoxCenter(20 * params.scale, 10, 5 * params.scale); + + + //read the mesh and scale it such that it fits inside meshBox + Eigen::MatrixXi faces; + Eigen::MatrixXd vertices; + igl::read_triangle_mesh(params.meshFile, vertices, faces); + + //remove unreferenced vertices because they may affect the scaling + Eigen::VectorXi _1, _2; + igl::remove_unreferenced(Eigen::MatrixXd(vertices), Eigen::MatrixXi(faces), vertices, faces, _1, _2); + + + //mesh bounding box using the mesh coordinates + Eigen::RowVectorXd bbMax, bbMin; + Eigen::RowVectorXi bbMaxI, bbMinI; + igl::max(vertices, 1, bbMax, bbMaxI); + igl::min(vertices, 1, bbMin, bbMinI); + + //center the mesh + vertices.rowwise() -= ((bbMin + bbMax) / 2.0); + + //scale + double scaling_factor = meshBoxDim.maxCoeff() / (bbMax - bbMin).maxCoeff(); + vertices *= scaling_factor; + + auto toRad = [](double t) { return t * (3.14159265358979311600 / 180); }; + + Eigen::Matrix3d rotationX; + //rotate about x-axis by thetaX degrees + rotationX << 1, 0, 0, + 0, std::cos(toRad(params.thetaX)), -std::sin(toRad(params.thetaX)), + 0, std::sin(toRad(params.thetaX)), std::cos(toRad(params.thetaX)); + + //rotate about y-axis by thetaY degrees + Eigen::Matrix3d rotationY; + rotationY << std::cos(toRad(params.thetaY)), 0, std::sin(toRad(params.thetaY)), + 0, 1, 0, + -std::sin(toRad(params.thetaY)), 0, std::cos(toRad(params.thetaY)); + + //rotate about z-axis by thetaZ degrees + Eigen::Matrix3d rotationZ; + rotationZ << std::cos(toRad(params.thetaZ)), -std::sin(toRad(params.thetaZ)), 0, + std::sin(toRad(params.thetaZ)), std::cos(toRad(params.thetaZ)), 0, + 0, 0, 1; + + Eigen::Matrix3d rotation = rotationX * rotationY * rotationZ; + vertices = vertices * rotation; + + //translate + vertices.rowwise() += meshBoxCenter; + + //calc the bounding box again + igl::max(vertices, 1, bbMax, bbMaxI); + igl::min(vertices, 1, bbMin, bbMinI); + + + igl::writeOBJ("scaled.obj", vertices, faces); + +#ifdef NEON_USE_POLYSCOPE + polyscopeAddMesh(params.meshFile, faces, vertices); +#endif + + NEON_INFO("AABB init"); + + igl::AABB aabb; + aabb.init(vertices, faces); + + + //define the grid + int depth = 3; + + auto distToMesh = [&](const Neon::index_3d idx) { + Eigen::Matrix p(idx.x, idx.y, idx.z), c; + int face_index(0); + aabb.squared_distance(vertices, faces, p, face_index, c); + return (p - c).norm(); + }; + + std::vector> + activeCellLambda = + {[&](const Neon::index_3d idx) -> bool { + return idx.x >= 2 * params.scale && idx.x < 8 * params.scale && + idx.y >= 3 * params.scale && idx.y < 7 * params.scale && + idx.z >= 3 * params.scale && idx.z < 7 * params.scale; + //return distToMesh(idx) < params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return idx.x >= params.scale && idx.x < 13 * params.scale && + idx.y >= 2 * params.scale && idx.y < 8 * params.scale && + idx.z >= 2 * params.scale && idx.z < 8 * params.scale; + //return distToMesh(idx) < 2 * params.scale; + }, + [&](const Neon::index_3d idx) -> bool { + return true; + }}; + const Neon::mGridDescriptor<1> descriptor(depth); + + NEON_INFO("Create mGrid"); + + Neon::domain::mGrid grid( + backend, gridDim, activeCellLambda, Neon::domain::Stencil::s19_t(false), descriptor); + + + // LBM problem + const T uin = 0.04; + //const T clength = T((meshBoxDim.minCoeff() / 2) / (1 << (depth - 1))); + + //the plane wing extends along the z direction + const T span = (bbMax - bbMin).z(); + const T clength = (span / 2.f) / (1 << (depth - 1)); + const T visclb = uin * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d inletVelocity(uin, 0., 0.); + + + // auto test = grid.newField("test", 1, 0); + // test.ioToVtk("Test", true, true, true, true, {-1, -1, 1}); + // exit(0); + + NEON_INFO("Started populating inside field"); + // a field with 1 if the voxel is inside the shape + auto inside = grid.newField("inside", 1, 0); + + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { + grid.newContainer("isInside", l, [&](Neon::set::Loader& loader) { + auto& in = inside.load(loader, l, Neon::MultiResCompute::MAP); + + return [&](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!in.hasChildren(cell) && l == 0) { + Neon::index_3d voxelGlobalLocation = in.getGlobalIndex(cell); + if (voxelGlobalLocation.x < meshBoxCenter.x() - meshBoxDim.x() / 2 || voxelGlobalLocation.x >= meshBoxCenter.x() + meshBoxDim.x() / 2 || + voxelGlobalLocation.y < meshBoxCenter.y() - meshBoxDim.y() / 2 || voxelGlobalLocation.y >= meshBoxCenter.y() + meshBoxDim.y() / 2 || + voxelGlobalLocation.z < meshBoxCenter.z() - meshBoxDim.z() / 2 || voxelGlobalLocation.z >= meshBoxCenter.z() + meshBoxDim.z() / 2) { + in(cell, 0) = 0; + } else { + const double voxelSpacing = 0.5 * double(grid.getDescriptor().getSpacing(l - 1)); + + const double centerToCornerDistSqr = (3.0 / 4.0) * (2.0 * voxelSpacing); + + Eigen::Matrix p(voxelGlobalLocation.x + voxelSpacing, voxelGlobalLocation.y + voxelSpacing, voxelGlobalLocation.z + voxelSpacing), c; + + int face_index(0); + + aabb.squared_distance(vertices, faces, p, face_index, c); + + double sqr_dist = (p - c).norm(); + + in(cell, 0) = int8_t(sqr_dist + std::numeric_limits::epsilon() < centerToCornerDistSqr); + } + } else { + in(cell, 0) = 0; + } + }; + }) + .run(0); + } + grid.getBackend().syncAll(); + + NEON_INFO("Finished populating inside field"); + + inside.updateDeviceData(); + + // inside.ioToVtk("inside", true, true, true, true); + // exit(0); + + NEON_INFO("Start allocating fields"); + // allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + NEON_INFO("Finished allocating fields"); + + // init fields + + NEON_INFO("Start initFlowOverShape"); + initFlowOverShape(grid, storeSum, fin, fout, cellType, inletVelocity, inside); + NEON_INFO("Finished initFlowOverShape"); + + // cellType.updateHostData(); + // cellType.ioToVtk("cellType", true, true, true, true); + // exit(0); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + inletVelocity, + cellType, + storeSum, + fin, + fout); +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/fusedFinest.h b/apps/lbmMultiResDisg/fusedFinest.h new file mode 100644 index 00000000..6eb16116 --- /dev/null +++ b/apps/lbmMultiResDisg/fusedFinest.h @@ -0,0 +1,376 @@ +#pragma once +#include "collide.h" + +template +inline NEON_CUDA_HOST_DEVICE void stream(const typename Neon::domain::mGrid::Idx& cell, + FieldT& out, + const FieldT& explosionIn, + const FieldType& type, + const int8_t q, + const T cellVal) +{ + // since we are on the finest level, we only need to do streaming and explosion (no coalescence) + // streaming is done as push + + const Neon::int8_3d dir = getDir(q); + + // if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction + const auto nghCell = out.helpGetNghIdx(cell, dir); + if (!out.hasChildren(nghCell)) { + if (out.isActive(nghCell)) { + auto nghType = type(nghCell, 0); + if (nghType == CellType::bulk) { + out(nghCell, q) = cellVal; + } else { + const int8_t opposte_q = latticeOppositeID[q]; + out(cell, opposte_q) = cellVal + out(nghCell, q); + } + } else { + if constexpr (atInterface) { + + if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + // only if we are not on the coarsest level and + // only if we can not do normal streaming, then we may have a coarser neighbor from which + // we can read this pop + + // get the uncle direction/offset i.e., the neighbor of the cell's parent + // this direction/offset is wrt to the cell's parent + Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); + + const int8_t opposte_q = latticeOppositeID[q]; + const auto uncle = explosionIn.uncleVal(cell, uncleDir, opposte_q, T(0)); + if (uncle.mIsValid) { + out(cell, opposte_q) = uncle.mData; + } + } + } + } + } +} + + +template +inline Neon::set::Container collideBGKUnrolledFusedAll(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool storeOut) // store in fout +{ + if (level != 0) { + Neon::NeonException exp("collideBGKUnrolledFusedAll"); + exp << "Only works with on the finest level. Input level =" << level; + NEON_THROW(exp); + } + + return grid.newContainer( + "CHSOE" + std::to_string(level), level, !atInterface, + [&, level, omega0, numLevels, storeOut](Neon::set::Loader& loader) { + const auto type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + + if (numLevels > 1) { + // load the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + (void)storeOut; + (void)out; + + // fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + + const T X_M1 = ins[0] + ins[3] + ins[4] + ins[5] + ins[6]; + const T X_P1 = ins[10] + ins[13] + ins[14] + ins[15] + ins[16]; + const T X_0 = ins[9] + ins[1] + ins[2] + ins[7] + ins[8] + ins[11] + ins[12] + ins[17] + ins[18]; + const T Y_M1 = ins[1] + ins[3] + ins[7] + ins[8] + ins[14]; + const T Y_P1 = ins[4] + ins[11] + ins[13] + ins[17] + ins[18]; + const T Z_M1 = ins[2] + ins[5] + ins[7] + ins[16] + ins[18]; + const T Z_P1 = ins[6] + ins[8] + ins[12] + ins[15] + ins[17]; + + // density + const T rho = X_M1 + X_P1 + X_0; + + // velocity + Neon::Vec_3d vel; + + vel.v[0] = (X_P1 - X_M1) / rho; + vel.v[1] = (Y_P1 - Y_M1) / rho; + vel.v[2] = (Z_P1 - Z_M1) / rho; + + + const T usqr = T(1.5) * (vel.v[0] * vel.v[0] + vel.v[1] * vel.v[1] + vel.v[2] * vel.v[2]); + + // collide + const T ck_u03 = vel.v[0] + vel.v[1]; + const T ck_u04 = vel.v[0] - vel.v[1]; + const T ck_u05 = vel.v[0] + vel.v[2]; + const T ck_u06 = vel.v[0] - vel.v[2]; + const T ck_u07 = vel.v[1] + vel.v[2]; + const T ck_u08 = vel.v[1] - vel.v[2]; + + constexpr T c1over18 = 1. / 18.; + constexpr T c1over36 = 1. / 36.; + constexpr T c1over3 = 1. / 3.; + constexpr T c4dot5 = 4.5; + constexpr T c3 = 3.; + constexpr T c1 = 1.; + constexpr T c6 = 6.; + + const T eq_00 = rho * c1over18 * (c1 - c3 * vel.v[0] + c4dot5 * vel.v[0] * vel.v[0] - usqr); + const T eq_01 = rho * c1over18 * (c1 - c3 * vel.v[1] + c4dot5 * vel.v[1] * vel.v[1] - usqr); + const T eq_02 = rho * c1over18 * (c1 - c3 * vel.v[2] + c4dot5 * vel.v[2] * vel.v[2] - usqr); + const T eq_03 = rho * c1over36 * (c1 - c3 * ck_u03 + c4dot5 * ck_u03 * ck_u03 - usqr); + const T eq_04 = rho * c1over36 * (c1 - c3 * ck_u04 + c4dot5 * ck_u04 * ck_u04 - usqr); + const T eq_05 = rho * c1over36 * (c1 - c3 * ck_u05 + c4dot5 * ck_u05 * ck_u05 - usqr); + const T eq_06 = rho * c1over36 * (c1 - c3 * ck_u06 + c4dot5 * ck_u06 * ck_u06 - usqr); + const T eq_07 = rho * c1over36 * (c1 - c3 * ck_u07 + c4dot5 * ck_u07 * ck_u07 - usqr); + const T eq_08 = rho * c1over36 * (c1 - c3 * ck_u08 + c4dot5 * ck_u08 * ck_u08 - usqr); + + const T eqopp_00 = eq_00 + rho * c1over18 * c6 * vel.v[0]; + const T eqopp_01 = eq_01 + rho * c1over18 * c6 * vel.v[1]; + const T eqopp_02 = eq_02 + rho * c1over18 * c6 * vel.v[2]; + const T eqopp_03 = eq_03 + rho * c1over36 * c6 * ck_u03; + const T eqopp_04 = eq_04 + rho * c1over36 * c6 * ck_u04; + const T eqopp_05 = eq_05 + rho * c1over36 * c6 * ck_u05; + const T eqopp_06 = eq_06 + rho * c1over36 * c6 * ck_u06; + const T eqopp_07 = eq_07 + rho * c1over36 * c6 * ck_u07; + const T eqopp_08 = eq_08 + rho * c1over36 * c6 * ck_u08; + + const T pop_out_00 = (c1 - omega) * ins[0] + omega * eq_00; + const T pop_out_01 = (c1 - omega) * ins[1] + omega * eq_01; + const T pop_out_02 = (c1 - omega) * ins[2] + omega * eq_02; + const T pop_out_03 = (c1 - omega) * ins[3] + omega * eq_03; + const T pop_out_04 = (c1 - omega) * ins[4] + omega * eq_04; + const T pop_out_05 = (c1 - omega) * ins[5] + omega * eq_05; + const T pop_out_06 = (c1 - omega) * ins[6] + omega * eq_06; + const T pop_out_07 = (c1 - omega) * ins[7] + omega * eq_07; + const T pop_out_08 = (c1 - omega) * ins[8] + omega * eq_08; + + const T pop_out_opp_00 = (c1 - omega) * ins[10] + omega * eqopp_00; + const T pop_out_opp_01 = (c1 - omega) * ins[11] + omega * eqopp_01; + const T pop_out_opp_02 = (c1 - omega) * ins[12] + omega * eqopp_02; + const T pop_out_opp_03 = (c1 - omega) * ins[13] + omega * eqopp_03; + const T pop_out_opp_04 = (c1 - omega) * ins[14] + omega * eqopp_04; + const T pop_out_opp_05 = (c1 - omega) * ins[15] + omega * eqopp_05; + const T pop_out_opp_06 = (c1 - omega) * ins[16] + omega * eqopp_06; + const T pop_out_opp_07 = (c1 - omega) * ins[17] + omega * eqopp_07; + const T pop_out_opp_08 = (c1 - omega) * ins[18] + omega * eqopp_08; + + const T eq_09 = rho * c1over3 * (c1 - usqr); + const T pop_out_09 = (c1 - omega) * ins[9] + omega * eq_09; + + + // store operation + if constexpr (atInterface) { + store(cell, (storeOut) ? out : in, 0, pop_out_00); + store(cell, (storeOut) ? out : in, 1, pop_out_01); + store(cell, (storeOut) ? out : in, 2, pop_out_02); + store(cell, (storeOut) ? out : in, 3, pop_out_03); + store(cell, (storeOut) ? out : in, 4, pop_out_04); + store(cell, (storeOut) ? out : in, 5, pop_out_05); + store(cell, (storeOut) ? out : in, 6, pop_out_06); + store(cell, (storeOut) ? out : in, 7, pop_out_07); + store(cell, (storeOut) ? out : in, 8, pop_out_08); + store(cell, (storeOut) ? out : in, 9, pop_out_09); + + store(cell, (storeOut) ? out : in, 10, pop_out_opp_00); + store(cell, (storeOut) ? out : in, 11, pop_out_opp_01); + store(cell, (storeOut) ? out : in, 12, pop_out_opp_02); + store(cell, (storeOut) ? out : in, 13, pop_out_opp_03); + store(cell, (storeOut) ? out : in, 14, pop_out_opp_04); + store(cell, (storeOut) ? out : in, 15, pop_out_opp_05); + store(cell, (storeOut) ? out : in, 16, pop_out_opp_06); + store(cell, (storeOut) ? out : in, 17, pop_out_opp_07); + store(cell, (storeOut) ? out : in, 18, pop_out_opp_08); + } + + // streaming (push) + stream(cell, out, (storeOut) ? out : in, type, 0, pop_out_00); + stream(cell, out, (storeOut) ? out : in, type, 1, pop_out_01); + stream(cell, out, (storeOut) ? out : in, type, 2, pop_out_02); + stream(cell, out, (storeOut) ? out : in, type, 3, pop_out_03); + stream(cell, out, (storeOut) ? out : in, type, 4, pop_out_04); + stream(cell, out, (storeOut) ? out : in, type, 5, pop_out_05); + stream(cell, out, (storeOut) ? out : in, type, 6, pop_out_06); + stream(cell, out, (storeOut) ? out : in, type, 7, pop_out_07); + stream(cell, out, (storeOut) ? out : in, type, 8, pop_out_08); + stream(cell, out, (storeOut) ? out : in, type, 9, pop_out_09); + + stream(cell, out, (storeOut) ? out : in, type, 10, pop_out_opp_00); + stream(cell, out, (storeOut) ? out : in, type, 11, pop_out_opp_01); + stream(cell, out, (storeOut) ? out : in, type, 12, pop_out_opp_02); + stream(cell, out, (storeOut) ? out : in, type, 13, pop_out_opp_03); + stream(cell, out, (storeOut) ? out : in, type, 14, pop_out_opp_04); + stream(cell, out, (storeOut) ? out : in, type, 15, pop_out_opp_05); + stream(cell, out, (storeOut) ? out : in, type, 16, pop_out_opp_06); + stream(cell, out, (storeOut) ? out : in, type, 17, pop_out_opp_07); + stream(cell, out, (storeOut) ? out : in, type, 18, pop_out_opp_08); + } + }; + }); +} + + +template +inline Neon::set::Container collideKBCFusedAll(Neon::domain::mGrid& grid, + T omega0, + int level, + int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool storeOut) +{ + + if (level != 0) { + Neon::NeonException exp("collideKBCFusedAll"); + exp << "Only works with on the finest level. Input level =" << level; + NEON_THROW(exp); + } + + return grid.newContainer( + "CHSOE" + std::to_string(level), level, !atInterface, + [&, level, omega0, numLevels, storeOut](Neon::set::Loader& loader) { + const auto type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + const auto in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto out = fout.load(loader, level, Neon::MultiResCompute::MAP); + const T omega = computeOmega(omega0, level, numLevels); + const T beta = omega * 0.5; + const T invBeta = 1.0 / beta; + + if (numLevels > 1) { + // reload the next level as a map to indicate that we will (remote) write to it + fout.load(loader, level + 1, Neon::MultiResCompute::MAP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + (void)storeOut; + (void)out; + + constexpr T tiny = 1e-7; + + // fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = in(cell, i); + } + + // density + T rho = 0; + for (int i = 0; i < Q; ++i) { + rho += ins[i]; + } + + // velocity + const Neon::Vec_3d vel = velocity(ins, rho); + + T Pi[6] = {0, 0, 0, 0, 0, 0}; + T e0 = 0; + T e1 = 0; + T deltaS[Q]; + T fneq[Q]; + T feq[Q]; + + + auto fdecompose_shear = [&](const int q) -> T { + const T Nxz = Pi[0] - Pi[5]; + const T Nyz = Pi[3] - Pi[5]; + if (q == 9) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 18) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 3) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 6) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 1) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 2) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 12 || q == 24) { + return Pi[1] / 4.0; + } else if (q == 21 || q == 15) { + return -Pi[1] / 4.0; + } else if (q == 10 || q == 20) { + return Pi[2] / 4.0; + } else if (q == 19 || q == 11) { + return -Pi[2] / 4.0; + } else if (q == 8 || q == 4) { + return Pi[4] / 4.0; + } else if (q == 7 || q == 5) { + return -Pi[4] / 4.0; + } else { + return T(0); + } + }; + + + // equilibrium + const T usqr = (3.0 / 2.0) * (vel.x * vel.x + vel.y * vel.y + vel.z * vel.z); + for (int8_t q = 0; q < Q; ++q) { + T cu = 0; + for (int d = 0; d < 3; ++d) { + cu += latticeVelocity[q][d] * vel.v[d]; + } + cu *= 3.0; + + feq[q] = rho * latticeWeights[q] * (1. + cu + 0.5 * cu * cu - usqr); + + fneq[q] = ins[q] - feq[q]; + } + + // momentum_flux + for (int8_t q = 0; q < Q; ++q) { + for (int i = 0; i < 6; ++i) { + Pi[i] += fneq[q] * latticeMoment[q][i]; + } + } + + + // fdecompose_shear + for (int8_t q = 0; q < Q; ++q) { + deltaS[q] = rho * fdecompose_shear(q); + + T deltaH = fneq[q] - deltaS[q]; + + e0 += (deltaS[q] * deltaH / feq[q]); + e1 += (deltaH * deltaH / feq[q]); + } + + // gamma + T gamma = invBeta - (2.0 - invBeta) * e0 / (tiny + e1); + + + // fout + for (int8_t q = 0; q < Q; ++q) { + const T deltaH = fneq[q] - deltaS[q]; + + const T res = ins[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); + + + // store operation + if constexpr (atInterface) { + store(cell, (storeOut) ? out : in, q, res); + } + + // streaming (push) + stream(cell, out, (storeOut) ? out : in, type, q, res); + } + } + }; + }); +} diff --git a/apps/lbmMultiResDisg/init.h b/apps/lbmMultiResDisg/init.h new file mode 100644 index 00000000..4730c701 --- /dev/null +++ b/apps/lbmMultiResDisg/init.h @@ -0,0 +1,144 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" + +#include "lattice.h" + + +template +void initSumStore(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore) +{ + + //init sumStore + for (int level = 0; level < grid.getDescriptor().getDepth() - 1; ++level) { + + auto container = + grid.newContainer( + "InitSumStore_" + std::to_string(level), level, + [&sumStore, level](Neon::set::Loader& loader) { + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::STENCIL_UP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (ss.hasParent(cell)) { + + for (int8_t q = 0; q < Q; ++q) { + const Neon::int8_3d qDir = getDir(q); + if (qDir.x == 0 && qDir.y == 0 && qDir.z == 0) { + continue; + } + + const Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, qDir); + + const auto cn = ss.helpGetNghIdx(cell, uncleDir); + + + if (!ss.isActive(cn)) { + + + const auto uncle = ss.getUncle(cell, uncleDir); + if (uncle.isActive()) { + + //locate the coarse cell where we should store this cell info + const Neon::int8_3d CsDir = uncleDir - qDir; + + const auto cs = ss.getUncle(cell, CsDir); + + if (cs.isActive()) { + +#ifdef NEON_PLACE_CUDA_DEVICE + atomicAdd(&ss.uncleVal(cell, CsDir, q), 1.f); +#else +#pragma omp atomic + ss.uncleVal(cell, CsDir, q) += 1; +#endif + } + } + } + } + } + }; + }); + + container.run(0); + } + + + for (int level = 1; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "ReciprocalSumStore_" + std::to_string(level), level, + [&sumStore, level](Neon::set::Loader& loader) { + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + //const T refFactor = ss.getRefFactor(level); + constexpr T refFactor = 2.0; + for (int8_t q = 0; q < Q; ++q) { + if (ss(cell, q) > 0.001) { + ss(cell, q) = 1.f / (refFactor * ss(cell, q)); + } + } + }; + }); + + container.run(0); + } + + grid.getBackend().syncAll(); +} + + +template +std::vector +countActiveVoxels(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& fin) +{ + + uint32_t* dNumActiveVoxels = nullptr; + const uint32_t depth = grid.getDescriptor().getDepth(); + const size_t numBytes = depth * sizeof(uint32_t); + + std::vector ret(depth); + + if (grid(0).getBackend().runtime() == Neon::Runtime::stream) { + cudaMalloc((void**)&dNumActiveVoxels, numBytes); + cudaMemset(dNumActiveVoxels, 0, numBytes); + } else { + dNumActiveVoxels = ret.data(); + } + + const Neon::index_3d gridDim = grid.getDimension(); + + for (int level = 0; level < depth; ++level) { + + auto container = + grid.newContainer( + "CountActiveVoxels" + std::to_string(level), level, + [&fin, level, gridDim, dNumActiveVoxels](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!in.hasChildren(cell)) { +#ifdef NEON_PLACE_CUDA_DEVICE + atomicAdd(dNumActiveVoxels + level, 1); +#else +#pragma omp atomic + dNumActiveVoxels[level] += 1; +#endif + } + }; + }); + + container.run(0); + } + + + if (grid(0).getBackend().runtime() == Neon::Runtime::stream) { + cudaMemcpy(ret.data(), dNumActiveVoxels, numBytes, cudaMemcpyDeviceToHost); + cudaFree(dNumActiveVoxels); + } + + return ret; +} diff --git a/apps/lbmMultiResDisg/lattice.h b/apps/lbmMultiResDisg/lattice.h new file mode 100644 index 00000000..a2665fc5 --- /dev/null +++ b/apps/lbmMultiResDisg/lattice.h @@ -0,0 +1,174 @@ +#pragma once + +#include "Neon/core/types/Macros.h" + +enum CellType : int +{ + bounceBack = 0, + movingWall = 1, + bulk = 2, + inlet = 3, + undefined = 5, +}; + +#ifdef KBC +NEON_CUDA_DEVICE_ONLY static constexpr char latticeVelocity[27][3] = { + {0, 0, 0}, + {0, 0, -1}, + {0, 0, 1}, + {0, -1, 0}, + {0, -1, -1}, + {0, -1, 1}, + {0, 1, 0}, + {0, 1, -1}, + {0, 1, 1}, + {-1, 0, 0}, + {-1, 0, -1}, + {-1, 0, 1}, + {-1, -1, 0}, + {-1, -1, -1}, + {-1, -1, 1}, + {-1, 1, 0}, + {-1, 1, -1}, + {-1, 1, 1}, + {1, 0, 0}, + {1, 0, -1}, + {1, 0, 1}, + {1, -1, 0}, + {1, -1, -1}, + {1, -1, 1}, + {1, 1, 0}, + {1, 1, -1}, + {1, 1, 1}}; + +NEON_CUDA_DEVICE_ONLY static constexpr char latticeOppositeID[27] = { + 0, 2, 1, 6, 8, 7, 3, 5, 4, 18, 20, 19, 24, 26, 25, 21, 23, 22, 9, 11, 10, 15, 17, 16, 12, 14, 13}; + +NEON_CUDA_DEVICE_ONLY static constexpr double latticeWeights[27] = { + 8.0 / 27.0, + 2.0 / 27.0, + 2.0 / 27.0, + 2.0 / 27.0, + 1.0 / 54.0, + 1.0 / 54.0, + 2.0 / 27.0, + 1.0 / 54.0, + 1.0 / 54.0, + 2.0 / 27.0, + 1.0 / 54.0, + 1.0 / 54.0, + 1.0 / 54.0, + 1.0 / 216.0, + 1.0 / 216.0, + 1.0 / 54.0, + 1.0 / 216.0, + 1.0 / 216.0, + 2.0 / 27.0, + 1.0 / 54.0, + 1.0 / 54.0, + 1.0 / 54.0, + 1.0 / 216.0, + 1.0 / 216.0, + 1.0 / 54.0, + 1.0 / 216.0, + 1.0 / 216.0 + +}; +#endif + +NEON_CUDA_DEVICE_ONLY static constexpr char latticeMoment[27][6] = { + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 1}, + {0, 0, 0, 0, 0, 1}, + {0, 0, 0, 1, 0, 0}, + {0, 0, 0, 1, 1, 1}, + {0, 0, 0, 1, -1, 1}, + {0, 0, 0, 1, 0, 0}, + {0, 0, 0, 1, -1, 1}, + {0, 0, 0, 1, 1, 1}, + {1, 0, 0, 0, 0, 0}, + {1, 0, 1, 0, 0, 1}, + {1, 0, -1, 0, 0, 1}, + {1, 1, 0, 1, 0, 0}, + {1, 1, 1, 1, 1, 1}, + {1, 1, -1, 1, -1, 1}, + {1, -1, 0, 1, 0, 0}, + {1, -1, 1, 1, -1, 1}, + {1, -1, -1, 1, 1, 1}, + {1, 0, 0, 0, 0, 0}, + {1, 0, -1, 0, 0, 1}, + {1, 0, 1, 0, 0, 1}, + {1, -1, 0, 1, 0, 0}, + {1, -1, -1, 1, 1, 1}, + {1, -1, 1, 1, -1, 1}, + {1, 1, 0, 1, 0, 0}, + {1, 1, -1, 1, -1, 1}, + {1, 1, 1, 1, 1, 1}}; + +#ifdef BGK +NEON_CUDA_DEVICE_ONLY static constexpr char latticeVelocity[19][3] = { + {-1, 0, 0} /*! 0 Symmetry first section (GO) */, + {0, -1, 0} /*! 1 */, + {0, 0, -1} /*! 2 */, + {-1, -1, 0} /*! 3 */, + {-1, 1, 0} /*! 4 */, + {-1, 0, -1} /*! 5 */, + {-1, 0, 1} /*! 6 */, + {0, -1, -1} /*! 7 */, + {0, -1, 1} /*! 8 */, + {0, 0, 0} /*! 9 The center */, + {1, 0, 0} /*! 10 Symmetry mirror section (BK) */, + {0, 1, 0} /*! 11 */, + {0, 0, 1} /*! 12 */, + {1, 1, 0} /*! 13 */, + {1, -1, 0} /*! 14 */, + {1, 0, 1} /*! 15 */, + {1, 0, -1} /*! 16 */, + {0, 1, 1} /*! 17 */, + {0, 1, -1} /*! 18 */ +}; + +NEON_CUDA_DEVICE_ONLY static constexpr char latticeOppositeID[19] = { + 10 /*! 0 */, + 11 /*! 1 */, + 12 /*! 2 */, + 13 /*! 3 */, + 14 /*! 4 */, + 15 /*! 5 */, + 16 /*! 6 */, + 17 /*! 7 */, + 18 /*! 8 */, + 9 /*! 9 */, + 0 /*! 10 */, + 1 /*! 11 */, + 2 /*! 12 */, + 3 /*! 13 */, + 4 /*! 14 */, + 5 /*! 15 */, + 6 /*! 16 */, + 7 /*! 17 */, + 8 /*! 18 */ +}; + +NEON_CUDA_DEVICE_ONLY static constexpr double latticeWeights[19] = { + 1. / 18. /*! 0 */, + 1. / 18. /*! 1 */, + 1. / 18. /*! 2 */, + 1. / 36. /*! 3 */, + 1. / 36. /*! 4 */, + 1. / 36. /*! 5 */, + 1. / 36. /*! 6 */, + 1. / 36. /*! 7 */, + 1. / 36. /*! 8 */, + 1. / 3. /*! 9 */, + 1. / 18. /*! 10 */, + 1. / 18. /*! 11 */, + 1. / 18. /*! 12 */, + 1. / 36. /*! 13 */, + 1. / 36. /*! 14 */, + 1. / 36. /*! 15 */, + 1. / 36. /*! 16 */, + 1. / 36. /*! 17 */, + 1. / 36. /*! 18 */ +}; +#endif \ No newline at end of file diff --git a/apps/lbmMultiResDisg/lbmMultiRes.cu b/apps/lbmMultiResDisg/lbmMultiRes.cu new file mode 100644 index 00000000..d26ffdae --- /dev/null +++ b/apps/lbmMultiResDisg/lbmMultiRes.cu @@ -0,0 +1,160 @@ +#include "Neon/core/tools/clipp.h" + +#define BGK +//#define KBC + +#include "Neon/Neon.h" +#include "Neon/Report.h" +#include "Neon/domain/mGrid.h" +#include "Neon/skeleton/Skeleton.h" + + +Neon::Report report; + +struct Params +{ + std::string deviceType = "gpu"; + std::string problemType = "lid"; + std::string meshFile = ""; + int freq = 100; + int Re = 100; + int deviceId = 0; + int numIter = 2; + bool benchmark = true; + int sliceX = -1; + int sliceY = -1; + int sliceZ = 1; + double thetaX = 0; + double thetaY = 0; + double thetaZ = 0; + bool vtk = false; + bool gui = false; + int scale = 0; + std::string dataType = "float"; +}; + +#include "flowOverShape.h" +#include "lidDrivenCavity.h" + + +int main(int argc, char** argv) +{ + Neon::init(); + + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + Params params; + + auto cli = + (clipp::option("--deviceType") & clipp::value("deviceType", params.deviceType) % "Type of device (gpu or cpu)", + clipp::option("--deviceId") & clipp::integers("deviceId", params.deviceId) % "Device id", + clipp::option("--numIter") & clipp::integer("numIter", params.numIter) % "LBM number of iterations", + clipp::option("--problemType") & clipp::value("problemType", params.problemType) % "Problem type ('lid' for lid-driven cavity, 'sphere' for flow over sphere, or 'jet' for flow over jet fighter, 'mesh' for flow over mesh)", + clipp::option("--meshFile") & clipp::value("meshFile", params.meshFile) % "Path to mesh file for 'mesh' type problem", + clipp::option("--dataType") & clipp::value("dataType", params.dataType) % "Data type (float or double)", + clipp::option("--re") & clipp::integers("Re", params.Re) % "Reynolds number", + clipp::option("--scale") & clipp::integers("scale", params.scale) % "Scale of the problem for parametrized problems. 0-9 for lid. jet is up to 112. Sphere is 2 (or maybe more)", + + clipp::option("--sliceX") & clipp::integer("sliceX", params.sliceX) % "Slice along X for output images/VTK", + clipp::option("--sliceY") & clipp::integer("sliceY", params.sliceY) % "Slice along Y for output images/VTK", + clipp::option("--sliceZ") & clipp::integer("sliceZ", params.sliceZ) % "Slice along Z for output images/VTK", + + clipp::option("--thetaX") & clipp::value("thetaX", params.thetaX) % "Angle (degree) of rotation of the input model along X axis", + clipp::option("--thetaY") & clipp::value("thetaY", params.thetaY) % "Angle (degree) of rotation of the input model along Y axis", + clipp::option("--thetaZ") & clipp::value("thetaZ", params.thetaZ) % "Angle (degree) of rotation of the input model along Z axis", + + ((clipp::option("--benchmark").set(params.benchmark, true) % "Run benchmark mode") | + (clipp::option("--visual").set(params.benchmark, false) % "Run export partial data")), + + clipp::option("--vtk").set(params.vtk, true) % "Output VTK files. Active only with if 'visual' is true", + clipp::option("--gui").set(params.gui, true) % "Show Polyscope gui. Active only with if 'visual' is true", + + clipp::option("--freq") & clipp::integers("freq", params.freq) % "Output frequency (only works with visual mode)"); + + + if (!clipp::parse(argc, argv, cli)) { + auto fmt = clipp::doc_formatting{}.doc_column(31); + std::cout << make_man_page(cli, argv[0], fmt) << '\n'; + return -1; + } + + if (params.deviceType != "cpu" && params.deviceType != "gpu") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input device type " << params.deviceType; + NEON_THROW(exp); + } + + if (params.problemType != "lid" && params.problemType != "sphere" && params.problemType != "jet" && params.problemType != "mesh") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input problem type " << params.problemType; + NEON_THROW(exp); + } + + if (params.dataType != "float" && params.dataType != "double") { + Neon::NeonException exp("app-lbmMultiRes"); + exp << "Unknown input data type " << params.dataType; + NEON_THROW(exp); + } + + + //Neon grid and backend + Neon::Runtime runtime = Neon::Runtime::stream; + if (params.deviceType == "cpu") { + runtime = Neon::Runtime::openmp; + } + + std::vector gpu_ids{params.deviceId}; + Neon::Backend backend(gpu_ids, runtime); + +#ifdef KBC + constexpr int Q = 27; +#endif +#ifdef BGK + constexpr int Q = 19; +#endif + + if (params.problemType == "lid") { + report = Neon::Report("Lid Driven Cavity MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + lidDrivenCavity(backend, params); + } + if (params.dataType == "double") { + lidDrivenCavity(backend, params); + } + } + + if (params.problemType == "sphere") { + report = Neon::Report("Sphere MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverSphere(backend, params); + } + if (params.dataType == "double") { + flowOverSphere(backend, params); + } + } + + if (params.problemType == "jet") { + report = Neon::Report("Jet MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverJet(backend, params); + } + if (params.dataType == "double") { + flowOverJet(backend, params); + } + } + + if (params.problemType == "mesh") { + report = Neon::Report("Mesh MultiRes LBM"); + report.commandLine(argc, argv); + if (params.dataType == "float") { + flowOverMesh(backend, params); + } + if (params.dataType == "double") { + flowOverMesh(backend, params); + } + } + } + return 0; +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/lbmMultiRes.h b/apps/lbmMultiResDisg/lbmMultiRes.h new file mode 100644 index 00000000..cfdd7e46 --- /dev/null +++ b/apps/lbmMultiResDisg/lbmMultiRes.h @@ -0,0 +1,512 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "Neon/skeleton/Skeleton.h" + +#include "collide.h" +#include "fusedFinest.h" +#include "init.h" +#include "lattice.h" +#include "postProcess.h" +#include "stream.h" +#include "util.h" + +template +void collideStep(Neon::domain::mGrid& grid, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + + // collision for all voxels at level L = level fused with + // Storing fine (level) data for later "coalescence" pulled by the coarse(level) +#ifdef KBC + containers.push_back(collideKBCFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); + containers.push_back(collideKBCFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif + +#ifdef BGK + // atInterface + containers.push_back(collideBGKUnrolledFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); + containers.push_back(collideBGKUnrolledFusedStore(grid, omega0, level, numLevels, cellType, fin, fout)); +#endif +} + + +template +void streamingStep(Neon::domain::mGrid& grid, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + // Streaming step that also performs the necessary "explosion" and "coalescence" steps. + //atInterface + streamFusedCoalescenceExplosion(grid, level, numLevels, cellType, sumStore, fout, fin, containers); + streamFusedCoalescenceExplosion(grid, level, numLevels, cellType, sumStore, fout, fin, containers); +} + +template +void collideFusedStreaming(Neon::domain::mGrid& grid, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + +#ifdef KBC + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + true)); + + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + true)); + + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + false)); + + containers.push_back(collideKBCFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + false)); +#endif + +#ifdef BGK + //atInterface ?? + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + true)); + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + true)); + + //atInterface ?? + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + false)); + containers.push_back(collideBGKUnrolledFusedAll(grid, + omega0, + level, + numLevels, + cellType, + fout, + fin, + false)); +#endif +} + +template +void nonUniformTimestepRecursive(Neon::domain::mGrid& grid, + const T omega0, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + std::vector& containers) +{ + if (level == 0) { + collideFusedStreaming(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + return; + + } else { + //Collide + collideStep(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + + + // Recurse down + if (level != 0) { + nonUniformTimestepRecursive(grid, + omega0, + level - 1, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + } + + //Streaming + streamingStep(grid, + level, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + + // Stop + if (level == numLevels - 1) { + return; + } + + //Collide + collideStep(grid, + omega0, + level, + numLevels, + cellType, + fin, + fout, + containers); + + // Recurse down + if (level != 0) { + nonUniformTimestepRecursive(grid, + omega0, + level - 1, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + } + + //Streaming + streamingStep(grid, + level, + numLevels, + cellType, + sumStore, + fin, + fout, + containers); + } +} + + +template +void runNonUniformLBM(Neon::domain::mGrid& grid, + const Params& params, + const T clength, + const T omega, + const T visclb, + const Neon::double_3d velocity, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& storeSum, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + bool verify = false) +{ + const int depth = grid.getDescriptor().getDepth(); + const auto gridDim = grid.getDimension(); + + std::vector numActiveVoxels = countActiveVoxels(grid, fin); + uint32_t sumActiveVoxels = 0; + for (auto n : numActiveVoxels) { + sumActiveVoxels += n; + } + + Neon::domain::mGrid::Field vel; + Neon::domain::mGrid::Field rho; + if (!params.benchmark || verify) { + vel = grid.newField("vel", 3, 0); + rho = grid.newField("rho", 1, 0); + } + + //skeleton + std::vector containers; + nonUniformTimestepRecursive(grid, + omega, + depth - 1, + depth, + cellType, + storeSum, + fin, + fout, + containers); + + Neon::skeleton::Skeleton skl(grid.getBackend()); + skl.sequence(containers, "MultiResLBM"); + skl.ioToDot("MultiResLBM", "", true); + + const Neon::int8_3d slice(params.sliceX, params.sliceY, params.sliceZ); + + std::vector> psDrawable; + std::vector> psHex; + std::vector psHexVert; + std::vector psColor; + + if (!params.benchmark) { + initVisualization(grid, vel, psDrawable, psHex, psHexVert, slice); + + if (slice.x == -1 && slice.y == -1 && slice.z == -1) { + if (sumActiveVoxels != psDrawable.size()) { + Neon::NeonException exp("runNonUniformLBM"); + exp << "Mismatch between number of active voxels and drawable voxels"; + exp << "psDrawable.size()= " << psDrawable.size() << ", sumActiveVoxels= " << sumActiveVoxels; + NEON_THROW(exp); + } + } + } + + NEON_INFO("Re: {}", params.Re); + NEON_INFO("clength: {}", clength); + NEON_INFO("omega: {}", omega); + NEON_INFO("visclb: {}", visclb); +#ifdef KBC + NEON_INFO("Collision: KBC"); +#endif +#ifdef BGK + NEON_INFO("Collision: BGK"); +#endif + + + NEON_INFO("velocity: {}, {}, {}", velocity.x, velocity.y, velocity.z); + + + //execution + NEON_INFO("Domain Size {}, {}, {}", gridDim.x, gridDim.y, gridDim.z); + for (uint32_t l = 0; l < depth; ++l) { + NEON_INFO("numActiveVoxels [{}]: {}", l, numActiveVoxels[l]); + } + NEON_INFO("sumActiveVoxels: {}", sumActiveVoxels); + auto start = std::chrono::high_resolution_clock::now(); + for (int t = 0; t < params.numIter; ++t) { + if (t % 100 == 0) { + NEON_INFO("Non-uniform LBM Iteration: {}", t); + } + skl.run(); + if (!params.benchmark && t % params.freq == 0) { + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << t; + std::string fileName = "Velocity_" + suffix.str(); + + postProcess(grid, depth, fout, cellType, vel, rho, slice, fileName, params.vtk && t != 0, psDrawable, psHex, psHexVert); +#ifdef NEON_USE_POLYSCOPE + postProcessPolyscope(psDrawable, vel, psColor, fileName, params.gui, t == 0); +#endif + } + } + grid.getBackend().syncAll(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + //const double MLUPS = static_cast(params.numIter * sumActiveVoxels) / duration.count(); + //NEON_INFO("MLUPS = {0:8.8f}, sumActiveVoxels = {1}", MLUPS, sumActiveVoxels); + + double MLUPS = 0; + for (uint32_t l = 0; l < depth; ++l) { + double d = (depth - 1) - l; + MLUPS += double(params.numIter) * std::pow(2, d) * double(numActiveVoxels[l]); + } + MLUPS /= double(duration.count()); + NEON_INFO("MLUPS = {0:8.8f}", MLUPS); + NEON_INFO("Time = {0:8.8f} (microseconds)", double(duration.count())); + + const double effNumIter = double(params.numIter) * double(1 << (depth - 1)); + const double effMLUPS = (effNumIter * double(gridDim.x) * double(gridDim.y) * double(gridDim.y)) / double(duration.count()); + NEON_INFO("Effective MLUPS = {0:8.8f}, Effective numActiveVoxels = {1}", effMLUPS, gridDim.rMul()); + + //Reporting + auto algoName = [&]() { + std::string ret; + ret = "CH"; + ret += "-SEO"; + ret += "+"; + return ret; + }; + + auto typeName = [&]() { + std::string ret; + if (std::is_same_v) { + ret = "F"; + } else { + ret = "D"; + } + return ret; + }; + + auto reportSuffix = [&]() { + std::string ret = "P" + std::to_string(params.scale) + "_"; + ret += algoName(); + ret += "_" + typeName(); + + return ret; + }; + + //system + report.addMember("DeviceType", Neon::DeviceTypeUtil::toString(grid.getBackend().devType())); + + //grid + report.addMember("Grid Size X", gridDim.x); + report.addMember("Grid Size Y", gridDim.y); + report.addMember("Grid Size Z", gridDim.z); + report.addMember("Depth", depth); + report.addMember("DataType", typeName()); + + //problem + report.addMember("ProblemScale", params.scale); + report.addMember("problemType", params.problemType); + report.addMember("omega", omega); + report.addMember("Re", params.Re); + report.addMember("velocity", velocity.to_string()); + report.addMember("clength", clength); + report.addMember("visclb", visclb); +#ifdef BGK + report.addMember("Collision", std::string("BGK")); +#endif +#ifdef KBC + report.addMember("Collision", std::string("KBC")); +#endif + + + //algorithm + report.addMember("Algorithm", algoName()); + + //perf + report.addMember("Time (microsecond)", duration.count()); + report.addMember("MLUPS", MLUPS); + report.addMember("NumIter", params.numIter); + report.addMember("NumActiveVoxels", numActiveVoxels); + report.addMember("EMLUPS", effMLUPS); + report.addMember("ENumIter", effNumIter); + report.addMember("ENumVoxels", gridDim.rMul()); + + //output + report.write("MultiResLBM_disag_" + reportSuffix(), true); + + //post process + if (!params.benchmark) { + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << params.numIter; + std::string fileName = "Velocity_" + suffix.str(); + postProcess(grid, depth, fout, cellType, vel, rho, slice, fileName, params.vtk, psDrawable, psHex, psHexVert); +#ifdef NEON_USE_POLYSCOPE + postProcessPolyscope(psDrawable, vel, psColor, fileName, params.gui, false); +#endif + } else if (verify) { + postProcess(grid, depth, fout, cellType, vel, rho, slice, "", false, psDrawable, psHex, psHexVert); + } + + if (verify) { + verifyLidDrivenCavity(grid, + depth, + vel, + params.Re, + params.numIter, + velocity.x); + } + + if (!params.benchmark) { + NEON_INFO("Started Binary VTK"); + + //the level at which we will do the sampling + const int theLevel = depth - 1; + + const Neon::index_4d grid4D(gridDim.x / (1 << theLevel), gridDim.y / (1 << theLevel), gridDim.z / (1 << theLevel), 3); + std::vector ioBuffer(grid4D.x * grid4D.y * grid4D.z * grid4D.w); + float* ioBufferPtr = ioBuffer.data(); + + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { + + grid.newContainer("Viz", l, [=](Neon::set::Loader& loader) { + auto& v = vel.load(loader, l, Neon::MultiResCompute::MAP); + + return [=](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!v.hasChildren(cell)) { + Neon::index_3d loc = v.getGlobalIndex(cell); + + if (loc.x % (1 << theLevel) != 0 || loc.y % (1 << theLevel) != 0 || loc.z % (1 << theLevel) != 0) { + return; + } + + loc.x /= (1 << theLevel); + loc.y /= (1 << theLevel); + loc.z /= (1 << theLevel); + + + for (int c = 0; c < 3; ++c) { + + const float val = v(cell, c); + + + Neon::index_4d loc4D(loc.x, loc.y, loc.z, c); + ioBufferPtr[loc4D.mPitch(grid4D)] = val; + } + } + }; + }) + .run(0); + } + + { + Neon::index_3d nodeDim(grid4D.x + 1, grid4D.y + 1, grid4D.z + 1); + Neon::IoToVTK io("BinVelocity", nodeDim, {1, 1, 1}, {0, 0, 0}, Neon::IoFileType::BINARY); + + io.addField([=](Neon::index_3d idx, int card) { + Neon::index_4d loc4D(idx.x, idx.y, idx.z, card); + return ioBufferPtr[loc4D.mPitch(grid4D)]; + }, + 3, "V", Neon::ioToVTKns::VtiDataType_e::voxel); + } + + NEON_INFO("Finished Binary VTK"); + } +} diff --git a/apps/lbmMultiResDisg/lidDrivenCavity.h b/apps/lbmMultiResDisg/lidDrivenCavity.h new file mode 100644 index 00000000..ac1e0c12 --- /dev/null +++ b/apps/lbmMultiResDisg/lidDrivenCavity.h @@ -0,0 +1,264 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/domain/mGrid.h" +#include "lbmMultiRes.h" + +#include "init.h" + +template +void initLidDrivenCavity(Neon::domain::mGrid& grid, + Neon::domain::mGrid::Field& sumStore, + Neon::domain::mGrid::Field& fin, + Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& cellType, + const Neon::double_3d ulid) +{ + const Neon::index_3d gridDim = grid.getDimension(); + + //init fields + for (int level = 0; level < grid.getDescriptor().getDepth(); ++level) { + + auto container = + grid.newContainer( + "Init_" + std::to_string(level), level, + [&fin, &fout, &cellType, &sumStore, level, gridDim, ulid](Neon::set::Loader& loader) { + auto& in = fin.load(loader, level, Neon::MultiResCompute::MAP); + auto& out = fout.load(loader, level, Neon::MultiResCompute::MAP); + auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + type(cell, 0) = CellType::bulk; + + for (int q = 0; q < Q; ++q) { + ss(cell, q) = 0; + in(cell, q) = 0; + out(cell, q) = 0; + } + + if (!in.hasChildren(cell)) { + const Neon::index_3d idx = in.getGlobalIndex(cell); + + //the cell classification + if (level == 0) { + if (idx.x == 0 || idx.x == gridDim.x - 1 || + idx.y == 0 || idx.y == gridDim.y - 1 || + idx.z == 0 || idx.z == gridDim.z - 1) { + type(cell, 0) = CellType::bounceBack; + + if (idx.y == gridDim.y - 1) { + type(cell, 0) = CellType::movingWall; + } + } + } + + //population init value + for (int q = 0; q < Q; ++q) { + T pop_init_val = latticeWeights[q]; + + //bounce back + if (type(cell, 0) == CellType::bounceBack) { + pop_init_val = 0; + } + + //moving wall + if (type(cell, 0) == CellType::movingWall) { + pop_init_val = 0; + for (int d = 0; d < 3; ++d) { + pop_init_val += latticeVelocity[q][d] * ulid.v[d]; + } + pop_init_val *= -6. * latticeWeights[q]; + } + + out(cell, q) = pop_init_val; + in(cell, q) = pop_init_val; + } + } + }; + }); + + container.run(0); + } + + + //init sumStore + initSumStore(grid, sumStore); +} + +template +void lidDrivenCavity(const Neon::Backend backend, + Params& params) +{ + static_assert(std::is_same_v || std::is_same_v); + + Neon::index_3d gridDim; + + //int depth = 2; + //std::vector levelSDF(depth + 1); + //gridDim = Neon::index_3d(6, 6, 6); + //levelSDF[0] = 0; + //levelSDF[1] = -2.0 / 3.0; + //levelSDF[2] = -1.0; + + + int depth = 3; + std::vector levelSDF(depth + 1); + gridDim = Neon::index_3d(192, 192, 192); + levelSDF[0] = 0; + levelSDF[1] = -36.0 / 96.0; + levelSDF[2] = -72.0 / 96.0; + levelSDF[3] = -1.0; + + + if (params.scale == 0) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(48, 48, 48); + levelSDF[0] = 0; + levelSDF[1] = -8.0 / 24.0; + levelSDF[2] = -16.0 / 24.0; + levelSDF[3] = -1.0; + } else if (params.scale == 1) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(160, 160, 160); + levelSDF[0] = 0; + levelSDF[1] = -16.0 / 80.0; + levelSDF[2] = -32.0 / 80.0; + levelSDF[3] = -1.0; + } else if (params.scale == 2) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(240, 240, 240); + levelSDF[0] = 0; + levelSDF[1] = -24.0 / 120.0; + levelSDF[2] = -80.0 / 120.0; + levelSDF[3] = -1.0; + } else if (params.scale == 3) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(320, 320, 320); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -1.0; + } else if (params.scale == 4) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(480, 480, 480); + levelSDF[0] = 0; + levelSDF[1] = -48.0 / 240.0; + levelSDF[2] = -96.0 / 240.0; + levelSDF[3] = -1.0; + } else if (params.scale == 5) { + depth = 3; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -64.0 / 256.0; + levelSDF[2] = -112.0 / 256.0; + levelSDF[3] = -1.0; + } else if (params.scale == 6) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(160, 160, 160); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -128.0 / 160.0; + levelSDF[4] = -1.0; + } else if (params.scale == 7) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(240, 240, 240); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 120.0; + levelSDF[2] = -80.0 / 120.0; + levelSDF[3] = -112.0 / 120.0; + levelSDF[4] = -1.0; + } else if (params.scale == 8) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(320, 320, 320); + levelSDF[0] = 0; + levelSDF[1] = -32.0 / 160.0; + levelSDF[2] = -64.0 / 160.0; + levelSDF[3] = -112.0 / 160.0; + levelSDF[4] = -1.0; + } else if (params.scale == 9) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(480, 480, 480); + levelSDF[0] = 0; + levelSDF[1] = -48.0 / 240.0; + levelSDF[2] = -96.0 / 240.0; + levelSDF[3] = -160.0 / 240.0; + levelSDF[4] = -1.0; + } else if (params.scale == 10) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -120.0 / 512.0; + levelSDF[2] = -200.0 / 512.0; + levelSDF[3] = -400.0 / 512.0; + levelSDF[4] = -1.0; + } else if (params.scale == 11) { + depth = 4; + levelSDF.resize(depth + 1); + gridDim = Neon::index_3d(512, 512, 512); + levelSDF[0] = 0; + levelSDF[1] = -120.0 / 512.0; + levelSDF[2] = -200.0 / 512.0; + levelSDF[3] = -400.0 / 512.0; + levelSDF[4] = -1.0; + } + + //define the grid + const Neon::mGridDescriptor<1> descriptor(depth); + + std::vector> activeCellLambda(depth); + for (size_t i = 0; i < depth; ++i) { + activeCellLambda[i] = [=](const Neon::index_3d id) -> bool { + float sdf = sdfCube(id, gridDim - 1); + return sdf <= levelSDF[i] && sdf > levelSDF[i + 1]; + }; + } + + Neon::domain::mGrid grid( + backend, gridDim, + activeCellLambda, + Neon::domain::Stencil::s19_t(false), descriptor); + + //LBM problem + const T ulb = 0.04; + const T clength = T(grid.getDimension(descriptor.getDepth() - 1).x); + const T visclb = ulb * clength / static_cast(params.Re); + const T omega = 1.0 / (3. * visclb + 0.5); + const Neon::double_3d ulid(ulb, 0., 0.); + + //auto test = grid.newField("test", 1, 0); + //test.ioToVtk("Test", true, true, true, false, {1, 1, 0}); + //exit(0); + + //allocate fields + auto fin = grid.newField("fin", Q, 0); + auto fout = grid.newField("fout", Q, 0); + auto storeSum = grid.newField("storeSum", Q, 0); + auto cellType = grid.newField("CellType", 1, CellType::bulk); + + //init fields + initLidDrivenCavity(grid, storeSum, fin, fout, cellType, ulid); + + runNonUniformLBM(grid, + params, + clength, + omega, + visclb, + ulid, + cellType, + storeSum, + fin, + fout, + true); +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/postProcess.h b/apps/lbmMultiResDisg/postProcess.h new file mode 100644 index 00000000..1af2f410 --- /dev/null +++ b/apps/lbmMultiResDisg/postProcess.h @@ -0,0 +1,399 @@ +#pragma once + +#include "Neon/domain/mGrid.h" +#include "Neon/skeleton/Skeleton.h" + +#include "verify.h" + +#ifdef NEON_USE_POLYSCOPE +#include "polyscope/surface_mesh.h" +#include "polyscope/volume_mesh.h" +#endif + +#include + +template +void postProcess(Neon::domain::mGrid& grid, + const int numLevels, + const Neon::domain::mGrid::Field& fpop, + const Neon::domain::mGrid::Field& cellType, + Neon::domain::mGrid::Field& vel, + Neon::domain::mGrid::Field& rho, + const Neon::int8_3d slice, + std::string fileName, + bool outputFile, + const std::vector>& psDrawable, + const std::vector>& psHex, + const std::vector& psHexVert) +{ + grid.getBackend().syncAll(); + + for (int level = 0; level < numLevels; ++level) { + auto container = + grid.newContainer( + "postProcess_" + std::to_string(level), level, + [&, level](Neon::set::Loader& loader) { + const auto& pop = fpop.load(loader, level, Neon::MultiResCompute::STENCIL); + const auto& type = cellType.load(loader, level, Neon::MultiResCompute::MAP); + auto& u = vel.load(loader, level, Neon::MultiResCompute::MAP); + auto& rh = rho.load(loader, level, Neon::MultiResCompute::MAP); + + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!pop.hasChildren(cell)) { + if (type(cell, 0) == CellType::bulk ) { + + //fin + T ins[Q]; + for (int i = 0; i < Q; ++i) { + ins[i] = pop(cell, i); + } + + //density + T r = 0; + for (int i = 0; i < Q; ++i) { + r += ins[i]; + } + rh(cell, 0) = r; + + //velocity + const Neon::Vec_3d vel = velocity(ins, r); + + u(cell, 0) = vel.v[0]; + u(cell, 1) = vel.v[1]; + u(cell, 2) = vel.v[2]; + } + if (type(cell, 0) == CellType::movingWall || type(cell, 0) == CellType::inlet) { + rh(cell, 0) = 1.0; + + for (int q = 0; q < Q; ++q) { + for (int d = 0; d < 3; ++d) { + int d1 = (d + 1) % 3; + int d2 = (d + 2) % 3; + if (latticeVelocity[q][d] == -1 && + latticeVelocity[q][d1] == 0 && + latticeVelocity[q][d2] == 0) { + u(cell, d) = pop(cell, q) / (6. * latticeWeights[q]); + } + } + } + } + } + }; + }); + + container.run(0); + } + + grid.getBackend().syncAll(); + + + vel.updateHostData(); + //rho.updateHostData(); + + if (outputFile) { + //vel.ioToVtk(fileName, true, true, true, true, slice); + //rho.ioToVtk("Density_" + suffix.str()); + + std::ofstream file(fileName + ".vtk"); + file << "# vtk DataFile Version 2.0\n"; + file << "mGrid\n"; + file << "ASCII\n"; + file << "DATASET UNSTRUCTURED_GRID\n"; + file << "POINTS " << psHexVert.size() << " float \n"; + + for (size_t v = 0; v < psHexVert.size(); ++v) { + file << psHexVert[v].x << " " << psHexVert[v].y << " " << psHexVert[v].z << "\n"; + } + + file << "CELLS " << psHex.size() << " " << psHex.size() * 9 << " \n"; + + for (uint64_t i = 0; i < psHex.size(); ++i) { + file << "8 "; + for (int j = 0; j < 8; ++j) { + int d = j; + if (j == 2) { + d = 3; + } + if (j == 3) { + d = 2; + } + if (j == 6) { + d = 7; + } + if (j == 7) { + d = 6; + } + file << psHex[i][d] << " "; + } + file << "\n"; + } + + file << "CELL_TYPES " << psHex.size() << " \n"; + for (uint64_t i = 0; i < psHex.size(); ++i) { + file << 11 << "\n"; + } + + file << "CELL_DATA " << psHex.size() << " \n"; + + //data + //file << "SCALARS Velocity float 1 \n"; + //file << "LOOKUP_TABLE default \n"; + file << "VECTORS Velocity float \n"; + + for (size_t t = 0; t < psDrawable.size(); ++t) { + const auto id = psDrawable[t].first; + int level = psDrawable[t].second; + + for (int d = 0; d < 3; ++d) { + T v = vel(id, d, level); + file << v << " "; + } + file << "\n"; + + //T c = 0; + //for (int d = 0; d < 3; ++d) { + // T v = vel(id, d, level); + // c += v * v; + //} + //file << c << "\n"; + } + + file.close(); + } +} + + +template +void initVisualization(Neon::domain::mGrid& grid, + const Neon::domain::mGrid::Field& vel, + std::vector>& psDrawable, + std::vector>& psHex, + std::vector& psHexVert, + const Neon::int8_3d slice) +{ + //polyscope register points + //std::vector> psHex; + //std::vector psHexVert; + psHex.clear(); + psHexVert.clear(); + psDrawable.clear(); + + + for (int l = 0; l < grid.getDescriptor().getDepth(); ++l) { + constexpr double tiny = 1e-7; + const Neon::double_3d voxelSize(1.0 / grid.getDimension(l).x, 1.0 / grid.getDimension(l).y, 1.0 / grid.getDimension(l).z); + const int voxelSpacing = grid.getDescriptor().getSpacing(l - 1); + const Neon::index_3d dim0 = grid.getDimension(0); + + grid.newContainer("initVisualization", l, [&](Neon::set::Loader& loader) { + const auto& u = vel.load(loader, l, Neon::MultiResCompute::MAP); + + return [&](const typename Neon::domain::mGrid::Idx& cell) mutable { + if (!u.hasChildren(cell)) { + bool draw = true; + + Neon::index_3d voxelGlobalLocation = u.getGlobalIndex(cell); + + if (slice.x == 1 || slice.y == 1 || slice.z == 1) { + draw = false; + const Neon::double_3d locationScaled(double(voxelGlobalLocation.x) / double(dim0.x), + double(voxelGlobalLocation.y) / double(dim0.y), + double(voxelGlobalLocation.z) / double(dim0.z)); + for (int s = 0; s < 3 && !draw; ++s) { + if (slice.v[s] == 1 && locationScaled.v[s] - tiny <= 0.5 && locationScaled.v[s] + voxelSize.v[s] >= 0.5 - tiny) { + draw = true; + } + } + } + + + if (draw) { + +#pragma omp critical + { + + psDrawable.push_back({cell, int8_t(l)}); + } + + std::array hex; + + const Neon::float_3d gf(voxelGlobalLocation.x, voxelGlobalLocation.y, voxelGlobalLocation.z); + + //x,y,z + hex[0] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y, gf.z}); + + //+x,y,z + hex[1] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y, gf.z}); + + + //+x,y,+z + hex[2] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y, gf.z + voxelSpacing}); + + + //x,y,+z + hex[3] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y, gf.z + voxelSpacing}); + + + //x,+y,z + hex[4] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y + voxelSpacing, gf.z}); + + + //+x,+y,z + hex[5] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y + voxelSpacing, gf.z}); + + + //+x,+y,+z + hex[6] = psHexVert.size(); + psHexVert.push_back({gf.x + voxelSpacing, gf.y + voxelSpacing, gf.z + voxelSpacing}); + + + //x,+y,+z + hex[7] = psHexVert.size(); + psHexVert.push_back({gf.x, gf.y + voxelSpacing, gf.z + voxelSpacing}); + +#pragma omp critical + { + + psHex.push_back(hex); + } + } + } + }; + }) + .run(0); + } + +#ifdef NEON_USE_POLYSCOPE + if (!polyscope::isInitialized()) { + polyscope::init(); + } + polyscope::options::groundPlaneMode = polyscope::GroundPlaneMode::None; + polyscope::view::projectionMode = polyscope::ProjectionMode::Orthographic; + //Neon::index_3d dim0 = grid.getDimension(0); + //polyscope::view::lookAt(glm::vec3{0, 0, 0}, glm::vec3{0., 0., 1.}); + auto psMesh = polyscope::registerHexMesh("LBM", psHexVert, psHex); + polyscope::options::screenshotExtension = ".png"; +#endif +} + +#ifdef NEON_USE_POLYSCOPE +template +void postProcessPolyscope(const std::vector>& psDrawable, + const Neon::domain::mGrid::Field& vel, + std::vector& psColor, + std::string screenshotName, + bool show, + bool showEdges) +{ + if (psColor.empty()) { + psColor.resize(psDrawable.size()); + } + for (uint32_t t = 0; t < psDrawable.size(); ++t) { + const auto id = psDrawable[t].first; + int level = psDrawable[t].second; + + T c = 0; + for (int d = 0; d < 3; ++d) { + T v = vel(id, d, level); + c += v * v; + } + psColor[t] = std::sqrt(c); + } + + auto colorQu = polyscope::getVolumeMesh("LBM")->addCellScalarQuantity("Velocity", psColor); + colorQu->setEnabled(true); + colorQu->setColorMap("jet"); + if (showEdges) { + polyscope::getVolumeMesh("LBM")->setEdgeWidth(1.0); + } else { + polyscope::getVolumeMesh("LBM")->setEdgeWidth(0.0); + } + //colorQu->setMapRange({0, 0.04}); + + polyscope::screenshot(screenshotName + ".png"); + + if (show) { + polyscope::show(); + } +} + +void polyscopeAddMesh( + const std::string name, + const Eigen::MatrixXi& faces, + const Eigen::MatrixXd& vertices) +{ + if (!polyscope::isInitialized()) { + polyscope::init(); + } + + polyscope::registerSurfaceMesh(polyscope::guessNiceNameFromPath(name), vertices, faces); +} +#endif + +template +void verifyLidDrivenCavity(Neon::domain::mGrid& grid, + const int numLevels, + Neon::domain::mGrid::Field& vel, + const int Re, + const int iteration, + const T ulb) +{ + int precision = 4; + std::ostringstream suffix; + suffix << std::setw(precision) << std::setfill('0') << iteration; + + std::vector> xPosVal; + std::vector> yPosVal; + + const Neon::index_3d grid_dim = grid.getDimension(); + + const T scale = 1.0 / ulb; + + for (int level = 0; level < numLevels; ++level) { + vel.forEachActiveCell( + level, [&](const Neon::index_3d& id, const int& card, T& val) { + if (id.x == grid_dim.x / 2 && id.z == grid_dim.z / 2) { + if (card == 0) { + yPosVal.push_back({static_cast(id.v[1]) / static_cast(grid_dim.y), val * scale}); + } + } + + if (id.y == grid_dim.y / 2 && id.z == grid_dim.z / 2) { + if (card == 1) { + xPosVal.push_back({static_cast(id.v[0]) / static_cast(grid_dim.x), val * scale}); + } + } + }, + Neon::computeMode_t::seq); + } + //sort the position so the linear interpolation works + std::sort(xPosVal.begin(), xPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + std::sort(yPosVal.begin(), yPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + + NEON_INFO("Max difference = {0:.8f}", verifyGhia1982(Re, xPosVal, yPosVal)); + + + auto writeToFile = [](const std::vector>& posVal, std::string filename) { + std::ofstream file; + file.open(filename); + for (auto v : posVal) { + file << v.first << " " << v.second << "\n"; + } + file.close(); + }; + writeToFile(yPosVal, "NeonMultiResLBM_" + suffix.str() + "_Y.dat"); + writeToFile(xPosVal, "NeonMultiResLBM_" + suffix.str() + "_X.dat"); +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/stream.h b/apps/lbmMultiResDisg/stream.h new file mode 100644 index 00000000..56570495 --- /dev/null +++ b/apps/lbmMultiResDisg/stream.h @@ -0,0 +1,87 @@ +#pragma once + +template +inline Neon::set::Container streamFusedCoalescenceExplosion(Neon::domain::mGrid& grid, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& fin) +{ + return grid.newContainer( + "SOE" + std::to_string(level), level, !atInterface, + [&, level, numLevels](Neon::set::Loader& loader) { + const auto& type = cellType.load(loader, level, Neon::MultiResCompute::STENCIL); + auto pin = fin.load(loader, level, Neon::MultiResCompute::MAP); + const auto& pout = fout.load(loader, level, Neon::MultiResCompute::STENCIL); + const auto& ss = sumStore.load(loader, level, Neon::MultiResCompute::STENCIL); + constexpr T repRefFactor = 0.5; + if (level != numLevels - 1) { + fout.load(loader, level, Neon::MultiResCompute::STENCIL_UP); + } + + return [=] NEON_CUDA_HOST_DEVICE(const typename Neon::domain::mGrid::Idx& cell) mutable { + if (type(cell, 0) == CellType::bulk) { + + (void)ss; + + if (!pin.hasChildren(cell)) { + + for (int8_t q = 0; q < Q; ++q) { + const Neon::int8_3d dir = -getDir(q); + + //if the neighbor cell has children, then this 'cell' is interfacing with L-1 (fine) along q direction + auto nghType = type.getNghData(cell, dir, 0); + if (!pin.hasChildren(cell, dir)) { + if (nghType.mIsValid) { + if (nghType.mData == CellType::bulk) { + pin(cell, q) = pout.getNghData(cell, dir, q).mData; + } else { + const int8_t opposte_q = latticeOppositeID[q]; + pin(cell, q) = pout(cell, opposte_q) + pout.getNghData(cell, dir, opposte_q).mData; + } + } else { + if constexpr (atInterface) { + + if (pin.hasParent(cell) && !(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + Neon::int8_3d uncleDir = uncleOffset(cell.mInDataBlockIdx, dir); + auto uncle = pout.uncleVal(cell, uncleDir, q, T(0)); + if (uncle.mIsValid) { + pin(cell, q) = uncle.mData; + } + } + } + } + } else { + + if constexpr (atInterface) { + if (!(dir.x == 0 && dir.y == 0 && dir.z == 0)) { + if (nghType.mIsValid) { + auto neighbor = pout.getNghData(cell, dir, q); + auto ssVal = ss.getNghData(cell, dir, q); + assert(ssVal.mData != 0); + pin(cell, q) = neighbor.mData * ssVal.mData; + } + } + } + } + } + } + } + }; + }); +} + +template +inline void streamFusedCoalescenceExplosion(Neon::domain::mGrid& grid, + const int level, + const int numLevels, + const Neon::domain::mGrid::Field& cellType, + const Neon::domain::mGrid::Field& sumStore, + const Neon::domain::mGrid::Field& fout, + Neon::domain::mGrid::Field& fin, + std::vector& containers) +{ + containers.push_back(streamFusedCoalescenceExplosion(grid, level, numLevels, sumStore, cellType, fout, fin)); +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/util.h b/apps/lbmMultiResDisg/util.h new file mode 100644 index 00000000..bbdb18ab --- /dev/null +++ b/apps/lbmMultiResDisg/util.h @@ -0,0 +1,558 @@ +#pragma once + +#include + +#include "Neon/Neon.h" +#include "lattice.h" + + +#define GLM_FORCE_SWIZZLE +#include +#include + +constexpr NEON_CUDA_HOST_DEVICE Neon::int8_3d getDir(const int8_t q) +{ + return Neon::int8_3d(latticeVelocity[q][0], latticeVelocity[q][1], latticeVelocity[q][2]); +} + +template +constexpr NEON_CUDA_HOST_DEVICE inline Neon::int8_3d uncleOffset(const T& cell, const Neon::int8_3d& q) +{ + //given a local index within a cell and a population direction (q) + //find the uncle's (the parent neighbor) offset from which the desired population (q) should be read + //this offset is wrt the cell containing the localID (i.e., the parent of localID) + auto off = [](const int8_t i, const int8_t j) { + //0, -1 --> -1 + //1, -1 --> 0 + //0, 0 --> 0 + //0, 1 --> 0 + //1, 1 --> 1 + const int8_t s = i + j; + return (s <= 0) ? s : s - 1; + }; + Neon::int8_3d offset(off(cell.x % Neon::domain::details::mGrid::kUserBlockSizeX, q.x), + off(cell.y % Neon::domain::details::mGrid::kUserBlockSizeY, q.y), + off(cell.z % Neon::domain::details::mGrid::kUserBlockSizeZ, q.z)); + return offset; +} + +template +NEON_CUDA_HOST_DEVICE T computeOmega(T omega0, int level, int numLevels) +{ + int ilevel = numLevels - level - 1; + // scalbln(1.0, x) = 2^x + return 2 * omega0 / (scalbln(1.0, ilevel + 1) + (1. - scalbln(1.0, ilevel)) * omega0); +} + +template +NEON_CUDA_HOST_DEVICE Neon::Vec_3d velocity(const T* fin, + const T rho) +{ + Neon::Vec_3d vel(0, 0, 0); + for (int i = 0; i < Q; ++i) { + const T f = fin[i]; + for (int d = 0; d < 3; ++d) { + vel.v[d] += f * latticeVelocity[i][d]; + } + } + for (int d = 0; d < 3; ++d) { + vel.v[d] /= rho; + } + return vel; +} + + +inline float sdfCube(Neon::index_3d id, Neon::index_3d dim, Neon::float_3d b = {1.0, 1.0, 1.0}) +{ + auto mapToCube = [&](Neon::index_3d id) { + //map p to an axis-aligned cube from -1 to 1 + Neon::float_3d half_dim = dim.newType() * 0.5; + Neon::float_3d ret = (id.newType() - half_dim) / half_dim; + return ret; + }; + Neon::float_3d p = mapToCube(id); + + Neon::float_3d d(std::abs(p.x) - b.x, std::abs(p.y) - b.y, std::abs(p.z) - b.z); + + Neon::float_3d d_max(std::max(d.x, 0.f), std::max(d.y, 0.f), std::max(d.z, 0.f)); + float len = std::sqrt(d_max.x * d_max.x + d_max.y * d_max.y + d_max.z * d_max.z); + float val = std::min(std::max(d.x, std::max(d.y, d.z)), 0.f) + len; + return val; +} + + +NEON_CUDA_HOST_DEVICE inline float sdfJetfighter(glm::ivec3 id, glm::ivec3 dim) +{ + float turn = 0.f; + float pitch = 0.f + glm::pi(); + float roll = 0.f; + float rudderAngle = 0.f; + float speed = 0.5; + glm::vec3 checkPos = glm::vec3(0.f); + glm::vec3 planePos = glm::vec3(0.f); + float winDist = 10000.0; + float engineDist = 10000.0; + float eFlameDist = 10000.0; + float blackDist = 10000.0; + float bombDist = 10000.0; + float bombDist2 = 10000.0; + float missileDist = 10000.0; + float frontWingDist = 10000.0; + float rearWingDist = 10000.0; + float topWingDist = 10000.0; + glm::vec2 missilesLaunched = glm::vec2(0.f); + + //https://github.com/tovacinni/sdf-explorer/blob/master/data-files/sdf/Vehicle/Jetfighter.glsl + auto mapToCube = [&](glm::ivec3 id) { + //map p to an axis-aligned cube from -1 to 1 + glm::vec3 half_dim(dim.x, dim.y, dim.z); + half_dim *= 0.5f; + glm::vec3 ret = (glm::vec3(id.x, id.y, id.z) - half_dim) / half_dim; + return ret; + }; + + auto RotMat = [](glm::vec3 axis, float angle) -> glm::mat3 { + // http://www.neilmendoza.com/glsl-rotation-about-an-arbitrary-axis/ + axis = glm::normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return glm::mat3(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c); + }; + + auto sgn = [](float x) -> float { + return (x < 0.) ? -1. : 1.; + }; + + auto sdJetBox = [](glm::vec3 p, glm::vec3 b) -> float { + glm::vec3 d = abs(p) - b; + return std::min(std::max(d.x, std::max(d.y, d.z)), 0.0f) + glm::length(glm::max(d, 0.0f)); + }; + + auto sdJetTorus = [](glm::vec3 p, glm::vec2 t) -> float { + glm::vec2 q = glm::vec2(glm::length(p.xz()) - t.x, p.y); + return glm::length(q) - t.y; + }; + + + auto sdJetCapsule = [&](glm::vec3 p, glm::vec3 a, glm::vec3 b, float r) -> float { + glm::vec3 pa = p - a, ba = b - a; + float h = glm::clamp(glm::dot(pa, ba) / glm::dot(ba, ba), 0.0f, 1.0f); + return glm::length(pa - ba * h) - r; + }; + + auto sdJetEllipsoid = [&](glm::vec3 p, glm::vec3 r) -> float { + return (glm::length(p / r.xyz()) - 1.0f) * r.y; + }; + + + auto sdJetConeSection = [&](glm::vec3 p, float h, float r1, float r2) -> float { + float d1 = -p.z - h; + float q = p.z - h; + float si = 0.5f * (r1 - r2) / h; + float d2 = std::max(std::sqrt(glm::dot(p.xy(), p.xy()) * (1.0f - si * si)) + q * si - r2, q); + return glm::length(glm::max(glm::vec2(d1, d2), 0.0f)) + std::min(std::max(d1, d2), 0.f); + }; + + auto fCylinder = [](glm::vec3 p, float r, float height) -> float { + float d = glm::length(p.xy()) - r; + d = std::max(d, std::abs(p.z) - height); + return d; + }; + + auto fSphere = [](glm::vec3 p, float r) -> float { + return glm::length(p) - r; + }; + + + auto sdJetHexPrism = [](glm::vec3 p, glm::vec2 h) -> float { + glm::vec3 q = glm::abs(p); + return std::max(q.y - h.y, std::max((q.z * 0.866025f + q.x * 0.5f), q.x) - h.x); + }; + + auto fOpPipe = [](float a, float b, float r) -> float { + return glm::length(glm::vec2(a, b)) - r; + }; + + + auto pModPolar = [](glm::vec2 p, float repetitions) -> glm::vec2 { + float angle = 2. * glm::pi() / repetitions; + float a = glm::atan(p.y, p.x) + angle / 2.f; + float r = glm::length(p); + float c = std::floor(a / angle); + a = glm::mod(a, angle) - angle / 2.f; + p = glm::vec2(glm::cos(a), glm::sin(a)) * r; + if (std::abs(c) >= (repetitions / 2.)) { + c = std::abs(c); + } + return p; + }; + + auto pModInterval1 = [](float& p, float size, float start, float stop) -> float { + float halfsize = size * 0.5; + float c = std::floor((p + halfsize) / size); + p = glm::mod(p + halfsize, size) - halfsize; + if (c > stop) { + p += size * (c - stop); + c = stop; + } + if (c < start) { + p += size * (c - start); + c = start; + } + return c; + }; + + auto pMirror = [sgn](float& p, float dist) -> float { + float s = sgn(p); + p = std::abs(p) - dist; + return s; + }; + + + auto r2 = [](float r) -> glm::mat2 { + float c = glm::cos(r); + float s = glm::sin(r); + return glm::mat2(c, s, -s, c); + }; + + auto pR = [r2](glm::vec2& p, float a) { + p = p * r2(a); + }; + + auto pR_glm = [pR](glm::vec3& p, float a, int idx, int idy) { + glm::vec2 temp(p[idx], p[idy]); + pR(temp, a); + p[idx] = temp[0]; + p[idy] = temp[1]; + }; + + auto fOpUnionRound = [](float a, float b, float r) -> float { + glm::vec2 u = glm::max(glm::vec2(r - a, r - b), glm::vec2(0)); + return std::max(r, std::min(a, b)) - glm::length(u); + }; + + auto fOpIntersectionRound = [](float a, float b, float r) -> float { + glm::vec2 u = glm::max(glm::vec2(r + a, r + b), glm::vec2(0)); + return std::min(-r, std::max(a, b)) + glm::length(u); + }; + + auto TranslatePos = [&](glm::vec3 p, float _pitch, float _roll) -> glm::vec3 { + // limited by euler rotation. I wont get a good plane rotation without quaternions! :-( + pR_glm(p, _roll - glm::pi(), 0, 1); + p.z += 5.f; + pR_glm(p, _pitch, 2, 1); + p.z -= 5.f; + return p; + }; + + auto MapEsmPod = [&](glm::vec3 p) -> float { + float dist = fCylinder(p, 0.15f, 1.0f); + checkPos = p - glm::vec3(0.f, 0.f, -1.0f); + pModInterval1(checkPos.z, 2.0f, .0f, 1.0f); + return std::min(dist, sdJetEllipsoid(checkPos, glm::vec3(0.15f, 0.15f, .5f))); + }; + + auto MapMissile = [&](glm::vec3 p) -> float { + float d = fCylinder(p, 0.70f, 1.7f); + if (d < 1.0f) { + missileDist = std::min(missileDist, fCylinder(p, 0.12f, 1.2f)); + missileDist = std::min(missileDist, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, 1.10f), glm::vec3(0.12f, 0.12f, 1.0f))); + + checkPos = p; + pR_glm(checkPos, 0.785f, 0, 1); + checkPos.xy() = pModPolar(checkPos.xy(), 4.0f); + + missileDist = std::min(missileDist, sdJetHexPrism(checkPos - glm::vec3(0.f, 0.f, .60f), glm::vec2(0.50f, 0.01f))); + missileDist = std::min(missileDist, sdJetHexPrism(checkPos + glm::vec3(0.f, 0.f, 1.03f), glm::vec2(0.50f, 0.01f))); + missileDist = std::max(missileDist, -sdJetBox(p + glm::vec3(0.f, 0.f, 3.15f), glm::vec3(3.0f, 3.0f, 2.0f))); + missileDist = std::max(missileDist, -fCylinder(p + glm::vec3(0.f, 0.f, 2.15f), 0.09f, 1.2f)); + } + return missileDist; + }; + + auto MapFrontWing = [&](glm::vec3 p, float mirrored) -> float { + missileDist = 10000.0f; + + checkPos = p; + pR_glm(checkPos, -0.02f, 0, 1); + float wing = sdJetBox(checkPos - glm::vec3(4.50f, 0.25f, -4.6f), glm::vec3(3.75f, 0.04f, 2.6f)); + + if (wing < 5.f) //Bounding Box test + { + // cutouts + checkPos = p - glm::vec3(3.0f, 0.3f, -.30f); + pR_glm(checkPos, -0.5f, 0, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(8.0f, 0.3f, -8.80f); + pR_glm(checkPos, -0.05f, 0, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(10.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(9.5f, 0.3f, -8.50f); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos, glm::vec3(2.0f, 1.4f, 6.75f)), 0.6f); + + // join wing and engine + wing = std::min(wing, sdJetCapsule(p - glm::vec3(2.20f, 0.3f, -4.2f), glm::vec3(0.f, 0.f, -1.20f), glm::vec3(0.f, 0.f, 0.8f), 0.04f)); + wing = std::min(wing, sdJetCapsule(p - glm::vec3(3.f, 0.23f, -4.2f), glm::vec3(0.f, 0.f, -1.20f), glm::vec3(0.f, 0.f, 0.5f), 0.04f)); + + checkPos = p; + pR_glm(checkPos, -0.03f, 0, 2); + wing = std::min(wing, sdJetConeSection(checkPos - glm::vec3(0.70f, -0.1f, -4.52f), 5.0f, 0.25f, 0.9f)); + + checkPos = p; + pR_glm(checkPos, 0.75f, 1, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos - glm::vec3(3.0f, -.5f, 1.50f), glm::vec3(3.75f, 3.4f, 2.0f)), 0.12f); + pR_glm(checkPos, -1.95f, 1, 2); + wing = fOpIntersectionRound(wing, -sdJetBox(checkPos - glm::vec3(2.0f, .70f, 2.20f), glm::vec3(3.75f, 3.4f, 2.0f)), 0.12f); + + checkPos = p - glm::vec3(0.47f, 0.0f, -4.3f); + pR_glm(checkPos, 1.57f, 1, 2); + wing = std::min(wing, sdJetTorus(checkPos - glm::vec3(0.0f, -3.f, .0f), glm::vec2(.3f, 0.05f))); + + // flaps + wing = std::max(wing, -sdJetBox(p - glm::vec3(3.565f, 0.1f, -6.4f), glm::vec3(1.50f, 1.4f, .5f))); + wing = std::max(wing, -std::max(sdJetBox(p - glm::vec3(5.065f, 0.1f, -8.4f), glm::vec3(0.90f, 1.4f, 2.5f)), -sdJetBox(p - glm::vec3(5.065f, 0.f, -8.4f), glm::vec3(0.89f, 1.4f, 2.49f)))); + + checkPos = p - glm::vec3(3.565f, 0.18f, -6.20f + 0.30f); + pR_glm(checkPos, -0.15f + (0.8f * pitch), 1, 2); + wing = std::min(wing, sdJetBox(checkPos + glm::vec3(0.0f, 0.0f, 0.30f), glm::vec3(1.46f, 0.007f, 0.3f))); + + // missile holder + float holder = sdJetBox(p - glm::vec3(3.8f, -0.26f, -4.70f), glm::vec3(0.04f, 0.4f, 0.8f)); + + checkPos = p; + pR_glm(checkPos, 0.85f, 1, 2); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(2.8f, -1.8f, -3.0f), glm::vec3(1.75f, 1.4f, 1.0f))); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(2.8f, -5.8f, -3.0f), glm::vec3(1.75f, 1.4f, 1.0f))); + holder = fOpUnionRound(holder, sdJetBox(p - glm::vec3(3.8f, -0.23f, -4.70f), glm::vec3(1.0f, 0.03f, 0.5f)), 0.1f); + + // bomb + bombDist = fCylinder(p - glm::vec3(3.8f, -0.8f, -4.50f), 0.35f, 1.f); + bombDist = std::min(bombDist, sdJetEllipsoid(p - glm::vec3(3.8f, -0.8f, -3.50f), glm::vec3(0.35f, 0.35f, 1.0f))); + bombDist = std::min(bombDist, sdJetEllipsoid(p - glm::vec3(3.8f, -0.8f, -5.50f), glm::vec3(0.35f, 0.35f, 1.0f))); + + // missiles + checkPos = p - glm::vec3(2.9f, -0.45f, -4.50f); + + // check if any missile has been fired. If so, do NOT mod missile position + float maxMissiles = 0.f; + if (mirrored > 0.f) { + maxMissiles = glm::mix(1.0f, 0.f, glm::step(1.f, missilesLaunched.x)); + } else { + maxMissiles = glm::mix(1.0f, 0.f, glm::step(1.f, missilesLaunched.y)); + } + + pModInterval1(checkPos.x, 1.8f, .0f, maxMissiles); + holder = std::min(holder, MapMissile(checkPos)); + + // ESM Pod + holder = std::min(holder, MapEsmPod(p - glm::vec3(7.2f, 0.06f, -5.68f))); + + // wheelholder + wing = std::min(wing, sdJetBox(p - glm::vec3(0.6f, -0.25f, -3.8f), glm::vec3(0.8f, 0.4f, .50f))); + + wing = std::min(bombDist, std::min(wing, holder)); + } + + return wing; + }; + + auto MapRearWing = [&](glm::vec3 p) -> float { + float wing2 = sdJetBox(p - glm::vec3(2.50f, 0.1f, -8.9f), glm::vec3(1.5f, 0.017f, 1.3f)); + if (wing2 < 0.15f) //Bounding Box test + { + // cutouts + checkPos = p - glm::vec3(3.0f, 0.0f, -5.9f); + pR_glm(checkPos, -0.5f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.2f); + + checkPos = p - glm::vec3(0.0f, 0.0f, -4.9f); + pR_glm(checkPos, -0.5f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(3.3f, 1.4f, 1.70f)), 0.2f); + + checkPos = p - glm::vec3(3.0f, 0.0f, -11.70f); + pR_glm(checkPos, -0.05f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + + checkPos = p - glm::vec3(4.30f, 0.0f, -11.80f); + pR_glm(checkPos, 1.15f, 0, 2); + wing2 = fOpIntersectionRound(wing2, -sdJetBox(checkPos, glm::vec3(6.75f, 1.4f, 2.0f)), 0.1f); + } + return wing2; + }; + + auto MapTailFlap = [&](glm::vec3 p, float mirrored) -> float { + p.z += 0.3f; + pR_glm(p, rudderAngle * (-1.f * mirrored), 0, 2); + p.z -= 0.3f; + + float tailFlap = sdJetBox(p - glm::vec3(0.f, -0.04f, -.42f), glm::vec3(0.025f, .45f, .30f)); + + // tailFlap front cutout + checkPos = p - glm::vec3(0.f, 0.f, 1.15f); + pR_glm(checkPos, 1.32f, 1, 2); + tailFlap = std::max(tailFlap, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f))); + + // tailFlap rear cutout + checkPos = p - glm::vec3(0.f, 0.f, -2.75f); + pR_glm(checkPos, -0.15f, 1, 2); + tailFlap = fOpIntersectionRound(tailFlap, -sdJetBox(checkPos, glm::vec3(.75f, 1.4f, 2.0f)), 0.05f); + + checkPos = p - glm::vec3(0.f, 0.f, -.65f); + tailFlap = std::min(tailFlap, sdJetEllipsoid(checkPos - glm::vec3(0.00f, 0.25f, 0.f), glm::vec3(0.06f, 0.05f, 0.15f))); + tailFlap = std::min(tailFlap, sdJetEllipsoid(checkPos - glm::vec3(0.00f, 0.10f, 0.f), glm::vec3(0.06f, 0.05f, 0.15f))); + + return tailFlap; + }; + + auto MapTopWing = [&](glm::vec3 p, float mirrored) -> float { + checkPos = p - glm::vec3(1.15f, 1.04f, -8.5f); + pR_glm(checkPos, -0.15f, 0, 1); + float topWing = sdJetBox(checkPos, glm::vec3(0.014f, 0.8f, 1.2f)); + if (topWing < .15f) //Bounding Box test + { + float flapDist = MapTailFlap(checkPos, mirrored); + + checkPos = p - glm::vec3(1.15f, 1.04f, -8.5f); + pR_glm(checkPos, -0.15f, 0, 1); + // top border + topWing = std::min(topWing, sdJetBox(checkPos - glm::vec3(0.f, 0.55f, 0.f), glm::vec3(0.04f, 0.1f, 1.25f))); + + float flapCutout = sdJetBox(checkPos - glm::vec3(0.f, -0.04f, -1.19f), glm::vec3(0.02f, .45f, 1.0f)); + // tailFlap front cutout + checkPos = p - glm::vec3(1.15f, 2.f, -7.65f); + pR_glm(checkPos, 1.32f, 1, 2); + flapCutout = std::max(flapCutout, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f))); + + // make hole for tail flap + topWing = std::max(topWing, -flapCutout); + + // front cutouts + checkPos = p - glm::vec3(1.15f, 2.f, -7.f); + pR_glm(checkPos, 1.02f, 1, 2); + topWing = fOpIntersectionRound(topWing, -sdJetBox(checkPos, glm::vec3(.75f, 1.41f, 1.6f)), 0.05f); + + // rear cutout + checkPos = p - glm::vec3(1.15f, 1.f, -11.25f); + pR_glm(checkPos, -0.15f, 1, 2); + topWing = fOpIntersectionRound(topWing, -sdJetBox(checkPos, glm::vec3(.75f, 1.4f, 2.0f)), 0.05f); + + // top roll + topWing = std::min(topWing, sdJetCapsule(p - glm::vec3(1.26f, 1.8f, -8.84f), glm::vec3(0.f, 0.f, -.50f), glm::vec3(0.f, 0.f, 0.3f), 0.06f)); + + topWing = std::min(topWing, flapDist); + } + return topWing; + }; + + auto MapPlane = [&](glm::vec3 p) -> float { + float d = 100000.0f; + glm::vec3 pOriginal = p; + // rotate position + p = TranslatePos(p, pitch, roll); + float mirrored = 0.f; + + // mirror position at x=0.0. Both sides of the plane are equal. + mirrored = pMirror(p.x, 0.0f); + + float body = std::min(d, sdJetEllipsoid(p - glm::vec3(0.f, 0.1f, -4.40f), glm::vec3(0.50f, 0.30f, 2.f))); + body = fOpUnionRound(body, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, .50f), glm::vec3(0.50f, 0.40f, 3.25f)), 1.f); + body = std::min(body, sdJetConeSection(p - glm::vec3(0.f, 0.f, 3.8f), 0.1f, 0.15f, 0.06f)); + + body = std::min(body, sdJetConeSection(p - glm::vec3(0.f, 0.f, 3.8f), 0.7f, 0.07f, 0.01f)); + + // window + winDist = sdJetEllipsoid(p - glm::vec3(0.f, 0.3f, -0.10f), glm::vec3(0.45f, 0.4f, 1.45f)); + winDist = fOpUnionRound(winDist, sdJetEllipsoid(p - glm::vec3(0.f, 0.3f, 0.60f), glm::vec3(0.3f, 0.6f, .75f)), 0.4f); + winDist = std::max(winDist, -body); + body = std::min(body, winDist) * 0.8f; + body = std::min(body, fOpPipe(winDist, sdJetBox(p - glm::vec3(0.f, 0.f, 1.0f), glm::vec3(3.0f, 1.f, .01f)), 0.03f) * 0.7f); + body = std::min(body, fOpPipe(winDist, sdJetBox(p - glm::vec3(0.f, 0.f, 0.0f), glm::vec3(3.0f, 1.f, .01f)), 0.03f) * 0.7f); + + // front (nose) + body = std::max(body, -std::max(fCylinder(p - glm::vec3(0.f, 0.f, 2.5f), .46f, 0.04f), -fCylinder(p - glm::vec3(0.f, 0.f, 2.5f), .35f, 0.1f))); + checkPos = p - glm::vec3(0.f, 0.f, 2.5f); + pR_glm(checkPos, 1.57f, 1, 2); + body = fOpIntersectionRound(body, -sdJetTorus(checkPos + glm::vec3(0.f, 0.80f, 0.f), glm::vec2(.6f, 0.05f)), 0.015f); + body = fOpIntersectionRound(body, -sdJetTorus(checkPos + glm::vec3(0.f, 2.30f, 0.f), glm::vec2(.62f, 0.06f)), 0.015f); + + // wings + frontWingDist = MapFrontWing(p, mirrored); + d = std::min(d, frontWingDist); + rearWingDist = MapRearWing(p); + d = std::min(d, rearWingDist); + topWingDist = MapTopWing(p, mirrored); + d = std::min(d, topWingDist); + + // bottom + checkPos = p - glm::vec3(0.f, -0.6f, -5.0f); + pR_glm(checkPos, 0.07f, 1, 2); + d = fOpUnionRound(d, sdJetBox(checkPos, glm::vec3(0.5f, 0.2f, 3.1f)), 0.40f); + + float holder = sdJetBox(p - glm::vec3(0.0f, -1.1f, -4.30f), glm::vec3(0.08f, 0.4f, 0.8f)); + checkPos = p; + pR_glm(checkPos, 0.85f, 1, 2); + holder = std::max(holder, -sdJetBox(checkPos - glm::vec3(0.0f, -5.64f, -2.8f), glm::vec3(1.75f, 1.4f, 1.0f))); + d = fOpUnionRound(d, holder, 0.25f); + + // large bomb + bombDist2 = fCylinder(p - glm::vec3(0.0f, -1.6f, -4.0f), 0.45f, 1.0f); + bombDist2 = std::min(bombDist2, sdJetEllipsoid(p - glm::vec3(0.0f, -1.6f, -3.20f), glm::vec3(0.45f, 0.45f, 2.f))); + bombDist2 = std::min(bombDist2, sdJetEllipsoid(p - glm::vec3(0.0f, -1.6f, -4.80f), glm::vec3(0.45f, 0.45f, 2.f))); + + d = std::min(d, bombDist2); + + d = std::min(d, sdJetEllipsoid(p - glm::vec3(1.05f, 0.13f, -8.4f), glm::vec3(0.11f, 0.18f, 1.0f))); + + checkPos = p - glm::vec3(0.f, 0.2f, -5.0f); + d = fOpUnionRound(d, fOpIntersectionRound(sdJetBox(checkPos, glm::vec3(1.2f, 0.14f, 3.7f)), -sdJetBox(checkPos, glm::vec3(1.f, 1.14f, 4.7f)), 0.2f), 0.25f); + + d = fOpUnionRound(d, sdJetEllipsoid(p - glm::vec3(0.f, 0.f, -4.f), glm::vec3(1.21f, 0.5f, 2.50f)), 0.75f); + + // engine cutout + blackDist = std::max(d, fCylinder(p - glm::vec3(.8f, -0.15f, 0.f), 0.5f, 2.4f)); + d = std::max(d, -fCylinder(p - glm::vec3(.8f, -0.15f, 0.f), 0.45f, 2.4f)); + + // engine + d = std::max(d, -sdJetBox(p - glm::vec3(0.f, 0.f, -9.5f), glm::vec3(1.5f, 0.4f, 0.7f))); + + engineDist = fCylinder(p - glm::vec3(0.40f, -0.1f, -8.7f), .42f, 0.2f); + checkPos = p - glm::vec3(0.4f, -0.1f, -8.3f); + pR_glm(checkPos, 1.57f, 1, 2); + engineDist = std::min(engineDist, sdJetTorus(checkPos, glm::vec2(.25f, 0.25f))); + engineDist = std::min(engineDist, sdJetConeSection(p - glm::vec3(0.40f, -0.1f, -9.2f), 0.3f, .22f, .36f)); + + checkPos = p - glm::vec3(0.f, 0.f, -9.24f); + checkPos.xy() -= glm::vec2(0.4f, -0.1f); + checkPos.xy() = pModPolar(checkPos.xy(), 22.0f); + + float engineCone = fOpPipe(engineDist, sdJetBox(checkPos, glm::vec3(.6f, 0.001f, 0.26f)), 0.015f); + engineDist = std::min(engineDist, engineCone); + + d = std::min(d, engineDist); + + d = std::min(d, winDist); + d = std::min(d, body); + + d = std::min(d, sdJetBox(p - glm::vec3(1.1f, 0.f, -6.90f), glm::vec3(.33f, .12f, .17f))); + checkPos = p - glm::vec3(0.65f, 0.55f, -1.4f); + pR_glm(checkPos, -0.35f, 1, 2); + d = std::min(d, sdJetBox(checkPos, glm::vec3(0.2f, 0.1f, 0.45f))); + + return d; + }; + + + glm::vec3 p = mapToCube(id); + p.z += 0.8; + + p = p * RotMat(glm::vec3(0.f, 1.f, 0.f), glm::pi()); + const float scale = 0.12; + p *= (1.0 / scale); + + return MapPlane(p) * 0.9 * scale; +} \ No newline at end of file diff --git a/apps/lbmMultiResDisg/verify.h b/apps/lbmMultiResDisg/verify.h new file mode 100644 index 00000000..9b040dcb --- /dev/null +++ b/apps/lbmMultiResDisg/verify.h @@ -0,0 +1,92 @@ +#pragma once +#include +#include +#include +#include + +namespace detail { +//Table 1 and Table 2 from +// U Ghia, K.N Ghia, C.T Shin, +// High-Re solutions for incompressible flow using the Navier-Stokes equations and a multigrid method, +// Journal of Computational Physics, +// Volume 48, Issue 3, +// 1982, +// Pages 387-411, +// ISSN 0021-9991, +// https://doi.org/10.1016/0021-9991(82)90058-4 + +constexpr int ghiaNumPoints = 17; + +std::array ghiaYPos = {0.000000, 0.054700, 0.062500, 0.070300, 0.101600, 0.171900, 0.281300, 0.453100, 0.500000, 0.617200, 0.734400, 0.851600, 0.953100, 0.960900, 0.968800, 0.976600, 1.000000}; + +std::array ghiaXPos = {0.000000, 0.062500, 0.070300, 0.078100, 0.093800, 0.156300, 0.226600, 0.234400, 0.500000, 0.804700, 0.859400, 0.906300, 0.945300, 0.953100, 0.960900, 0.968800, 1.000000}; + + +std::map> ghiaYVals{ + {100, {0.000000, -0.037170, -0.041920, -0.047750, -0.064340, -0.101500, -0.156620, -0.210900, -0.205810, -0.136410, 0.003320, 0.231510, 0.687170, 0.737220, 0.788710, 0.841230, 1.000000}}, + {1000, {0.000000, -0.181090, -0.201960, -0.222200, -0.297300, -0.382890, -0.278050, -0.106480, -0.060800, 0.057020, 0.187190, 0.333040, 0.466040, 0.511170, 0.574920, 0.659280, 1.000000}}, + {3200, {0.000000, -0.32407, -0.35344, -0.37827, -0.41933, -0.34323, -0.24427, -0.86636, -0.04272, 0.071560, 0.197910, 0.346820, 0.461010, 0.465470, 0.482960, 0.532360, 1.000000}}, + {5000, {0.000000, -0.41165, -0.42901, -0.43643, -0.40435, -0.33050, -0.22855, -0.07404, -0.03039, 0.081830, 0.200870, 0.335560, 0.460360, 0.459920, 0.461200, 0.482230, 1.000000}}, + {10000, {0.000000, -0.42735, -0.42537, -0.41657, -0.38000, -0.32709, -0.23186, -0.07540, 0.031110, 0.083440, 0.206730, 0.346350, 0.478040, 0.480700, 0.477830, 0.472210, 1.000000}}}; + + +std::map> ghiaXVals{ + {100, {0.000000, 0.092330, 0.100910, 0.108900, 0.123170, 0.160770, 0.175070, 0.175270, 0.054540, -0.245330, -0.224450, -0.169140, -0.103130, -0.088640, -0.073910, -0.059060, 0.000000}}, + {1000, {0.000000, 0.274850, 0.290120, 0.303530, 0.326270, 0.370950, 0.330750, 0.322350, 0.024260, -0.31966, -0.42665, -0.51550, -0.39188, -0.33714, -0.27669, -0.21388, 0.000000}}, + {3200, {0.000000, 0.395600, 0.409170, 0.419060, 0.427680, 0.371190, 0.290300, 0.281880, 0.009990, -0.31184, -0.37401, -0.44307, -0.54053, -0.52357, -0.47425, -0.39017, 0.000000}}, + {5000, {0.000000, 0.424470, 0.433290, 0.436480, 0.429510, 0.353680, 0.280660, 0.272800, 0.009450, -0.30018, -0.36214, -0.41442, -0.52876, -0.55408, -0.55069, -0.49774, 0.000000}}, + {10000, {0.00000, 0.43983, 0.43733, 0.43124, 0.41487, 0.35070, 0.28003, 0.27224, 0.00831, -0.30719, -0.36737, -0.41496, -0.45863, -0.49099, -0.52987, -0.54302, 0.000000}}}; + + +} // namespace detail + +template +inline T verifyGhia1982(const int Re, + const std::vector>& xPosVal, + const std::vector>& yPosVal) +{ + //we assume the ghia points are far less than the input points. so, for every ghia point, we try to find the interval in which it lies in the input points + //then linearly interpolate the values between the ends of this interval, compute the different between the interpolated value and ghia value. Finally, we + //report the max different. Note that report the l2 norm of the difference could be also used for grid refinement analysis + + auto calcDiff = [&](const std::vector>& posVal, + const std::array& ghiaPos, + const std::array& ghiaVal) { + std::array diff; + + for (size_t i = 0; i < ghiaPos.size(); ++i) { + const float pos = static_cast(ghiaPos[i]); + const float val = static_cast(ghiaVal[i]); + + const auto itr = std::lower_bound(posVal.begin(), posVal.end(), pos, [=](const std::pair& a, const T& b) { return a.first < b; }); + + const size_t low = (itr == posVal.end()) ? posVal.size() - 1 : itr - posVal.begin(); + const size_t high = (low >= posVal.size() - 1 || itr == posVal.end()) ? low : low + 1; + + const T lowPos = posVal[low].first; + const T highPos = posVal[high].first; + + const T lowVal = posVal[low].second; + const T highVal = posVal[high].second; + + T interp; + if (low == high) { + interp = lowVal; + } else { + interp = lowVal + ((pos - lowPos) / (highPos - lowPos)) * (highVal - lowVal); + } + + diff[i] = std::abs(interp - val) / (val == 0.0 ? 1 : val); + } + return diff; + }; + + + auto difX = calcDiff(xPosVal, detail::ghiaXPos, detail::ghiaXVals[Re]); + auto difY = calcDiff(yPosVal, detail::ghiaYPos, detail::ghiaYVals[Re]); + + T maxDiffX = *std::max_element(difX.begin(), difX.end()); + T maxDiffY = *std::max_element(difY.begin(), difY.end()); + + return std::max(maxDiffX, maxDiffY); +} \ No newline at end of file diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 10c30fea..efb267c6 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR) -add_subdirectory("lbm-lid-driven-cavity-flow") +add_subdirectory(lbm) +# add_subdirectory("lbm-lid-driven-cavity-flow") # add_subdirectory("lbm-flow-over-sphere") diff --git a/benchmarks/lbm-lid-driven-cavity-flow/lbm-lid-driven-cavity-flow.py b/benchmarks/lbm-lid-driven-cavity-flow/lbm-lid-driven-cavity-flow.py index 5aebe104..2ce5dcd3 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/lbm-lid-driven-cavity-flow.py +++ b/benchmarks/lbm-lid-driven-cavity-flow/lbm-lid-driven-cavity-flow.py @@ -4,9 +4,11 @@ GRID_LIST = "dGrid bGrid eGrid".split() STORAGE_FP_LIST = "double float".split() COMPUTE_FP_LIST = "double float".split() -OCC_LIST = "nOCC".split() +OCC_LIST = "nOCC sOCC".split() +HU_LIST = "huGrid huLattice".split() +CURVE_LIST = "sweep morton hilbert".split() WARM_UP_ITER = 10 -MAX_ITER = 100 +MAX_ITER = 10000 REPETITIONS = 5 import subprocess @@ -38,60 +40,79 @@ def countAll(): for COMPUTE_FP in COMPUTE_FP_LIST: for DEVICE_SET in DEVICE_SET_LIST: for GRID in GRID_LIST: - if STORAGE_FP == 'double' and COMPUTE_FP == 'float': - continue + for HU in HU_LIST: + for CURVE in CURVE_LIST: + if STORAGE_FP == 'double' and COMPUTE_FP == 'float': + continue + if STORAGE_FP == 'float' and COMPUTE_FP == 'double': + continue - counter += 1 + counter += 1 return counter SAMPLES = countAll() counter = 0 command = './lbm-lid-driven-cavity-flow' +# command = 'echo' with open(command + '.log', 'w') as fp: for DEVICE_TYPE in DEVICE_TYPE_LIST: DEVICE_SET_LIST = [DEVICE_ID_LIST[0]] if DEVICE_TYPE == 'gpu': for DEVICE in DEVICE_ID_LIST[1:]: DEVICE_SET_LIST.append(DEVICE_SET_LIST[-1] + ' ' + DEVICE) - for OCC in OCC_LIST: - for DOMAIN_SIZE in DOMAIN_SIZE_LIST: - for STORAGE_FP in STORAGE_FP_LIST: - for COMPUTE_FP in COMPUTE_FP_LIST: - for DEVICE_SET in DEVICE_SET_LIST: + for DEVICE_SET in DEVICE_SET_LIST: + for OCC in OCC_LIST: + for DOMAIN_SIZE in DOMAIN_SIZE_LIST: + for STORAGE_FP in STORAGE_FP_LIST: + for COMPUTE_FP in COMPUTE_FP_LIST: for GRID in GRID_LIST: - if STORAGE_FP == 'double' and COMPUTE_FP == 'float': - continue + for HU in HU_LIST: + for CURVE in CURVE_LIST: + + if STORAGE_FP == 'double' and COMPUTE_FP == 'float': + continue + if STORAGE_FP == 'float' and COMPUTE_FP == 'double': + continue + + parameters = [] + parameters.append('--deviceType ' + DEVICE_TYPE) + parameters.append('--deviceIds ' + DEVICE_SET) + parameters.append('--grid ' + GRID) + parameters.append('--domain-size ' + DOMAIN_SIZE) + parameters.append('--warmup-iter ' + str(WARM_UP_ITER)) + parameters.append('--repetitions ' + str(REPETITIONS)) + parameters.append('--max-iter ' + str(MAX_ITER)) + parameters.append( + '--report-filename ' + 'lbm-lid-driven-cavity-flow___' + + DEVICE_TYPE + '_' + + DEVICE_SET.replace(' ', '_') + '-' + + GRID + '_' + + DOMAIN_SIZE + '-' + + STORAGE_FP + '-' + COMPUTE_FP + '-' + + OCC + '-' + + HU + '-' + + CURVE) + parameters.append('--computeFP ' + COMPUTE_FP) + parameters.append('--storageFP ' + STORAGE_FP) + parameters.append('--curve ' + CURVE) - parameters = [] - parameters.append('--deviceType ' + DEVICE_TYPE) - parameters.append('--deviceIds ' + DEVICE_SET) - parameters.append('--grid ' + GRID) - parameters.append('--domain-size ' + DOMAIN_SIZE) - parameters.append('--warmup-iter ' + str(WARM_UP_ITER)) - parameters.append('--repetitions ' + str(REPETITIONS)) - parameters.append('--max-iter ' + str(MAX_ITER)) - parameters.append( - '--report-filename ' + 'lbm-lid-driven-cavity-flow___' + - DEVICE_TYPE + '_' + DOMAIN_SIZE + '_' + - STORAGE_FP + '_' + COMPUTE_FP + '_' + - DEVICE_SET.replace(' ', '_') + '_' + OCC) - parameters.append('--computeFP ' + COMPUTE_FP) - parameters.append('--storageFP ' + STORAGE_FP) - parameters.append('--benchmark') - parameters.append('--' + OCC) + parameters.append('--benchmark') + parameters.append('--' + OCC) + parameters.append('--' + HU) - commandList = [] - commandList.append(command) - for el in parameters: - for s in el.split(): - commandList.append(s) + commandList = [] + commandList.append(command) + for el in parameters: + for s in el.split(): + commandList.append(s) - fp.write("\n-------------------------------------------\n") - fp.write(' '.join(commandList)) - fp.write("\n-------------------------------------------\n") - fp.flush() - subprocess.run(commandList, text=True, stdout=fp) + fp.write("\n-------------------------------------------\n") + fp.write(' '.join(commandList)) + fp.write("\n-------------------------------------------\n") + fp.flush() + print(' '.join(commandList)) + subprocess.run(commandList, text=True, stdout=fp) - counter += 1 - printProgressBar(counter * 100.0 / SAMPLES, 'Progress') + counter += 1 + printProgressBar(counter * 100.0 / SAMPLES, 'Progress') diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/CellType.h b/benchmarks/lbm-lid-driven-cavity-flow/src/CellType.h index 7037b6ae..1ca70c6f 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/CellType.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/CellType.h @@ -22,13 +22,28 @@ struct CellType classification = c; wallNghBitflag = n; } + NEON_CUDA_HOST_DEVICE explicit CellType(Classification c) { classification = c; wallNghBitflag = 0; } + // Converting to int to exportVti + operator int() const { return int(classification); } + + template + static auto isWall(const uint32_t& wallNghBitFlag) + -> bool + { + return wallNghBitFlag & (uint32_t(1) << fwdRegIdx); + } + auto setWall(int fwdRegIdx) + -> void + { + wallNghBitflag = wallNghBitflag | ((uint32_t(1) << fwdRegIdx)); + } uint32_t wallNghBitflag; Classification classification; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Config.cpp b/benchmarks/lbm-lid-driven-cavity-flow/src/Config.cpp index 165dcff5..115125bd 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/Config.cpp +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Config.cpp @@ -41,6 +41,7 @@ auto Config::toString() const -> std::string s << "......... computeType " << c.computeType << std::endl; s << "........... storeType " << c.storeType << std::endl; + s << "............... curve " << c.curve << std::endl; s << ". ............... occ " << Neon::skeleton::OccUtils::toString(c.occ) << std::endl; s << "....... transfer Mode " << Neon::set::TransferModeUtils::toString(c.transferMode) << std::endl; @@ -60,43 +61,58 @@ auto Config::parseArgs(const int argc, char* argv[]) auto& config = *this; auto cli = - ( - clipp::required("--deviceType") & clipp::value("deviceType", config.deviceType) % "Device ids to use", - clipp::required("--deviceIds") & clipp::integers("gpus", config.devices) % "Device ids to use", - clipp::option("--grid") & clipp::value("grid", config.gridType) % "Could be dGrid, eGrid, bGrid", - clipp::option("--domain-size") & clipp::integer("domain_size", config.N) % "Voxels along each dimension of the cube domain", - clipp::option("--warmup-iter") & clipp::integer("warmup_iter", config.benchIniIter) % "Number of iteration for warm up. max_iter = warmup_iter + timed_iters", - clipp::option("--max-iter") & clipp::integer("max_iter", config.benchMaxIter) % "Maximum solver iterations", - clipp::option("--repetitions") & clipp::integer("repetitions", config.repetitions) % "Number of times the benchmark is run.", - clipp::option("--report-filename ") & clipp::value("keeper_filename", config.reportFile) % "Output perf keeper filename", - - clipp::option("--computeFP") & clipp::value("computeFP", config.computeType) % "Could be double or float", - clipp::option("--storageFP") & clipp::value("storageFP", config.storeType) % "Could be double or float", - - ( - (clipp::option("--sOCC").set(config.occ, Neon::skeleton::Occ::standard) % "Standard OCC") | - (clipp::option("--nOCC").set(config.occ, Neon::skeleton::Occ::none) % "No OCC (on by default)")), - ( - (clipp::option("--put").set(config.transferMode, Neon::set::TransferMode::put) % "Set transfer mode to PUT") | - (clipp::option("--get").set(config.transferMode, Neon::set::TransferMode::get) % "Set transfer mode to GET (on by default)")), - ( - (clipp::option("--huLattice").set(config.stencilSemantic, Neon::set::StencilSemantic::streaming) % "Halo update with lattice semantic (on by default)") | - (clipp::option("--huGrid").set(config.stencilSemantic, Neon::set::StencilSemantic::standard) % "Halo update with grid semantic ")), - ( - (clipp::option("--benchmark").set(config.benchmark, true) % "Run benchmark mode") | - (clipp::option("--visual").set(config.benchmark, false) % "Run export partial data")), - - ( - clipp::option("--vti").set(config.vti, true) % "Standard OCC") + (clipp::required("--deviceType") & clipp::value("deviceType", config.deviceType) % "Device ids to use", + clipp::required("--deviceIds") & clipp::integers("gpus", config.devices) % "Device ids to use", + clipp::option("--grid") & clipp::value("grid", config.gridType) % "Could be dGrid, eGrid, bGrid", + clipp::option("--domain-size") & clipp::integer("domain_size", config.N) % "Voxels along each dimension of the cube domain", + clipp::option("--warmup-iter") & clipp::integer("warmup_iter", config.benchIniIter) % "Number of iteration for warm up. max_iter = warmup_iter + timed_iters", + clipp::option("--max-iter") & clipp::integer("max_iter", config.benchMaxIter) % "Maximum solver iterations", + clipp::option("--repetitions") & clipp::integer("repetitions", config.repetitions) % "Number of times the benchmark is run.", + clipp::option("--report-filename ") & clipp::value("keeper_filename", config.reportFile) % "Output perf keeper filename", + + clipp::option("--computeFP") & clipp::value("computeFP", config.computeType) % "Could be double or float", + clipp::option("--storageFP") & clipp::value("storageFP", config.storeType) % "Could be double or float", + + clipp::option("--curve") & clipp::value("curve", config.curve) % "Could be sweep (the default), morton, or hilber", + ( + (clipp::option("--sOCC").set(config.occ, Neon::skeleton::Occ::standard) % "Standard OCC") | + (clipp::option("--nOCC").set(config.occ, Neon::skeleton::Occ::none) % "No OCC (on by default)")), + ( + (clipp::option("--put").set(config.transferMode, Neon::set::TransferMode::put) % "Set transfer mode to PUT") | + (clipp::option("--get").set(config.transferMode, Neon::set::TransferMode::get) % "Set transfer mode to GET (on by default)")), + ( + (clipp::option("--huLattice").set(config.stencilSemantic, Neon::set::StencilSemantic::streaming) % "Halo update with lattice semantic (on by default)") | + (clipp::option("--huGrid").set(config.stencilSemantic, Neon::set::StencilSemantic::standard) % "Halo update with grid semantic ")), + ( + (clipp::option("--benchmark").set(config.benchmark, true) % "Run benchmark mode") | + (clipp::option("--visual").set(config.benchmark, false) % "Run export partial data")), + + ( + clipp::option("--vti").set(config.vti, true) % "Standard OCC") ); + if (!clipp::parse(argc, argv, cli)) { auto fmt = clipp::doc_formatting{}.doc_column(31); std::cout << make_man_page(cli, argv[0], fmt) << '\n'; return -1; } + if (config.curve == "sweep") + config.spaceCurve = Neon::domain::tool::spaceCurves::EncoderType::sweep; + if (config.curve == "morton") + config.spaceCurve = Neon::domain::tool::spaceCurves::EncoderType::morton; + if (config.curve == "hilbert") + config.spaceCurve = Neon::domain::tool::spaceCurves::EncoderType::hilbert; + + if (config.curve != "sweep" && config.curve != "morton" && config.curve != "hilbert") { + auto fmt = clipp::doc_formatting{}.doc_column(31); + std::cout << config.curve << " is not a supported configuration" << std::endl; + std::cout << make_man_page(cli, argv[0], fmt) << '\n'; + return -1; + } + helpSetLbmParameters(); return 0; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Config.h b/benchmarks/lbm-lid-driven-cavity-flow/src/Config.h index af32972e..18695ce4 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/Config.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Config.h @@ -3,6 +3,7 @@ #include #include #include "Neon/core/tools/clipp.h" +#include "Neon/domain/tools/SpaceCurves.h" #include "Neon/skeleton/Skeleton.h" template @@ -16,28 +17,29 @@ struct LbmParameters struct Config { - double Re = 100.; // Reynolds number - double ulb = 0.04; // Velocity in lattice units - int N = 160; // Number of nodes in x-direction - bool benchmark = false; // Run in benchmark mode ? - double max_t = 10.0; // Non-benchmark mode: Total time in dim.less units - int outFrequency = 200; // Non-benchmark mode: Frequency in LU for output of terminal message and profiles (use 0 for no messages) - int dataFrequency = 0; // Non-benchmark mode: Frequency in LU of full data dump (use 0 for no data dump) - int benchIniIter = 1000; // Benchmark mode: Number of warmup iterations - int benchMaxIter = 2000; // Benchmark mode: Total number of iterations - int repetitions = 1; // Benchmark mode: number of time the test is run - std::string deviceType = "gpu"; - std::vector devices = std::vector(0); // Devices for the execution - std::string reportFile = "lbm-lid-driven-cavity-flow"; // Report file name - std::string gridType = "dGrid"; // Neon grid type - Neon::skeleton::Occ occ = Neon::skeleton::Occ::none; // Neon OCC type - Neon::set::TransferMode transferMode = Neon::set::TransferMode::get; // Neon transfer mode for halo update - Neon::set::StencilSemantic stencilSemantic = Neon::set::StencilSemantic::streaming; - bool vti = false; // Export vti file - std::string computeType = "double"; - std::string storeType = "double"; - - LbmParameters mLbmParameters; + double Re = 100.; // Reynolds number + double ulb = 0.04; // Velocity in lattice units + int N = 160; // Number of nodes in x-direction + bool benchmark = false; // Run in benchmark mode ? + double max_t = 10.0; // Non-benchmark mode: Total time in dim.less units + int outFrequency = 200; // Non-benchmark mode: Frequency in LU for output of terminal message and profiles (use 0 for no messages) + int dataFrequency = 0; // Non-benchmark mode: Frequency in LU of full data dump (use 0 for no data dump) + int benchIniIter = 1000; // Benchmark mode: Number of warmup iterations + int benchMaxIter = 2000; // Benchmark mode: Total number of iterations + int repetitions = 1; // Benchmark mode: number of time the test is run + std::string deviceType = "gpu"; + std::vector devices = std::vector(0); // Devices for the execution + std::string reportFile = "lbm-lid-driven-cavity-flow"; // Report file name + std::string gridType = "dGrid"; // Neon grid type + Neon::skeleton::Occ occ = Neon::skeleton::Occ::none; // Neon OCC type + Neon::set::TransferMode transferMode = Neon::set::TransferMode::get; // Neon transfer mode for halo update + Neon::set::StencilSemantic stencilSemantic = Neon::set::StencilSemantic::streaming; + bool vti = false; // Export vti file + std::string computeType = "double"; + std::string storeType = "double"; + std::string curve = "sweep"; + Neon::domain::tool::spaceCurves::EncoderType spaceCurve = Neon::domain::tool::spaceCurves::EncoderType::sweep; + LbmParameters mLbmParameters; auto toString() const -> std::string; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/ContainerFactory.h b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainerFactory.h new file mode 100644 index 00000000..ce5f69a2 --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainerFactory.h @@ -0,0 +1,33 @@ +#include "CellType.h" +#include "D3Q19.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" + +namespace pull { +template +struct ContainerFactory +{ +}; +} // namespace pull + +namespace push { +template +struct ContainerFactory +{ +}; +} // namespace push + +namespace common { +template +struct ContainerFactory +{ +}; +} // namespace common +#include "ContainersD3Q19.h" +#include "ContainersD3Q27.h" \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q19.h b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q19.h new file mode 100644 index 00000000..fcbda83d --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q19.h @@ -0,0 +1,392 @@ +#pragma once + +#include "CellType.h" +#include "D3Q19.h" +#include "DeviceD3Q19.h" +#include "Methods.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" + +namespace pull { +/** + * Specialization for D3Q19 + */ +template +struct ContainerFactory, + Grid_> +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + using PullFunctions = pull::DeviceD3Q19; + using CommonFunctions = common::DeviceD3Q19; + + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "D3Q19_TwoPop_Pull", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL, stencilSemantic); + auto& fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popIn[Lattice::Q]; + PullFunctions::pullStream(gidx, cellInfo.wallNghBitflag, fIn, NEON_OUT popIn); + + Compute rho; + std::array u{.0, .0, .0}; + CommonFunctions::macroscopic(popIn, NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + PullFunctions::collideBgkUnrolled(gidx, + popIn, + rho, u, + usqr, omega, + NEON_OUT fOut); + } + }; + }); + return container; + } + +}; +} // namespace pull +namespace push { +/** + * Specialization for D3Q19 + */ +template +struct ContainerFactory, + Grid_> +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + using PushFunctions = push::DeviceD3Q19; + using CommonFunctions = common::DeviceD3Q19; + + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "D3Q19_TwoPop", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL, stencilSemantic); + auto& fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popIn[Lattice::Q]; + PushFunctions::localLoad(gidx, fIn, NEON_OUT popIn); + + Compute rho; + std::array u{.0, .0, .0}; + CommonFunctions::macroscopic(popIn, + NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + CommonFunctions::collideBgkUnrolled(gidx, + rho, u, + usqr, omega, + NEON_IO popIn); + + PushFunctions::pushStream(gidx, cellInfo.wallNghBitflag, popIn, NEON_OUT fOut); + } + }; + }); + return container; + } + + + static auto + computeWallNghMask(const CellTypeField& infoInField, + CellTypeField& infoOutpeField) + + -> Neon::set::Container + { + Neon::set::Container container = infoInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& infoIn = L.load(infoInField, Neon::Pattern::STENCIL); + auto& infoOut = L.load(infoOutpeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellType = infoIn(gidx, 0); + cellType.wallNghBitflag = 0; + + if (cellType.classification == CellType::bulk) { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GOMemoryId) { + if constexpr (GOMemoryId != Lattice::Memory::center) { + constexpr int BKMemoryId = Lattice::Memory::opposite[GOMemoryId]; + constexpr int BKx = Lattice::Memory::stencil[BKMemoryId].x; + constexpr int BKy = Lattice::Memory::stencil[BKMemoryId].y; + constexpr int BKz = Lattice::Memory::stencil[BKMemoryId].z; + + CellType nghCellType = infoIn.template getNghData(gidx, 0, CellType::undefined)(); + if (nghCellType.classification != CellType::bulk) { + cellType.wallNghBitflag = cellType.wallNghBitflag | ((uint32_t(1) << GOMemoryId)); + } + } + }); + + infoOut(gidx, 0) = cellType; + } + }; + }); + return container; + } +}; +} // namespace push +namespace common { +/** + * Specialization for D3Q19 + */ +template +struct ContainerFactory, + Grid_> +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + using PullFunctions = pull::DeviceD3Q19; + using PushFunctions = push::DeviceD3Q19; + using CommonFunctions = common::DeviceD3Q19; + + template + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + if constexpr (method == int(Method::push)) { + using Factory = push::ContainerFactory, + Grid_>; + return Factory::iteration(stencilSemantic, + fInField, + fOutField, + omega, + fOutField); + } + if constexpr (method == int(Method::pull)) { + using Factory = pull::ContainerFactory, + Grid_>; + return Factory::iteration(stencilSemantic, + fInField, + fOutField, + omega, + fOutField); + } + } + + + static auto + computeWallNghMask(const CellTypeField& infoInField, + CellTypeField& infoOutpeField) + + -> Neon::set::Container + { + Neon::set::Container container = infoInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& infoIn = L.load(infoInField, Neon::Pattern::STENCIL); + auto& infoOut = L.load(infoOutpeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellType = infoIn(gidx, 0); + cellType.wallNghBitflag = 0; + + if (cellType.classification == CellType::bulk) { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GOMemoryId) { + if constexpr (GOMemoryId != Lattice::Memory::center) { + constexpr int BKMemoryId = Lattice::Memory::opposite[GOMemoryId]; + constexpr int BKx = Lattice::Memory::stencil[BKMemoryId].x; + constexpr int BKy = Lattice::Memory::stencil[BKMemoryId].y; + constexpr int BKz = Lattice::Memory::stencil[BKMemoryId].z; + + CellType nghCellType = infoIn.template getNghData(gidx, 0, CellType::undefined)(); + if (nghCellType.classification != CellType::bulk) { + cellType.wallNghBitflag = cellType.wallNghBitflag | ((uint32_t(1) << GOMemoryId)); + } + } + }); + + infoOut(gidx, 0) = cellType; + } + }; + }); + return container; + } + + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + Neon::set::Container container = + fInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL); + auto& rhoXpu = L.load(rhoField); + auto& uXpu = L.load(uField); + + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + Compute rho = 0; + std::array u{.0, .0, .0}; + + Storage popIn[Lattice::Q]; + CommonFunctions::localLoad(gidx, fIn, NEON_OUT popIn); + + if (cellInfo.classification == CellType::bulk) { + CommonFunctions::macroscopic(popIn, NEON_OUT rho, NEON_OUT u); + } else { + if (cellInfo.classification == CellType::movingWall) { + rho = 1.0; + u = std::array{static_cast(popIn[0]) / static_cast(6. * 1. / 18.), + static_cast(popIn[1]) / static_cast(6. * 1. / 18.), + static_cast(popIn[2]) / static_cast(6. * 1. / 18.)}; + } + } + + rhoXpu(gidx, 0) = static_cast(rho); + uXpu(gidx, 0) = static_cast(u[0]); + uXpu(gidx, 1) = static_cast(u[1]); + uXpu(gidx, 2) = static_cast(u[2]); + }; + }); + return container; + } + + static auto + problemSetup(PopField& fInField /*! inpout population field */, + PopField& fOutField, + CellTypeField& cellTypeField, + Neon::double_3d ulid, + double ulb) + + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM_iteration", + [&, ulid, ulb](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, Neon::Pattern::MAP); + auto& fOut = L.load(fOutField, Neon::Pattern::MAP); + auto& cellInfoPartition = L.load(cellTypeField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + const auto globalIdx = fIn.getGlobalIndex(gidx); + const auto domainDim = fIn.getDomainSize(); + + CellType flagVal; + flagVal.classification = CellType::bulk; + flagVal.wallNghBitflag = 0; + + typename Lattice::Precision::Storage popVal = 0; + + if (globalIdx.x == 0 || globalIdx.x == domainDim.x - 1 || + globalIdx.y == 0 || globalIdx.y == domainDim.y - 1 || + globalIdx.z == 0 || globalIdx.z == domainDim.z - 1) { + flagVal.classification = CellType::bounceBack; + + if (globalIdx.y == domainDim.y - 1) { + flagVal.classification = CellType::movingWall; + } + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + if (globalIdx.y == domainDim.y - 1) { + popVal = -6. * Lattice::Memory::template getT() * ulb * + (Lattice::Memory::template getDirection().v[0] * ulid.v[0] + + Lattice::Memory::template getDirection().v[1] * ulid.v[1] + + Lattice::Memory::template getDirection().v[2] * ulid.v[2]); + } else { + popVal = 0; + } + fIn(gidx, q) = popVal; + fOut(gidx, q) = popVal; + }); + } else { + flagVal.classification = CellType::bulk; + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + fIn(gidx, q) = Lattice::Memory::template getT(); + fOut(gidx, q) = Lattice::Memory::template getT(); + }); + } + cellInfoPartition(gidx, 0) = flagVal; + }; + }); + return container; + } +}; +} // namespace common \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q27.h b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q27.h new file mode 100644 index 00000000..d5d024ea --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/ContainersD3Q27.h @@ -0,0 +1,227 @@ +#pragma once + +#include "CellType.h" +#include "D3Q27.h" +#include "DeviceD3Q27.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" +#if 0 +/** + * Specialization for D3Q27 + */ +template +struct ContainerFactory, + Grid_> +{ + using Lattice = D3Q27; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + using Functions = DeviceD3Q19; + + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "D3Q19_TwoPop", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL, stencilSemantic); + auto& fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popIn[Lattice::Q]; + Functions::pullStream(gidx, cellInfo.wallNghBitflag, fIn, NEON_OUT popIn); + + Compute rho; + std::array u{.0, .0, .0}; + Functions::macroscopic(popIn, NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + Functions::collideBgkUnrolled(gidx, + popIn, + rho, u, + usqr, omega, + NEON_OUT fOut); + } + }; + }); + return container; + } + + + static auto + computeWallNghMask(const CellTypeField& infoInField, + CellTypeField& infoOutpeField) + + -> Neon::set::Container + { + Neon::set::Container container = infoInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& infoIn = L.load(infoInField, Neon::Pattern::STENCIL); + auto& infoOut = L.load(infoOutpeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellType = infoIn(gidx, 0); + cellType.wallNghBitflag = 0; + + if (cellType.classification == CellType::bulk) { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GOMemoryId) { + if constexpr (GOMemoryId != Lattice::Memory::center) { + constexpr int BKMemoryId = Lattice::Memory::opposite[GOMemoryId]; + constexpr int BKx = Lattice::Memory::stencil[BKMemoryId].x; + constexpr int BKy = Lattice::Memory::stencil[BKMemoryId].y; + constexpr int BKz = Lattice::Memory::stencil[BKMemoryId].z; + + CellType nghCellType = infoIn.template getNghData(gidx, 0, CellType::undefined)(); + if (nghCellType.classification != CellType::bulk) { + cellType.wallNghBitflag = cellType.wallNghBitflag | ((uint32_t(1) << GOMemoryId)); + } + } + }); + + infoOut(gidx, 0) = cellType; + } + }; + }); + return container; + } + + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL); + auto& rhoXpu = L.load(rhoField); + auto& uXpu = L.load(uField); + + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + Compute rho = 0; + std::array u{.0, .0, .0}; + Storage popIn[Lattice::Q]; + + if (cellInfo.classification == CellType::bulk) { + + Functions::pullStream(gidx, cellInfo.wallNghBitflag, fIn, NEON_OUT popIn); + Functions::macroscopic(popIn, NEON_OUT rho, NEON_OUT u); + + } else { + if (cellInfo.classification == CellType::movingWall) { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GORegisterId) { + if constexpr (GORegisterId == Lattice::Registers::center) { + popIn[Lattice::Registers::center] = fIn(gidx, Lattice::Memory::center); + } else { + popIn[GORegisterId] = fIn(gidx, Lattice::Memory::template mapFromRegisters()); + } + }); + + rho = 1.0; + u = std::array{static_cast(popIn[0]) / static_cast(6. * 1. / 18.), + static_cast(popIn[1]) / static_cast(6. * 1. / 18.), + static_cast(popIn[2]) / static_cast(6. * 1. / 18.)}; + } + } + + rhoXpu(gidx, 0) = static_cast(rho); + uXpu(gidx, 0) = static_cast(u[0]); + uXpu(gidx, 1) = static_cast(u[1]); + uXpu(gidx, 2) = static_cast(u[2]); + }; + }); + return container; + } + + static auto + problemSetup(PopField& fInField /*! inpout population field */, + PopField& fOutField, + CellTypeField& cellTypeField, + Neon::double_3d ulid, + double ulb) + + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM_iteration", + [&, ulid, ulb](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, Neon::Pattern::MAP); + auto& fOut = L.load(fOutField, Neon::Pattern::MAP); + auto& cellInfoPartition = L.load(cellTypeField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + const auto globlalIdx = fIn.getGlobalIndex(gidx); + const auto domainDim = fIn.getDomainSize(); + CellType flagVal; + flagVal.classification = CellType::bulk; + flagVal.wallNghBitflag = 0; + typename Lattice::Precision::Storage val = 0; + + if (globlalIdx.x == 0 || globlalIdx.x == domainDim.x - 1 || + globlalIdx.y == 0 || globlalIdx.y == domainDim.y - 1 || + globlalIdx.z == 0 || globlalIdx.z == domainDim.z - 1) { + flagVal.classification = CellType::bounceBack; + + if (globlalIdx.y == domainDim.y - 1) { + flagVal.classification = CellType::movingWall; + } + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + if (globlalIdx.y == domainDim.y - 1) { + val = -6. * Lattice::Memory::template getT() * ulb * + (Lattice::Memory::template getDirection().v[0] * ulid.v[0] + + Lattice::Memory::template getDirection().v[1] * ulid.v[1] + + Lattice::Memory::template getDirection().v[2] * ulid.v[2]); + } else { + val = 0; + } + fIn(gidx, q) = val; + fOut(gidx, q) = val; + }); + } else { + flagVal.classification = CellType::bulk; + cellInfoPartition(gidx, 0) = flagVal; + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + fIn(gidx, q) = Lattice::Memory::template getT(); + fOut(gidx, q) = Lattice::Memory::template getT(); + }); + } + }; + }); + return container; + } +}; +#endif \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q19.h b/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q19.h index 15e8e0b1..4f9d4c8b 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q19.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q19.h @@ -3,113 +3,72 @@ #include "Neon/Neon.h" #include "Neon/set/Backend.h" #include "Neon/set/memory/memSet.h" +#include "Precision.h" -template -struct D3Q19Template + +/** In each lattice we define two indexing schema + * - the first one works at the register level. For this one we relay on the same sequence of directions defined by the STLBM code. + * - the second one works at the memory (RAM) level and it defines how lattice direction are stored in Neon fields. + * + * We keep this two aspect separate to experiment on different order of directions in memory as the order will impact the number of halo update transitions. + * + */ +template +struct D3Q19 { public: + D3Q19() = delete; + static constexpr int Q = 19; /** number of directions */ static constexpr int D = 3; /** Space dimension */ + using Precision = Precision_; + using Self = D3Q19; - static constexpr int centerDirection = 9; /** Position of direction {0,0,0} */ - static constexpr int goRangeBegin = 0; /** Symmetry is represented as "go" direction and the "back" their opposite */ - static constexpr int goRangeEnd = 8; - static constexpr int goBackOffset = 10; /** Offset to compute apply symmetry */ - + static constexpr int RegisterMapping = 1; + static constexpr int MemoryMapping = 2; - explicit D3Q19Template(const Neon::Backend& backend) + struct Registers { - // The discrete velocities of the Lattice mesh. - c_vect = std::vector( - { - {-1, 0, 0} /*! 0 Symmetry first section (GO) */, - {0, -1, 0} /*! 1 */, - {0, 0, -1} /*! 2 */, - {-1, -1, 0} /*! 3 */, - {-1, 1, 0} /*! 4 */, - {-1, 0, -1} /*! 5 */, - {-1, 0, 1} /*! 6 */, - {0, -1, -1} /*! 7 */, - {0, -1, 1} /*! 8 */, - {0, 0, 0} /*! 9 The center */, - {1, 0, 0} /*! 10 Symmetry mirror section (BK) */, - {0, 1, 0} /*! 11 */, - {0, 0, 1} /*! 12 */, - {1, 1, 0} /*! 13 */, - {1, -1, 0} /*! 14 */, - {1, 0, 1} /*! 15 */, - {1, 0, -1} /*! 16 */, - {0, 1, 1} /*! 17 */, - {0, 1, -1} /*! 18 */, - }); - - auto c_neon = backend.devSet().newMemSet( - Neon::DataUse::HOST_DEVICE, - 1, - Neon::MemoryOptions(), - backend.devSet().newDataSet([&](Neon::SetIdx const&, auto& val) { - val = c_vect.size(); - })); - - for (Neon::SetIdx i = 0; i < backend.devSet().setCardinality(); i++) { - for (int j = 0; j < int(c_vect.size()); j++) { - c_neon.eRef(i, j).x = static_cast(c_vect[j].x); - c_neon.eRef(i, j).y = static_cast(c_vect[j].y); - c_neon.eRef(i, j).z = static_cast(c_vect[j].z); - } - } - // The opposite of a given direction. - std::vector opp_vect = { - 10 /*! 0 */, - 11 /*! 1 */, - 12 /*! 2 */, - 13 /*! 3 */, - 14 /*! 4 */, - 15 /*! 5 */, - 16 /*! 6 */, - 17 /*! 7 */, - 18 /*! 8 */, - 9 /*! 9 */, - 0 /*! 10 */, - 1 /*! 11 */, - 2 /*! 12 */, - 3 /*! 13 */, - 4 /*! 14 */, - 5 /*! 15 */, - 6 /*! 16 */, - 7 /*! 17 */, - 8 /*! 18 */, - }; + using Self = D3Q19::Registers; + static constexpr std::array stencil{ + Neon::index_3d(-1, 0, 0), + Neon::index_3d(0, -1, 0), + Neon::index_3d(0, 0, -1), + Neon::index_3d(-1, -1, 0), + Neon::index_3d(-1, 1, 0), + Neon::index_3d(-1, 0, -1), + Neon::index_3d(-1, 0, 1), + Neon::index_3d(0, -1, -1), + Neon::index_3d(0, -1, 1), + Neon::index_3d(0, 0, 0), + Neon::index_3d(1, 0, 0), + Neon::index_3d(0, 1, 0), + Neon::index_3d(0, 0, 1), + Neon::index_3d(1, 1, 0), + Neon::index_3d(1, -1, 0), + Neon::index_3d(1, 0, 1), + Neon::index_3d(1, 0, -1), + Neon::index_3d(0, 1, 1), + Neon::index_3d(0, 1, -1)}; + + static constexpr int center = 9; /** Position of direction {0,0,0} */ - { // Check correctness of opposite - for (int i = 0; i < static_cast(c_vect.size()); i++) { - auto point = c_vect[i]; - auto opposite = point * -1; - if (opposite != c_vect[opp_vect[i]]) { - Neon::NeonException exp(""); - exp << "Incompatible opposite"; - NEON_THROW(exp); + template + static constexpr auto getOpposite() + -> int + { + auto opposite3d = stencil[go] * -1; + for (int i = 0; i < Q; ++i) { + if (stencil[i] == opposite3d) { + return i; } } } - this->opp = backend.devSet().newMemSet( - Neon::DataUse::HOST_DEVICE, - 1, - Neon::MemoryOptions(), - backend.devSet().newDataSet([&](Neon::SetIdx const&, auto& val) { - val = opp_vect.size(); - })); - - - for (Neon::SetIdx i = 0; i < backend.devSet().setCardinality(); i++) { - for (size_t j = 0; j < opp_vect.size(); j++) { - this->opp.eRef(i, j, 0) = opp_vect[j]; - } - } + static constexpr std::array opposite{ + 10, 11, 12, 13, 14, 15, 16, 17, 18, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8}; - // The lattice weights. - t_vect = { + static constexpr std::array t{ 1. / 18. /*! 0 */, 1. / 18. /*! 1 */, 1. / 18. /*! 2 */, @@ -128,48 +87,195 @@ struct D3Q19Template 1. / 36. /*! 15 */, 1. / 36. /*! 16 */, 1. / 36. /*! 17 */, - 1. / 36. /*! 18 */, + 1. / 36. /*! 18 */ }; - this->t = backend.devSet().newMemSet( - Neon::DataUse::HOST_DEVICE, - 1, - Neon::MemoryOptions(), - backend.devSet().newDataSet([&](Neon::SetIdx const&, auto&val) { - val= opp_vect.size(); - })); + static constexpr int fwdRegIdxListLen = (Q-1)/2; + static constexpr std::array fwdRegIdxList{0, 1, 2, 3, 4, 5, 6, 7, 8}; + template + static inline NEON_CUDA_HOST_DEVICE auto + getCk_u(std::array const& u) -> Compute + { + if constexpr (tegIdx == 0 || tegIdx == 9) { + return u[0]; + } + if constexpr (tegIdx == 1 || tegIdx == 10) { + return u[1]; + } + if constexpr (tegIdx == 2 || tegIdx == 11) { + return u[2]; + } + if constexpr (tegIdx == 3 || tegIdx == 12) { + return u[0] + u[1]; + } + if constexpr (tegIdx == 4 || tegIdx == 13) { + return u[0] - u[1]; + } + if constexpr (tegIdx == 5 || tegIdx == 14) { + return u[0] + u[2]; + } + if constexpr (tegIdx == 6 || tegIdx == 15) { - for (Neon::SetIdx i = 0; i < backend.devSet().setCardinality(); i++) { - for (size_t j = 0; j < t_vect.size(); j++) { - this->t.eRef(i, j, 0) = t_vect[j]; + return u[0] - u[2]; + } + if constexpr (tegIdx == 7 || tegIdx == 16) { + + return u[1] + u[2]; + } + if constexpr (tegIdx == 8 || tegIdx == 17) { + return u[1] - u[2]; } } + }; + + struct Memory + { + using Self = D3Q19::Memory; + + static constexpr std::array stencil{ + Neon::index_3d(-1, 0, 0), + Neon::index_3d(0, -1, 0), + Neon::index_3d(0, 0, -1), + Neon::index_3d(-1, -1, 0), + Neon::index_3d(-1, 1, 0), + Neon::index_3d(-1, 0, -1), + Neon::index_3d(-1, 0, 1), + Neon::index_3d(0, -1, -1), + Neon::index_3d(0, -1, 1), + Neon::index_3d(0, 0, 0), + Neon::index_3d(1, 0, 0), + Neon::index_3d(0, 1, 0), + Neon::index_3d(0, 0, 1), + Neon::index_3d(1, 1, 0), + Neon::index_3d(1, -1, 0), + Neon::index_3d(1, 0, 1), + Neon::index_3d(1, 0, -1), + Neon::index_3d(0, 1, 1), + Neon::index_3d(0, 1, -1)}; + + + static constexpr int center = 9; /** Position of direction {0,0,0} */ + + static constexpr std::array toRegisters{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; + + static constexpr std::array toMemory{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; - if (backend.runtime() == Neon::Runtime::stream) { - this->c.template update(backend.streamSet(0), Neon::DeviceType::CUDA); - this->opp.template update(backend.streamSet(0), Neon::DeviceType::CUDA); - this->t.template update(backend.streamSet(0), Neon::DeviceType::CUDA); + + template + NEON_CUDA_HOST_DEVICE static constexpr auto mapToRegisters() + -> int + { + return toRegisters[go]; } - } + template + NEON_CUDA_HOST_DEVICE static constexpr auto mapFromRegisters() + -> int + { + return toMemory[go]; + } - template - static constexpr auto getOpposite() - -> int - { - if constexpr (go == centerDirection) - return centerDirection; - if constexpr (go <= goRangeEnd) - return go + goBackOffset; - if constexpr (go <= goRangeEnd + goBackOffset) - return go - goBackOffset; - } + template + NEON_CUDA_HOST_DEVICE static constexpr auto getOpposite() + -> int + { + return opposite[go]; + } + + static constexpr std::array opposite{ + 10, 11, 12, 13, 14, 15, 16, 17, 18, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8}; + + template + static constexpr auto helpGetValueforT() + -> typename Precision::Storage + { + auto goInRegisterSpace = Self::template mapToRegisters(); + return Registers::t[goInRegisterSpace]; + } + + template + struct MemMapper + { + constexpr static int fwMemIdx = fwMemIdx_; + constexpr static int fwX = Memory::stencil[fwMemIdx].x; + constexpr static int fwY = Memory::stencil[fwMemIdx].y; + constexpr static int fwZ = Memory::stencil[fwMemIdx].z; + constexpr static int bkMemIdx = Memory::opposite[fwMemIdx]; + constexpr static int bkX = Memory::stencil[bkMemIdx].x; + constexpr static int bkY = Memory::stencil[bkMemIdx].y; + constexpr static int bkZ = Memory::stencil[bkMemIdx].z; - Neon::set::MemSet c; - Neon::set::MemSet opp; - Neon::set::MemSet t; - std::vector t_vect; - std::vector c_vect; + constexpr static int fwRegIdx = Memory::template mapToRegisters(); + constexpr static int centerRegIdx = Registers::center; + constexpr static int centerMemIdx = Memory::center; + }; + + template + struct RegMapper + { + constexpr static int fwRegIdx = fwRegIdx_; + constexpr static int bkRegIdx = Registers::opposite[fwRegIdx]; + constexpr static int fwMemIdx = Registers::template mapToMemory(); + constexpr static int bkMemIdx = Registers::template mapToMemory(); + constexpr static int centerRegIdx = Registers::center; + constexpr static int centerMemIdx = Memory::center; + }; + + static constexpr std::array t{ + 1. / 18. /*! 0 */, + 1. / 18. /*! 1 */, + 1. / 18. /*! 2 */, + 1. / 36. /*! 3 */, + 1. / 36. /*! 4 */, + 1. / 36. /*! 5 */, + 1. / 36. /*! 6 */, + 1. / 36. /*! 7 */, + 1. / 36. /*! 8 */, + 1. / 3. /*! 9 */, + 1. / 18. /*! 10 */, + 1. / 18. /*! 11 */, + 1. / 18. /*! 12 */, + 1. / 36. /*! 13 */, + 1. / 36. /*! 14 */, + 1. / 36. /*! 15 */, + 1. / 36. /*! 16 */, + 1. / 36. /*! 17 */, + 1. / 36. /*! 18 */}; + + template + NEON_CUDA_HOST_DEVICE static constexpr auto getT() + -> typename Precision::Storage + { + return t[direction]; + } + template + NEON_CUDA_HOST_DEVICE static constexpr auto getDirection() + -> typename Neon::index_3d + { + return stencil[direction]; + } + }; + + + public: + template + static auto getDirectionAsVector() + -> std::vector + { + std::vector vec; + if constexpr (mappingType == RegisterMapping) { + for (auto const& a : Registers::stencil) { + vec.push_back(a); + } + } else if constexpr (mappingType == MemoryMapping) { + for (auto const& a : Memory::stencil) { + vec.push_back(a); + } + } + return vec; + } }; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q27.h b/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q27.h new file mode 100644 index 00000000..9f2c7f95 --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/D3Q27.h @@ -0,0 +1,200 @@ +#pragma once + +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/memory/memSet.h" +#include "Precision.h" + + +/** In each lattice we define two indexing schema + * - the first one works at the register level. For this one we relay on the same sequence of directions defined by the STLBM code. + * - the second one works at the memory (RAM) level and it defines how lattice direction are stored in Neon fields. + * + * We keep this two aspect separate to experiment on different order of directions in memory as the order will impact the number of halo update transitions. + * + */ +template +struct D3Q27 +{ + public: + D3Q27() = delete; + + static constexpr int Q = 27; /** number of directions */ + static constexpr int D = 3; /** Space dimension */ + using Precision = Precision_; + using Self = D3Q27; + + static constexpr int RegisterMapping = 1; + static constexpr int MemoryMapping = 2; + + struct Registers + { + using Self = D3Q27::Registers; + static constexpr std::array stencil{ + Neon::index_3d(-1, 0, 0), + Neon::index_3d(0, -1, 0), + Neon::index_3d(0, 0, -1), + Neon::index_3d(-1, -1, 0), + Neon::index_3d(-1, 1, 0), + Neon::index_3d(-1, 0, -1), + Neon::index_3d(-1, 0, 1), + Neon::index_3d(0, -1, -1), + Neon::index_3d(0, -1, 1), + Neon::index_3d(-1, -1, -1), + Neon::index_3d(-1, -1, 1), + Neon::index_3d(-1, 1, -1), + Neon::index_3d(-1, 1, 1), + Neon::index_3d(0, 0, 0), + Neon::index_3d(1, 0, 0), + Neon::index_3d(0, 1, 0), + Neon::index_3d(0, 0, 1), + Neon::index_3d(1, 1, 0), + Neon::index_3d(1, -1, 0), + Neon::index_3d(1, 0, 1), + Neon::index_3d(1, 0, -1), + Neon::index_3d(0, 1, 1), + Neon::index_3d(0, 1, -1), + Neon::index_3d(1, 1, 1), + Neon::index_3d(1, 1, -1), + Neon::index_3d(1, -1, 1), + Neon::index_3d(1, -1, -1)}; + + static constexpr int center = 13; /** Position of direction {0,0,0} */ + + template + static constexpr auto getOpposite() + -> int + { + auto opposite3d = stencil[go] * -1; + for (int i = 0; i < Q; ++i) { + if (stencil[i] == opposite3d) { + return i; + } + } + } + + static constexpr std::array opposite{ + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 13, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 + }; + + static constexpr std::array t{ + 2. / 27., 2. / 27., 2. / 27., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., + 1. / 216., 1. / 216., 1. / 216., 1. / 216., + 8. / 27., + 2. / 27., 2. / 27., 2. / 27., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., + 1. / 216., 1. / 216., 1. / 216., 1. / 216.}; + }; + + struct Memory + { + using Self = D3Q27::Memory; + static constexpr std::array stencil{ + Neon::index_3d(-1, 0, 0), + Neon::index_3d(0, -1, 0), + Neon::index_3d(0, 0, -1), + Neon::index_3d(-1, -1, 0), + Neon::index_3d(-1, 1, 0), + Neon::index_3d(-1, 0, -1), + Neon::index_3d(-1, 0, 1), + Neon::index_3d(0, -1, -1), + Neon::index_3d(0, -1, 1), + Neon::index_3d(-1, -1, -1), + Neon::index_3d(-1, -1, 1), + Neon::index_3d(-1, 1, -1), + Neon::index_3d(-1, 1, 1), + Neon::index_3d(0, 0, 0), + Neon::index_3d(1, 0, 0), + Neon::index_3d(0, 1, 0), + Neon::index_3d(0, 0, 1), + Neon::index_3d(1, 1, 0), + Neon::index_3d(1, -1, 0), + Neon::index_3d(1, 0, 1), + Neon::index_3d(1, 0, -1), + Neon::index_3d(0, 1, 1), + Neon::index_3d(0, 1, -1), + Neon::index_3d(1, 1, 1), + Neon::index_3d(1, 1, -1), + Neon::index_3d(1, -1, 1), + Neon::index_3d(1, -1, -1)}; + + + static constexpr int center = 13; /** Position of direction {0,0,0} */ + + template + static constexpr auto mapToRegisters() + -> int + { + auto direction = stencil[go]; + for (int i = 0; i < Q; ++i) { + if (Registers::stencil[i] == direction) { + return i; + } + } + } + + template + static constexpr auto mapFromRegisters() + -> int + { + auto direction = Registers::stencil[go]; + for (int i = 0; i < Q; ++i) { + if (Self::stencil[i] == direction) { + return i; + } + } + } + + template + static constexpr auto getOpposite() + -> int + { + auto opposite3d = stencil[go] * -1; + for (int i = 0; i < Q; ++i) { + if (stencil[i] == opposite3d) { + return i; + } + } + } + + static constexpr std::array opposite{ + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 13, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 + }; + + template + static constexpr auto helpGetValueforT() + -> typename Precision::Storage + { + auto goInRegisterSpace = Self::template mapToRegisters(); + return Registers::t[goInRegisterSpace]; + } + + static constexpr std::array t{ + 2. / 27., 2. / 27., 2. / 27., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., + 1. / 216., 1. / 216., 1. / 216., 1. / 216., + 8. / 27., + 2. / 27., 2. / 27., 2. / 27., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., 1. / 54., + 1. / 216., 1. / 216., 1. / 216., 1. / 216.}; + }; + + public: + template + static auto getDirectionAsVector() + -> std::vector + { + std::vector vec; + if constexpr (mappingType == RegisterMapping) { + for (auto const& a : Registers::stencil) { + vec.push_back(a); + } + } else if constexpr (mappingType == MemoryMapping) { + for (auto const& a : Memory::stencil) { + vec.push_back(a); + } + } + return vec; + } +}; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q19.h b/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q19.h new file mode 100644 index 00000000..fff6f2b3 --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q19.h @@ -0,0 +1,214 @@ +#pragma once +#include "CellType.h" +#include "D3Q19.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" + +namespace pull { +template +struct DeviceD3Q19 +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + + static inline NEON_CUDA_HOST_DEVICE auto + pullStream(Idx const& gidx, + const uint32_t& wallBitFlag, + typename PopField::Partition const& fin, + NEON_OUT Storage popIn[Lattice::Q]) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto fwMemIdx) { + using M = typename Lattice::template MappersIdxSetWithFwdMem; + + if constexpr (fwMemIdx == Lattice::Memory::center) { + popIn[M::centerRegIdx] = fin(gidx, M::centerMemIdx); + } else { + if (CellType::isWall()) { + popIn[M::fwRegIdx] = fin(gidx, M::bkMemIdx) + + fin.template getNghData(gidx, M::bkMemIdx)(); + } else { + popIn[M::fwRegIdx] = fin.template getNghData(gidx, fwMemIdx)(); + } + } + }); + } +}; + +#undef CAST_TO_COMPUTE +} // namespace pull + +namespace push { +template +struct DeviceD3Q19 +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + + static inline NEON_CUDA_HOST_DEVICE auto + pushStream(Idx const& gidx, + const uint32_t& wallNghBitFlag, + NEON_OUT Storage pOut[Lattice::Q], + NEON_OUT typename PopField::Partition const& fOut) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto fwMemIdx_) { + using M = typename Lattice::template MappersIdxSetWithFwdMem; + + if constexpr (M::fwMemIdx == M::centerMemIdx) { + fOut(gidx, M::fwMemIdx) = pOut[M::fwRegIdx]; + } else { + if (CellType::isWall()) { + // fout(i, opp[k]) = + // pop_out + + // f(nb, k); + fOut(gidx, M::bkMemIdx) = + pOut[M::fwdRegIdx] + + fOut.template getNghData(gidx, M::fwMemIdx)(); + } else { + // fout(nb, k) = pop_out; + fOut.writeNgh(gidx, M::fwMemIdx, pOut[M::fwdRegIdx]); + } + } + }); + } + + static inline NEON_CUDA_HOST_DEVICE auto + localLoad(Idx const& gidx, + NEON_IN typename PopField::Partition const& fOut, + Storage NEON_RESTRICT pOut[Lattice::Q]) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto fwMemIdx_) { + using M = typename Lattice::template MappersIdxSetWithFwdMem; + pOut[M::fwdRegIdx] = fOut(gidx, M::fwMemIdx); + }); + } +}; +} // namespace push + + +namespace common { +template +struct DeviceD3Q19 +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + + static inline NEON_CUDA_HOST_DEVICE auto + macroscopic(const Storage pop[Lattice::Q], + NEON_OUT Compute& rho, + NEON_OUT std::array& u) + -> void + { + +#define POP(IDX) static_cast(pop[IDX]) + const Compute X_M1 = POP(0) + POP(3) + POP(4) + POP(5) + POP(6); + const Compute X_P1 = POP(10) + POP(13) + POP(14) + POP(15) + POP(16); + const Compute X_0 = POP(9) + POP(1) + POP(2) + POP(7) + POP(8) + POP(11) + POP(12) + POP(17) + POP(18); + + const Compute Y_M1 = POP(1) + POP(3) + POP(7) + POP(8) + POP(14); + const Compute Y_P1 = POP(4) + POP(11) + POP(13) + POP(17) + POP(18); + + const Compute Z_M1 = POP(2) + POP(5) + POP(7) + POP(16) + POP(18); + const Compute Z_P1 = POP(6) + POP(8) + POP(12) + POP(15) + POP(17); +#undef POP + + rho = X_M1 + X_P1 + X_0; + u[0] = (X_P1 - X_M1) / rho; + u[1] = (Y_P1 - Y_M1) / rho; + u[2] = (Z_P1 - Z_M1) / rho; + } + + + static inline NEON_CUDA_HOST_DEVICE auto + collideBgkUnrolled(Idx const& i /*! Compute iterator */, + Compute const& rho /*! Density */, + std::array const& u /*! Velocity */, + Compute const& usqr /*! Usqr */, + Compute const& omega /*! Omega */, + NEON_IO Storage pop[Lattice::Q]) + + -> void + { + + constexpr Compute c1over18 = 1. / 18.; + constexpr Compute c1over36 = 1. / 36.; + constexpr Compute c4dot5 = 4.5; + constexpr Compute c3 = 3.; + constexpr Compute c1 = 1.; + constexpr Compute c6 = 6.; + + constexpr int regCenter = Lattice::Registers::center; + constexpr int regFir = Lattice::Registers::center; + + Neon::ConstexprFor<0, Lattice::Registers::fwdRegIdxListLen, 1>( + [&](auto fwdRegIdxListIdx) { + using M = typename Lattice::template RegMapper; + using T = typename Lattice::Registers; + + Compute eqFw; + Compute eqBk; + + const Compute ck_u = T::template getCk_u(u); + // double eq = rho * t[k] * + // (1. + + // 3. * ck_u + + // 4.5 * ck_u * ck_u - + // usqr); + eqFw = rho * T::t[M::fwRegIdx] * + (c1 + + c3 * ck_u + + c4dot5 * ck_u * ck_u - + usqr); + + // double eqopp = eq - 6.* rho * t[k] * ck_u; + eqBk = eqFw - + c6 * rho * c1over36 * T::t[M::fwRegIdx] * ck_u; + + // pop_out = (1. - omega) * fin(i, k) + omega * eq; + pop[M::fwRegIdx] = (c1 - omega) * static_cast(pop[M::fwRegIdx]) + omega * eqFw; + // pop_out_opp = (1. - omega) * fin(i, opp[k]) + omega * eqopp; + pop[M::bkRegIdx] = (c1 - omega) * static_cast(pop[M::bkRegIdx]) + omega * eqBk; + }); + { // Center; + using T = typename Lattice::Registers; + using M = typename Lattice::template RegMapper; + // eq = rho * t[k] * (1. - usqr); + const Compute eqCenter = rho * T::t[M::fwRegIdx] * (c1 - usqr); + // fout(i, k) = (1. - omega) * fin(i, k) + omega * eq; + pop[Lattice::Registers::center] = (c1 - omega) * static_cast(pop[M::fwRegIdx]) + omega * eqCenter; + } + } +}; +} // namespace common \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q27.h b/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q27.h new file mode 100644 index 00000000..f977492b --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/DeviceD3Q27.h @@ -0,0 +1,217 @@ +#pragma once +#include "CellType.h" +#include "D3Q27.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" + + +template +struct DeviceD3Q27 +{ + using Lattice = D3Q27; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + + static inline NEON_CUDA_HOST_DEVICE auto + pullStream(Idx const& gidx, + const uint32_t& wallBitFlag, + typename PopField::Partition const& fin, + NEON_OUT Storage popIn[Lattice::Q]) + { + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GOMemoryId) { + if constexpr (GOMemoryId == Lattice::Memory::center) { + popIn[Lattice::Registers::center] = fin(gidx, Lattice::Memory::center); + } else { + constexpr int BKMemoryId = Lattice::Memory::opposite[GOMemoryId]; + constexpr int BKx = Lattice::Memory::stencil[BKMemoryId].x; + constexpr int BKy = Lattice::Memory::stencil[BKMemoryId].y; + constexpr int BKz = Lattice::Memory::stencil[BKMemoryId].z; + constexpr int GORegistersId = Lattice::Memory::template mapToRegisters(); + + if (wallBitFlag & (uint32_t(1) << GOMemoryId)) { + popIn[GORegistersId] = + fin(gidx, BKMemoryId) + + fin.template getNghData(gidx, BKMemoryId)(); + } else { + popIn[GORegistersId] = + fin.template getNghData(gidx, GOMemoryId)(); + } + } + }); + } + + static inline NEON_CUDA_HOST_DEVICE auto + macroscopic(const Storage pop[Lattice::Q], + NEON_OUT Compute& rho, + NEON_OUT std::array& u) + -> void + { + +#define POP(IDX) static_cast(pop[IDX]) + const Compute X_M1 = POP(0) + POP(3) + POP(4) + POP(5) + POP(6) + POP(9) + POP(10) + POP(11) + POP(12); + const Compute X_P1 = POP(14) + POP(17) + POP(18) + POP(19) + POP(20) + POP(23) + POP(24) + POP(25) + POP(26); + const Compute X_0 = POP(1) + POP(2) + POP(7) + POP(8) + POP(13) + POP(15) + POP(16) + POP(21) + POP(22); + + const Compute Y_M1 = POP(1) + POP(3) + POP(7) + POP(8) + POP(9) + POP(10) + POP(18) + POP(25) + POP(26); + const Compute Y_P1 = POP(15) + POP(17) + POP(21) + POP(22) + POP(23) + POP(24) + POP(4) + POP(11) + POP(12); + + const Compute Z_M1 = POP(2) + POP(5) + POP(7) + POP(9) + POP(11) + POP(20) + POP(22) + POP(24) + POP(26); + const Compute Z_P1 = POP(16) + POP(19) + POP(21) + POP(23) + POP(25) + POP(6) + POP(8) + POP(10) + POP(12); +#undef POP + + rho = X_M1 + X_P1 + X_0; + u[0] = (X_P1 - X_M1) / rho; + u[0] = (Y_P1 - Y_M1) / rho; + u[0] = (Z_P1 - Z_M1) / rho; + } + + + static inline NEON_CUDA_HOST_DEVICE auto + collideBgkUnrolled(Idx const& i /*! Compute iterator */, + const Storage pop[Lattice::Q], + Compute const& rho /*! Density */, + std::array const& u /*! Velocity */, + Compute const& usqr /*! Usqr */, + Compute const& omega /*! Omega */, + typename PopField::Partition& fOut /*! Population */) + + -> void + { + const Compute cku1 = u[0] + u[1]; + const Compute cku2 = -u[0] + u[1]; + const Compute cku3 = u[0] + u[2]; + const Compute cku4 = -u[0] + u[2]; + const Compute cku5 = u[1] + u[2]; + const Compute cku6 = -u[1] + u[2]; + const Compute cku7 = u[0] + u[1] + u[2]; + const Compute cku8 = -u[0] + u[1] + u[2]; + const Compute cku9 = u[0] - u[1] + u[2]; + const Compute cku0 = u[0] + u[1] - u[2]; + + std::array feqRM; + + constexpr int F000 = 13; + constexpr int FM00 = 0; + constexpr int F0M0 = 1; + constexpr int F00M = 2; + constexpr int FMM0 = 3; + constexpr int FMP0 = 4; + constexpr int FM0M = 5; + constexpr int FM0P = 6; + constexpr int F0MM = 7; + constexpr int F0MP = 8; + constexpr int FMMM = 9; + constexpr int FMMP = 10; + constexpr int FMPM = 11; + constexpr int FMPP = 12; + constexpr int FP00 = 14; + constexpr int F0P0 = 15; + constexpr int F00P = 16; + constexpr int FPP0 = 17; + constexpr int FPM0 = 18; + constexpr int FP0P = 19; + constexpr int FP0M = 20; + constexpr int F0PP = 21; + constexpr int F0PM = 22; + constexpr int FPPP = 23; + constexpr int FPPM = 24; + constexpr int FPMP = 25; + constexpr int FPMM = 26; + + constexpr Compute c1over18 = 1. / 18.; + constexpr Compute c1over36 = 1. / 36.; + constexpr Compute c4dot5 = 4.5; + constexpr Compute c3 = 3.; + constexpr Compute c1 = 1.; + constexpr Compute c6 = 6.; + + feqRM[F000] = rho * Lattice::Registers::t[F000] * (c1- usqr); + + feqRM[FM00] = rho * Lattice::Registers::t[FM00] * (c1- c3* u[0] + c4dot5* u[0] * u[0] - usqr); + feqRM[FP00] = rho * Lattice::Registers::t[FP00] * (c6 * u[0]) + feqRM[FM00]; + + feqRM[F0M0] = rho * Lattice::Registers::t[F0M0] * (c1- c3* u[1] + c4dot5* u[1] * u[1] - usqr); + feqRM[F0P0] = rho * Lattice::Registers::t[F0P0] * (c6 * u[1]) + feqRM[F0M0]; + + feqRM[F00M] = rho * Lattice::Registers::t[F00M] * (c1- c3* u[2] + c4dot5* u[2] * u[2] - usqr); + feqRM[F00P] = rho * Lattice::Registers::t[F00P] * (c6 * u[2]) + feqRM[F00M]; + + feqRM[FMM0] = rho * Lattice::Registers::t[FMM0] * (c1- c3* cku1 + c4dot5* cku1 * cku1 - usqr); + feqRM[FPP0] = rho * Lattice::Registers::t[FPP0] * (c6 * cku1) + feqRM[FMM0]; + feqRM[FPM0] = rho * Lattice::Registers::t[FPM0] * (c1- c3* cku2 + c4dot5* cku2 * cku2 - usqr); + feqRM[FMP0] = rho * Lattice::Registers::t[FMP0] * (c6 * cku2) + feqRM[FPM0]; + + feqRM[FM0M] = rho * Lattice::Registers::t[FM0M] * (c1- c3* cku3 + c4dot5* cku3 * cku3 - usqr); + feqRM[FP0P] = rho * Lattice::Registers::t[FP0P] * (c6 * cku3) + feqRM[FM0M]; + feqRM[FP0M] = rho * Lattice::Registers::t[FP0M] * (c1- c3* cku4 + c4dot5* cku4 * cku4 - usqr); + feqRM[FM0P] = rho * Lattice::Registers::t[FM0P] * (c6 * cku4) + feqRM[FP0M]; + + feqRM[F0MM] = rho * Lattice::Registers::t[F0MM] * (c1- c3* cku5 + c4dot5* cku5 * cku5 - usqr); + feqRM[F0PP] = rho * Lattice::Registers::t[F0PP] * (c6 * cku5) + feqRM[F0MM]; + feqRM[F0PM] = rho * Lattice::Registers::t[F0PM] * (c1- c3* cku6 + c4dot5* cku6 * cku6 - usqr); + feqRM[F0MP] = rho * Lattice::Registers::t[F0MP] * (c6 * cku6) + feqRM[F0PM]; + + feqRM[FMMM] = rho * Lattice::Registers::t[FMMM] * (c1- c3* cku7 + c4dot5* cku7 * cku7 - usqr); + feqRM[FPPP] = rho * Lattice::Registers::t[FPPP] * (c6 * cku7) + feqRM[FMMM]; + feqRM[FPMM] = rho * Lattice::Registers::t[FPMM] * (c1- c3* cku8 + c4dot5* cku8 * cku8 - usqr); + feqRM[FMPP] = rho * Lattice::Registers::t[FMPP] * (c6 * cku8) + feqRM[FPMM]; + feqRM[FMPM] = rho * Lattice::Registers::t[FMPM] * (c1- c3* cku9 + c4dot5* cku9 * cku9 - usqr); + feqRM[FPMP] = rho * Lattice::Registers::t[FPMP] * (c6 * cku9) + feqRM[FMPM]; + feqRM[FMMP] = rho * Lattice::Registers::t[FMMP] * (c1- c3* cku0 + c4dot5* cku0 * cku0 - usqr); + feqRM[FPPM] = rho * Lattice::Registers::t[FPPM] * (c6 * cku0) + feqRM[FMMP]; + + // BGK Collision based on the second-order equilibrium + std::array foutRM; + + foutRM[F000] = (c1- omega) * static_cast(pop[F000]) + omega * feqRM[F000]; + + foutRM[FP00] = (c1- omega) * static_cast(pop[FP00]) + omega * feqRM[FP00]; + foutRM[FM00] = (c1- omega) * static_cast(pop[FM00]) + omega * feqRM[FM00]; + + foutRM[F0P0] = (c1- omega) * static_cast(pop[F0P0]) + omega * feqRM[F0P0]; + foutRM[F0M0] = (c1- omega) * static_cast(pop[F0M0]) + omega * feqRM[F0M0]; + + foutRM[F00P] = (c1- omega) * static_cast(pop[F00P]) + omega * feqRM[F00P]; + foutRM[F00M] = (c1- omega) * static_cast(pop[F00M]) + omega * feqRM[F00M]; + + foutRM[FPP0] = (c1- omega) * static_cast(pop[FPP0]) + omega * feqRM[FPP0]; + foutRM[FMP0] = (c1- omega) * static_cast(pop[FMP0]) + omega * feqRM[FMP0]; + foutRM[FPM0] = (c1- omega) * static_cast(pop[FPM0]) + omega * feqRM[FPM0]; + foutRM[FMM0] = (c1- omega) * static_cast(pop[FMM0]) + omega * feqRM[FMM0]; + + foutRM[FP0P] = (c1- omega) * static_cast(pop[FP0P]) + omega * feqRM[FP0P]; + foutRM[FM0P] = (c1- omega) * static_cast(pop[FM0P]) + omega * feqRM[FM0P]; + foutRM[FP0M] = (c1- omega) * static_cast(pop[FP0M]) + omega * feqRM[FP0M]; + foutRM[FM0M] = (c1- omega) * static_cast(pop[FM0M]) + omega * feqRM[FM0M]; + + foutRM[F0PP] = (c1- omega) * static_cast(pop[F0PP]) + omega * feqRM[F0PP]; + foutRM[F0MP] = (c1- omega) * static_cast(pop[F0MP]) + omega * feqRM[F0MP]; + foutRM[F0PM] = (c1- omega) * static_cast(pop[F0PM]) + omega * feqRM[F0PM]; + foutRM[F0MM] = (c1- omega) * static_cast(pop[F0MM]) + omega * feqRM[F0MM]; + + foutRM[FPPP] = (c1- omega) * static_cast(pop[FPPP]) + omega * feqRM[FPPP]; + foutRM[FMPP] = (c1- omega) * static_cast(pop[FMPP]) + omega * feqRM[FMPP]; + foutRM[FPMP] = (c1- omega) * static_cast(pop[FPMP]) + omega * feqRM[FPMP]; + foutRM[FPPM] = (c1- omega) * static_cast(pop[FPPM]) + omega * feqRM[FPPM]; + foutRM[FMMP] = (c1- omega) * static_cast(pop[FMMP]) + omega * feqRM[FMMP]; + foutRM[FMPM] = (c1- omega) * static_cast(pop[FMPM]) + omega * feqRM[FMPM]; + foutRM[FPMM] = (c1- omega) * static_cast(pop[FPMM]) + omega * feqRM[FPMM]; + foutRM[FMMM] = (c1- omega) * static_cast(pop[FMMM]) + omega * feqRM[FMMM]; + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto GOMemoryId) { + fOut(i, GOMemoryId) = static_cast(foutRM[Lattice::Memory::template mapToRegisters()]); + }); + } +}; + diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/LbmIteration.h b/benchmarks/lbm-lid-driven-cavity-flow/src/LbmIteration.h deleted file mode 100644 index b92d9acc..00000000 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/LbmIteration.h +++ /dev/null @@ -1,101 +0,0 @@ -#include "CellType.h" -#include "D3Q19.h" -#include "LbmTools.h" -#include "Neon/Neon.h" -#include "Neon/set/Backend.h" -#include "Neon/set/Containter.h" -#include "Neon/skeleton/Skeleton.h" - -template -struct LbmSkeleton -{ -}; - - -template -struct LbmIterationD3Q19 -{ - using LbmStoreType = typename PopulationField::Type; - using CellTypeField = typename PopulationField::Grid::template Field; - using D3Q19 = D3Q19Template; - using LbmTools = LbmContainers; - - - LbmIterationD3Q19(Neon::set::StencilSemantic stencilSemantic, - Neon::skeleton::Occ occ, - Neon::set::TransferMode transfer, - PopulationField& fIn /*! inpout population field */, - PopulationField& fOut, - CellTypeField& cellTypeField /*! Cell type field */, - LbmComputeType omega /*! LBM omega parameter */) - { - pop[0] = fIn; - pop[1] = fOut; - - setupSkeletons(0, stencilSemantic, occ, transfer, pop[0], pop[1], cellTypeField, omega); - setupSkeletons(1, stencilSemantic, occ, transfer, pop[1], pop[0], cellTypeField, omega); - - parity = 0; - } - auto getInput() - -> PopulationField& - { - return pop[parity]; - } - - auto getOutput() - -> PopulationField& - { - int other = parity == 0 ? 1 : 0; - return pop[other]; - } - - auto run() - -> void - { - lbmTwoPop[parity].run(); - updateParity(); - } - - auto sync() - -> void - { - pop[0].getBackend().syncAll(); - } - - private: - auto updateParity() - -> void - { - parity = parity == 0 ? 1 : 0; - } - - auto setupSkeletons(int target, - Neon::set::StencilSemantic stencilSemantic, - Neon::skeleton::Occ occ, - Neon::set::TransferMode transfer, - PopulationField& inField /*! inpout population field */, - PopulationField& outField, - CellTypeField& cellTypeField /*! Cell type field */, - LbmComputeType omega /*! LBM omega parameter */) - { - std::vector ops; - lbmTwoPop[target] = Neon::skeleton::Skeleton(inField.getBackend()); - Neon::skeleton::Options opt(occ, transfer); - ops.push_back(LbmTools::iteration(stencilSemantic, - inField, - cellTypeField, - omega, - outField)); - std::stringstream appName; - appName << "LBM_iteration_" << std::to_string(target); - lbmTwoPop[target].sequence(ops, appName.str(), opt); - } - - Neon::skeleton::Skeleton lbmTwoPop[2]; - PopulationField pop[2]; - int parity; -}; \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/LbmSkeleton.h b/benchmarks/lbm-lid-driven-cavity-flow/src/LbmSkeleton.h new file mode 100644 index 00000000..22ae8177 --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/LbmSkeleton.h @@ -0,0 +1,117 @@ +#include "CellType.h" +#include "ContainerFactory.h" +#include "ContainersD3Q19.h" +#include "D3Q19.h" +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/Containter.h" +#include "Neon/skeleton/Skeleton.h" + +template +struct LbmSkeleton +{ +}; + + +template +struct LbmSkeleton, + Grid_> +{ + using Lattice = D3Q19; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + using ContainerFactory = common::ContainerFactory; + + LbmSkeleton(Neon::set::StencilSemantic stencilSemantic, + Neon::skeleton::Occ occ, + Neon::set::TransferMode transfer, + PopField& fIn /*! inpout population field */, + PopField& fOut, + CellTypeField& cellTypeField /*! Cell type field */, + Compute omega /*! LBM omega parameter */) + { + pop[0] = fIn; + pop[1] = fOut; + + setupSkeletons(0, stencilSemantic, occ, transfer, pop[0], pop[1], cellTypeField, omega); + setupSkeletons(1, stencilSemantic, occ, transfer, pop[1], pop[0], cellTypeField, omega); + + parity = 0; + } + + auto getInput() + -> PopField& + { + return pop[parity]; + } + + auto getOutput() + -> PopField& + { + int other = parity == 0 ? 1 : 0; + return pop[other]; + } + + auto run() + -> void + { + lbmTwoPop[parity].run(); + updateParity(); + } + + auto sync() + -> void + { + pop[0].getBackend().syncAll(); + } + + private: + auto updateParity() + -> void + { + parity = parity == 0 ? 1 : 0; + } + + auto setupSkeletons(int target, + Neon::set::StencilSemantic stencilSemantic, + Neon::skeleton::Occ occ, + Neon::set::TransferMode transfer, + PopField& inField /*! inpout population field */, + PopField& outField, + CellTypeField& cellTypeField /*! Cell type field */, + Compute omega /*! LBM omega parameter */) + { + std::vector ops; + lbmTwoPop[target] = Neon::skeleton::Skeleton(inField.getBackend()); + Neon::skeleton::Options opt(occ, transfer); + ops.push_back(ContainerFactory::template iteration(stencilSemantic, + inField, + cellTypeField, + omega, + outField)); + std::stringstream appName; + appName << "LBM_iteration_" << std::to_string(target); + lbmTwoPop[target].sequence(ops, appName.str(), opt); + } + + Neon::skeleton::Skeleton lbmTwoPop[2]; + PopField pop[2]; + int parity; +}; \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/LbmTools.h b/benchmarks/lbm-lid-driven-cavity-flow/src/LbmToolsTemplateOnly.h similarity index 97% rename from benchmarks/lbm-lid-driven-cavity-flow/src/LbmTools.h rename to benchmarks/lbm-lid-driven-cavity-flow/src/LbmToolsTemplateOnly.h index 5728a5d3..489b3782 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/LbmTools.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/LbmToolsTemplateOnly.h @@ -8,7 +8,7 @@ template -struct LbmContainers +struct LbmContainersTemplateOnly { }; @@ -19,13 +19,13 @@ struct LbmContainers */ template -struct LbmContainers, - PopulationField, - LbmComputeType> +struct LbmContainersTemplateOnly, + PopulationField, + LbmComputeType> { using LbmStoreType = typename PopulationField::Type; using CellTypeField = typename PopulationField::Grid::template Field; - using Lattice = D3Q19Template; + using Lattice = D3Q19; using Idx = typename PopulationField::Idx; using Grid = typename PopulationField::Grid; using Rho = typename Grid::template Field; @@ -36,21 +36,21 @@ struct LbmContainers(gidx); \ } else { \ - popIn[GOid] = fin.template nghVal(i, GOid, 0.0).value; \ + popIn[GOid] = fin.template nghVal(gidx).value; \ } \ } \ { /*BK*/ \ if (wallBitFlag & (uint32_t(1) << BKid)) { \ - popIn[BKid] = fin(i, GOid); \ + popIn[BKid] = fin.template read(gidx); \ } else { \ - popIn[BKid] = fin.template nghVal(i, BKid, 0.0).value; \ + popIn[BKid] = fin.template nghVal(gidx).value; \ } \ } \ } static inline NEON_CUDA_HOST_DEVICE auto - loadPopulation(Idx const& i, + loadPopulation(Idx const& gidx, const uint32_t& wallBitFlag, typename PopulationField::Partition const& fin, NEON_OUT LbmStoreType popIn[19]) diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Methods.h b/benchmarks/lbm-lid-driven-cavity-flow/src/Methods.h new file mode 100644 index 00000000..4d3bf178 --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Methods.h @@ -0,0 +1,8 @@ +#pragma once + +enum class Method +{ + push, + pull, + aa +}; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Metrics.h b/benchmarks/lbm-lid-driven-cavity-flow/src/Metrics.h index be94ab76..7e6697ef 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/Metrics.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Metrics.h @@ -23,6 +23,12 @@ void recordBackend(Neon::Backend& bk, report.recordBk(bk); } +void recordGrid(Neon::domain::interface::GridBase& g, + Report& report) +{ + report.recordGrid(g); +} + } // namespace diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Precision.h b/benchmarks/lbm-lid-driven-cavity-flow/src/Precision.h new file mode 100644 index 00000000..a45ff69e --- /dev/null +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Precision.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/memory/memSet.h" + +template +struct Precision +{ + using Storage = StorageFP; + using Compute = ComputeFP; +}; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Repoert.h b/benchmarks/lbm-lid-driven-cavity-flow/src/Repoert.h index 565a9108..4ca0827b 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/Repoert.h +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Repoert.h @@ -3,7 +3,7 @@ #include #include #include "Config.h" - +#include "Neon/domain/interface/GridBase.h" struct Report { Neon::Report mReport; @@ -36,4 +36,5 @@ struct Report auto save() -> void; void recordBk(Neon::Backend& backend); + void recordGrid(Neon::domain::interface::GridBase& g); }; diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/Report.cpp b/benchmarks/lbm-lid-driven-cavity-flow/src/Report.cpp index 2e88f907..049d1735 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/Report.cpp +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/Report.cpp @@ -29,6 +29,7 @@ Report::Report(const Config& c) mReport.addMember("computeType", c.computeType); mReport.addMember("storeType", c.storeType); + mReport.addMember("spaceCurve", Neon::domain::tool::spaceCurves::EncoderTypeUtil::toString(c.spaceCurve)); mReport.addMember("occ", Neon::skeleton::OccUtils::toString(c.occ)); @@ -100,3 +101,8 @@ void Report::recordBk(Neon::Backend& backend) { backend.toReport(mReport); } + +void Report::recordGrid(Neon::domain::interface::GridBase& g) +{ + g.toReport(mReport, true); +} \ No newline at end of file diff --git a/benchmarks/lbm-lid-driven-cavity-flow/src/RunCavityTwoPop.cu b/benchmarks/lbm-lid-driven-cavity-flow/src/RunCavityTwoPop.cu index c603415c..146f108f 100644 --- a/benchmarks/lbm-lid-driven-cavity-flow/src/RunCavityTwoPop.cu +++ b/benchmarks/lbm-lid-driven-cavity-flow/src/RunCavityTwoPop.cu @@ -2,10 +2,11 @@ #include "D3Q19.h" #include "Neon/domain/bGrid.h" #include "Neon/domain/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" #include "Neon/domain/eGrid.h" #include "CellType.h" -#include "LbmIteration.h" +#include "LbmSkeleton.h" #include "Metrics.h" #include "Repoert.h" @@ -14,15 +15,28 @@ namespace CavityTwoPop { int backendWasReported = false; namespace details { -template +template auto run(Config& config, Report& report) -> void { - using Lattice = D3Q19Template; - using PopulationField = typename Grid::template Field; + using Storage = Storage_; + using Compute = Compute_; + using Precision = Precision; + using Lattice = D3Q19; + using PopulationField = typename Grid::template Field; + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using RhoField = typename Grid::template Field; + using UField = typename Grid::template Field; + + using Skeleton = LbmSkeleton; + using ContainerFactory = ContainerFactory; Neon::Backend bk = [&] { if (config.deviceType == "cpu") { @@ -38,49 +52,50 @@ auto run(Config& config, NEON_THROW(exce); }(); - if (!backendWasReported) { - metrics::recordBackend(bk, report); - backendWasReported = true; - } Neon::double_3d ulid(1., 0., 0.); - Lattice lattice(bk); - // Neon Grid and Fields initialization auto [start, clock_iter] = metrics::restartClock(bk, true); Grid grid( bk, {config.N, config.N, config.N}, [](const Neon::index_3d&) { return true; }, - lattice.c_vect); + Lattice::template getDirectionAsVector(), + 1.0, 0.0, + config.spaceCurve); - PopulationField pop0 = grid.template newField("Population", Lattice::Q, StorageFP(0.0)); - PopulationField pop1 = grid.template newField("Population", Lattice::Q, StorageFP(0.0)); + if (!backendWasReported) { + metrics::recordBackend(bk, report); + metrics::recordGrid(grid, report); + backendWasReported = true; + } - typename Grid::template Field rho; - typename Grid::template Field u; + PopulationField pop0 = grid.template newField("Population", Lattice::Q, Storage(0.0)); + PopulationField pop1 = grid.template newField("Population", Lattice::Q, Storage(0.0)); + + typename Grid::template Field rho; + typename Grid::template Field u; if (!config.benchmark) { std::cout << "Allocating rho and u" << std::endl; - rho = grid.template newField("rho", 1, StorageFP(0.0)); - u = grid.template newField("u", 3, StorageFP(0.0)); + rho = grid.template newField("rho", 1, Storage(0.0)); + u = grid.template newField("u", 3, Storage(0.0)); } CellType defaultCelltype; auto flag = grid.template newField("Material", 1, defaultCelltype); - auto lbmParameters = config.getLbmParameters(); + auto lbmParameters = config.getLbmParameters(); - LbmIterationD3Q19 - iteration(config.stencilSemantic, - config.occ, - config.transferMode, - pop0, - pop1, - flag, - lbmParameters.omega); + Skeleton iteration(config.stencilSemantic, + config.occ, + config.transferMode, + pop0, + pop1, + flag, + lbmParameters.omega); auto exportRhoAndU = [&bk, &rho, &u, &iteration, &flag, &grid, &ulid](int iterationId) { - if ((iterationId) % 100 == 0) { + if ((iterationId) % 1 == 0) { auto& f = iteration.getInput(); { bk.syncAll(); @@ -91,7 +106,7 @@ auto run(Config& config, bk.syncAll(); } - auto container = LbmContainers::computeRhoAndU(f, flag, rho, u); + auto container = ContainerFactory::computeRhoAndU(f, flag, rho, u); container.run(Neon::Backend::mainStreamIdx); u.updateHostData(Neon::Backend::mainStreamIdx); rho.updateHostData(Neon::Backend::mainStreamIdx); @@ -105,7 +120,8 @@ auto run(Config& config, u.ioToVtk("u_" + iterIdStr, "u", false); rho.ioToVtk("rho_" + iterIdStr, "rho", false); // iteration.getInput().ioToVtk("pop_" + iterIdStr, "u", false); - // flag.ioToVtk("flag_" + iterIdStr, "u", false); + flag.template ioToVtk("flag_" + iterIdStr, "flag", false); + flag.template ioToVtk("flag_" + iterIdStr, "flag", false); std::vector> xPosVal; std::vector> yPosVal; @@ -162,71 +178,20 @@ auto run(Config& config, Neon::index_3d dim(config.N, config.N, config.N); - const auto& t = lattice.t_vect; - const auto& c = lattice.c_vect; - - inPop.forEachActiveCell([&c, &t, &dim, &flag, &ulid, &config](const Neon::index_3d& idx, - const int& k, - StorageFP& val) { - val = t.at(k); - - if (idx.x == 0 || idx.x == dim.x - 1 || - idx.y == 0 || idx.y == dim.y - 1 || - idx.z == 0 || idx.z == dim.z - 1) { - - if (idx.y == dim.y - 1) { - val = -6. * t.at(k) * config.ulb * - (c.at(k).v[0] * ulid.v[0] + - c.at(k).v[1] * ulid.v[1] + - c.at(k).v[2] * ulid.v[2]); - } else { - val = 0; - } - } - }); - - outPop.forEachActiveCell([&c, &t, &dim, &flag, &ulid, &config](const Neon::index_3d& idx, - const int& k, - StorageFP& val) { - val = t.at(k); - - if (idx.x == 0 || idx.x == dim.x - 1 || - idx.y == 0 || idx.y == dim.y - 1 || - idx.z == 0 || idx.z == dim.z - 1) { - - if (idx.y == dim.y - 1) { - val = -6. * t.at(k) * config.ulb * - (c.at(k).v[0] * ulid.v[0] + - c.at(k).v[1] * ulid.v[1] + - c.at(k).v[2] * ulid.v[2]); - } else { - val = 0; - } - } - }); - - flag.forEachActiveCell([&dim](const Neon::index_3d& idx, - const int&, - CellType& flagVal) { - flagVal.classification = CellType::bulk; - flagVal.wallNghBitflag = 0; - - if (idx.x == 0 || idx.x == dim.x - 1 || - idx.y == 0 || idx.y == dim.y - 1 || - idx.z == 0 || idx.z == dim.z - 1) { + // const auto& t = Lattice::Memory::t; + // const auto& c = Lattice::Memory::stencil; - flagVal.classification = CellType::bounceBack; - - if (idx.y == dim.y - 1) { - flagVal.classification = CellType::movingWall; - } - } - }); + ContainerFactory::problemSetup(inPop, + outPop, + flag, + ulid, + config.ulb) + .run(Neon::Backend::mainStreamIdx); - inPop.updateDeviceData(Neon::Backend::mainStreamIdx); - outPop.updateDeviceData(Neon::Backend::mainStreamIdx); - flag.updateDeviceData(Neon::Backend::mainStreamIdx); + inPop.updateHostData(Neon::Backend::mainStreamIdx); + outPop.updateHostData(Neon::Backend::mainStreamIdx); + flag.updateHostData(Neon::Backend::mainStreamIdx); { bk.syncAll(); flag.newHaloUpdate(Neon::set::StencilSemantic::standard /*semantic*/, @@ -236,7 +201,7 @@ auto run(Config& config, bk.syncAll(); } - auto container = LbmContainers::computeWallNghMask(flag, flag); + auto container = ContainerFactory::computeWallNghMask(flag, flag); container.run(Neon::Backend::mainStreamIdx); bk.syncAll(); } @@ -275,15 +240,15 @@ auto run(Config& config, metrics::recordMetrics(bk, config, report, start, clock_iter); } -template +template auto runFilterComputeType(Config& config, Report& report) -> void { if (config.computeType == "double") { - return run(config, report); - } - if (config.computeType == "float") { - return run(config, report); + return run(config, report); } +// if (config.computeType == "float") { +// return run(config, report); +// } NEON_DEV_UNDER_CONSTRUCTION(""); } @@ -295,23 +260,96 @@ auto runFilterStoreType(Config& config, if (config.storeType == "double") { return runFilterComputeType(config, report); } - if (config.storeType == "float") { - return runFilterComputeType(config, report); - } +// if (config.storeType == "float") { +// return runFilterComputeType(config, report); +// } + NEON_DEV_UNDER_CONSTRUCTION(""); } } // namespace details +#ifdef NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS +constexpr bool skipTest = false; +#else +constexpr bool skipTest = false; +#endif + auto run(Config& config, Report& report) -> void { if (config.gridType == "dGrid") { return details::runFilterStoreType(config, report); } - if (config.gridType == "eGrid") { - return details::runFilterStoreType(config, report); - } - if (config.gridType == "bGrid") { - return details::runFilterStoreType(config, report); - } +// if (config.gridType == "eGrid") { +// if constexpr (!skipTest) { +// return details::runFilterStoreType(config, report); +// } else { +// NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") +// } +// } +// if (config.gridType == "bGrid" || config.gridType == "bGrid_8_8_8") { +// return details::runFilterStoreType(config, report); +// } +// if (config.gridType == "bGrid_4_4_4") { +// if constexpr (!skipTest) { +// using Sblock = Neon::domain::details::bGrid::StaticBlock<4, 4, 4>; +// using Grid = Neon::domain::details::bGrid::bGrid; +// return details::runFilterStoreType(config, report); +// } else { +// NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") +// } +// } +// if (config.gridType == "bGrid_2_2_2") { +// if constexpr (!skipTest) { +// using Sblock = Neon::domain::details::bGrid::StaticBlock<2, 2, 2>; +// using Grid = Neon::domain::details::bGrid::bGrid; +// return details::runFilterStoreType(config, report); +// } else { +// NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") +// } +// } + // if (config.gridType == "bGrid_32_8_4") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 4>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_8_4") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 4>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_2_8") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 2, 8>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_8_2") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 2>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "dGridSoA") { + // if constexpr (!skipTest) { + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + NEON_THROW_UNSUPPORTED_OPERATION("Unknown grid type: " + config.gridType); } } // namespace CavityTwoPop diff --git a/benchmarks/lbm/CMakeLists.txt b/benchmarks/lbm/CMakeLists.txt new file mode 100644 index 00000000..7f0c1415 --- /dev/null +++ b/benchmarks/lbm/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +SET(APP "lbm") + +file(GLOB_RECURSE SrcFiles src/*.*) + +add_executable(${APP} ${SrcFiles}) + +target_link_libraries(${APP} + PUBLIC libNeonDomain + PUBLIC libNeonSkeleton) + +set_target_properties(${APP} PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS ON) + +target_compile_options(${APP} INTERFACE + $<$:${NeonCXXFlags}> + $<$:${NeonCUDAFlags}> + ) + +add_custom_command( + TARGET ${APP} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/${APP}.sh + ${CMAKE_BINARY_DIR}/bin/${APP}.sh) + +add_custom_command( + TARGET ${APP} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/${APP}.py + ${CMAKE_BINARY_DIR}/bin/${APP}.py +) \ No newline at end of file diff --git a/benchmarks/lbm/lbm.py b/benchmarks/lbm/lbm.py new file mode 100644 index 00000000..8606e81b --- /dev/null +++ b/benchmarks/lbm/lbm.py @@ -0,0 +1,144 @@ +deviceType_LIST = 'gpu'.split() +deviceIds_LIST = "0 1 2 3 4 5 6 7".split() +grid_LIST = "bGrid_4_4_4 bGridMgpu_4_4_4".split() +domainSize_LIST = "64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 336 352 368 384 400 416 432 448 464 480 496 512".split() +computeFP_LIST = "double float".split() +storageFP_LIST = "double float".split() +occ_LIST = "none standard".split() +transferMode_LIST = "get put".split() +stencilSemantic_LIST = "standard lattice".split() +spaceCurve_LIST = "sweep morton hilbert".split() +collision_LIST = "bgk kbc".split() +streamingMethod_LIST = "push pull aa".split() +lattice_LIST = "d3q19 d3q27".split() + +warmupIter_INT = 10 +repetitions_INT = 5 +maxIter_INT = 10000 + +goal_is_efficiency_max_num_devices = True + +import subprocess +import sys + + +# from typing import List, Dict + +def getDeviceConfigurations(DEVICE_TYPE, deviceIds_LIST): + if not goal_is_efficiency_max_num_devices: + DEVICE_SET_LIST = [deviceIds_LIST[0]] + if DEVICE_TYPE == 'gpu': + for DEVICE in deviceIds_LIST[1:]: + DEVICE_SET_LIST.append(DEVICE_SET_LIST[-1] + ' ' + DEVICE) + return DEVICE_SET_LIST + if len(deviceIds_LIST) ==1: + return [deviceIds_LIST[0]] + + if goal_is_efficiency_max_num_devices: + return [deviceIds_LIST[0], ' '.join(deviceIds_LIST)] + + +def printProgressBar(value, label): + n_bar = 40 # size of progress bar + max = 100 + j = value / max + sys.stdout.write('\r') + bar = 'â–ˆ' * int(n_bar * j) + bar = bar + '-' * int(n_bar * (1 - j)) + + sys.stdout.write(f"{label.ljust(10)} | [{bar:{n_bar}s}] {int(100 * j)}% ") + sys.stdout.flush() + + +def countAll(): + counter = 0 + for DEVICE_TYPE in deviceType_LIST: + DEVICE_SET_LIST = getDeviceConfigurations(DEVICE_TYPE, deviceIds_LIST) + for DEVICE_SET in DEVICE_SET_LIST: + for OCC in occ_LIST: + for DOMAIN_SIZE in domainSize_LIST: + for STORAGE_FP in storageFP_LIST: + for COMPUTE_FP in computeFP_LIST: + for GRID in grid_LIST: + for CURVE in spaceCurve_LIST: + for LATTICE in lattice_LIST: + for TRANSFERMODE in transferMode_LIST: + for STENCILSEMANTIC in stencilSemantic_LIST: + for COLLISION in collision_LIST: + if LATTICE != "d3q27" and COLLISION == 'kbc': + continue + for STREAMINGMETHOD in streamingMethod_LIST: + if STREAMINGMETHOD != 'pull' and len(DEVICE_SET_LIST) != 1: + continue + if STORAGE_FP == 'double' and COMPUTE_FP == 'float': + continue + if STORAGE_FP == 'float' and COMPUTE_FP == 'double': + continue + + counter += 1 + return counter + + +SAMPLES = countAll() +counter = 0 +command = './lbm' +# command = 'echo' +with open(command + '.log', 'w') as fp: + for DEVICE_TYPE in deviceType_LIST: + DEVICE_SET_LIST = getDeviceConfigurations(DEVICE_TYPE, deviceIds_LIST) + for DEVICE_SET in DEVICE_SET_LIST: + for OCC in occ_LIST: + for DOMAIN_SIZE in domainSize_LIST: + for STORAGE_FP in storageFP_LIST: + for COMPUTE_FP in computeFP_LIST: + for GRID in grid_LIST: + for CURVE in spaceCurve_LIST: + for LATTICE in lattice_LIST: + for TRANSFERMODE in transferMode_LIST: + for STENCILSEMANTIC in stencilSemantic_LIST: + for COLLISION in collision_LIST: + if LATTICE != "d3q27" and COLLISION == 'kbc': + continue + for STREAMINGMETHOD in streamingMethod_LIST: + if STREAMINGMETHOD != 'pull' and len(DEVICE_SET_LIST) != 1: + continue + if STORAGE_FP == 'double' and COMPUTE_FP == 'float': + continue + if STORAGE_FP == 'float' and COMPUTE_FP == 'double': + continue + + parameters = [] + parameters.append('--deviceType ' + DEVICE_TYPE) + parameters.append('--deviceIds ' + DEVICE_SET) + parameters.append('--grid ' + GRID) + parameters.append('--domain-size ' + DOMAIN_SIZE) + parameters.append('--max-iter ' + str(maxIter_INT)) + parameters.append('--report-filename ' + 'lbm') + parameters.append('--computeFP ' + COMPUTE_FP) + parameters.append('--storageFP ' + STORAGE_FP) + parameters.append('--occ ' + OCC) + parameters.append('--transferMode ' + TRANSFERMODE) + parameters.append('--stencilSemantic ' + STENCILSEMANTIC) + parameters.append('--spaceCurve ' + CURVE) + parameters.append('--collision ' + COLLISION) + parameters.append('--streamingMethod ' + STREAMINGMETHOD) + parameters.append('--lattice ' + LATTICE) + parameters.append('--benchmark ') + parameters.append('--warmup-iter ' + str(warmupIter_INT)) + parameters.append('--repetitions ' + str(repetitions_INT)) + + commandList = [] + commandList.append(command) + for el in parameters: + for s in el.split(): + commandList.append(s) + + fp.write("\n-------------------------------------------\n") + fp.write(' '.join(commandList)) + fp.write("\n-------------------------------------------\n") + fp.flush() + print(' '.join(commandList)) + subprocess.run(commandList, text=True, stdout=fp) + + counter += 1 + printProgressBar(counter * 100.0 / SAMPLES, 'Progress') diff --git a/benchmarks/lbm/lbm.sh b/benchmarks/lbm/lbm.sh new file mode 100644 index 00000000..7cc5108c --- /dev/null +++ b/benchmarks/lbm/lbm.sh @@ -0,0 +1,30 @@ +set -x + +DOMAIN_SIZE_LIST="64 128 192 256 320 384 448 512" +GRID_LIST="dGrid bGrid eGrid" +STORAGE_FP_LIST="double float" +COMPUTE_FP_LIST="double float" +OCC="nOCC" + +for DOMAIN_SIZE in ${DOMAIN_SIZE_LIST}; do + for STORAGE_FP in ${STORAGE_FP_LIST}; do + for COMPUTE_FP in ${COMPUTE_FP_LIST}; do + for GRID in ${GRID_LIST}; do + + if [ "${STORAGE_FP}_${COMPUTE_FP}" = "double_float" ]; then + continue + fi + + echo ./lbm-lid-driven-cavity-flow \ + --deviceType gpu --deviceIds 0 \ + --grid "${GRID}" \ + --domain-size "${DOMAIN_SIZE}" \ + --warmup-iter 10 --max-iter 100 --repetitions 5 \ + --report-filename "lbm-lid-driven-cavity-flow_${DOMAIN_SIZE}_${GRID}_STORAGE_${STORAGE_FP}_COMPUTE_${COMPUTE_FP}" \ + --computeFP "${COMPUTE_FP}" \ + --storageFP "${STORAGE_FP}" \ + --${OCC} --benchmark + done + done + done +done diff --git a/benchmarks/lbm/src/CellType.h b/benchmarks/lbm/src/CellType.h new file mode 100644 index 00000000..47c0397b --- /dev/null +++ b/benchmarks/lbm/src/CellType.h @@ -0,0 +1,56 @@ +#pragma once + +struct CellType +{ + enum Classification : int + { + bounceBack, + movingWall, + bulk, + undefined + }; + + NEON_CUDA_HOST_DEVICE CellType(int dummy = 0) + { + (void)dummy; + classification = bulk; + wallNghBitflag = 0; + } + + NEON_CUDA_HOST_DEVICE explicit CellType(Classification c, uint32_t n) + { + classification = c; + wallNghBitflag = n; + } + + NEON_CUDA_HOST_DEVICE explicit CellType(Classification c) + { + classification = c; + wallNghBitflag = 0; + } + + // Converting to int to exportVti + operator int() const { return int(classification); } + + template + NEON_CUDA_HOST_DEVICE static auto isWall(const uint32_t& wallNghBitFlag) + -> bool + { + return wallNghBitFlag & (uint32_t(1) << fwdRegQ); + } + + NEON_CUDA_HOST_DEVICE auto setWall(int fwdRegIdx) + -> void + { + wallNghBitflag = wallNghBitflag | ((uint32_t(1) << fwdRegIdx)); + } + + uint32_t wallNghBitflag; + Classification classification; +}; + +std::ostream& operator<<(std::ostream& os, const CellType& dt) +{ + os << static_cast(dt.classification); + return os; +} \ No newline at end of file diff --git a/benchmarks/lbm/src/Collision.cpp b/benchmarks/lbm/src/Collision.cpp new file mode 100644 index 00000000..3f7510cd --- /dev/null +++ b/benchmarks/lbm/src/Collision.cpp @@ -0,0 +1,127 @@ +#include "Collision.h" + + +auto CollisionUtils::toString(Collision occ) -> std::string +{ + switch (occ) { + case Collision::bgk: { + return "bgk"; + } + case Collision::kbc: { + return "kbc"; + } + } + NEON_THROW_UNSUPPORTED_OPTION(""); +} + +auto CollisionUtils::fromString(const std::string& occ) -> Collision +{ + std::array occs{Collision::bgk, Collision::kbc}; + for (auto a : occs) { + if (toString(a) == occ) { + return a; + } + } + NEON_THROW_UNSUPPORTED_OPTION(""); +} + +auto CollisionUtils::getOptions() -> std::array +{ + std::array opts = {Collision::bgk, Collision::kbc}; + return opts; +} + +CollisionUtils::Cli::Cli() +{ + mSet = false; +} + +CollisionUtils::Cli::Cli(std::string s) +{ + set(s); +} + +CollisionUtils::Cli::Cli(Collision model) +{ + mOption = model; + mSet = true; +} + +auto CollisionUtils::Cli::getOption() const -> Collision +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "Collision model was not set."; + NEON_ERROR(errorMsg.str()); + } + return mOption; +} + +auto CollisionUtils::Cli::getOptionStr() const -> std::string +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "Collision model was not set."; + NEON_ERROR(errorMsg.str()); + } + return CollisionUtils::toString(mOption); +} + +auto CollisionUtils::Cli::set(const std::string& opt) + -> void +{ + try { + mOption = CollisionUtils::fromString(opt); + } catch (...) { + std::stringstream errorMsg; + errorMsg << "Collision: " << opt << " is not a valid option (valid options are {"; + auto options = CollisionUtils::getOptions(); + int i = 0; + for (auto o : options) { + if (i != 0) { + errorMsg << ", " << CollisionUtils::toString(o); + } + errorMsg << CollisionUtils::toString(o); + i = 1; + } + errorMsg << "})"; + NEON_ERROR(errorMsg.str()); + } + mSet = true; +} + +auto CollisionUtils::Cli::getAllOptionsStr() const -> std::string +{ + std::stringstream s; + auto options = CollisionUtils::getOptions(); + int i = 0; + for (auto o : options) { + if (i != 0) { + s << ", "; + } + s << CollisionUtils::toString(o); + i = 1; + } + std::string msg = s.str(); + return msg; +} + + +auto CollisionUtils::Cli::getDoc() const -> std::string +{ + std::stringstream s; + s << getAllOptionsStr(); + s << " default: " << CollisionUtils::toString(getOption()); + return s.str(); +} + +auto CollisionUtils::Cli::addToReport(Neon::Report& report) const -> void +{ + report.addMember("Collision", CollisionUtils::toString(this->getOption())); +} + +auto CollisionUtils::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void +{ + report.addMember("Collision", CollisionUtils::toString(this->getOption()), &subBlock); +} + diff --git a/benchmarks/lbm/src/Collision.h b/benchmarks/lbm/src/Collision.h new file mode 100644 index 00000000..c022a018 --- /dev/null +++ b/benchmarks/lbm/src/Collision.h @@ -0,0 +1,43 @@ +#pragma once +#include "Neon/Report.h" +#include "Neon/set/Backend.h" +#include "Neon/set/Containter.h" + + +enum class Collision +{ + bgk, + kbc +}; + +struct CollisionUtils +{ + static constexpr int nOptions = 2; + + static auto toString(Collision occ) -> std::string; + static auto fromString(const std::string& occ) -> Collision; + static auto getOptions() -> std::array; + + struct Cli + { + explicit Cli(std::string); + explicit Cli(Collision model); + Cli(); + + auto getOption() const -> Collision; + auto getOptionStr() const -> std::string; + + auto set(const std::string& opt) -> void; + auto getAllOptionsStr() const -> std::string; + auto getDoc() const -> std::string; + + auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void; + auto addToReport(Neon::Report& report) const -> void; + + private: + bool mSet = false; + Collision mOption; + }; +}; + + diff --git a/benchmarks/lbm/src/Config.cpp b/benchmarks/lbm/src/Config.cpp new file mode 100644 index 00000000..f638ad8c --- /dev/null +++ b/benchmarks/lbm/src/Config.cpp @@ -0,0 +1,151 @@ +#include "Config.h" +#include +#include + +auto Config::toString() const -> std::string +{ + std::stringstream s; + const Config& c = *this; + + auto vecToSting = [](const std::vector& v) { + std::stringstream s; + bool firstTime = true; + for (auto e : v) { + if (firstTime) { + firstTime = false; + } else { + s << " "; + } + s << std::to_string(e); + } + return s.str(); + }; + + s << "\n==>[Neon Runtime Parameters]" << std::endl; + s << ".......... deviceType " << c.deviceType << std::endl; + s << ".......... numDevices " << c.devices.size() << std::endl; + s << "............. devices " << vecToSting(c.devices) << std::endl; + s << ".......... reportFile " << c.reportFile << std::endl; + s << "............ gridType " << c.gridType << std::endl; + + s << ".......... spaceCurve " << c.spaceCurveCli.getStringOption() << std::endl; + s << "................. occ " << c.occCli.getStringOption() << std::endl; + s << "........ transferMode " << c.transferModeCli.getStringOption() << std::endl; + s << "..... stencilSemantic " << c.stencilSemanticCli.getStringOption() << std::endl; + + s << "\n==>[LBM Implementation]" << std::endl; + s << "............. lattice " << c.lattice << std::endl; + s << ".... streaming method " << c.streamingMethod << std::endl; + s << "........... collision " << c.collisionCli.getOptionStr() << std::endl; + s << "......... computeType " << c.computeTypeStr << std::endl; + s << "........... storeType " << c.storeTypeStr << std::endl; + + s << "\n==>[Physics Parameters]" << std::endl; + s << ".................. Re " << c.Re << std::endl; + s << "................. ulb " << c.ulb << std::endl; + s << "................... N " << c.N << std::endl; + s << "................. nu " << mLbmParameters.nu << std::endl; + s << ".............. omega " << mLbmParameters.omega << std::endl; + s << "................. dx " << mLbmParameters.dx << std::endl; + s << "................. dt " << mLbmParameters.dt << std::endl; + + s << "\n==>[Test Parameters]" << std::endl; + s << "........... benchmark " << c.benchmark << std::endl; + s << "............... max_t " << c.max_t << std::endl; + s << "................. vti " << c.vti << std::endl; + s << "........ benchIniIter " << c.benchIniIter << std::endl; + s << "........ benchMaxIter " << c.benchMaxIter << std::endl; + + + return s.str(); +} + +auto Config::parseArgs(const int argc, char* argv[]) + -> int +{ + auto& config = *this; + + auto cli = + ( + + clipp::required("--deviceType") & clipp::value("deviceType", config.deviceType) % "Device type (cpu or gpu)", + clipp::required("--deviceIds") & clipp::integers("ids", config.devices) % "Device ids", + + clipp::option("--grid") & clipp::value("grid", config.gridType) % Config::getOptionList(config.gridTypeOptions, config.gridType), + clipp::option("--domain-size") & clipp::value("domain_size")([&config](const std::string& s) { config.fromArgStringToDim(s); }) % "Voxels along each dimension of the cube domain", + clipp::option("--max-iter") & clipp::integer("max_iter", config.benchMaxIter) % "Maximum solver iterations", + clipp::option("--report-filename ") & clipp::value("keeper_filename", config.reportFile) % "Output perf keeper filename", + + clipp::option("--computeFP") & clipp::value("computeFP", config.computeTypeStr) % Config::getOptionList(config.gridTypeOptions, config.gridType), + clipp::option("--storageFP") & clipp::value("storageFP", config.storeTypeStr) % "double, float", + + clipp::option("--occ") & clipp::value("occ")([&config](const std::string& s) { config.occCli.set(s); }) % config.occCli.getDoc(), + clipp::option("--transferMode") & clipp::value("transferMode")([&config](const std::string& s) { config.transferModeCli.set(s); }) % config.transferModeCli.getDoc(), + clipp::option("--stencilSemantic") & clipp::value("stencilSemantic")([&config](const std::string& s) { config.stencilSemanticCli.set(s); }) % config.stencilSemanticCli.getDoc(), + clipp::option("--spaceCurve") & clipp::value("spaceCurve")([&config](const std::string& s) { config.spaceCurveCli.set(s); }) % config.spaceCurveCli.getDoc(), + clipp::option("--collision") & clipp::value("collision")([&config](const std::string& s) { config.collisionCli.set(s); }) % config.collisionCli.getDoc(), + + clipp::option("--streamingMethod") & clipp::value("streamingMethod", config.streamingMethod) % Config::getOptionList(config.streamingMethodOption, config.streamingMethod), + clipp::option("--lattice") & clipp::value("lattice", config.lattice) % Config::getOptionList(config.latticeOptions, config.lattice), + ( + ( + clipp::option("--benchmark").set(config.benchmark, true) % "Run benchmark mode", + clipp::option("--warmup-iter") & clipp::integer("warmup_iter", config.benchIniIter) % "Number of iteration for warm up. max_iter = warmup_iter + timed_iters", + clipp::option("--repetitions") & clipp::integer("repetitions", config.repetitions) % "Number of times the benchmark is run." + + ) | + (clipp::option("--vti") & clipp::integer("OutputFrequency", config.vti) % "Voxels along each dimension of the cube domain")) + + ); + + + if (!clipp::parse(argc, argv, cli)) { + auto fmt = clipp::doc_formatting{}.doc_column(31); + std::cout << make_man_page(cli, argv[0], fmt) << '\n'; + std::cout << '\n'; + std::cout << '\n'; + std::cout << "Export example" << '\n'; + std::cout << "./lbm --deviceType cpu --deviceIds 0 --grid dGrid --domain-size 100 --max-iter 2000 --nOCC --huGrid --vti 1" << '\n'; + std::cout << "Benchmark example " << '\n'; + std::cout << "./lbm --deviceType gpu --deviceIds 0 1 2 3 4 --grid dGrid --domain-size 100 --max-iter 2000 --computeFP double --storageFP double --nOCC --huGrid --benchmark --warmup-iter 10 --repetitions 5" << '\n'; + + std::cout << " ./lbm --deviceType gpu\\\n" + " --deviceIds 0\\\n" + " --grid dGrid\\\n" + " --domain-size 100\\\n" + " --max-iter 1000\\\n" + " --computeFP float\\\n" + " --storageFP float\\\n" + " --occ none\\\n" + " --transferMode put\\\n" + " --stencilSemantic standard\\\n" + " --spaceCurve sweep\\\n" + " --collision bgk\\\n" + " --streamingMethod pull\\\n" + " --lattice d3q19\\\n" + " --vti 10"; + + return -1; + } + + helpSetLbmParameters(); + + std::stringstream s; + for (int i = 0; i < argc; i++) { + s << argv[i]; + if (i + 1 != argc) { + s << " "; + } + } + mArgv = s.str(); + + return 0; +} + +auto Config::helpSetLbmParameters() -> void +{ + mLbmParameters.nu = ulb * static_cast(N.x - 2) / Re; + mLbmParameters.omega = 1. / (3. * mLbmParameters.nu + 0.5); + mLbmParameters.dx = 1. / static_cast(N.x - 2); + mLbmParameters.dt = mLbmParameters.dx * ulb; +} diff --git a/benchmarks/lbm/src/Config.h b/benchmarks/lbm/src/Config.h new file mode 100644 index 00000000..e7055155 --- /dev/null +++ b/benchmarks/lbm/src/Config.h @@ -0,0 +1,124 @@ +#pragma once + +#include +#include +#include "Collision.h" +#include "Neon/core/tools/clipp.h" +#include "Neon/domain/tools/SpaceCurves.h" +#include "Neon/skeleton/Skeleton.h" + +template +struct LbmParameters +{ + ComputeType nu = 0; + ComputeType omega = 0; + ComputeType dx = 0; + ComputeType dt = 0; +}; + +struct Config +{ + double Re = 100.; // Reynolds number + double ulb = 0.04; // Velocity in lattice units + Neon::index_3d N = Neon::index_3d(160); // Number of nodes in x-direction + bool benchmark = false; // Run in benchmark mode ? + double max_t = 10.0; // Non-benchmark mode: Total time in dim.less units + int benchIniIter = 1000; // Benchmark mode: Number of warmup iterations + int benchMaxIter = 2000; // Benchmark mode: Total number of iterations + int repetitions = 1; // Benchmark mode: number of time the test is run + + std::string deviceType = "gpu"; + std::vector devices = std::vector(0); // Devices for the execution + std::string reportFile = "lbm-lid-driven-cavity-flow"; // Report file name + + std::vector gridTypeOptions = {"dGrid", "eGrid", "bGrid"}; + std::string gridType = gridTypeOptions[0]; // Neon grid type + + Neon::skeleton::OccUtils::Cli occCli{Neon::skeleton::Occ::none}; // Neon OCC type + Neon::set::TransferModeUtils::Cli transferModeCli{Neon::set::TransferMode::get}; // Neon transfer mode for halo update + Neon::set::StencilSemanticUtils::Cli stencilSemanticCli{Neon::set::StencilSemantic::lattice}; + Neon::domain::tool::spaceCurves::EncoderTypeUtil::Cli spaceCurveCli{Neon::domain::tool::spaceCurves::EncoderType::sweep}; + CollisionUtils::Cli collisionCli{Collision::bgk}; + int vti = 0; // Export vti file + + std::vector computeTypeOptions = {"double", "float"}; + std::string computeTypeStr = computeTypeOptions[0]; + + std::vector storeTypeOptions = {"double", "float"}; + std::string storeTypeStr = storeTypeOptions[0]; + + + std::vector latticeOptions = {"d3q19", "d3q27"}; + std::string lattice = latticeOptions[0]; + + std::vector streamingMethodOption = {"push", "pull"}; + std::string streamingMethod = "push"; + + LbmParameters mLbmParameters; + + std::string mArgv; + + auto getOptionList(std::vector list, std::string defaultVal) -> std::string + { + std::stringstream s; + for (int i = 0; i < int(list.size()); i++) { + s << list[i]; + if (list[i] == defaultVal) { + s << " (default) "; + } + } + return s.str(); + } + + auto check(std::vector list, std::string userValue) -> bool + { + for (int i = 0; i < int(list.size()); i++) { + if (list[i] == userValue) { + return true; + } + } + return false; + } + + auto toString() + const -> std::string; + + auto parseArgs(int argc, char* argv[]) + -> int; + + template + auto getLbmParameters() + -> LbmParameters + { + LbmParameters output; + output.nu = static_cast(mLbmParameters.nu); + output.omega = static_cast(mLbmParameters.omega); + output.dx = static_cast(mLbmParameters.dx); + output.dt = static_cast(mLbmParameters.dt); + + return output; + } + + auto fromArgStringToDim(std::string s) + { + // tokenize the string base on spaces + std::vector tokens; + std::string token; + std::istringstream tokenStream(s); + while (std::getline(tokenStream, token, '_')) { + tokens.push_back(token); + } + // if the number of tokens is one, the set all the component of N to the same number + if (tokens.size() == 1) { + N = Neon::index_3d(std::stoi(tokens[0])); + } else if (tokens.size() == 3) { + N = Neon::index_3d(std::stoi(tokens[0]), std::stoi(tokens[1]), std::stoi(tokens[2])); + } else { + throw std::runtime_error("Error parsing the dimension"); + } + } + + private: + auto helpSetLbmParameters() + -> void; +}; diff --git a/benchmarks/lbm/src/ContainersD3QXX.h b/benchmarks/lbm/src/ContainersD3QXX.h new file mode 100644 index 00000000..9165d5de --- /dev/null +++ b/benchmarks/lbm/src/ContainersD3QXX.h @@ -0,0 +1,621 @@ +#pragma once + +#include "./Methods.h" +#include "CellType.h" +#include "D3Q19.h" +#include "DeviceD3QXX.h" +#include "Methods.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" + +/** + * Specialization for D3Q19 + */ +template +struct ContainerFactoryD3QXX +{ + using Lattice = Lattice_; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + // using PullFunctions = pull::DeviceD3Q19; + // using CommonFunctions = common::DeviceD3Q19; + using Device = DeviceD3QXX; + + struct AA + { + struct Even + { + // collide + + static auto + iteration(const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + NEON_IO PopField& fpopField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fpopField.getGrid().newContainer( + "D3Q19_TwoPop_Pull", + [&, omega](Neon::set::Loader& L) -> auto { + auto& popMem = L.load(fpopField); + const auto& cellInfoPartition = L.load(cellTypeField); + [[maybe_unused]] const Compute beta = omega * 0.5; + [[maybe_unused]] const Compute invBeta = 1.0 / beta; + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + [[maybe_unused]] const Compute capturedOmega = omega; + [[maybe_unused]] const Compute capturedInvBeta = invBeta; + + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popRegisters[Lattice::Q]; + Device::Common::localLoad(gidx, popMem, NEON_OUT popRegisters); + + Compute rho; + std::array u{.0, .0, .0}; + Device::Common::macroscopic(popRegisters, NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + if constexpr (CollisionId == Collision::bgk) { + Device::Common::collideBgkUnrolled(rho, u, + usqr, capturedOmega, + NEON_IO popRegisters); + } + if constexpr (CollisionId == Collision::kbc) { + Device::Common::collideKBCUnrolled(rho, u, + usqr, capturedOmega, + capturedInvBeta, + NEON_IO popRegisters); + } + Device::Common::localStoreOpposite(gidx, popRegisters, popMem); + } + }; + }); + return container; + } + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + return Push::computeRhoAndU(fInField, cellTypeField, rhoField, uField); + } + }; + struct Odd + { + // pullStream - collide - pushStream + + static auto + iteration(const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + NEON_IO PopField& fpopField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fpopField.getGrid().newContainer( + "D3Q19_TwoPop_Pull", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fpop = L.load(fpopField); + const auto& cellInfoPartition = L.load(cellTypeField); + [[maybe_unused]] const Compute beta = omega * 0.5; + [[maybe_unused]] const Compute invBeta = 1.0 / beta; + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + [[maybe_unused]] const Compute capturedOmega = omega; + [[maybe_unused]] const Compute capturedInvBeta = invBeta; + + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popRegisters[Lattice::Q]; + Device::AA::pullStream(gidx, cellInfo.wallNghBitflag, fpop, NEON_OUT popRegisters); + + Compute rho; + std::array u{.0, .0, .0}; + Device::Common::macroscopic(popRegisters, + NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + + if constexpr (CollisionId == Collision::bgk) { + Device::Common::collideBgkUnrolled(rho, u, + usqr, capturedOmega, + NEON_IO popRegisters); + } + if constexpr (CollisionId == Collision::kbc) { + Device::Common::collideKBCUnrolled(rho, u, + usqr, capturedOmega, + capturedInvBeta, + NEON_IO popRegisters); + } + Device::Push::pushStream(gidx, cellInfo.wallNghBitflag, popRegisters, NEON_OUT fpop); + } + }; + }); + return container; + } + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + return Pull::computeRhoAndU(fInField, cellTypeField, rhoField, uField); + } + }; + }; + + struct Pull + { + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "D3Q19_TwoPop_Pull", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL, stencilSemantic); + auto& fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + [[maybe_unused]] const Compute beta = omega * 0.5; + [[maybe_unused]] const Compute invBeta = 1.0 / beta; + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + [[maybe_unused]] const Compute capturedOmega = omega; + [[maybe_unused]] const Compute capturedInvBeta = invBeta; + + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popRegisters[Lattice::Q]; + Device::Pull::pullStream(gidx, cellInfo.wallNghBitflag, fIn, NEON_OUT popRegisters); + + Compute rho; + std::array u{.0, .0, .0}; + Device::Common::macroscopic(popRegisters, NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + if constexpr (CollisionId == Collision::bgk) { + Device::Common::collideBgkUnrolled(rho, u, + usqr, capturedOmega, + NEON_IO popRegisters); + } + if constexpr (CollisionId == Collision::kbc) { + Device::Common::collideKBCUnrolled(rho, u, + usqr, capturedOmega, + capturedInvBeta, + NEON_IO popRegisters); + } + Device::Common::localStore(gidx, popRegisters, fOut); + } + }; + }); + return container; + } + + static auto + localCollide(const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "D3Q19_TwoPop_Pull", + [&, omega](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField); + auto& fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + [[maybe_unused]] const Compute beta = omega * 0.5; + [[maybe_unused]] const Compute invBeta = 1.0 / beta; + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + [[maybe_unused]] const Compute capturedOmega = omega; + [[maybe_unused]] const Compute capturedInvBeta = invBeta; + + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popRegisters[Lattice::Q]; + Device::Common::localLoad(gidx, fIn, NEON_OUT popRegisters); + + Compute rho; + std::array u{.0, .0, .0}; + Device::Common::macroscopic(popRegisters, NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + if constexpr (CollisionId == Collision::bgk) { + Device::Common::collideBgkUnrolled(rho, u, + usqr, capturedOmega, + NEON_IO popRegisters); + } + if constexpr (CollisionId == Collision::kbc) { + Device::Common::collideKBCUnrolled(rho, u, + usqr, capturedOmega, + capturedInvBeta, + NEON_IO popRegisters); + } + Device::Common::localStore(gidx, popRegisters, fOut); + } + }; + }); + return container; + } + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + + Neon::set::Container container = + fInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL); + auto& rhoXpu = L.load(rhoField); + auto& uXpu = L.load(uField); + + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + Compute rho = 0; + std::array u{.0, .0, .0}; + + Storage popRegisters[Lattice::Q]; + + if (cellInfo.classification == CellType::bulk) { + Storage popRegisters[Lattice::Q]; + Device::Pull::pullStream(gidx, cellInfo.wallNghBitflag, fIn, NEON_OUT popRegisters); + Device::Common::macroscopic(popRegisters, NEON_OUT rho, NEON_OUT u); + } else { + Device::Common::localLoad(gidx, fIn, NEON_OUT popRegisters); + if (cellInfo.classification == CellType::movingWall) { + rho = 1.0; + u = std::array{static_cast(popRegisters[0]) / static_cast(6. * 1. / 18.), + static_cast(popRegisters[1]) / static_cast(6. * 1. / 18.), + static_cast(popRegisters[2]) / static_cast(6. * 1. / 18.)}; + } + } + + rhoXpu(gidx, 0) = static_cast(rho); + uXpu(gidx, 0) = static_cast(u[0]); + uXpu(gidx, 1) = static_cast(u[1]); + uXpu(gidx, 2) = static_cast(u[2]); + }; + }); + return container; + } + }; + struct Push + { + static auto + iteration(Neon::set::StencilSemantic stencilSemantic, + const PopField& fInField /*! Input population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + const Compute omega /*! LBM omega parameter */, + PopField& fOutField /*! Output Population field */) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM-iteration", + [=](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL, stencilSemantic); + auto fOut = L.load(fOutField); + const auto& cellInfoPartition = L.load(cellTypeField); + + [[maybe_unused]] const Compute beta = omega * 0.5; + [[maybe_unused]] const Compute invBeta = 1.0 / beta; + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + [[maybe_unused]] const Compute capturedOmega = omega; + [[maybe_unused]] const Compute capturedInvBeta = invBeta; + + CellType cellInfo = cellInfoPartition(gidx, 0); + if (cellInfo.classification == CellType::bulk) { + + Storage popRegisters[Lattice::Q]; + Device::Common::localLoad(gidx, fIn, NEON_OUT popRegisters); + + Compute rho; + std::array u{.0, .0, .0}; + Device::Common::macroscopic(popRegisters, + NEON_OUT rho, NEON_OUT u); + + Compute usqr = 1.5 * (u[0] * u[0] + + u[1] * u[1] + + u[2] * u[2]); + + + if constexpr (CollisionId == Collision::bgk) { + Device::Common::collideBgkUnrolled(rho, u, + usqr, capturedOmega, + NEON_IO popRegisters); + } + if constexpr (CollisionId == Collision::kbc) { + Device::Common::collideKBCUnrolled(rho, u, + usqr, capturedOmega, + capturedInvBeta, + NEON_IO popRegisters); + } + Device::Push::pushStream(gidx, cellInfo.wallNghBitflag, popRegisters, NEON_OUT fOut); + } + }; + }); + return container; + } + + static auto + computeRhoAndU([[maybe_unused]] const PopField& fInField /*! inpout population field */, + const CellTypeField& cellTypeField /*! Cell type field */, + Rho& rhoField /*! output Population field */, + U& uField /*! output Population field */) + + -> Neon::set::Container + { + + Neon::set::Container container = + fInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, + Neon::Pattern::STENCIL); + auto& rhoXpu = L.load(rhoField); + auto& uXpu = L.load(uField); + + const auto& cellInfoPartition = L.load(cellTypeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellInfo = cellInfoPartition(gidx, 0); + Compute rho = 0; + std::array u{.0, .0, .0}; + + Storage popRegisters[Lattice::Q]; + Device::Common::localLoad(gidx, fIn, NEON_OUT popRegisters); + + if (cellInfo.classification == CellType::bulk) { + Device::Common::macroscopic(popRegisters, NEON_OUT rho, NEON_OUT u); + } else { + if (cellInfo.classification == CellType::movingWall) { + rho = 1.0; + u = std::array{static_cast(popRegisters[0]) / static_cast(6. * 1. / 18.), + static_cast(popRegisters[1]) / static_cast(6. * 1. / 18.), + static_cast(popRegisters[2]) / static_cast(6. * 1. / 18.)}; + } + } + + rhoXpu(gidx, 0) = static_cast(rho); + uXpu(gidx, 0) = static_cast(u[0]); + uXpu(gidx, 1) = static_cast(u[1]); + uXpu(gidx, 2) = static_cast(u[2]); + }; + }); + return container; + } + }; + struct Common + { + + + static auto + computeWallNghMask(const CellTypeField& infoInField, + CellTypeField& infoOutpeField) + + -> Neon::set::Container + { + Neon::set::Container container = infoInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto& infoIn = L.load(infoInField, Neon::Pattern::STENCIL); + auto& infoOut = L.load(infoOutpeField); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + CellType cellType = infoIn(gidx, 0); + cellType.wallNghBitflag = 0; + + if (cellType.classification == CellType::bulk) { + Neon::ConstexprFor<0, Lattice::Q, 1>([&, gidx](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + if constexpr (M::centerMemQ != M::fwdMemQ) { + CellType nghCellType = infoIn.template getNghData(gidx, 0, CellType::undefined)(); + if (nghCellType.classification == CellType::bounceBack || + nghCellType.classification == CellType::movingWall) { + cellType.wallNghBitflag = cellType.wallNghBitflag | ((uint32_t(1) << M::fwdRegQ)); + } + } + }); + infoOut(gidx, 0) = cellType; + } + }; + }); + return container; + } + + + template + static auto + userSettingBc(UserLambda userLambda, + PopField& pField, + CellTypeField& cellTypeField /*! Cell type field */) + -> Neon::set::Container + { + Neon::set::Container container = pField.getGrid().newContainer( + "UserSettingBc", + [&](Neon::set::Loader& L) -> auto { + auto& p = L.load(pField, Neon::Pattern::MAP); + auto& flag = L.load(cellTypeField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + const auto globalIdx = p.getGlobalIndex(gidx); + Storage pValues[Lattice::Q]; + CellType::Classification cellClass; + userLambda(globalIdx, pValues, cellClass); + + CellType flagVal(cellClass); + flag(gidx, 0) = flagVal; + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + p(gidx, M::fwdMemQ) = pValues[M::fwdRegQ]; + }); + }; + }); + return container; + } + + static auto + copyPopulation(PopField& fInField, + PopField& foutField) + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM_iteration", + [&](Neon::set::Loader& L) -> auto { + auto const& pIn = L.load(fInField, Neon::Pattern::MAP); + auto& pOut = L.load(foutField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + pOut(gidx, M::fwdMemQ) = pIn(gidx, M::fwdMemQ); + }); + }; + }); + return container; + } + + + static auto + problemSetup(PopField& fInField /*! inpout population field */, + PopField& fOutField, + CellTypeField& cellTypeField, + Neon::double_3d ulid, + double ulb) + + -> Neon::set::Container + { + Neon::set::Container container = fInField.getGrid().newContainer( + "LBM_iteration", + [&, ulid, ulb](Neon::set::Loader& L) -> auto { + auto& fIn = L.load(fInField, Neon::Pattern::MAP); + auto& fOut = L.load(fOutField, Neon::Pattern::MAP); + auto& cellInfoPartition = L.load(cellTypeField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + const auto globalIdx = fIn.getGlobalIndex(gidx); + const auto domainDim = fIn.getDomainSize(); + + CellType flagVal; + flagVal.classification = CellType::bulk; + flagVal.wallNghBitflag = 0; + + typename Lattice::Precision::Storage popVal = 0; + + if (globalIdx.x == 0 || globalIdx.x == domainDim.x - 1 || + globalIdx.y == 0 || globalIdx.y == domainDim.y - 1 || + globalIdx.z == 0 || globalIdx.z == domainDim.z - 1) { + flagVal.classification = CellType::bounceBack; + + if (globalIdx.y == domainDim.y - 1) { + flagVal.classification = CellType::movingWall; + } + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + + if (globalIdx.y == domainDim.y - 1) { + popVal = -6. * Lattice::Memory::template getT() * ulb * + (Lattice::Memory::template getDirection().v[0] * ulid.v[0] + + Lattice::Memory::template getDirection().v[1] * ulid.v[1] + + Lattice::Memory::template getDirection().v[2] * ulid.v[2]); + } else { + popVal = 0; + } + fIn(gidx, M::fwdMemQ) = popVal; + fOut(gidx, M::fwdMemQ) = popVal; + }); + } else { + flagVal.classification = CellType::bulk; + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + fIn(gidx, M::fwdMemQ) = Lattice::Memory::template getT(); + fOut(gidx, M::fwdMemQ) = Lattice::Memory::template getT(); + }); + } + cellInfoPartition(gidx, 0) = flagVal; + }; + }); + return container; + } + + static auto + setToEquilibrium(PopField& fOutField, + CellTypeField& cellTypeField) + -> Neon::set::Container + { + Neon::set::Container container = fOutField.getGrid().newContainer( + "LBM_setToEquilibrium", + [&](Neon::set::Loader& L) -> auto { + auto& fOut = L.load(fOutField, Neon::Pattern::MAP); + auto& cellInfoPartition = L.load(cellTypeField, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename PopField::Idx& gidx) mutable { + { // All points are pre-set to bulk + CellType flagVal; + flagVal.classification = CellType::bulk; + cellInfoPartition(gidx, 0) = flagVal; + } + + { // All cells are pre-set to Equilibrium + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto qToBeUsedViaMapper) { + using M = typename Lattice::template MemoryMapper; + fOut(gidx, M::fwdMemQ) = Lattice::Registers::template getT(); + }); + } + }; + }); + return container; + } + }; +}; \ No newline at end of file diff --git a/benchmarks/lbm/src/D3Q19.h b/benchmarks/lbm/src/D3Q19.h new file mode 100644 index 00000000..7022732b --- /dev/null +++ b/benchmarks/lbm/src/D3Q19.h @@ -0,0 +1,409 @@ +#pragma once + +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/memory/memSet.h" +#include "Precision.h" + + +/** In each lattice we define two indexing schema + * - the first one works at the register level. For this one we relay on the same sequence of directions defined by the STLBM code. + * - the second one works at the memory (RAM) level and it defines how lattice direction are stored in Neon fields. + * + * We keep this two aspect separate to experiment on different order of directions in memory as the order will impact the number of halo update transitions. + * + */ +template +struct D3Q19 +{ + public: + D3Q19() = delete; + + static constexpr int Q = 19; /** number of directions */ + static constexpr int D = 3; /** Space dimension */ + using Precision = Precision_; + using Self = D3Q19; + + static constexpr int RegisterMapping = 1; + static constexpr int MemoryMapping = 2; + + struct Registers + { + + using Self = D3Q19::Registers; + + static constexpr int center = 9; /** Position of direction {0,0,0} */ + + template + static constexpr auto getVelocityComponent() -> int + { + static_assert(myQ < Q); + static_assert(myXYZ < 3); + +#define ADD_COMPONENT(QQ, XXX, YYY, ZZZ) \ + if constexpr ((myQ) == (QQ)) { \ + if constexpr ((myXYZ) == 0) { \ + return XXX; \ + } \ + if constexpr ((myXYZ) == 1) { \ + return YYY; \ + } \ + if constexpr ((myXYZ) == 2) { \ + return ZZZ; \ + } \ + } + + ADD_COMPONENT(0, -1, 0, 0) + ADD_COMPONENT(1, 0, -1, 0) + ADD_COMPONENT(2, 0, 0, -1) + ADD_COMPONENT(3, -1, -1, 0) + ADD_COMPONENT(4, -1, 1, 0) + ADD_COMPONENT(5, -1, 0, -1) + ADD_COMPONENT(6, -1, 0, 1) + ADD_COMPONENT(7, 0, -1, -1) + ADD_COMPONENT(8, 0, -1, 1) + ADD_COMPONENT(9, 0, 0, 0) + ADD_COMPONENT(10, 1, 0, 0) + ADD_COMPONENT(11, 0, 1, 0) + ADD_COMPONENT(12, 0, 0, 1) + ADD_COMPONENT(13, 1, 1, 0) + ADD_COMPONENT(14, 1, -1, 0) + ADD_COMPONENT(15, 1, 0, 1) + ADD_COMPONENT(16, 1, 0, -1) + ADD_COMPONENT(17, 0, 1, 1) + ADD_COMPONENT(18, 0, 1, -1) + +#undef ADD_COMPONENT + } + + template + static constexpr auto getOpposite() -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 10) + ADD_COMPONENT(1, 11) + ADD_COMPONENT(2, 12) + ADD_COMPONENT(3, 13) + ADD_COMPONENT(4, 14) + ADD_COMPONENT(5, 15) + ADD_COMPONENT(6, 16) + ADD_COMPONENT(7, 17) + ADD_COMPONENT(8, 18) + ADD_COMPONENT(9, 9) + ADD_COMPONENT(10, 0) + ADD_COMPONENT(11, 1) + ADD_COMPONENT(12, 2) + ADD_COMPONENT(13, 3) + ADD_COMPONENT(14, 4) + ADD_COMPONENT(15, 5) + ADD_COMPONENT(16, 6) + ADD_COMPONENT(17, 7) + ADD_COMPONENT(18, 8) +#undef ADD_COMPONENT + } + + template + static constexpr auto getT() -> typename Precision::Storage + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + + ADD_COMPONENT(0, 1. / 18.) + ADD_COMPONENT(1, 1. / 18.) + ADD_COMPONENT(2, 1. / 18.) + ADD_COMPONENT(3, 1. / 36.) + ADD_COMPONENT(4, 1. / 36.) + ADD_COMPONENT(5, 1. / 36.) + ADD_COMPONENT(6, 1. / 36.) + ADD_COMPONENT(7, 1. / 36.) + ADD_COMPONENT(8, 1. / 36.) + ADD_COMPONENT(9, 1. / 3.) + ADD_COMPONENT(10, 1. / 18.) + ADD_COMPONENT(11, 1. / 18.) + ADD_COMPONENT(12, 1. / 18.) + ADD_COMPONENT(13, 1. / 36.) + ADD_COMPONENT(14, 1. / 36.) + ADD_COMPONENT(15, 1. / 36.) + ADD_COMPONENT(16, 1. / 36.) + ADD_COMPONENT(17, 1. / 36.) + ADD_COMPONENT(18, 1. / 36.) + +#undef ADD_COMPONENT + } + + + template + static constexpr auto getVelocity() -> const typename Neon::index_3d + { + return Neon::index_3d(getVelocityComponent, + getVelocityComponent, + getVelocityComponent); + } + + // Identifying first half of the directions + // For each direction in the list, the opposite is not present. + // Center is also removed + static constexpr int firstHalfQLen = (Q - 1) / 2; + static constexpr std::array firstHalfQList{0, 1, 2, 3, 4, 5, 6, 7, 8}; + + template + static inline NEON_CUDA_HOST_DEVICE auto + getCk_u(std::array const& u) + -> Compute + { + if constexpr (tegIdx == 0 || tegIdx == 10) { + return -u[0]; + } + if constexpr (tegIdx == 1 || tegIdx == 11) { + return -u[1]; + } + if constexpr (tegIdx == 2 || tegIdx == 12) { + return -u[2]; + } + if constexpr (tegIdx == 3 || tegIdx == 13) { + return -u[0] - u[1]; + } + if constexpr (tegIdx == 4 || tegIdx == 14) { + return -u[0] + u[1]; + } + if constexpr (tegIdx == 5 || tegIdx == 15) { + return -u[0] - u[2]; + } + if constexpr (tegIdx == 6 || tegIdx == 16) { + + return -u[0] + u[2]; + } + if constexpr (tegIdx == 7 || tegIdx == 17) { + + return -u[1] - u[2]; + } + if constexpr (tegIdx == 8 || tegIdx == 18) { + return -u[1] + u[2]; + } + } + }; + + + // Memory ------------------------------------------------------------------------------------------------ + + struct Memory + { + using Self = D3Q19::Memory; + + template + static constexpr auto getVelocityComponent() -> int + { + static_assert(myQ < Q); + static_assert(myXYZ < 3); + +#define ADD_COMPONENT(QQ, XXX, YYY, ZZZ) \ + if constexpr ((myQ) == (QQ)) { \ + if constexpr ((myXYZ) == 0) { \ + return XXX; \ + } \ + if constexpr ((myXYZ) == 1) { \ + return YYY; \ + } \ + if constexpr ((myXYZ) == 2) { \ + return ZZZ; \ + } \ + } + + ADD_COMPONENT(0, -1, 0, 0) + ADD_COMPONENT(1, 0, -1, 0) + ADD_COMPONENT(2, 0, 0, -1) + ADD_COMPONENT(3, -1, 0, -1) + ADD_COMPONENT(4, 0, -1, -1) + ADD_COMPONENT(5, 1, 0, -1) + ADD_COMPONENT(6, 0, 1, -1) + ADD_COMPONENT(7, -1, -1, 0) + ADD_COMPONENT(8, -1, 1, 0) + ADD_COMPONENT(9, 0, 0, 0) + ADD_COMPONENT(10, 1, 0, 0) + ADD_COMPONENT(11, 0, 1, 0) + ADD_COMPONENT(12, 1, 1, 0) + ADD_COMPONENT(13, 1, -1, 0) + ADD_COMPONENT(14, -1, 0, 1) + ADD_COMPONENT(15, 0, -1, 1) + ADD_COMPONENT(16, 0, 0, 1) + ADD_COMPONENT(17, 1, 0, 1) + ADD_COMPONENT(18, 0, 1, 1) + +#undef ADD_COMPONENT + } + + + static constexpr int center = 9; /** Position of direction {0,0,0} */ + + template + static constexpr auto mapToRegisters() + -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 0) + ADD_COMPONENT(1, 1) + ADD_COMPONENT(2, 2) + ADD_COMPONENT(3, 5) + ADD_COMPONENT(4, 7) + ADD_COMPONENT(5, 16) + ADD_COMPONENT(6, 18) + ADD_COMPONENT(7, 3) + ADD_COMPONENT(8, 4) + ADD_COMPONENT(9, 9) + ADD_COMPONENT(10, 10) + ADD_COMPONENT(11, 11) + ADD_COMPONENT(12, 13) + ADD_COMPONENT(13, 14) + ADD_COMPONENT(14, 6) + ADD_COMPONENT(15, 8) + ADD_COMPONENT(16, 12) + ADD_COMPONENT(17, 15) + ADD_COMPONENT(18, 17) +#undef ADD_COMPONENT + } + + template + static constexpr auto mapToMemory() + -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 0) + ADD_COMPONENT(1, 1) + ADD_COMPONENT(2, 2) + ADD_COMPONENT(5, 3) + ADD_COMPONENT(7, 4) + ADD_COMPONENT(16, 5) + ADD_COMPONENT(18, 6) + ADD_COMPONENT(3, 7) + ADD_COMPONENT(4, 8) + ADD_COMPONENT(9, 9) + ADD_COMPONENT(10, 10) + ADD_COMPONENT(11, 11) + ADD_COMPONENT(13, 12) + ADD_COMPONENT(14, 13) + ADD_COMPONENT(6, 14) + ADD_COMPONENT(8, 15) + ADD_COMPONENT(12, 16) + ADD_COMPONENT(15, 17) + ADD_COMPONENT(17, 18) +#undef ADD_COMPONENT + } + + template + static constexpr auto getOpposite() -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 10) + ADD_COMPONENT(1, 11) + ADD_COMPONENT(2, 16) + ADD_COMPONENT(3, 17) + ADD_COMPONENT(4, 18) + ADD_COMPONENT(5, 14) + ADD_COMPONENT(6, 15) + ADD_COMPONENT(7, 12) + ADD_COMPONENT(8, 13) + ADD_COMPONENT(9, 9) + ADD_COMPONENT(10, 0) + ADD_COMPONENT(11, 1) + ADD_COMPONENT(12, 7) + ADD_COMPONENT(13, 8) + ADD_COMPONENT(14, 5) + ADD_COMPONENT(15, 6) + ADD_COMPONENT(16, 2) + ADD_COMPONENT(17, 3) + ADD_COMPONENT(18, 4) +#undef ADD_COMPONENT + } + }; + + + template + struct RegisterMapper + { + constexpr static int fwdRegQ = fwdRegIdx_; + constexpr static int bkwRegQ = Registers::template getOpposite(); + constexpr static int fwdMemQ = Memory::template mapToMemory(); + constexpr static int bkwMemQ = Memory::template mapToMemory(); + constexpr static int centerRegQ = Registers::center; + constexpr static int centerMemQ = Memory::center; + + constexpr static int fwdMemQX = Memory::template getVelocityComponent(); + constexpr static int fwdMemQY = Memory::template getVelocityComponent(); + constexpr static int fwdMemQZ = Memory::template getVelocityComponent(); + + constexpr static int bkwMemQX = Memory::template getVelocityComponent(); + constexpr static int bkwMemQY = Memory::template getVelocityComponent(); + constexpr static int bkwMemQZ = Memory::template getVelocityComponent(); + }; + + template + struct MemoryMapper + { + constexpr static int fwdMemQ = fwdMemIdx_; + constexpr static int bkwMemQ = Memory::template getOpposite(); + + constexpr static int fwdRegQ = Memory::template mapToRegisters(); + ; constexpr static int bkwRegQ = Registers::template getOpposite(); + + constexpr static int centerRegQ = Registers::center; + constexpr static int centerMemQ = Memory::center; + + constexpr static int fwdMemQX = Memory::template getVelocityComponent(); + constexpr static int fwdMemQY = Memory::template getVelocityComponent(); + constexpr static int fwdMemQZ = Memory::template getVelocityComponent(); + + constexpr static int bkwMemQX = Memory::template getVelocityComponent(); + constexpr static int bkwMemQY = Memory::template getVelocityComponent(); + constexpr static int bkwMemQZ = Memory::template getVelocityComponent(); + }; + + public: + template + static auto getDirectionAsVector() + -> std::vector + { + std::vector vec; + if constexpr (mappingType == RegisterMapping) { + Neon::ConstexprFor<0, Q, 1>( + [&vec](auto q) { + Neon::index_3d val(Registers::template getVelocityComponent(), + Registers::template getVelocityComponent(), + Registers::template getVelocityComponent()); + vec.push_back(val); + }); + } else if constexpr (mappingType == MemoryMapping) { + Neon::ConstexprFor<0, Q, 1>( + [&vec](auto q) { + Neon::index_3d val(Memory::template getVelocityComponent(), + Memory::template getVelocityComponent(), + Memory::template getVelocityComponent()); + vec.push_back(val); + }); + } + return vec; + } +}; \ No newline at end of file diff --git a/benchmarks/lbm/src/D3Q27.h b/benchmarks/lbm/src/D3Q27.h new file mode 100644 index 00000000..ef074c3e --- /dev/null +++ b/benchmarks/lbm/src/D3Q27.h @@ -0,0 +1,497 @@ +#pragma once + +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/memory/memSet.h" +#include "Precision.h" + + +/** In each lattice we define two indexing schema + * - the first one works at the register level. For this one we relay on the same sequence of directions defined by the STLBM code. + * - the second one works at the memory (RAM) level and it defines how lattice direction are stored in Neon fields. + * + * We keep this two aspect separate to experiment on different order of directions in memory as the order will impact the number of halo update transitions. + * + */ +template +struct D3Q27 +{ + public: + D3Q27() = delete; + + static constexpr int Q = 27; /** number of directions */ + static constexpr int D = 3; /** Space dimension */ + using Precision = Precision_; + using Self = D3Q27; + + static constexpr int RegisterMapping = 1; + static constexpr int MemoryMapping = 2; + + struct Registers + { + + using Self = D3Q27::Registers; + + static constexpr int center = 13; /** Position of direction {0,0,0} */ + // Identifying first half of the directions + // For each direction in the list, the opposite is not present. + // Center is also removed + static constexpr int firstHalfQLen = (Q - 1) / 2; + static constexpr std::array firstHalfQList{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + + template + static constexpr auto getVelocityComponent() -> int + { + static_assert(myQ < Q); + static_assert(myXYZ < 3); + +#define ADD_COMPONENT(QQ, XXX, YYY, ZZZ) \ + if constexpr ((myQ) == (QQ)) { \ + if constexpr ((myXYZ) == 0) { \ + return XXX; \ + } \ + if constexpr ((myXYZ) == 1) { \ + return YYY; \ + } \ + if constexpr ((myXYZ) == 2) { \ + return ZZZ; \ + } \ + } + + ADD_COMPONENT(0, -1, 0, 0) + ADD_COMPONENT(1, 0, -1, 0) + ADD_COMPONENT(2, 0, 0, -1) + ADD_COMPONENT(3, -1, -1, 0) + ADD_COMPONENT(4, -1, 1, 0) + ADD_COMPONENT(5, -1, 0, -1) + ADD_COMPONENT(6, -1, 0, 1) + ADD_COMPONENT(7, 0, -1, -1) + ADD_COMPONENT(8, 0, -1, 1) + ADD_COMPONENT(9, -1, -1, -1) + ADD_COMPONENT(10, -1, -1, 1) + ADD_COMPONENT(11, -1, 1, -1) + ADD_COMPONENT(12, -1, 1, 1) + ADD_COMPONENT(13, 0, 0, 0) + ADD_COMPONENT(14, 1, 0, 0) + ADD_COMPONENT(15, 0, 1, 0) + ADD_COMPONENT(16, 0, 0, 1) + ADD_COMPONENT(17, 1, 1, 0) + ADD_COMPONENT(18, 1, -1, 0) + ADD_COMPONENT(19, 1, 0, 1) + ADD_COMPONENT(20, 1, 0, -1) + ADD_COMPONENT(21, 0, 1, 1) + ADD_COMPONENT(22, 0, 1, -1) + ADD_COMPONENT(23, 1, 1, 1) + ADD_COMPONENT(24, 1, 1, -1) + ADD_COMPONENT(25, 1, -1, 1) + ADD_COMPONENT(26, 1, -1, -1) + +#undef ADD_COMPONENT + } + + template + static constexpr auto getOpposite() -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + + + ADD_COMPONENT(0, 14) + ADD_COMPONENT(1, 15) + ADD_COMPONENT(2, 16) + ADD_COMPONENT(3, 17) + ADD_COMPONENT(4, 18) + ADD_COMPONENT(5, 19) + ADD_COMPONENT(6, 20) + ADD_COMPONENT(7, 21) + ADD_COMPONENT(8, 22) + ADD_COMPONENT(9, 23) + ADD_COMPONENT(10, 24) + ADD_COMPONENT(11, 25) + ADD_COMPONENT(12, 26) + ADD_COMPONENT(13, 13) + ADD_COMPONENT(14, 0) + ADD_COMPONENT(15, 1) + ADD_COMPONENT(16, 2) + ADD_COMPONENT(17, 3) + ADD_COMPONENT(18, 4) + ADD_COMPONENT(19, 5) + ADD_COMPONENT(20, 6) + ADD_COMPONENT(21, 7) + ADD_COMPONENT(22, 8) + ADD_COMPONENT(23, 9) + ADD_COMPONENT(24, 10) + ADD_COMPONENT(25, 11) + ADD_COMPONENT(26, 12) + + +#undef ADD_COMPONENT + } + + template + static constexpr auto getT() -> typename Precision::Storage + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + + ADD_COMPONENT(0, 2. / 27.) + ADD_COMPONENT(1, 2. / 27.) + ADD_COMPONENT(2, 2. / 27.) + ADD_COMPONENT(3, 1. / 54.) + ADD_COMPONENT(4, 1. / 54.) + ADD_COMPONENT(5, 1. / 54.) + ADD_COMPONENT(6, 1. / 54.) + ADD_COMPONENT(7, 1. / 54.) + ADD_COMPONENT(8, 1. / 54.) + ADD_COMPONENT(9, 1. / 216.) + ADD_COMPONENT(10, 1. / 216.) + ADD_COMPONENT(11, 1. / 216.) + ADD_COMPONENT(12, 1. / 216.) + ADD_COMPONENT(13, 8. / 27.) + ADD_COMPONENT(14, 2. / 27.) + ADD_COMPONENT(15, 2. / 27.) + ADD_COMPONENT(16, 2. / 27.) + ADD_COMPONENT(17, 1. / 54.) + ADD_COMPONENT(18, 1. / 54.) + ADD_COMPONENT(19, 1. / 54.) + ADD_COMPONENT(20, 1. / 54.) + ADD_COMPONENT(21, 1. / 54.) + ADD_COMPONENT(22, 1. / 54.) + ADD_COMPONENT(23, 1. / 216.) + ADD_COMPONENT(24, 1. / 216.) + ADD_COMPONENT(25, 1. / 216.) + ADD_COMPONENT(26, 1. / 216.) + +#undef ADD_COMPONENT + } + + template + static constexpr auto getMomentumComponet() -> typename Precision::Storage + { + static_assert(myQ < Q); + static_assert(mementumID < 6); + +#define ADD_COMPONENT(QQ, AA, BB, CC, DD, EE, FF) \ + if constexpr ((myQ) == (QQ)) { \ + if constexpr ((mementumID) == 0) { \ + return AA; \ + } \ + if constexpr ((mementumID) == 1) { \ + return BB; \ + } \ + if constexpr ((mementumID) == 2) { \ + return CC; \ + } \ + if constexpr ((mementumID) == 3) { \ + return DD; \ + } \ + if constexpr ((mementumID) == 4) { \ + return EE; \ + } \ + if constexpr ((mementumID) == 5) { \ + return FF; \ + } \ + } + + ADD_COMPONENT(0, 1, 0, 0, 0, 0, 0) + ADD_COMPONENT(1, 0, 0, 0, 1, 0, 0) + ADD_COMPONENT(2, 0, 0, 0, 0, 0, 1) + ADD_COMPONENT(3, 1, 1, 0, 1, 0, 0) + ADD_COMPONENT(4, 1, -1, 0, 1, 0, 0) + ADD_COMPONENT(5, 1, 0, 1, 0, 0, 1) + ADD_COMPONENT(6, 1, 0, -1, 0, 0, 1) + ADD_COMPONENT(7, 0, 0, 0, 1, 1, 1) + ADD_COMPONENT(8, 0, 0, 0, 1, -1, 1) + ADD_COMPONENT(9, 1, 1, 1, 1, 1, 1) + ADD_COMPONENT(10, 1, 1, -1, 1, -1, 1) + ADD_COMPONENT(11, 1, -1, 1, 1, -1, 1) + ADD_COMPONENT(12, 1, -1, -1, 1, 1, 1) + ADD_COMPONENT(13, 0, 0, 0, 0, 0, 0) + ADD_COMPONENT(14, 1, 0, 0, 0, 0, 0) + ADD_COMPONENT(15, 0, 0, 0, 1, 0, 0) + ADD_COMPONENT(16, 0, 0, 0, 0, 0, 1) + ADD_COMPONENT(17, 1, 1, 0, 1, 0, 0) + ADD_COMPONENT(18, 1, -1, 0, 1, 0, 0) + ADD_COMPONENT(19, 1, 0, 1, 0, 0, 1) + ADD_COMPONENT(20, 1, 0, -1, 0, 0, 1) + ADD_COMPONENT(21, 0, 0, 0, 1, 1, 1) + ADD_COMPONENT(22, 0, 0, 0, 1, -1, 1) + ADD_COMPONENT(23, 1, 1, 1, 1, 1, 1) + ADD_COMPONENT(24, 1, 1, -1, 1, -1, 1) + ADD_COMPONENT(25, 1, -1, 1, 1, -1, 1) + ADD_COMPONENT(26, 1, -1, -1, 1, 1, 1) + +#undef ADD_COMPONENT + } + + + template + static constexpr auto getVelocity() -> const typename Neon::index_3d + { + return Neon::index_3d(getVelocityComponent, + getVelocityComponent, + getVelocityComponent); + } + + // // Identifying first half of the directions + // // For each direction in the list, the opposite is not present. + // // Center is also removed + // static constexpr int firstHalfQLen = (Q - 1) / 2; + // static constexpr std::array firstHalfQList{0, 1, 2, 3, 4, 5, 6, 7, 8}; + }; + // Memory ------------------------------------------------------------------------------------------------ + + struct Memory + { + using Self = D3Q27::Memory; + + template + static constexpr auto getVelocityComponent() -> int + { + static_assert(myQ < Q); + static_assert(myXYZ < 3); + +#define ADD_COMPONENT(QQ, XXX, YYY, ZZZ) \ + if constexpr ((myQ) == (QQ)) { \ + if constexpr ((myXYZ) == 0) { \ + return XXX; \ + } \ + if constexpr ((myXYZ) == 1) { \ + return YYY; \ + } \ + if constexpr ((myXYZ) == 2) { \ + return ZZZ; \ + } \ + } + // Memory ------------------------------------------------------------------------------------------------ + + ADD_COMPONENT(0, -1, 0, 0) + ADD_COMPONENT(1, 0, -1, 0) + ADD_COMPONENT(2, 0, 0, -1) + ADD_COMPONENT(3, -1, 0, -1) + ADD_COMPONENT(4, 0, -1, -1) + ADD_COMPONENT(5, -1, -1, -1) + ADD_COMPONENT(6, -1, 1, -1) + ADD_COMPONENT(7, 1, 0, -1) + ADD_COMPONENT(8, 0, 1, -1) + ADD_COMPONENT(9, 1, 1, -1) + ADD_COMPONENT(10, 1, -1, -1) + ADD_COMPONENT(11, -1, -1, 0) + ADD_COMPONENT(12, -1, 1, 0) + ADD_COMPONENT(13, 0, 0, 0) + ADD_COMPONENT(14, 1, 0, 0) + ADD_COMPONENT(15, 0, 1, 0) + ADD_COMPONENT(16, 1, 1, 0) + ADD_COMPONENT(17, 1, -1, 0) + ADD_COMPONENT(18, -1, 0, 1) + ADD_COMPONENT(19, 0, -1, 1) + ADD_COMPONENT(20, -1, -1, 1) + ADD_COMPONENT(21, -1, 1, 1) + ADD_COMPONENT(22, 0, 0, 1) + ADD_COMPONENT(23, 1, 0, 1) + ADD_COMPONENT(24, 0, 1, 1) + ADD_COMPONENT(25, 1, 1, 1) + ADD_COMPONENT(26, 1, -1, 1) + +#undef ADD_COMPONENT + } + + static constexpr int center = 13; /** Position of direction {0,0,0} */ + + template + static constexpr auto mapToRegisters() + -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 0) + ADD_COMPONENT(1, 1) + ADD_COMPONENT(2, 2) + ADD_COMPONENT(3, 5) + ADD_COMPONENT(4, 7) + ADD_COMPONENT(5, 9) + ADD_COMPONENT(6, 11) + ADD_COMPONENT(7, 20) + ADD_COMPONENT(8, 22) + ADD_COMPONENT(9, 24) + ADD_COMPONENT(10, 26) + ADD_COMPONENT(11, 3) + ADD_COMPONENT(12, 4) + ADD_COMPONENT(13, 13) + ADD_COMPONENT(14, 14) + ADD_COMPONENT(15, 15) + ADD_COMPONENT(16, 17) + ADD_COMPONENT(17, 18) + ADD_COMPONENT(18, 6) + ADD_COMPONENT(19, 8) + ADD_COMPONENT(20, 10) + ADD_COMPONENT(21, 12) + ADD_COMPONENT(22, 16) + ADD_COMPONENT(23, 19) + ADD_COMPONENT(24, 21) + ADD_COMPONENT(25, 23) + ADD_COMPONENT(26, 25) + +#undef ADD_COMPONENT + } + + template + static constexpr auto mapToMemory() + -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 0) + ADD_COMPONENT(1, 1) + ADD_COMPONENT(2, 2) + ADD_COMPONENT(5, 3) + ADD_COMPONENT(7, 4) + ADD_COMPONENT(9, 5) + ADD_COMPONENT(11, 6) + ADD_COMPONENT(20, 7) + ADD_COMPONENT(22, 8) + ADD_COMPONENT(24, 9) + ADD_COMPONENT(26, 10) + ADD_COMPONENT(3, 11) + ADD_COMPONENT(4, 12) + ADD_COMPONENT(13, 13) + ADD_COMPONENT(14, 14) + ADD_COMPONENT(15, 15) + ADD_COMPONENT(17, 16) + ADD_COMPONENT(18, 17) + ADD_COMPONENT(6, 18) + ADD_COMPONENT(8, 19) + ADD_COMPONENT(10, 20) + ADD_COMPONENT(12, 21) + ADD_COMPONENT(16, 22) + ADD_COMPONENT(19, 23) + ADD_COMPONENT(21, 24) + ADD_COMPONENT(23, 25) + ADD_COMPONENT(25, 26) +#undef ADD_COMPONENT + } + + template + static constexpr auto getOpposite() -> int + { + static_assert(myQ < Q); + +#define ADD_COMPONENT(QQ, XXX) \ + if constexpr ((myQ) == (QQ)) { \ + return XXX; \ + } + ADD_COMPONENT(0, 14) + ADD_COMPONENT(1, 15) + ADD_COMPONENT(2, 22) + ADD_COMPONENT(3, 23) + ADD_COMPONENT(4, 24) + ADD_COMPONENT(5, 25) + ADD_COMPONENT(6, 26) + ADD_COMPONENT(7, 18) + ADD_COMPONENT(8, 19) + ADD_COMPONENT(9, 20) + ADD_COMPONENT(10, 21) + ADD_COMPONENT(11, 16) + ADD_COMPONENT(12, 17) + ADD_COMPONENT(13, 13) + ADD_COMPONENT(14, 0) + ADD_COMPONENT(15, 1) + ADD_COMPONENT(16, 11) + ADD_COMPONENT(17, 12) + ADD_COMPONENT(18, 7) + ADD_COMPONENT(19, 8) + ADD_COMPONENT(20, 9) + ADD_COMPONENT(21, 10) + ADD_COMPONENT(22, 2) + ADD_COMPONENT(23, 3) + ADD_COMPONENT(24, 4) + ADD_COMPONENT(25, 5) + ADD_COMPONENT(26, 6) +#undef ADD_COMPONENT + } + }; + + + template + struct RegisterMapper + { + constexpr static int fwdRegQ = fwdRegIdx_; + constexpr static int bkwRegQ = Registers::template getOpposite(); + constexpr static int fwdMemQ = Memory::template mapToMemory(); + constexpr static int bkwMemQ = Memory::template mapToMemory(); + constexpr static int centerRegQ = Registers::center; + constexpr static int centerMemQ = Memory::center; + + constexpr static int fwdMemQX = Memory::template getVelocityComponent(); + constexpr static int fwdMemQY = Memory::template getVelocityComponent(); + constexpr static int fwdMemQZ = Memory::template getVelocityComponent(); + + constexpr static int bkwMemQX = Memory::template getVelocityComponent(); + constexpr static int bkwMemQY = Memory::template getVelocityComponent(); + constexpr static int bkwMemQZ = Memory::template getVelocityComponent(); + }; + + template + struct MemoryMapper + { + constexpr static int fwdMemQ = fwdMemIdx_; + constexpr static int bkwMemQ = Memory::template getOpposite(); + + constexpr static int fwdRegQ = Memory::template mapToRegisters(); + ; + constexpr static int bkwRegQ = Registers::template getOpposite(); + + constexpr static int centerRegQ = Registers::center; + constexpr static int centerMemQ = Memory::center; + + constexpr static int fwdMemQX = Memory::template getVelocityComponent(); + constexpr static int fwdMemQY = Memory::template getVelocityComponent(); + constexpr static int fwdMemQZ = Memory::template getVelocityComponent(); + + constexpr static int bkwMemQX = Memory::template getVelocityComponent(); + constexpr static int bkwMemQY = Memory::template getVelocityComponent(); + constexpr static int bkwMemQZ = Memory::template getVelocityComponent(); + }; + + public: + template + static auto getDirectionAsVector() + -> std::vector + { + std::vector vec; + if constexpr (mappingType == RegisterMapping) { + Neon::ConstexprFor<0, Q, 1>( + [&vec](auto q) { + Neon::index_3d val(Registers::template getVelocityComponent(), + Registers::template getVelocityComponent(), + Registers::template getVelocityComponent()); + vec.push_back(val); + }); + } else if constexpr (mappingType == MemoryMapping) { + Neon::ConstexprFor<0, Q, 1>( + [&vec](auto q) { + Neon::index_3d val(Memory::template getVelocityComponent(), + Memory::template getVelocityComponent(), + Memory::template getVelocityComponent()); + vec.push_back(val); + }); + } + return vec; + } +}; \ No newline at end of file diff --git a/benchmarks/lbm/src/DeviceD3QXX.h b/benchmarks/lbm/src/DeviceD3QXX.h new file mode 100644 index 00000000..bdd8c045 --- /dev/null +++ b/benchmarks/lbm/src/DeviceD3QXX.h @@ -0,0 +1,363 @@ +#pragma once +#include "CellType.h" +#include "D3Q19.h" +#include "Neon/Neon.h" +#include "Neon/set/Containter.h" +template +struct DeviceD3QXX +{ + using Lattice = Lattice_; + using Precision = Precision_; + using Compute = typename Precision::Compute; + using Storage = typename Precision::Storage; + using Grid = Grid_; + + using PopField = typename Grid::template Field; + using CellTypeField = typename Grid::template Field; + + using Idx = typename PopField::Idx; + using Rho = typename Grid::template Field; + using U = typename Grid::template Field; + + struct Pull + { + static inline NEON_CUDA_HOST_DEVICE auto + pullStream(Idx const& gidx, + const uint32_t& wallBitFlag, + typename PopField::Partition const& fin, + NEON_OUT Storage popIn[Lattice::Q]) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using QPullingReference = typename Lattice::template RegisterMapper; + + if constexpr (QPullingReference::fwdRegQ == QPullingReference::centerRegQ) { + popIn[QPullingReference::centerRegQ] = fin(gidx, QPullingReference::centerMemQ); + } else { + if (CellType::isWall(wallBitFlag)) { + // The cell in the opposite direction of the pull is a wall + popIn[QPullingReference::fwdRegQ] = fin(gidx, QPullingReference::bkwMemQ) + + fin.template getNghData(gidx, QPullingReference::fwdMemQ)(); + } else { + popIn[QPullingReference::fwdRegQ] = fin.template getNghData(gidx, QPullingReference::fwdMemQ)(); + } + } + }); + } + }; + + struct AA + { + static inline NEON_CUDA_HOST_DEVICE auto + pullStream(Idx const& gidx, + const uint32_t& wallBitFlag, + typename PopField::Partition const& fin, + NEON_OUT Storage popIn[Lattice::Q]) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using QPullingReference = typename Lattice::template RegisterMapper; + + if constexpr (QPullingReference::fwdRegQ == QPullingReference::centerRegQ) { + popIn[QPullingReference::centerRegQ] = fin(gidx, QPullingReference::centerMemQ); + } else { + if (CellType::isWall(wallBitFlag)) { + // The cell in the opposite direction of the pull is a wall + popIn[QPullingReference::fwdRegQ] = fin(gidx, QPullingReference::fwdMemQ) + + fin.template getNghData(gidx, QPullingReference::bkwMemQ)(); + } else { + popIn[QPullingReference::fwdRegQ] = fin.template getNghData(gidx, QPullingReference::bkwMemQ)(); + } + } + }); + } + }; + + struct Push + { + static inline NEON_CUDA_HOST_DEVICE auto + pushStream(Idx const& gidx, + const uint32_t& wallNghBitFlag, + NEON_OUT Storage pOut[Lattice::Q], + NEON_OUT typename PopField::Partition& fOut) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + + if constexpr (M::fwdMemQ == M::centerMemQ) { + fOut(gidx, M::centerMemQ) = pOut[M::centerRegQ]; + } else { + if (CellType::isWall(wallNghBitFlag)) { + const auto pop_out = pOut[M::fwdRegQ]; + const auto f_nb_k = fOut.template getNghData(gidx, M::fwdMemQ)(); + + // fout(i, opp[k]) = + fOut(gidx, M::bkwMemQ) = + // pop_out + + pop_out + + // f(nb, k); + f_nb_k; + } else { + // fout(nb, + fOut.template writeNghData(gidx, + // k) + M::fwdMemQ, + // = pop_out; + pOut[M::fwdRegQ]); + } + } + }); + } + }; + + + struct Common + { + static inline NEON_CUDA_HOST_DEVICE auto + macroscopic(const Storage pop[Lattice::Q], + NEON_OUT Compute& rho, + NEON_OUT std::array& u) + -> void + { + if constexpr (Lattice::Q == 19) { +#define POP(IDX) static_cast(pop[IDX]) + const Compute X_M1 = POP(0) + POP(3) + POP(4) + POP(5) + POP(6); + const Compute X_P1 = POP(10) + POP(13) + POP(14) + POP(15) + POP(16); + const Compute X_0 = POP(9) + POP(1) + POP(2) + POP(7) + POP(8) + POP(11) + POP(12) + POP(17) + POP(18); + + const Compute Y_M1 = POP(1) + POP(3) + POP(7) + POP(8) + POP(14); + const Compute Y_P1 = POP(4) + POP(11) + POP(13) + POP(17) + POP(18); + + const Compute Z_M1 = POP(2) + POP(5) + POP(7) + POP(16) + POP(18); + const Compute Z_P1 = POP(6) + POP(8) + POP(12) + POP(15) + POP(17); +#undef POP + + rho = X_M1 + X_P1 + X_0; + u[0] = (X_P1 - X_M1) / rho; + u[1] = (Y_P1 - Y_M1) / rho; + u[2] = (Z_P1 - Z_M1) / rho; + return; + } + if constexpr (Lattice::Q == 27) { +#define POP(IDX) static_cast(pop[IDX]) + const Compute X_M1 = POP(0) + POP(3) + POP(4) + POP(5) + POP(6) + POP(9) + POP(10) + POP(11) + POP(12); + const Compute X_P1 = POP(14) + POP(17) + POP(18) + POP(19) + POP(20) + POP(23) + POP(24) + POP(25) + POP(26); + const Compute X_0 = POP(1) + POP(2) + POP(7) + POP(8) + POP(13) + POP(15) + POP(16) + POP(21) + POP(22); + + const Compute Y_M1 = POP(1) + POP(3) + POP(7) + POP(8) + POP(9) + POP(10) + POP(18) + POP(25) + POP(26); + const Compute Y_P1 = POP(15) + POP(17) + POP(21) + POP(22) + POP(23) + POP(24) + POP(4) + POP(11) + POP(12); + + const Compute Z_M1 = POP(2) + POP(5) + POP(7) + POP(9) + POP(11) + POP(20) + POP(22) + POP(24) + POP(26); + const Compute Z_P1 = POP(16) + POP(19) + POP(21) + POP(23) + POP(25) + POP(6) + POP(8) + POP(10) + POP(12); +#undef POP + rho = X_M1 + X_P1 + X_0; + u[0] = (X_P1 - X_M1) / rho; + u[1] = (Y_P1 - Y_M1) / rho; + u[2] = (Z_P1 - Z_M1) / rho; + return; + } + printf("Error: macroscopic function does not support the selected lattice.\n"); + } + + static inline NEON_CUDA_HOST_DEVICE auto + collideBgkUnrolled(Compute const& rho /*! Density */, + std::array const& u /*! Velocity */, + Compute const& usqr /*! Usqr */, + Compute const& omega /*! Omega */, + NEON_IO Storage pop[Lattice::Q]) + + -> void + { + + // constexpr Compute c1over18 = 1. / 18.; + constexpr Compute c4dot5 = 4.5; + constexpr Compute c3 = 3.; + constexpr Compute c1 = 1.; + constexpr Compute c6 = 6.; + + // constexpr int regCenter = Lattice::Registers::center; + // constexpr int regFir = Lattice::Registers::center; + + Neon::ConstexprFor<0, Lattice::Registers::firstHalfQLen, 1>( + [&](auto q) { + using M = typename Lattice::template RegisterMapper; + using T = typename Lattice::Registers; + + Compute eqFw; + Compute eqBk; + + const Compute ck_u = u[0] * Lattice::Registers::template getVelocityComponent() + + u[1] * Lattice::Registers::template getVelocityComponent() + + u[2] * Lattice::Registers::template getVelocityComponent(); + + // double eq = rho * t[k] * + // (1. + + // 3. * ck_u + + // 4.5 * ck_u * ck_u - + // usqr); + eqFw = rho * T::template getT() * + (c1 + + c3 * ck_u + + c4dot5 * ck_u * ck_u - + usqr); + + // double eqopp = eq - 6.* rho * t[k] * ck_u; + eqBk = eqFw - c6 * rho * T::template getT() * ck_u; + + // pop_out = (1. - omega) * fin(i, k) + omega * eq; + pop[M::fwdRegQ] = (c1 - omega) * static_cast(pop[M::fwdRegQ]) + omega * eqFw; + // pop_out_opp = (1. - omega) * fin(i, opp[k]) + omega * eqopp; + pop[M::bkwRegQ] = (c1 - omega) * static_cast(pop[M::bkwRegQ]) + omega * eqBk; + }); + { // Center; + using T = typename Lattice::Registers; + using M = typename Lattice::template RegisterMapper; + // eq = rho * t[k] * (1. - usqr); + const Compute eqCenter = rho * T::template getT() * (c1 - usqr); + // fout(i, k) = (1. - omega) * fin(i, k) + omega * eq; + pop[M::centerRegQ] = (c1 - omega) * static_cast(pop[M::centerRegQ]) + omega * eqCenter; + } + } + + static inline NEON_CUDA_HOST_DEVICE auto + localLoad(Idx const& gidx, + NEON_IN typename PopField::Partition const& fOut, + Storage NEON_RESTRICT pOut[Lattice::Q]) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + pOut[M::fwdRegQ] = fOut(gidx, M::fwdMemQ); + }); + } + + static inline NEON_CUDA_HOST_DEVICE auto + localStore(Idx const& gidx, + Storage NEON_RESTRICT pOut[Lattice::Q], + NEON_OUT typename PopField::Partition& fOut) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + fOut(gidx, M::fwdMemQ) = pOut[M::fwdRegQ]; + }); + } + + static inline NEON_CUDA_HOST_DEVICE auto + localStoreOpposite(Idx const& gidx, + Storage NEON_RESTRICT pOut[Lattice::Q], + NEON_OUT typename PopField::Partition& fOut) + { + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + fOut(gidx, M::bkwMemQ) = pOut[M::fwdRegQ]; + }); + } + + static inline NEON_CUDA_HOST_DEVICE auto + collideKBCUnrolled(Compute const& rho /*! Density */, + std::array const& u /*! Velocity */, + Compute const& usqr /*! Usqr */, + Compute const& omega /*! Omega */, + Compute const& invBeta /*! invBeta */, + [[maybe_unused]] NEON_IO Storage pop[Lattice::Q]) + + -> void + { + if constexpr (Lattice::Q == 27) { + constexpr Compute tiny = Compute(1e-7); + + Compute Pi[6] = {0, 0, 0, 0, 0, 0}; + Compute e0 = 0; + Compute e1 = 0; + Compute deltaS[Lattice::Q]; + Compute fneq[Lattice::Q]; + Compute feq[Lattice::Q]; + const Compute beta = omega * 0.5; + + auto fdecompose_shear = [&](const int q) -> Compute { + const Compute Nxz = Pi[0] - Pi[5]; + const Compute Nyz = Pi[3] - Pi[5]; + if (q == 0 /* -1, 0, 0 */) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 14 /* 1, 0, -1 */) { + return (2.0 * Nxz - Nyz) / 6.0; + } else if (q == 1 /* 0, -1, 0 */) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 15 /* 0, 1, 0 */) { + return (-Nxz + 2.0 * Nyz) / 6.0; + } else if (q == 2 /* 0, 0, -1 */) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 16 /* 0, 0, 1 */) { + return (-Nxz - Nyz) / 6.0; + } else if (q == 3 /* -1, -1, 0 */ || q == 17 /* 1, 1, 0 */) { + return Pi[1] / 4.0; + } else if (q == 18 /* 1, -1, 0 */ || q == 4 /* -1, 1, 0 */) { + return -Pi[1] / 4.0; + } else if (q == 5 /* -1, 0, -1 */ || q == 19 /* 1, 0, 1 */) { + return Pi[2] / 4.0; + } else if (q == 20 /* 1, 0, -1 */ || q == 6 /* -1, 0, 1 */) { + return -Pi[2] / 4.0; + } else if (q == 21 /* 0, 1, 1 */ || q == 7 /* 0, -1, -1 */) { + return Pi[4] / 4.0; + } else if (q == 22 /* 0, 1, -1 */ || q == 8 /* 0, -1, 1 */) { + return -Pi[4] / 4.0; + } else { + return Compute(0); + } + }; + + // equilibrium + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + const Compute cu = Compute(3) * + (u[0] * Lattice::Registers::template getVelocityComponent() + + u[1] * Lattice::Registers::template getVelocityComponent() + + u[2] * Lattice::Registers::template getVelocityComponent()); + + + feq[q] = rho * Lattice::Registers::template getT() * (1. + cu + 0.5 * cu * cu - usqr); + fneq[q] = pop[q] - feq[q]; + }); + + // momentum_flux + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + // Neon::ConstexprFor<0, 6, 1>([&](auto i) { + // Pi[i] += fneq[q] * Lattice::Registers::template getMomentByDirection(); + // }); + Pi[0] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + Pi[1] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + Pi[2] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + Pi[3] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + Pi[4] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + Pi[5] += fneq[q] * Lattice::Registers::template getMomentumComponet(); + }); + + // fdecompose_shear + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + deltaS[q] = rho * fdecompose_shear(q); + + Compute deltaH = fneq[q] - deltaS[q]; + + e0 += (deltaS[q] * deltaH / feq[q]); + e1 += (deltaH * deltaH / feq[q]); + }); + + // gamma + Compute gamma = invBeta - (2.0 - invBeta) * e0 / (tiny + e1); + + + // fout + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + Compute deltaH = fneq[q] - deltaS[q]; + pop[q] = pop[q] - beta * (2.0 * deltaS[q] + gamma * deltaH); + }); + } else { + printf("ERROR %d \n", Lattice::Q); + } + } + }; +}; \ No newline at end of file diff --git a/benchmarks/lbm/src/Lbm.h b/benchmarks/lbm/src/Lbm.h new file mode 100644 index 00000000..d15c8b63 --- /dev/null +++ b/benchmarks/lbm/src/Lbm.h @@ -0,0 +1,481 @@ +#include "./Config.h" +#include "./Methods.h" +#include "./Metrics.h" +#include "./Repoert.h" +#include "CellType.h" +#include "ContainersD3QXX.h" +#include "D3Q19.h" +#include "Methods.h" +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/Containter.h" +#include "Neon/skeleton/Skeleton.h" + +int backendWasReported = false; + +template +struct Lbm +{ + using Grid = Grid_; + using Lattice = Lattice_; + using Precision = Precision_; + + using PField = typename Grid::template Field; + using CField = typename Grid::template Field; + using RhoField = typename Grid::template Field; + using UField = typename Grid::template Field; + + // using CommonContainerFactory = common::ContainerFactory; + using ContainerFactory = ContainerFactoryD3QXX; + + template + Lbm(Config& config, + Report& report, + Lambda activeMask) + { + configurations = config; + reportPtr = &report; + + + // Setting the backend + Neon::Backend bk = [&] { + if (config.deviceType == "cpu") { + Neon::Backend bk(config.devices, Neon::Runtime::openmp); + return bk; + } + if (config.deviceType == "gpu") { + Neon::Backend bk(config.devices, Neon::Runtime::stream); + return bk; + } + Neon::NeonException exce("run"); + exce << config.deviceType << " is not a supported option as device type"; + NEON_THROW(exce); + }(); + + bk.toReport(report.helpGetReport(), nullptr); + + auto [gridInitClockStart, notcare] = metrics::restartClock(bk, true); + + // Setting the grid + grid = Grid( + bk, config.N, + [&](const Neon::index_3d& p) { return activeMask(p); }, + Lattice::template getDirectionAsVector(), + 1.0, 0.0, + config.spaceCurveCli.getOption()); + + grid.toReport(report.helpGetReport(), false); + + // Allocating Populations + for (int i = 0; i < lbm::MethodUtils::getNumberOfPFields(); i++) { + std::stringstream name; + name << "PopField_0" << i; + using Storage = typename Precision::Storage; + std::cout << "Allocating population field (#" << std::to_string(i + 1) << std::endl; + auto field = grid.template newField(name.str(), + Lattice::Q, + Storage(0.0)); + pFieldList.push_back(field); + NEON_INFO(field.toString()); + + } + + // Allocating cell type field + CellType defaultCelltype; + cellFlagField = grid.template newField("cellFlags", 1, defaultCelltype); + + // Allocating rho and u + if (config.vti != 0) { + std::cout << "Allocating rho and u" << std::endl; + using Storage = typename Precision::Storage; + rho = grid.template newField("rho", 1, Storage(0.0)); + u = grid.template newField("u", 3, Storage(0.0)); + } + + { // Setting Equilibrium all population field + for (auto& pField : pFieldList) { + // Set all to eq + ContainerFactory::Common::setToEquilibrium(pField, cellFlagField).run(Neon::Backend::mainStreamIdx); + } + } + metrics::recordGridInitMetrics(bk, *reportPtr, gridInitClockStart); + } + + // Lambda = void(*)(Neon::Index3d) -> std::tuple> + template + auto setBC(Lambda bcSetFunction) -> void + { + auto [setBcClockStart, notcare] = metrics::restartClock(grid.getBackend(), true); + + std::cout << "Setting the problem's boundary." << std::endl; + grid.getBackend().sync(Neon::Backend::mainStreamIdx); + // Compute ngh mask + ContainerFactory::Common::userSettingBc(bcSetFunction, + pFieldList[0], + cellFlagField) + .run(Neon::Backend::mainStreamIdx); + + for (int i = 1; i < int(pFieldList.size()); i++) { + ContainerFactory::Common::copyPopulation(pFieldList[0], + pFieldList[i]) + .run(Neon::Backend::mainStreamIdx); + } + cellFlagField.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::get, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + grid.getBackend().sync(Neon::Backend::mainStreamIdx); + ContainerFactory::Common::computeWallNghMask(cellFlagField, + cellFlagField) + .run(Neon::Backend::mainStreamIdx); + cellFlagField.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::get, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + metrics::recordProblemSetupMetrics(grid.getBackend(), *reportPtr, setBcClockStart); + } + + auto helpPrep() -> void + { + grid.getBackend().sync(Neon::Backend::mainStreamIdx); + // One collide if 2Pop - pull + // One iteration if 2Pop = push + if constexpr (lbm::Method::pull == method) { + // For pull we set up the system in a way that it does one single collide as first operation + using Compute = typename Precision::Compute; + auto lbmParameters = configurations.template getLbmParameters(); + { + skeleton = std::vector(2); + for (int iteration : {0, 1}) { + iterationPhase.resetPhase(iteration); + int skIdx = iterationPhase.getSkeletonIdx(); + auto even = ContainerFactory::Pull::iteration( + configurations.stencilSemanticCli.getOption(), + pFieldList.at(iterationPhase.getInputIdx()), + cellFlagField, + lbmParameters.omega, + pFieldList.at(iterationPhase.getOutputIdx())); + + std::vector ops; + skeleton.at(skIdx) = Neon::skeleton::Skeleton(pFieldList[0].getBackend()); + Neon::skeleton::Options opt(configurations.occCli.getOption(), configurations.transferModeCli.getOption()); + ops.push_back(even); + std::stringstream appName; + + if (skIdx % 2 == 0) + appName << "LBM_pull_even"; + else + appName << "LBM_pull_odd"; + + skeleton.at(skIdx).sequence(ops, appName.str(), opt); + + if (skIdx % 2 == 0) + skeleton.at(skIdx).ioToDot("lbm-pull-even","lbm_pull_even",true); + else + skeleton.at(skIdx).ioToDot("lbm-pull-odd","lbm_pull_even", true); + } + } + { + // Let's compute 1 collide operation to prepare the input of the first iteration + iterationPhase.resetPhase(0); + ContainerFactory::Pull::localCollide(pFieldList.at(iterationPhase.getInputIdx()), + cellFlagField, + lbmParameters.omega, + pFieldList.at(iterationPhase.getOutputIdx())) + .run(Neon::Backend::mainStreamIdx); + pFieldList[0].getBackend().syncAll(); + iterationPhase.updateIterationPhase(); + } + return; + } + if constexpr (lbm::Method::push == method) { + using Compute = typename Precision::Compute; + auto lbmParameters = configurations.template getLbmParameters(); + skeleton = std::vector(2); + for (int iteration : {0, 1}) { + iterationPhase.resetPhase(iteration); + int skIdx = iterationPhase.getSkeletonIdx(); + auto even = ContainerFactory::Push::iteration( + configurations.stencilSemanticCli.getOption(), + pFieldList.at(iterationPhase.getInputIdx()), + cellFlagField, + lbmParameters.omega, + pFieldList.at(iterationPhase.getOutputIdx())); + + std::vector ops; + skeleton.at(skIdx) = Neon::skeleton::Skeleton(pFieldList[0].getBackend()); + Neon::skeleton::Options opt(configurations.occCli.getOption(), configurations.transferModeCli.getOption()); + ops.push_back(even); + std::stringstream appName; + if (iteration % 2 == 0) + appName << "LBM_push_even"; + else + appName << "LBM_push_odd"; + skeleton.at(skIdx).sequence(ops, appName.str(), opt); + } + + { + iterationPhase.resetPhase(0); + int skIdx = iterationPhase.getSkeletonIdx(); + skeleton.at(skIdx).run(); + iterationPhase.updateIterationPhase(); + } + return; + } + if constexpr (lbm::Method::aa == method) { + using Compute = typename Precision::Compute; + auto lbmParameters = configurations.template getLbmParameters(); + skeleton = std::vector(2); + for (int iteration : {0, 1}) { + iterationPhase.resetPhase(iteration); + int skIdx = iterationPhase.getSkeletonIdx(); + Neon::set::Container lbmIteration; + std::stringstream appName; + if (iterationPhase.getPhase() == IterationPhase::Phase::even) { + lbmIteration = ContainerFactory::AA::Even::iteration( + cellFlagField, + lbmParameters.omega, + pFieldList.at(0)); + appName << "LBM_aa_even"; + } else { + lbmIteration = ContainerFactory::AA::Odd::iteration( + cellFlagField, + lbmParameters.omega, + pFieldList.at(0)); + appName << "LBM_aa_even"; + } + std::vector ops; + skeleton.at(skIdx) = Neon::skeleton::Skeleton(pFieldList[0].getBackend()); + Neon::skeleton::Options opt(configurations.occCli.getOption(), configurations.transferModeCli.getOption()); + ops.push_back(lbmIteration); + skeleton.at(skIdx).sequence(ops, appName.str(), opt); + } + + { + iterationPhase.resetPhase(0); + int const skIdx = iterationPhase.getSkeletonIdx(); + skeleton.at(skIdx).run(); + iterationPhase.updateIterationPhase(); + } + return; + } + NEON_DEV_UNDER_CONSTRUCTION(""); + } + + auto iterate() -> void + { + helpPrep(); + // Iteration keep track of all iterations + // clock_iter keeps tracks of the iteration done after the last clock reset + std::cout << "Starting main LBM loop." << std::endl; + + auto& bk = grid.getBackend(); + auto [start, clock_iter] = metrics::restartClock(bk, true); + int time_iter = 0; + // Reset the clock, to be used when a benchmark simulation is executed. + tie(start, clock_iter) = metrics::restartClock(bk, true); + + for (time_iter = 0; time_iter < configurations.benchMaxIter; ++time_iter) { + if ((configurations.vti > 1) && ((time_iter % configurations.vti) == 0)) { + bk.syncAll(); + helpExportVti(); + } + + if (configurations.benchmark && time_iter == configurations.benchIniIter) { + std::cout << "Warm up completed (" << time_iter << " iterations ).\n" + << "Starting benchmark step (" + << configurations.benchMaxIter - configurations.benchIniIter << " iterations)." + << std::endl; + tie(start, clock_iter) = metrics::restartClock(bk, false); + } + + skeleton[iterationPhase.getSkeletonIdx()].run(); + + ++clock_iter; + iterationPhase.updateIterationPhase(); + } + std::cout << "Iterations completed." << std::endl; + metrics::recordMetrics(bk, configurations, *reportPtr, start, clock_iter); + } + + auto helpExportVti() -> void + { + grid.getBackend().syncAll(); + auto& pop = pFieldList.at(iterationPhase.getOutputIdx()); + bool done = false; + if constexpr (method == lbm::Method::push) { + auto computeRhoAndU = ContainerFactory::Push::computeRhoAndU(pop, cellFlagField, rho, u); + computeRhoAndU.run(Neon::Backend::mainStreamIdx); + done = true; + } + if constexpr (method == lbm::Method::pull) { + pop.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::get, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + auto computeRhoAndU = ContainerFactory::Pull::computeRhoAndU(pop, cellFlagField, rho, u); + computeRhoAndU.run(Neon::Backend::mainStreamIdx); + done = true; + } + if constexpr (method == lbm::Method::aa) { + if (iterationPhase.getPhase() == IterationPhase::Phase::even) { + auto computeRhoAndU = ContainerFactory::AA::Even::computeRhoAndU(pop, cellFlagField, rho, u); + computeRhoAndU.run(Neon::Backend::mainStreamIdx); + } else { + auto computeRhoAndU = ContainerFactory::AA::Odd::computeRhoAndU(pop, cellFlagField, rho, u); + computeRhoAndU.run(Neon::Backend::mainStreamIdx); + } + done = true; + } + if (!done) { + NEON_DEV_UNDER_CONSTRUCTION("helpExportVti"); + } + u.updateHostData(Neon::Backend::mainStreamIdx); + rho.updateHostData(Neon::Backend::mainStreamIdx); + // pop.updateHostData(Neon::Backend::mainStreamIdx); + grid.getBackend().sync(Neon::Backend::mainStreamIdx); + + size_t numDigits = 5; + std::string iterIdStr = std::to_string(iterationPhase.getCounter()); + iterIdStr = std::string(numDigits - std::min(numDigits, iterIdStr.length()), '0') + iterIdStr; + + // pop.ioToVtk("pop_" + iterIdStr, "pop", false); + u.ioToVtk("u_" + iterIdStr, "u", false, Neon::IoFileType::BINARY); + rho.ioToVtk("rho_" + iterIdStr, "rho", false, Neon::IoFileType::BINARY); + cellFlagField.template ioToVtk("cellFlagField_" + iterIdStr, "flag", false); + +#if 0 + std::vector> xPosVal; + std::vector> yPosVal; + const double scale = 1.0 / ulid.v[0]; + + const Neon::index_3d grid_dim = grid.getDimension(); + u.forEachActiveCell([&](const Neon::index_3d& id, const int& card, auto& val) { + if (id.x == grid_dim.x / 2 && id.z == grid_dim.z / 2) { + if (card == 0) { + yPosVal.push_back({static_cast(id.v[1]) / static_cast(grid_dim.y), val * scale}); + } + } + + if (id.y == grid_dim.y / 2 && id.z == grid_dim.z / 2) { + if (card == 1) { + xPosVal.push_back({static_cast(id.v[0]) / static_cast(grid_dim.x), val * scale}); + } + } + }, + Neon::computeMode_t::seq); + + // sort the position so the linear interpolation works + std::sort(xPosVal.begin(), xPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + std::sort(yPosVal.begin(), yPosVal.end(), [=](std::pair& a, std::pair& b) { + return a.first < b.first; + }); + + auto writeToFile = [](const std::vector>& posVal, std::string filename) { + std::ofstream file; + file.open(filename); + for (auto v : posVal) { + file << v.first << " " << v.second << "\n"; + } + file.close(); + }; + writeToFile(yPosVal, "NeonUniformLBM_" + iterIdStr + "_Y.dat"); + writeToFile(xPosVal, "NeonUniformLBM_" + iterIdStr + "_X.dat"); +#endif + } + + + struct IterationPhase + { + enum Phase + { + even, + odd, + }; + + private: + Phase state{Phase::even}; + + int counter = 0; + + public: + auto getCounter() const -> int + { + return counter; + } + + auto resetPhase(Phase newPhase) + { + state = newPhase; + counter = 0; + } + + auto resetPhase(int iteration) + { + if (iteration != 0 && iteration != 1) { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + state = iteration == 0 ? even : odd; + counter = 0; + } + + auto getPhase() const -> Phase + { + return state; + } + + auto updateIterationPhase() -> void + { + state = state == even ? odd : even; + counter++; + } + + auto getInputIdx() -> int + { + if constexpr (method == lbm::Method::pull || method == lbm::Method::push) { + return state == IterationPhase::even ? 0 : 1; + } + if constexpr (method == lbm::Method::aa) { + return 0; + } + NEON_THROW_UNSUPPORTED_OPERATION("helpGetInputIdx"); + } + auto getOutputIdx() -> int + { + if constexpr (method == lbm::Method::pull || method == lbm::Method::push) { + return state == IterationPhase::even ? 1 : 0; + } + if constexpr (method == lbm::Method::aa) { + return 0; + } + NEON_THROW_UNSUPPORTED_OPERATION("helpGetInputIdx"); + } + + auto getSkeletonIdx() -> int + { + if constexpr (method == lbm::Method::pull || method == lbm::Method::push || method == lbm::Method::aa) { + return state == IterationPhase::even ? 0 : 1; + } + NEON_THROW_UNSUPPORTED_OPERATION("helpGetInputIdx"); + } + }; + + Config configurations; + IterationPhase iterationPhase; + bool prepDone = false; + Grid grid; + std::vector pFieldList; + CField cellFlagField; + RhoField rho; + UField u; + std::vector skeleton; + Report* reportPtr; +}; diff --git a/benchmarks/lbm/src/Methods.h b/benchmarks/lbm/src/Methods.h new file mode 100644 index 00000000..11a1da6f --- /dev/null +++ b/benchmarks/lbm/src/Methods.h @@ -0,0 +1,59 @@ +#pragma once +#include "Neon/core/core.h" + +namespace lbm { +enum class Method +{ + push = 0, + pull = 1, + aa = 2 +}; + +struct MethodUtils +{ + template + static auto getNumberOfPFields() -> int + { + switch (method) { + case Method::pull: + return 2; + case Method::push: + return 2; + case Method::aa: + return 1; + } + std::stringstream msg; + msg << "The following LBM method is not recognized" << lbm::MethodUtils::toString(method) << std::endl; + NEON_THROW_UNSUPPORTED_OPERATION(msg.str()); + } + + static auto toString(lbm::Method method) -> std::string + { + switch (method) { + case Method::pull: + return "pull"; + case Method::push: + return "push"; + case Method::aa: + return "aa"; + } + std::stringstream msg; + msg << "The following LBM method is not recognized" << lbm::MethodUtils::toString(method) << std::endl; + NEON_THROW_UNSUPPORTED_OPERATION(msg.str()); + } + + static auto formInt(int method) -> Method + { + if (method == int(Method::pull)) + return Method::pull; + if (method == int(Method::push)) + return Method::push; + if (method == int(Method::aa)) + return Method::aa; + + std::stringstream msg; + msg << "The following LBM method is not recognized" << method << std::endl; + NEON_THROW_UNSUPPORTED_OPERATION(msg.str()); + } +}; +} // namespace lbm \ No newline at end of file diff --git a/benchmarks/lbm/src/Metrics.h b/benchmarks/lbm/src/Metrics.h new file mode 100644 index 00000000..24716134 --- /dev/null +++ b/benchmarks/lbm/src/Metrics.h @@ -0,0 +1,88 @@ +#pragma once +#include +#include "Config.h" +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Repoert.h" + +namespace metrics { +// Return a new clock for the current time, for benchmarking. +namespace { + +auto restartClock(Neon::Backend& bk, bool sync = true) +{ + if (sync) { + bk.syncAll(); + } + return make_pair(std::chrono::high_resolution_clock::now(), 0); +} + +void recordBackend(Neon::Backend& bk, + Report& report) +{ + report.recordBk(bk); +} + +void recordGrid(Neon::domain::interface::GridBase& g, + Report& report) +{ + report.recordGrid(g); +} + +} // namespace + + +// Compute the time elapsed since a starting point, and the corresponding +// benchmarks of the code in Mega Lattice site updates per second (MLups). +template +void recordMetrics(Neon::Backend& bk, + const Config& config, + Report& report, + TimePoint start, + int clock_iter) +{ + bk.syncAll(); + size_t nElements = config.N.rMulTyped(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + double mlups = static_cast(nElements * clock_iter) / duration.count(); + + report.recordLoopTime(duration.count(), "microseconds"); + report.recordMLUPS(mlups); + + std::cout << "Metrics: " << std::endl; + std::cout << "-- time: " << std::setprecision(4) << duration.count() << " microseconds" << std::endl; + std::cout << "-- MLUPS: " << std::setprecision(4) << mlups << " MLUPS" << std::endl; +} + +template +void recordGridInitMetrics(Neon::Backend& bk, + Report& report, + TimePoint start) +{ + bk.syncAll(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + report.recordNeonGridInitTime(duration.count(), "microseconds"); + + std::cout << "Metrics: " << std::endl; + std::cout << "- Grid Init: " << std::setprecision(4) << duration.count() << " microseconds" << std::endl; +} + + +template +void recordProblemSetupMetrics(Neon::Backend& bk, + Report& report, + TimePoint start) +{ + bk.syncAll(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + report.recordProblemSetupTime(duration.count(), "microseconds"); + + std::cout << "Metrics: " << std::endl; + std::cout << " Problem Setup: " << std::setprecision(4) << duration.count() << " microseconds" << std::endl; +} +} // namespace metrics \ No newline at end of file diff --git a/benchmarks/lbm/src/Precision.h b/benchmarks/lbm/src/Precision.h new file mode 100644 index 00000000..a45ff69e --- /dev/null +++ b/benchmarks/lbm/src/Precision.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Neon/Neon.h" +#include "Neon/set/Backend.h" +#include "Neon/set/memory/memSet.h" + +template +struct Precision +{ + using Storage = StorageFP; + using Compute = ComputeFP; +}; diff --git a/benchmarks/lbm/src/Repoert.h b/benchmarks/lbm/src/Repoert.h new file mode 100644 index 00000000..b58f1c28 --- /dev/null +++ b/benchmarks/lbm/src/Repoert.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include "Config.h" +#include "Neon/domain/interface/GridBase.h" +struct Report +{ + Neon::Report mReport; + std::string mFname; + + std::vector mMLUPS; + std::vector mLoopTime; + std::vector mNeonGridInitTime; + std::vector mProblemSetupTime; + + std::string mtimeUnit = ""; + + explicit Report(const Config& c); + + auto recordMLUPS(double mlups) + -> void; + + auto recordLoopTime(double time, + const std::string& unit) + -> void; + + auto recordNeonGridInitTime(double time, + const std::string& unit) + -> void; + + auto recordProblemSetupTime(double time, + const std::string& unit) + -> void; + + auto save(std::stringstream& testCode) + -> void; + void recordBk(Neon::Backend& backend); + + void recordGrid(Neon::domain::interface::GridBase& g); + + auto helpGetReport() -> Neon::Report&; +}; diff --git a/benchmarks/lbm/src/Report.cpp b/benchmarks/lbm/src/Report.cpp new file mode 100644 index 00000000..f183a06e --- /dev/null +++ b/benchmarks/lbm/src/Report.cpp @@ -0,0 +1,117 @@ +#include +#include +#include "Repoert.h" + +Report::Report(const Config& c) + : mReport("lbm-lid-driven-cavity-flow") +{ + mFname = c.reportFile; + + mReport.addMember("argv", c.mArgv); + + mReport.addMember("Re", c.Re); + mReport.addMember("ulb", c.ulb); + mReport.addMember("N", c.N); + mReport.addMember("benchmark", c.benchmark); + mReport.addMember("max_t", c.max_t); + mReport.addMember("repetitions", c.repetitions); + mReport.addMember("vti", c.vti); + + + mReport.addMember("benchIniIter", c.benchIniIter); + mReport.addMember("benchMaxIter", c.benchMaxIter); + + mReport.addMember("deviceType", c.deviceType); + mReport.addMember("numDevices", c.devices.size()); + mReport.addMember("devices", c.devices); + mReport.addMember("reportFile", c.reportFile); + mReport.addMember("gridType", c.gridType); + + + c.occCli.addToReport(mReport); + c.transferModeCli.addToReport(mReport); + c.stencilSemanticCli.addToReport(mReport); + c.spaceCurveCli.addToReport(mReport); + c.collisionCli.addToReport(mReport); + + mReport.addMember("computeTypeStr", c.computeTypeStr); + mReport.addMember("storeTypeStr", c.storeTypeStr); + mReport.addMember("streamingMethod", c.streamingMethod); + mReport.addMember("lattice", c.lattice); + + + mReport.addMember("nu", c.mLbmParameters.nu); + mReport.addMember("omega", c.mLbmParameters.omega); + mReport.addMember("dx", c.mLbmParameters.dx); + mReport.addMember("dt", c.mLbmParameters.dt); +} + +auto Report:: + recordMLUPS(double mlups) + -> void +{ + mMLUPS.push_back(mlups); +} + +auto Report:: + recordLoopTime(double time, + const std::string& unit) + -> void +{ + if (mtimeUnit.length() == 0) { + mtimeUnit = unit; + } + if (unit.length() != mtimeUnit.length()) { + NEON_THROW_UNSUPPORTED_OPERATION("Time unit inconsistency"); + } + mLoopTime.push_back(time); +} + +auto Report::recordNeonGridInitTime(double time, const std::string& unit) -> void +{ + if (mtimeUnit.length() == 0) { + mtimeUnit = unit; + } + if (unit.length() != mtimeUnit.length()) { + NEON_THROW_UNSUPPORTED_OPERATION("Time unit inconsistency"); + } + mNeonGridInitTime.push_back(time); +} + +auto Report::recordProblemSetupTime(double time, const std::string& unit) -> void +{ + if (mtimeUnit.length() == 0) { + mtimeUnit = unit; + } + if (unit.length() != mtimeUnit.length()) { + NEON_THROW_UNSUPPORTED_OPERATION("Time unit inconsistency"); + } + mProblemSetupTime.push_back(time); +} + +auto Report:: + save(std::stringstream& testCode) + -> void +{ + mReport.addMember("MLUPS", mMLUPS); + mReport.addMember(std::string("Loop Time (") + mtimeUnit + ")", mLoopTime); + mReport.addMember(std::string("Problem Setup Time (") + mtimeUnit + ")", mProblemSetupTime); + mReport.addMember(std::string("Neon Grid Init Time (") + mtimeUnit + ")", mNeonGridInitTime); + + mReport.write(mFname + testCode.str(), true); +} + +auto Report::recordBk(Neon::Backend& backend) -> void +{ + backend.toReport(mReport); +} + +auto Report::recordGrid(Neon::domain::interface::GridBase& g) -> void +{ + g.toReport(mReport, true); +} + +auto Report::helpGetReport() -> Neon::Report& +{ + return mReport; +} \ No newline at end of file diff --git a/benchmarks/lbm/src/RunCavityTwoPop.cu b/benchmarks/lbm/src/RunCavityTwoPop.cu new file mode 100644 index 00000000..c3cfc561 --- /dev/null +++ b/benchmarks/lbm/src/RunCavityTwoPop.cu @@ -0,0 +1,322 @@ +#include "Config.h" + +#include "D3Q19.h" +#include "D3Q27.h" + +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" + +#include "./Lbm.h" +#include "CellType.h" +#include "Metrics.h" +#include "Repoert.h" +namespace CavityTwoPop { + +int backendWasReported = false; +// #include +// #include "/usr/include/fenv.h" + +namespace details { +template +auto run(Config& config, + Report& report, + [[maybe_unused]] std::stringstream& code) -> void +{ + using Storage = Storage_; + using Compute = Compute_; + using Precision = Precision; + using Lattice = Lattice_; // D3Q27; + + code << "_" << config.deviceType << "_"; + for (auto const& id : config.devices) { + code << id; + } + code << "_SS" << config.stencilSemanticCli.getStringOption(); + code << "_SF" << config.spaceCurveCli.getStringOption(); + code << "_TM" << config.transferModeCli.getStringOption(); + code << "_Occ" << config.occCli.getStringOption(); + code << "__"; + // using PopulationField = typename Grid::template Field; + + // using PopField = typename Grid::template Field; + // using CellTypeField = typename Grid::template Field; + + // using Idx = typename PopField::Idx; + // using RhoField = typename Grid::template Field; + // using UField = typename Grid::template Field; + + Neon::double_3d ulid(1., 0., 0.); + // Neon Grid and Fields initialization + Neon::index_3d domainDim = config.N; + + Lbm lbm(config, + report, + [](Neon::index_3d const&) { return true; }); + auto ulb = config.ulb; + lbm.setBC([=] NEON_CUDA_HOST_DEVICE(Neon::index_3d const& globalIdx, + NEON_OUT Storage p[Lattice::Q], + NEON_OUT CellType::Classification& cellClass) { + typename Lattice::Precision::Storage popVal = 0; + + if (globalIdx.x == 0 || globalIdx.x == domainDim.x - 1 || + globalIdx.y == 0 || globalIdx.y == domainDim.y - 1 || + globalIdx.z == 0 || globalIdx.z == domainDim.z - 1) { + cellClass = CellType::bounceBack; + + if (globalIdx.y == domainDim.y - 1) { + cellClass = CellType::movingWall; + } + + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + if (globalIdx.y == domainDim.y - 1) { + popVal = -6. * Lattice::Registers::template getT() * ulb * + (Lattice::Registers::template getVelocityComponent() * ulid.v[0] + + Lattice::Registers::template getVelocityComponent() * ulid.v[1] + + Lattice::Registers::template getVelocityComponent() * ulid.v[2]); + } else { + popVal = 0; + } + p[q] = popVal; + }); + } else { + cellClass = CellType::bulk; + Neon::ConstexprFor<0, Lattice::Q, 1>([&](auto q) { + using M = typename Lattice::template RegisterMapper; + p[q] = Lattice::Registers::template getT(); + }); + } + }); + lbm.iterate(); +} + + +template +auto runFilterMethod(Config& config, + Report& report, + std::stringstream& testCode) -> void +{ + // feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); // Enable all floating point exceptions but FE_INEXACT + // if (config.streamingMethod == "push") { + // if (config.devices.size() != 1) { + // NEON_THROW_UNSUPPORTED_OPERATION("We only support PUSH in a single device configuration for now.") + // } + // testCode << "_push"; + // return run(config, report, testCode); + // } + if (config.streamingMethod == "pull") { + testCode << "_pull"; + return run(config, report, testCode); + } + // if (config.streamingMethod == "aa") { + // if (config.devices.size() != 1) { + // NEON_THROW_UNSUPPORTED_OPERATION("We only support AA in a single device configuration for now.") + // } + // testCode << "_aa"; + // return run(config, report, testCode); + // } + NEON_DEV_UNDER_CONSTRUCTION(""); +} + +template +auto runFilterCollision(Config& config, + Report& report, + std::stringstream& testCode) -> void +{ + if (config.collisionCli.getOption() == Collision::bgk) { + testCode << "_bgk"; + return runFilterMethod(config, report, testCode); + } + if (config.collisionCli.getOption() == Collision::kbc) { + if (config.lattice != "d3q27" && config.lattice != "D3Q27") { + Neon::NeonException e("runFilterCollision"); + e << "LBM kbc collision model only supports d3q27 lattice"; + NEON_THROW(e); + } + testCode << "_kbc"; + using L = D3Q27>; + if constexpr (std::is_same_v) { + return runFilterMethod(config, report, testCode); + } + } + NEON_DEV_UNDER_CONSTRUCTION(""); +} + +template +auto runFilterLattice(Config& config, + Report& report, + std::stringstream& testCode) -> void +{ + using P = Precision; + + if (config.lattice == "d3q19" || config.lattice == "D3Q19") { + testCode << "_D3Q19"; + using L = D3Q19

; + return runFilterCollision(config, report, testCode); + } + if (config.lattice == "d3q27" || config.lattice == "D3Q27") { + testCode << "_D3Q27"; + using L = D3Q27

; + return runFilterCollision(config, report, testCode); + } + NEON_DEV_UNDER_CONSTRUCTION("Lattice type not supported. Available options: D3Q19 and D3Q27"); +} + + +template +auto runFilterComputeType(Config& config, + Report& report, + std::stringstream& testCode) +{ + if (config.computeTypeStr == "double") { + testCode << "_Sdouble"; + return runFilterLattice(config, report, testCode); + } + if (config.computeTypeStr == "float") { + testCode << "_Sfloat"; + return runFilterLattice(config, report, testCode); + } + NEON_DEV_UNDER_CONSTRUCTION(""); +} + +template +auto runFilterStoreType(Config& config, + Report& report, + std::stringstream& testCode) + -> void +{ + if (config.storeTypeStr == "double") { + testCode << "_Cdouble"; + return runFilterComputeType(config, report, testCode); + } + if (config.storeTypeStr == "float") { + testCode << "_Cfloat"; + return runFilterComputeType(config, report, testCode); + } + NEON_DEV_UNDER_CONSTRUCTION(""); +} +} // namespace details + +#ifdef NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS +constexpr bool skipTest = false; +#else +constexpr bool skipTest = false; +#endif + +auto run(Config& config, + Report& report, + std::stringstream& testCode) -> void +{ + testCode << "___" << config.N << "_"; + testCode << "_numDevs_" << config.devices.size(); + + // if (config.gridType == "dGrid") { + // testCode << "_dGrid"; + // return details::runFilterStoreType(config, report, testCode); + // } + // if (config.gridType == "dGridDisg") { + // testCode << "_dGridDisg"; + // return details::runFilterStoreType(config, report, testCode); + // } + if (config.gridType == "bGrid_4_4_4") { + testCode << "_bGrid_4_4_4"; + using Block = Neon::domain::details::bGrid::StaticBlock<4, 4, 4>; + using Grid = Neon::domain::details::bGrid::bGrid; + return details::runFilterStoreType(config, report, testCode); + } + if (config.gridType == "bGridMgpu_4_4_4") { + testCode << "_bGridMgpu_4_4_4"; + using Block = Neon::domain::details::bGridMgpu::StaticBlock<4, 4, 4>; + using Grid = Neon::domain::details::bGridMgpu::bGrid; + return details::runFilterStoreType(config, report, testCode); + } + // if (config.gridType == "eGrid") { + // if constexpr (!skipTest) { + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid" || config.gridType == "bGrid_8_8_8") { + // return details::runFilterStoreType(config, report); + // } + // if (config.gridType == "bGrid_4_4_4") { + // if constexpr (!skipTest) { + // testCode << "_bGrid_4_4_4"; + // using Sblock = Neon::domain::details::bGrid::StaticBlock<4, 4, 4>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report, testCode); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_8_8_8") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<8, 8, 8>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report, testCode); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_2_2_2") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<2, 2, 2>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_8_4") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 4>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_8_4") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 4>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_2_8") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 2, 8>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "bGrid_32_8_2") { + // if constexpr (!skipTest) { + // using Sblock = Neon::domain::details::bGrid::StaticBlock<32, 8, 2>; + // using Grid = Neon::domain::details::bGrid::bGrid; + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + // if (config.gridType == "dGridSoA") { + // if constexpr (!skipTest) { + // return details::runFilterStoreType(config, report); + // } else { + // NEON_THROW_UNSUPPORTED_OPERATION("This option was disables. PLease define NEON_BENCHMARK_DESIGN_OF_EXPERIMENTS to enable it.") + // } + // } + NEON_THROW_UNSUPPORTED_OPERATION("Unknown grid type: " + config.gridType); +} +} // namespace CavityTwoPop diff --git a/benchmarks/lbm/src/RunCavityTwoPop.h b/benchmarks/lbm/src/RunCavityTwoPop.h new file mode 100644 index 00000000..0386d28e --- /dev/null +++ b/benchmarks/lbm/src/RunCavityTwoPop.h @@ -0,0 +1,13 @@ +#include "Config.h" +#include "D3Q19.h" +#include "Neon/domain/dGrid.h" + +#include "Metrics.h" +#include "Repoert.h" + +namespace CavityTwoPop { + +auto run(Config& config, + Report& report, + std::stringstream&) -> void; +} // namespace CavityTwoPop \ No newline at end of file diff --git a/benchmarks/lbm/src/app.cpp b/benchmarks/lbm/src/app.cpp new file mode 100644 index 00000000..8cbfc1cf --- /dev/null +++ b/benchmarks/lbm/src/app.cpp @@ -0,0 +1,48 @@ + +#include "Config.h" +#include "Repoert.h" +#include "RunCavityTwoPop.h" + +#include "Neon/Neon.h" +#include "Neon/core/tools/clipp.h" +#include "Neon/domain/dGrid.h" + +int main(int argc, char** argv) +{ + Config config; + Neon::init(); + + config.Re = 100.; // Reynolds number + config.ulb = 0.04; // Velocity in lattice units + config.N = 160; // Number of nodes in x-direction + config.benchmark = true; // Run in benchmark mode ? + config.max_t = 10.0; // Non-benchmark mode: Total time in dim.less units + // config.out_freq = 20000000; // Non-benchmark mode: Frequency in LU for output of terminal message and profiles (use 0 for no messages) + // config.data_freq = 20000000; // Non-benchmark mode: Frequency in LU of full data dump (use 0 for no data dump) + // config.bench_ini_iter = 0; // Benchmark mode: Number of warmup iterations + // config.bench_max_iter = 10000; // Benchmark mode: Total number of iterations + // config.perKeeperFile = "perf"; + // config.devices = {0}; + // config.gridType = "dGrid"; + // config.occ = Neon::skeleton::Options_t::Occ::none + + + if (config.parseArgs(argc, argv) != 0) { + return -1; + } + + std::cout << "--------------- Parameters ---------------\n"; + std::cout << config.toString(); + std::cout << "-------------------------------------------\n"; + + Report report(config); + std::stringstream testCode; + for (int i = 0; i < config.repetitions; i++) { + testCode = std::stringstream(); + CavityTwoPop::run(config, report, testCode); + } + + report.save(testCode); + + return 0; +} diff --git a/cmake/LoadingExternalGitRepositories.cmake b/cmake/LoadingExternalGitRepositories.cmake index a4cfbfb0..1d31e9f5 100644 --- a/cmake/LoadingExternalGitRepositories.cmake +++ b/cmake/LoadingExternalGitRepositories.cmake @@ -25,6 +25,43 @@ if (NOT rapidjson_POPULATED) file(REMOVE_RECURSE ${rapidjson_SOURCE_DIR}/bin/) endif () +# glm +FetchContent_GetProperties(glm) + message(STATUS "Fetching glm...") + if (NOT glm_POPULATED) + FetchContent_Declare(glm + GIT_REPOSITORY https://github.com/g-truc/glm.git + GIT_TAG master + ) + FetchContent_Populate(glm) + add_subdirectory(${glm_SOURCE_DIR}) +endif() + +# polyscope +if(${NEON_USE_POLYSCOPE}) + FetchContent_GetProperties(polyscope) + if (NOT polyscope_POPULATED) + message(STATUS "Fetching polyscope...") + FetchContent_Declare(polyscope + GIT_REPOSITORY https://github.com/Ahdhn/polyscope.git + GIT_TAG 834b9c6c1a2675ccefd254d526f2dac3e3f831c6 + ) + FetchContent_MakeAvailable(polyscope) + endif() +endif() + +#libigl +FetchContent_GetProperties(libigl) +if (NOT libigl_POPULATED) + message(STATUS "Fetching libigl...") + FetchContent_Declare( + libigl + GIT_REPOSITORY https://github.com/Ahdhn/libigl.git + GIT_TAG master + ) + FetchContent_MakeAvailable(libigl) +endif() + if (${BUILD_NEON_TESTING}) # GoogleTest FetchContent_GetProperties(googletest) diff --git a/cmake/ManageCompilationFlags.cmake b/cmake/ManageCompilationFlags.cmake index ea09ab25..a8e0eb8a 100644 --- a/cmake/ManageCompilationFlags.cmake +++ b/cmake/ManageCompilationFlags.cmake @@ -63,4 +63,5 @@ set(NeonCUDAFlags -Xptxas -warn-spills -res-usage --ptxas-options=-v --relocatable-device-code=true + --maxrregcount 125 ) diff --git a/libNeonCore/include/Neon/core/tools/metaprogramming.h b/libNeonCore/include/Neon/core/tools/metaprogramming.h index 53678ed6..ea004a43 100644 --- a/libNeonCore/include/Neon/core/tools/metaprogramming.h +++ b/libNeonCore/include/Neon/core/tools/metaprogramming.h @@ -4,3 +4,4 @@ #include "Neon/core/tools/metaprogramming/debugHelp.h" #include "Neon/core/tools/metaprogramming/extractTupleVecType.h" #include "Neon/core/tools/metaprogramming/tupleVecTable.h" +#include "Neon/core/tools/metaprogramming/ConstexprFor.h" \ No newline at end of file diff --git a/libNeonCore/include/Neon/core/tools/metaprogramming/ConstexprFor.h b/libNeonCore/include/Neon/core/tools/metaprogramming/ConstexprFor.h new file mode 100644 index 00000000..a6d8767e --- /dev/null +++ b/libNeonCore/include/Neon/core/tools/metaprogramming/ConstexprFor.h @@ -0,0 +1,31 @@ +#pragma once + +namespace Neon { + +/** + * Implementation of a constexpr for loop. + * Reference: https://artificial-mind.net/blog/2020/10/31/constexpr-for + * + * The loop is implemented as a recursive template function. + * It is equicalent to the following code: + * + * for(int i = Start; i < End; i += Inc) { + * f(i); + * // do something + * // ... + * // ... + * } + */ +template +constexpr void ConstexprFor(F&& f) +{ + if constexpr (Start < End) { + f(std::integral_constant()); + ConstexprFor(f); + } +} + +} // namespace Neon \ No newline at end of file diff --git a/libNeonCore/include/Neon/core/types/Macros.h b/libNeonCore/include/Neon/core/types/Macros.h index 5e909d3a..d9f47914 100644 --- a/libNeonCore/include/Neon/core/types/Macros.h +++ b/libNeonCore/include/Neon/core/types/Macros.h @@ -206,8 +206,12 @@ #define NEON_RESTRICT restrict #endif -#ifdef NEON_COMPILER_CUDA +#if defined(NEON_COMPILER_CUDA) +#if!defined(_WIN32) #define NEON_RESTRICT __restrict__ +#else +#define NEON_RESTRICT +#endif #endif #ifdef NEON_COMPILER_CLANG diff --git a/libNeonCore/include/Neon/core/types/vec/vec3d_integer.tdecl.h b/libNeonCore/include/Neon/core/types/vec/vec3d_integer.tdecl.h index acdae410..e41c8f26 100644 --- a/libNeonCore/include/Neon/core/types/vec/vec3d_integer.tdecl.h +++ b/libNeonCore/include/Neon/core/types/vec/vec3d_integer.tdecl.h @@ -56,6 +56,10 @@ class Vec_3d num_axis = 3 }; + static constexpr int directionX = axis_e::x_axis; + static constexpr int directionY = axis_e::y_axis; + static constexpr int directionZ = axis_e::z_axis; + union { Integer v[axis_e::num_axis]{0, 0, 0}; @@ -120,10 +124,15 @@ class Vec_3d NEON_CUDA_HOST_DEVICE inline void constexpr set(Integer p[self_t::num_axis]); - NEON_CUDA_HOST_DEVICE inline void constexpr set(const self_t& other); + NEON_CUDA_HOST_DEVICE inline void constexpr set(const self_t& other); NEON_CUDA_HOST_DEVICE inline void constexpr set(const Integer& xyz); + template + NEON_CUDA_HOST_DEVICE inline constexpr Integer getComponent() const + { + return v[componentId]; + } //---- [REDUCE SECTION] -------------------------------------------------------------------------------------------- //---- [REDUCE SECTION] -------------------------------------------------------------------------------------------- @@ -324,10 +333,10 @@ class Vec_3d * @return Resulting point is C =(A.x / B.x, A.y / B.y, A.z / B.z) * */ template - NEON_CUDA_HOST_DEVICE inline self_t operator*(const Vec_3d& B) const; + NEON_CUDA_HOST_DEVICE inline constexpr self_t operator*(const Vec_3d& B) const; template - NEON_CUDA_HOST_DEVICE inline self_t operator*(const K_tt& alpha) const; + NEON_CUDA_HOST_DEVICE inline constexpr self_t operator*(const K_tt& alpha) const; /** * Compute the division between two points A and B, component by component (A.x/B.x, A.y/B.y, A.z/B.z). * Be careful!!! if the type is int, the division will be an integer division!!! @@ -364,15 +373,15 @@ class Vec_3d * @param[in] B: second point for the operation. * @return True if A.x <= B.x && A.y <= B.y && A.z <= B.z */ - NEON_CUDA_HOST_DEVICE inline bool operator==(const self_t& B) const; + NEON_CUDA_HOST_DEVICE inline constexpr bool operator==(const self_t& B) const; - NEON_CUDA_HOST_DEVICE inline bool operator==(const Integer other[self_t::num_axis]) const; + NEON_CUDA_HOST_DEVICE inline constexpr bool operator==(const Integer other[self_t::num_axis]) const; - NEON_CUDA_HOST_DEVICE inline bool operator==(const Integer otherScalar) const; + NEON_CUDA_HOST_DEVICE inline constexpr bool operator==(const Integer otherScalar) const; - NEON_CUDA_HOST_DEVICE inline bool operator!=(const self_t& B) const; + NEON_CUDA_HOST_DEVICE inline constexpr bool operator!=(const self_t& B) const; - NEON_CUDA_HOST_DEVICE inline bool operator!=(const Integer other[self_t::num_axis]) const; + NEON_CUDA_HOST_DEVICE inline constexpr bool operator!=(const Integer other[self_t::num_axis]) const; NEON_CUDA_HOST_DEVICE inline self_t operator-() const; diff --git a/libNeonCore/include/Neon/core/types/vec/vec3d_integer.timp.h b/libNeonCore/include/Neon/core/types/vec/vec3d_integer.timp.h index fe7222eb..c5ceea55 100644 --- a/libNeonCore/include/Neon/core/types/vec/vec3d_integer.timp.h +++ b/libNeonCore/include/Neon/core/types/vec/vec3d_integer.timp.h @@ -458,7 +458,7 @@ NEON_CUDA_HOST_DEVICE inline Vec_3d Vec_3d template -NEON_CUDA_HOST_DEVICE inline Vec_3d Vec_3d::operator*(const Vec_3d& B) const +NEON_CUDA_HOST_DEVICE inline constexpr Vec_3d Vec_3d::operator*(const Vec_3d& B) const { const Vec_3d& A = *this; // Vec_3d C((Integer)(A.x * B.x), (Integer)(A.y * B.y), (Integer)(A.z * B.z)); @@ -468,7 +468,7 @@ NEON_CUDA_HOST_DEVICE inline Vec_3d Vec_3d template -NEON_CUDA_HOST_DEVICE inline Vec_3d Vec_3d::operator*(const K_tt& alpha) const +NEON_CUDA_HOST_DEVICE inline constexpr Vec_3d Vec_3d::operator*(const K_tt& alpha) const { const Vec_3d& A = *this; const auto alpha_c = static_cast(alpha); @@ -526,35 +526,35 @@ NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator< template -NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator==(const Vec_3d& B) const +NEON_CUDA_HOST_DEVICE inline constexpr bool Vec_3d::operator==(const Vec_3d& B) const { const Vec_3d& A = *this; return A.x == B.x && A.y == B.y && A.z == B.z; } template -NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator==(const IntegerType_ta other[Vec_3d::num_axis]) const +NEON_CUDA_HOST_DEVICE inline constexpr bool Vec_3d::operator==(const IntegerType_ta other[Vec_3d::num_axis]) const { const Vec_3d& A = *this; return A.x == other[0] && A.y == other[1] && A.z == other[2]; } template -NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator==(const IntegerType_ta otherScalar) const +NEON_CUDA_HOST_DEVICE inline constexpr bool Vec_3d::operator==(const IntegerType_ta otherScalar) const { const Vec_3d& A = *this; return A.x == otherScalar && A.y == otherScalar && A.z == otherScalar; } template -NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator!=(const Vec_3d& B) const +NEON_CUDA_HOST_DEVICE inline constexpr bool Vec_3d::operator!=(const Vec_3d& B) const { const Vec_3d& A = *this; return !(A == B); } template -NEON_CUDA_HOST_DEVICE inline bool Vec_3d::operator!=(const IntegerType_ta other[Vec_3d::num_axis]) const +NEON_CUDA_HOST_DEVICE inline constexpr bool Vec_3d::operator!=(const IntegerType_ta other[Vec_3d::num_axis]) const { const Vec_3d& A = *this; return A.x != other[0] || A.y != other[1] || A.z != other[2]; diff --git a/libNeonCore/include/Neon/core/types/vec/vec4d_integer.tdecl.h b/libNeonCore/include/Neon/core/types/vec/vec4d_integer.tdecl.h index 788291a6..940c6d2c 100644 --- a/libNeonCore/include/Neon/core/types/vec/vec4d_integer.tdecl.h +++ b/libNeonCore/include/Neon/core/types/vec/vec4d_integer.tdecl.h @@ -58,6 +58,7 @@ template class Vec_4d { public: + using Integer = IntegerType_ta; using element_t = IntegerType_ta; using self_t = Vec_4d; diff --git a/libNeonDomain/include/Neon/domain/Grids.h b/libNeonDomain/include/Neon/domain/Grids.h index aad0cda5..6e48f584 100644 --- a/libNeonDomain/include/Neon/domain/Grids.h +++ b/libNeonDomain/include/Neon/domain/Grids.h @@ -3,3 +3,6 @@ #include "Neon/domain/aGrid.h" #include "Neon/domain/eGrid.h" #include "Neon/domain/bGrid.h" +#include "Neon/domain/dGridSoA.h" +#include "Neon/domain/bGridDisg.h" +#include "Neon/domain/bGridMgpuDisg.h" diff --git a/libNeonDomain/include/Neon/domain/bGridDisg.h b/libNeonDomain/include/Neon/domain/bGridDisg.h new file mode 100644 index 00000000..362c3ab9 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/bGridDisg.h @@ -0,0 +1,6 @@ +#pragma once +#include "Neon/domain/details/bGridDisg/bGrid.h" + +namespace Neon { +using bGridDisg = Neon::domain::details::disaggregated::bGrid::bGrid>; +} \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/bGridMgpuDisg.h b/libNeonDomain/include/Neon/domain/bGridMgpuDisg.h new file mode 100644 index 00000000..25d68e88 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/bGridMgpuDisg.h @@ -0,0 +1,6 @@ +#pragma once +#include "Neon/domain/details/bGridDisgMgpu//bGrid.h" + +namespace Neon { +using bGridMgpu = Neon::domain::details::bGridMgpu::bGridMgpuDefault; +} \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/dGridSoA.h b/libNeonDomain/include/Neon/domain/dGridSoA.h new file mode 100644 index 00000000..bdd63f25 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/dGridSoA.h @@ -0,0 +1,7 @@ +#pragma once +#include "Neon/domain/details/dGridSoA/dGridSoA.h" + + +namespace Neon { +using dGridSoA = Neon::domain::details::dGridSoA::dGridSoA; +} \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bField_imp.h b/libNeonDomain/include/Neon/domain/details/bGrid/bField_imp.h index 1e62f883..1ae2bf1d 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bField_imp.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bField_imp.h @@ -63,7 +63,8 @@ bField::bField(const std::string& fieldUserName, blockConnectivity.mem(), bitmask.mem(), dataBlockOrigins.mem(), - mData->grid->helpGetStencilIdTo3dOffset().rawMem(execution, setIdx)); + mData->grid->helpGetStencilIdTo3dOffset().rawMem(execution, setIdx), + mData->grid->getDimension()); }); } @@ -311,8 +312,9 @@ auto bField::initHaloUpdateTable() -> void T* srcMem = blockViewPartitions[Data::EndPoints::src]->mem(); T* dstMem = blockViewPartitions[Data::EndPoints::dst]->mem(); - Neon::size_4d srcBoundaryBuff(boundaryZBeginIdx[Data::EndPoints::src][static_cast(byDirection)], 0, 0, 0); Neon::size_4d dstGhostBuff(ghostZBeginIdx[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))], 0, 0, 0); + Neon::size_4d srcBoundaryBuff(boundaryZBeginIdx[Data::EndPoints::src][static_cast(byDirection)], 0, 0, 0); + size_t transferDataBlockCount = mData->grid->mData->partitioner1D.getSpanLayout().getBoundsBoundary(setIdxVec[Data::EndPoints::src], byDirection).count; // std::cout << "To " << dstGhostBuff << " prt " << blockViewPartitions[Data::EndPoints::dst]->prtID() << " From " << srcBoundaryBuff << " prt " << blockViewPartitions[Data::EndPoints::src]->prtID() << std::endl; diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bGrid.h b/libNeonDomain/include/Neon/domain/details/bGrid/bGrid.h index 59131cd7..e1c7e55d 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bGrid.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bGrid.h @@ -60,7 +60,8 @@ class bGrid : public Neon::domain::interface::GridBaseTemplate, const ActiveCellLambda activeCellLambda, const Neon::domain::Stencil& stencil, const double_3d& spacingData = double_3d(1, 1, 1), - const double_3d& origin = double_3d(0, 0, 0)); + const double_3d& origin = double_3d(0, 0, 0), + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); /** @@ -72,10 +73,10 @@ class bGrid : public Neon::domain::interface::GridBaseTemplate, const ActiveCellLambda activeCellLambda /**< Function that identify the user domain inside the boxed Cartesian discretization */, const Neon::domain::Stencil& stencil /**< union of tall the stencil that will be used in the computation */, const int multiResDiscreteIdxSpacing /**< Parameter for the multi-resolution. Index i and index (i+1) may be remapped as i*voxelSpacing and (i+1)* voxelSpacing. - * For a uniform bGrid, i.e outside the context of multi-resolution this parameter is always 1 */ - , + * For a uniform bGrid, i.e outside the context of multi-resolution this parameter is always 1 */, const double_3d& spacingData /** Physical spacing between two consecutive data points in the Cartesian domain */, - const double_3d& origin /** Physical location in space of the origin of the Cartesian discretization */); + const double_3d& origin /** Physical location in space of the origin of the Cartesian discretization */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); /** * Returns some properties for a given cartesian in the Cartesian domain. diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bGrid_imp.h b/libNeonDomain/include/Neon/domain/details/bGrid/bGrid_imp.h index 607237c6..52af843e 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bGrid_imp.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bGrid_imp.h @@ -1,28 +1,31 @@ #include "Neon/domain/details/bGrid/bGrid.h" +#include "Neon/domain/tools/SpaceCurves.h" namespace Neon::domain::details::bGrid { template template -bGrid::bGrid(const Neon::Backend& backend, - const Neon::int32_3d& domainSize, - const ActiveCellLambda activeCellLambda, - const Neon::domain::Stencil& stencil, - const double_3d& spacingData, - const double_3d& origin) - : bGrid(backend, domainSize, activeCellLambda, stencil, 1, spacingData, origin) +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) + : bGrid(backend, domainSize, activeCellLambda, stencil, 1, spacingData, origin, encoderType) { } template template -bGrid::bGrid(const Neon::Backend& backend, - const Neon::int32_3d& domainSize, - const ActiveCellLambda activeCellLambda, - const Neon::domain::Stencil& stencil, - const int multiResDiscreteIdxSpacing, - const double_3d& spacingData, - const double_3d& origin) +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const int multiResDiscreteIdxSpacing, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) { @@ -35,18 +38,25 @@ bGrid::bGrid(const Neon::Backend& backend, SBlock::memBlockSizeY, SBlock::memBlockSizeZ); + std::stringstream gridName; + gridName << "bGrid_" << SBlock::memBlockSizeX << "_" + << SBlock::memBlockSizeY << "_" + << SBlock::memBlockSizeZ; { auto nElementsPerPartition = backend.devSet().template newDataSet(0); // We do an initialization with nElementsPerPartition to zero, // then we reset to the computed number. - bGrid::GridBase::init("bGrid", + + bGrid::GridBase::init(gridName.str(), backend, domainSize, stencil, nElementsPerPartition, defaultKernelBlockSize, multiResDiscreteIdxSpacing, - origin); + origin, + encoderType, + defaultKernelBlockSize); } { // Initialization of the partitioner @@ -54,10 +64,11 @@ bGrid::bGrid(const Neon::Backend& backend, mData->partitioner1D = Neon::domain::tool::Partitioner1D( backend, activeCellLambda, - [](Neon::index_3d /*idx*/) { return false; }, + nullptr, SBlock::memBlockSize3D.template newType(), domainSize, Neon::domain::Stencil::s27_t(false), + encoderType, multiResDiscreteIdxSpacing); mData->mDataBlockOriginField = mData->partitioner1D.getGlobalMapping(); @@ -107,8 +118,8 @@ bGrid::bGrid(const Neon::Backend& backend, for (int j = 0; j < SBlock::memBlockSize3D.template newType().y; j++) { for (int i = 0; i < SBlock::memBlockSize3D.template newType().x; i++) { auto globalPosition = blockOrigin + Neon::int32_3d(i * this->mData->mMultiResDiscreteIdxSpacing, - j * this->mData->mMultiResDiscreteIdxSpacing, - k * this->mData->mMultiResDiscreteIdxSpacing); + j * this->mData->mMultiResDiscreteIdxSpacing, + k * this->mData->mMultiResDiscreteIdxSpacing); bool const isInDomain = globalPosition < domainSize * this->mData->mMultiResDiscreteIdxSpacing; bool const isActive = activeCellLambda(globalPosition); if (isActive && isInDomain) { @@ -155,8 +166,8 @@ bGrid::bGrid(const Neon::Backend& backend, BlockIdx blockNghIdx = Span::getInvalidBlockId(); typename decltype(blockConnectivity)::Idx nghIdx; Neon::int8_3d stencilPoint(i - int8_t(1), - j - int8_t(1), - k - int8_t(1)); + j - int8_t(1), + k - int8_t(1)); bool isValid = blockConnectivity.getNghIndex(idx, stencilPoint, nghIdx); if (isValid) { blockNghIdx = static_cast(nghIdx.helpGet()); @@ -220,14 +231,16 @@ bGrid::bGrid(const Neon::Backend& backend, mData->stencilIdTo3dOffset.updateDeviceData(backend, Neon::Backend::mainStreamIdx); } // Init the base grid - bGrid::GridBase::init("bGrid", + bGrid::GridBase::init(gridName.str(), backend, domainSize, Neon::domain::Stencil(), mData->mNumActiveVoxel, SBlock::memBlockSize3D.template newType(), spacingData, - origin); + origin, + encoderType, + defaultKernelBlockSize); { // setting launchParameters mData->launchParametersTable.forEachSeq([&](Neon::DataView dw, Neon::set::LaunchParameters& bLaunchParameters) { diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bPartition.h b/libNeonDomain/include/Neon/domain/details/bGrid/bPartition.h index b12fa671..a5a79ae2 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bPartition.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bPartition.h @@ -36,7 +36,8 @@ class bPartition typename Idx::DataBlockIdx* mBlockConnectivity, typename SBlock::BitMask const* NEON_RESTRICT mMask, Neon::int32_3d* mOrigin, - NghIdx* mStencilNghIndex); + NghIdx* mStencilNghIndex, + Neon::int32_3d mDomainSize); /** * Retrieve the cardinality of the field. @@ -50,7 +51,7 @@ class bPartition */ inline NEON_CUDA_HOST_DEVICE auto operator()(const Idx& cell, - int card) + int card = 0) -> T&; /** @@ -58,7 +59,7 @@ class bPartition */ inline NEON_CUDA_HOST_DEVICE auto operator()(const Idx& cell, - int card) + int card = 0) const -> const T&; /** @@ -98,6 +99,27 @@ class bPartition T defaultValue) const -> NghData; + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void>; + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx& gidx, + int card, + T value) + -> bool; + /** * Gets the global coordinates of the cartesian point. */ @@ -109,6 +131,17 @@ class bPartition isActive(const Idx& cell, const typename SBlock::BitMask* mask = nullptr) const -> bool; + NEON_CUDA_HOST_DEVICE inline auto + isActive(const Idx& cell, + const NghIdx nghDir) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto + getDomainSize() + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE + auto mem() const -> T const *; + /** * Gets the Idx for in the block view space. */ @@ -116,7 +149,7 @@ class bPartition getBlockViewIdx(const Idx& cell) const -> BlockViewGridIdx; - + NEON_CUDA_HOST_DEVICE inline auto helpGetPitch(const Idx& cell, int card) const -> uint32_t; @@ -147,6 +180,7 @@ class bPartition helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) const -> Idx; + int mCardinality; T* mMem; NghIdx const* NEON_RESTRICT mStencilNghIndex; @@ -154,6 +188,8 @@ class bPartition typename SBlock::BitMask const* NEON_RESTRICT mMask; Neon::int32_3d const* NEON_RESTRICT mOrigin; int mSetIdx; + int mMultiResDiscreteIdxSpacing = 1; + Neon::int32_3d mDomainSize; }; } // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bPartition_imp.h b/libNeonDomain/include/Neon/domain/details/bGrid/bPartition_imp.h index ec456913..3f948006 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bPartition_imp.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bPartition_imp.h @@ -25,14 +25,16 @@ bPartition:: typename Idx::DataBlockIdx* blockConnectivity, typename SBlock::BitMask const* NEON_RESTRICT mask, Neon::int32_3d* origin, - NghIdx* stencilNghIndex) + NghIdx* stencilNghIndex, + Neon::int32_3d mDomainSize) : mCardinality(cardinality), mMem(mem), mStencilNghIndex(stencilNghIndex), mBlockConnectivity(blockConnectivity), mMask(mask), mOrigin(origin), - mSetIdx(setIdx) + mSetIdx(setIdx), + mDomainSize(mDomainSize) { } @@ -45,9 +47,20 @@ NEON_CUDA_HOST_DEVICE inline auto bPartition:: location.x += gidx.mInDataBlockIdx.x; location.y += gidx.mInDataBlockIdx.y; location.z += gidx.mInDataBlockIdx.z; + if constexpr (SBlock::isMultiResMode) { + return location * mMultiResDiscreteIdxSpacing; + } return location; } +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getDomainSize() + const -> Neon::index_3d +{ + return mDomainSize; +} + template NEON_CUDA_HOST_DEVICE inline auto bPartition:: getBlockViewIdx(const Idx& gidx) @@ -82,6 +95,13 @@ inline NEON_CUDA_HOST_DEVICE auto bPartition:: return mMem[helpGetPitch(cell, card)]; } +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + mem() const -> T const* +{ + return mMem; +} + template inline NEON_CUDA_HOST_DEVICE auto bPartition:: helpGetPitch(const Idx& idx, int card) @@ -97,7 +117,7 @@ inline NEON_CUDA_HOST_DEVICE auto bPartition:: helpGetValidIdxPitchExplicit(const Idx& idx, int card) const -> uint32_t { - uint32_t const blockPitchByCard = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + uint32_t constexpr blockPitchByCard = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; uint32_t const inBlockInCardPitch = idx.mInDataBlockIdx.x + SBlock::memBlockSizeX * idx.mInDataBlockIdx.y + (SBlock::memBlockSizeX * SBlock::memBlockSizeY) * idx.mInDataBlockIdx.z; @@ -139,6 +159,9 @@ NEON_CUDA_HOST_DEVICE inline auto bPartition:: const typename Idx::DataBlockIdx* blockConnectivity) const -> Idx { + if (offset.x == 0 && offset.y == 0 && offset.z == 0) { + return idx; + } typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + offset.x, idx.mInDataBlockIdx.y + offset.y, @@ -218,6 +241,9 @@ NEON_CUDA_HOST_DEVICE inline auto bPartition:: helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) const -> Idx { + if constexpr (xOff == 0 && yOff == 0 && zOff == 0) { + return idx; + } typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + xOff, idx.mInDataBlockIdx.y + yOff, @@ -371,11 +397,62 @@ NEON_CUDA_HOST_DEVICE inline auto bPartition:: return result; } +template + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void> +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + + if (isValid) { + auto const& value = mMem[pitch]; + funIfValid(value); + return; + } + + if constexpr (!std::is_same_v) { + funIfNOTValid(); + } + return; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + writeNghData(const Idx& gidx, + int card, + T value) + -> bool +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + return false; + } + mMem[pitch] = value; + return true; +} + template NEON_CUDA_HOST_DEVICE inline auto bPartition::isActive(const Idx& cell, const typename SBlock::BitMask* mask) const -> bool { + if (!cell.isActive()) { + return false; + } if (!mask) { return mMask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); } else { @@ -383,4 +460,16 @@ bPartition::isActive(const Idx& cell, } } +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::isActive(const Idx& cell, + const NghIdx nghDir) const -> bool +{ + Idx nghCell = this->helpGetNghIdx(cell, nghDir); + if (nghCell.mDataBlockIdx == std::numeric_limits::max()) { + return false; + } + return isActive(nghCell); +} + } // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGrid/bSpan_imp.h b/libNeonDomain/include/Neon/domain/details/bGrid/bSpan_imp.h index 8a208110..a1206cd4 100644 --- a/libNeonDomain/include/Neon/domain/details/bGrid/bSpan_imp.h +++ b/libNeonDomain/include/Neon/domain/details/bGrid/bSpan_imp.h @@ -29,7 +29,7 @@ bSpan::setAndValidateCPUDevice(Idx& bidx, uint32_t const& z) const -> bool { - bidx.mDataBlockIdx = dataBlockIdx; + bidx.mDataBlockIdx = dataBlockIdx + mFirstDataBlockOffset; bidx.mInDataBlockIdx.x = static_cast(x); bidx.mInDataBlockIdx.y = static_cast(y); bidx.mInDataBlockIdx.z = static_cast(z); diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockView.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockView.h new file mode 100644 index 00000000..80bd8129 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockView.h @@ -0,0 +1,29 @@ +#include "Neon/domain/details/bGridDisg/BlockViewGrid//BlockViewGrid.h" +#include "Neon/domain/tools/GridTransformer.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +struct BlockView +{ + public: + using Grid = Neon::domain::tool::GridTransformer::Grid; + template + using Field = Grid::template Field; + using index_3d = Neon::index_3d; + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * card]; + } + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * C]; + } + + static constexpr Neon::MemoryLayout layout = Neon::MemoryLayout::arrayOfStructs; +}; + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewGrid.h new file mode 100644 index 00000000..02dc667f --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewGrid.h @@ -0,0 +1,97 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/aGrid.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/patterns/PatternScalar.h" + +#include "BlockViewPartition.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +namespace details { +struct GridTransformation +{ + template + using Partition = BlockViewPartition; + using Span = Neon::domain::details::eGrid::eSpan; + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + + using FoundationGrid = Neon::domain::details::eGrid::eGrid; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = int32_t; + using Idx = FoundationGrid::Idx; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span = foundationGrid.getSpan(execution, setIdx, dw); + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + return foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + } + + static auto helpGetGridIdx(FoundationGrid&, + Neon::SetIdx const&, + FoundationGrid::Idx const& fgIdx) + -> GridTransformation::Idx + { + GridTransformation::Idx tgIdx = fgIdx; + return tgIdx; + } + + template + static auto initFieldPartition(FoundationGrid::Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = Partition(foundationPartition); + }); + } +}; +using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + +} // namespace details + +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewPartition.h new file mode 100644 index 00000000..32f9a093 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/BlockViewGrid/BlockViewPartition.h @@ -0,0 +1,43 @@ +#pragma once +#include +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/details/eGrid/eIndex.h" +#include "Neon/domain/interface/NghData.h" +#include "Neon/set/DevSet.h" +#include "Neon/sys/memory/CudaIntrinsics.h" +#include "cuda_fp16.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +class BlockViewPartition : public Neon::domain::details::eGrid::ePartition +{ + public: + BlockViewPartition() + { + } + BlockViewPartition(Neon::domain::details::eGrid::ePartition ePartition) + : Neon::domain::details::eGrid::ePartition(ePartition) + { + } + + template + static auto getInBlockIdx(typename Neon::domain::details::eGrid::ePartition::Idx const& idx, + uint8_3d const& inBlockLocation) -> BlockIdexType + { + BlockIdexType blockIdx(idx.helpGet(), inBlockLocation); + return inBlockLocation; + } + + auto getCountAllocated() const -> int32_t; +}; + +template +auto BlockViewPartition::getCountAllocated() const -> int32_t +{ + return this->mCountAllocated; +} +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/ClassSelector.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/ClassSelector.h new file mode 100644 index 00000000..14fc1ab6 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/ClassSelector.h @@ -0,0 +1,10 @@ +#pragma once + +namespace Neon::domain::details::disaggregated::bGrid::details::cGrid { +enum ClassSelector +{ + alpha = 1, + beta = 2, + outside = 0, +}; +} \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cGrid.h new file mode 100644 index 00000000..6bd060a2 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cGrid.h @@ -0,0 +1,218 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "../bGrid.h" +#include "./ClassSelector.h" +#include "./cSpan.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +namespace details::cGrid { + +template +struct GridTransformation_cGrid +{ + using FoundationGrid = Neon::domain::details::disaggregated::bGrid::bGrid; + + template + using Partition = Neon::domain::details::disaggregated::bGrid::bPartition; + using Span = Neon::domain::details::disaggregated::bGrid::cGrid::cSpan; + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = typename FoundationGrid::ExecutionThreadSpanIndexType; + using Idx = typename FoundationGrid::Idx; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, + Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dataViewOfTheTableEntry, + Span& NEON_OUT span) { + typename FoundationGrid::Span const& foundationSpan = foundationGrid.getSpan(execution, setIdx, dataViewOfTheTableEntry); + Neon::domain::tool::Partitioner1D const& foundationPartitioner1D = foundationGrid.helpGetPartitioner1D(); + auto const& spanLayout = foundationPartitioner1D.getSpanLayout(); + typename Idx::DataBlockCount iCountVirtualSingleClass; + typename Idx::DataBlockCount iAndIupCountVirtualSingleClass; + typename Idx::DataBlockCount internalClassFirstMemoryOffset; + typename Idx::DataBlockCount bUpClassFirstMemoryOffset; + typename Idx::DataBlockCount bDwClassFirstMemoryOffset; + + bool skipInternal = dataViewOfTheTableEntry == Neon::DataView::BOUNDARY; + + if constexpr (classSelector == ClassSelector::alpha) { + auto const iCountVirtualAlpha = skipInternal ? 0 : spanLayout.getBoundsInternal(setIdx, Neon::domain::tool::partitioning::ByDomain::bulk).count; + auto const iAndIupCountVirtualAlpha = iCountVirtualAlpha + + spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + Neon::domain::tool::partitioning::ByDomain::bulk) + .count; + + iCountVirtualSingleClass = iCountVirtualAlpha; + iAndIupCountVirtualSingleClass = iAndIupCountVirtualAlpha; + + internalClassFirstMemoryOffset = 0; + bUpClassFirstMemoryOffset = spanLayout.getBoundsInternal(setIdx, + Neon::domain::tool::partitioning::ByDomain::bc) + .count; + bDwClassFirstMemoryOffset = bUpClassFirstMemoryOffset + + spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + Neon::domain::tool::partitioning::ByDomain::bc) + .count; + + span.init(foundationSpan, + iCountVirtualSingleClass, + iAndIupCountVirtualSingleClass, + internalClassFirstMemoryOffset, + bUpClassFirstMemoryOffset, + bDwClassFirstMemoryOffset, + dataViewOfTheTableEntry); + } else { + auto const iCountVirtualBeta = skipInternal + ? 0 + : spanLayout.getBoundsInternal(setIdx, Neon::domain::tool::partitioning::ByDomain::bc).count; + + auto const iAndIupCountVirtualBeta = iCountVirtualBeta + + spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + Neon::domain::tool::partitioning::ByDomain::bc) + .count; + + iCountVirtualSingleClass = iCountVirtualBeta; + iAndIupCountVirtualSingleClass = iAndIupCountVirtualBeta; + + internalClassFirstMemoryOffset = spanLayout.getBoundsInternal(setIdx, + Neon::domain::tool::partitioning::ByDomain::bulk) + .count; + + bUpClassFirstMemoryOffset = internalClassFirstMemoryOffset + + spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + Neon::domain::tool::partitioning::ByDomain::bulk) + .count; + bDwClassFirstMemoryOffset = bUpClassFirstMemoryOffset + + spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::down, + Neon::domain::tool::partitioning::ByDomain::bulk) + .count; + + span.init(foundationSpan, + iCountVirtualSingleClass, + iAndIupCountVirtualSingleClass, + internalClassFirstMemoryOffset, + bUpClassFirstMemoryOffset, + bDwClassFirstMemoryOffset, + dataViewOfTheTableEntry); + } + + + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + Neon::set::LaunchParameters launchParameters = foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + + launchParameters.forEachSeq([&, shareMem](Neon::SetIdx setIdx, Neon::sys::GpuLaunchInfo& launchParameter) { + Neon::domain::tool::Partitioner1D const& foundationPartitioner1D = foundationGrid.helpGetPartitioner1D(); + auto const& spanLayout = foundationPartitioner1D.getSpanLayout(); + int nBlocks; + + Neon::domain::tool::partitioning::ByDomain byDomain = (classSelector == Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::alpha) + ? Neon::domain::tool::partitioning::ByDomain::bulk + : Neon::domain::tool::partitioning::ByDomain::bc; + + int countInternal = spanLayout.getBoundsInternal(setIdx, byDomain).count; + int countBcUp = spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + byDomain) + .count; + int countBcDw = spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::down, + byDomain) + .count; + + switch (dataView) { + case Neon::DataView::INTERNAL: + nBlocks = countInternal; + break; + case Neon::DataView::BOUNDARY: + nBlocks = countBcUp + countBcDw; + break; + case Neon::DataView::STANDARD: + nBlocks = countInternal + + countBcUp + + countBcDw; + break; + default: + throw Neon::NeonException("Unknown data view"); + } + + launchParameter.set(Neon::sys::GpuLaunchInfo::mode_e::cudaGridMode, + nBlocks, + SBlock::memBlockSize3D.template newType(), shareMem); + }); + return launchParameters; + } + + static auto helpGetGridIdx(FoundationGrid&, + Neon::SetIdx const&, + typename FoundationGrid::Idx const& fgIdx) + -> GridTransformation::Idx + { + GridTransformation::Idx tgIdx = fgIdx; + return tgIdx; + } + + template + static auto initFieldPartition(typename FoundationGrid::template Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = foundationPartition; + }); + } +}; + +template +using cGrid = typename Neon::domain::tool::GridTransformer>::Grid; + +} // namespace details::cGrid +} // namespace Neon::domain::details::disaggregated::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cSpan.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cSpan.h new file mode 100644 index 00000000..64a66b8d --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/ClassificationGrid/cSpan.h @@ -0,0 +1,120 @@ +#pragma once + +#include "./ClassSelector.h" + +namespace Neon::domain::details::disaggregated::bGrid::cGrid { + +// ------------------------------------- +// | Internal | BoundaryUP | BoundaryDW | Ghost UP | Ghost Dw | +// | alpha | beta | alpha | beta | alpha | beta | alpha | beta | alpha | beta | +// | | | | Ghost setIdx | Ghost setIdx | +// ^ ^ ^ - - +// The span must manage two classes that are split into 3 sections: Internal, BoundaryUP, BoundaryDW +template +class cSpan +{ + public: + using Idx = typename FounderGrid::Idx; + using bSpan = typename FounderGrid::Span; + static constexpr int SpaceDim = 3; + + cSpan() = default; + + virtual ~cSpan() = default; + + NEON_CUDA_HOST_DEVICE inline static auto getInvalidBlockId() + -> typename Idx::DataBlockIdx + { + return std::numeric_limits::max(); + } + + inline cSpan(bSpan const& baseSpan, + typename Idx::DataBlockCount internalCountVirtualSingleClass, + typename Idx::DataBlockCount iandIupCountVirtualSingleClass, + typename Idx::DataBlockCount internalClassFirstMemoryOffset, + typename Idx::DataBlockCount bupClassFirstMemoryOffset, + typename Idx::DataBlockCount bdwClassFirstMemoryOffset, + Neon::DataView dataView) + + { + init(baseSpan, + internalCountVirtualSingleClass, + iandIupCountVirtualSingleClass, + internalClassFirstMemoryOffset, + bupClassFirstMemoryOffset, + bdwClassFirstMemoryOffset); + } + + inline auto init(bSpan const& baseSpan, + typename Idx::DataBlockCount internalCountVirtualSingleClass, + typename Idx::DataBlockCount iandIupCountVirtualSingleClass, + typename Idx::DataBlockCount internalClassFirstMemoryOffset, + typename Idx::DataBlockCount bupClassFirstMemoryOffset, + typename Idx::DataBlockCount bdwClassFirstMemoryOffset, + Neon::DataView) -> void + + { + mActiveMask = baseSpan.mActiveMask; + mIcountVirtualSingleClass = internalCountVirtualSingleClass; + mIandIupCountVirtualSingleClass = iandIupCountVirtualSingleClass; + mInternalClassFirstMemoryOffset = internalClassFirstMemoryOffset; + mBupClassFirstMemoryOffset = bupClassFirstMemoryOffset; + mBdwClassFirstMemoryOffset = bdwClassFirstMemoryOffset; + } + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateCPUDevice( + Idx& bidx, + uint32_t const& blockIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool + { + typename Idx::DataBlockIdx offset = blockIdx + mInternalClassFirstMemoryOffset; + offset = blockIdx >= mIcountVirtualSingleClass + ? blockIdx + mBupClassFirstMemoryOffset + : offset; + + offset = blockIdx >= mIandIupCountVirtualSingleClass + ? blockIdx + mBdwClassFirstMemoryOffset + : offset; + + bidx = Idx(offset, x, y, z); + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, + bidx.mInDataBlockIdx.y, + bidx.mInDataBlockIdx.z); + + return isActive; + } + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateGPUDevice( + Idx& bidx) const -> bool + { +#ifdef NEON_PLACE_CUDA_DEVICE + typename Idx::DataBlockIdx offset = blockIdx.x + mInternalClassFirstMemoryOffset; + offset = blockIdx.x >= mIcountVirtualSingleClass + ? blockIdx.x + mBupClassFirstMemoryOffset + : offset; + + offset = blockIdx.x >= mIandIupCountVirtualSingleClass + ? blockIdx.x + mBdwClassFirstMemoryOffset + : offset; + + bidx = Idx(offset, threadIdx.x, threadIdx.y, threadIdx.z); + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, + bidx.mInDataBlockIdx.y, + bidx.mInDataBlockIdx.z); + + return isActive; +#else + NEON_THROW_UNSUPPORTED_OPERATION("Operation supported only on GPU"); +#endif + } + + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask; + typename Idx::DataBlockCount mIcountVirtualSingleClass; + typename Idx::DataBlockCount mIandIupCountVirtualSingleClass; + typename Idx::DataBlockCount mInternalClassFirstMemoryOffset; + typename Idx::DataBlockCount mBupClassFirstMemoryOffset; + typename Idx::DataBlockCount mBdwClassFirstMemoryOffset; +}; +} // namespace Neon::domain::details::disaggregated::bGrid::cGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/StaticBlock.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/StaticBlock.h new file mode 100644 index 00000000..fec7e70c --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/StaticBlock.h @@ -0,0 +1,106 @@ +#pragma once + +#include "Neon/domain/details/bGridDisg/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +struct StaticBlock +{ + public: + constexpr static uint32_t memBlockSizeX = memBlockSizeX_; + constexpr static uint32_t memBlockSizeY = memBlockSizeY_; + constexpr static uint32_t memBlockSizeZ = memBlockSizeZ_; + constexpr static Neon::uint32_3d memBlockSize3D = Neon::uint32_3d(memBlockSizeX, memBlockSizeY, memBlockSizeZ); + + constexpr static uint32_t userBlockSizeX = userBlockSizeX_; + constexpr static uint32_t userBlockSizeY = userBlockSizeY_; + constexpr static uint32_t userBlockSizeZ = userBlockSizeZ_; + constexpr static Neon::uint32_3d userBlockSize3D = Neon::uint32_3d(userBlockSizeX, userBlockSizeY, userBlockSizeZ); + + constexpr static uint32_t blockRatioX = memBlockSizeX / userBlockSizeX; + constexpr static uint32_t blockRatioY = memBlockSizeY / userBlockSizeY; + constexpr static uint32_t blockRatioZ = memBlockSizeZ / userBlockSizeZ; + + constexpr static uint32_t memBlockPitchX = 1; + constexpr static uint32_t memBlockPitchY = memBlockSizeX; + constexpr static uint32_t memBlockPitchZ = memBlockSizeX * memBlockSizeY; + + constexpr static bool isMultiResMode = isMultiResMode_; + + constexpr static uint32_t memBlockCountElements = memBlockSizeX * memBlockSizeY * memBlockSizeZ; + + static_assert(memBlockSizeX >= userBlockSizeX); + static_assert(memBlockSizeY >= userBlockSizeY); + static_assert(memBlockSizeZ >= userBlockSizeZ); + + static_assert(memBlockSizeX % userBlockSizeX == 0); + static_assert(memBlockSizeY % userBlockSizeY == 0); + static_assert(memBlockSizeZ % userBlockSizeZ == 0); + + struct BitMask + { + using BitMaskWordType = uint32_t; + auto reset() -> void + { + for (BitMaskWordType i = 0; i < nWords; ++i) { + bits[i] = 0; + } + } + + auto setActive(int threadX, + int threadY, + int threadZ) -> void + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + word = word | mask; + } + + inline auto NEON_CUDA_HOST_DEVICE isActive(int threadX, + int threadY, + int threadZ) const -> bool + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + return (word & mask) != 0; + } + + static inline auto NEON_CUDA_HOST_DEVICE getMaskAndWordI(int threadX, + int threadY, + int threadZ, + NEON_OUT BitMaskWordType& mask, + NEON_OUT uint32_t& wordIdx) -> void + { + const uint32_t threadPitch = threadX * memBlockPitchX + + threadY * memBlockPitchY + + threadZ * memBlockPitchZ; + + // threadPitch >> log2_of_bitPerWord + // the same as: threadPitch / 2^{log2_of_bitPerWord} + wordIdx = threadPitch >> log2_of_bitPerWord; + // threadPitch & ((bitMaskWordType(bitMaskStorageBitWidth)) - 1); + // same as threadPitch % 2^{log2OfbitMaskWordSize} + const uint32_t offsetInWord = threadPitch & ((BitMaskWordType(bitPerWord)) - 1); + mask = BitMaskWordType(1) << offsetInWord; + } + + constexpr static BitMaskWordType nWords = (memBlockCountElements + 31) / 32; + static constexpr uint32_t log2_of_bitPerWord = 5; + static constexpr uint32_t bitPerWord = 32; + + BitMaskWordType bits[nWords]; + }; +}; + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bField.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bField.h new file mode 100644 index 00000000..86a45575 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bField.h @@ -0,0 +1,119 @@ +#pragma once +#include "Neon/domain/details/bGridDisg/bPartition.h" +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/set/patterns/BlasSet.h" + +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/DevSet.h" +#include "Neon/set/HuOptions.h" +#include "Neon/set/MemoryTransfer.h" + +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/domain/tools/HaloUpdateTable1DPartitioning.h" +#include "Neon/domain/tools/PartitionTable.h" +#include "bPartition.h" + +namespace Neon::domain::details::disaggregated::bGrid { + + +template +class bField : public Neon::domain::interface::FieldBaseTemplate, + bPartition, + int> +{ + friend bGrid; + + public: + using Type = T; + using Grid = bGrid; + using Field = bField; + using Partition = bPartition; + using Idx = bIndex; + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + template + using BlockViewField = BlockViewGrid::template Field; + + using NghIdx = typename Partition::NghIdx; + using NghData = typename Partition::NghData; + + bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue); + + bField(); + + virtual ~bField() = default; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) const -> const Partition& final; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) -> Partition& final; + + auto isInsideDomain(const Neon::index_3d& idx) const -> bool; + + + auto operator()(const Neon::index_3d& idx, + const int& cardinality) const -> T final; + + auto getReference(const Neon::index_3d& idx, + const int& cardinality) -> T& final; + + auto updateHostData(int streamId = 0) -> void final; + + auto updateDeviceData(int streamId = 0) -> void final; + + auto newHaloUpdate(Neon::set::StencilSemantic semantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container; + + auto getMemoryField() -> BlockViewGrid::Field&; + + + private: + auto getRef(const Neon::index_3d& idx, const int& cardinality) const -> T&; + + auto initHaloUpdateTable() -> void; + + + struct Data + { + Data() = default; + Data(Neon::Backend const& bk) + { + partitionTable.init(bk); + } + + enum EndPoints + { + src = 1, + dst = 0 + }; + + struct EndPointsUtils + { + static constexpr int nConfigs = 2; + }; + + std::shared_ptr grid; + BlockViewField memoryField; + int cardinality; + + Neon::domain::tool::HaloTable1DPartitioning mStandardHaloUpdateTable; + Neon::domain::tool::PartitionTable partitionTable; + }; + std::shared_ptr mData; +}; + + +} // namespace Neon::domain::details::disaggregated::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bField_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bField_imp.h new file mode 100644 index 00000000..e7acbe8c --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bField_imp.h @@ -0,0 +1,337 @@ +#pragma once + +#include "Neon/domain/details/bGridDisg/bField.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +bField::bField() +{ + mData = std::make_shared(); +} + +template +bField::bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue) + : Neon::domain::interface::FieldBaseTemplate(&grid, + fieldUserName, + "bField", + cardinality, + inactiveValue, + dataUse, + memoryOptions, + Neon::domain::haloStatus_et::e::ON) +{ + mData = std::make_shared(grid.getBackend()); + mData->grid = std::make_shared(grid); + + if (memoryOptions.getOrder() == Neon::MemoryLayout::arrayOfStructs) { + NEON_WARNING("bField does not support MemoryLayout::arrayOfStructs, enforcing MemoryLayout::structOfArrays"); + memoryOptions.setOrder(Neon::MemoryLayout::structOfArrays); + } + // the allocation size is the number of blocks x block size x cardinality + mData->memoryField = mData->grid->getBlockViewGrid().template newField( + "BitMask", + [&] { + int elPerBlock = SBlock::memBlockCountElements * cardinality; + return elPerBlock; + }(), + inactiveValue, + dataUse, + mData->grid->getBackend().getMemoryOptions(bSpan::activeMaskMemoryLayout)); + + + { // Setting up partitionTable + // const int setCardinality = mData->grid->getBackend().getDeviceCount(); + mData->partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView, + Partition& partition) { + auto& memoryFieldPartition = mData->memoryField.getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& blockConnectivity = mData->grid->helpGetBlockConnectivity().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& bitmask = mData->grid->getActiveBitMask().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& dataBlockOrigins = mData->grid->helpGetDataBlockOriginField().getPartition(execution, setIdx, Neon::DataView::STANDARD); + + partition = bPartition(setIdx, + cardinality, + memoryFieldPartition.mem(), + blockConnectivity.mem(), + bitmask.mem(), + dataBlockOrigins.mem(), + mData->grid->helpGetStencilIdTo3dOffset().rawMem(execution, setIdx), + mData->grid->getDimension()); + }); + } + + initHaloUpdateTable(); +} + +template +auto bField::getMemoryField() -> BlockViewGrid::Field& +{ + return mData->memoryField; +} + +template +auto bField::isInsideDomain(const Neon::index_3d& idx) const -> bool +{ + return mData->grid->isInsideDomain(idx); +} + +template +auto bField::getReference(const Neon::index_3d& cartesianIdx, + const int& cardinality) -> T& +{ + if constexpr (SBlock::isMultiResMode) { + auto& grid = this->getGrid(); + auto uniformCartesianIdx = cartesianIdx / grid.helGetMultiResDiscreteIdxSpacing(); + + if (cartesianIdx.x % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.y % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.z % grid.helGetMultiResDiscreteIdxSpacing() != 0) { + NeonException exp("bField::getReference"); + exp << "Input index is not multiple of the grid resolution"; + exp << "Index = " << cartesianIdx; + NEON_THROW(exp); + } + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(uniformCartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } else { + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } +} + +template +auto bField::operator()(const Neon::index_3d& cartesianIdx, + const int& cardinality) const -> T +{ + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + if (setIdx.idx() == -1) { + return this->getOutsideValue(); + } + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; +} + +template +auto bField::updateHostData(int streamId) -> void +{ + mData->memoryField.updateHostData(streamId); +} + +template +auto bField::updateDeviceData(int streamId) -> void +{ + mData->memoryField.updateDeviceData(streamId); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) const -> const Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition const& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) -> Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::newHaloUpdate(Neon::set::StencilSemantic stencilSemantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) const -> Neon::set::Container +{ + + + // We need to define a graph of Containers + // One for the actual memory transfer + // One for the synchronization + // The order depends on the transfer mode: put or get + Neon::set::Container dataTransferContainer; + auto const& bk = this->getGrid().getBackend(); + + if (stencilSemantic == Neon::set::StencilSemantic::standard) { + auto transfers = bk.template newDataSet>(); + + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->mStandardHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + } else { + NEON_DEV_UNDER_CONSTRUCTION(""); + } + Neon::set::Container SyncContainer = + Neon::set::Container::factorySynchronization( + *this, + Neon::set::SynchronizationContainerType::hostOmpBarrier); + + Neon::set::container::Graph graph(this->getBackend()); + const auto& dataTransferNode = graph.addNode(dataTransferContainer); + const auto& syncNode = graph.addNode(SyncContainer); + + switch (transferMode) { + case Neon::set::TransferMode::put: + graph.addDependency(dataTransferNode, syncNode, Neon::GraphDependencyType::data); + break; + case Neon::set::TransferMode::get: + graph.addDependency(syncNode, dataTransferNode, Neon::GraphDependencyType::data); + break; + default: + NEON_THROW_UNSUPPORTED_OPTION(); + break; + } + + graph.removeRedundantDependencies(); + + Neon::set::Container output = + Neon::set::Container::factoryGraph("dGrid-Halo-Update", + graph, + [](Neon::SetIdx, Neon::set::Loader&) {}); + return output; +} + +template +auto bField::initHaloUpdateTable() -> void +{ + // NEON_THROW_UNSUPPORTED_OPERATION(""); + auto& grid = this->getGrid(); + auto bk = grid.getBackend(); + auto getNghSetIdx = [&](SetIdx setIdx, Neon::domain::tool::partitioning::ByDirection direction) { + int res; + if (direction == Neon::domain::tool::partitioning::ByDirection::up) { + res = (setIdx + 1) % bk.getDeviceCount(); + } else { + res = (setIdx + bk.getDeviceCount() - 1) % bk.getDeviceCount(); + } + return res; + }; + + mData->mStandardHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + Neon::SetIdx setIdxVec[2]; + setIdxVec[Data::EndPoints::dst] = setIdxDst; + setIdxVec[Data::EndPoints::src] = setIdxSrc; + + std::array partitions; + std::array*, Data::EndPointsUtils::nConfigs> blockViewPartitions; + std::array, Data::EndPointsUtils::nConfigs> ghostZBeginIdx; + std::array, Data::EndPointsUtils::nConfigs> boundaryZBeginIdx; + std::array memPhyDim; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + blockViewPartitions[Data::EndPoints::dst] = &(mData->memoryField.getPartition(execution, setIdxDst, Neon::DataView::STANDARD)); + blockViewPartitions[Data::EndPoints::src] = &(mData->memoryField.getPartition(execution, setIdxSrc, Neon::DataView::STANDARD)); + + for (auto endPoint : {Data::EndPoints::dst, Data::EndPoints::src}) { + for (auto direction : {ByDirection::down, ByDirection::up}) { + auto ghostFirst = mData->grid->mData->partitioner1D.getSpanLayout().getGhostBoundary(setIdxVec[endPoint], direction).first; + auto boundaryFirst = mData->grid->mData->partitioner1D.getSpanLayout().getBoundsBoundary(setIdxVec[endPoint], direction).first; + ghostZBeginIdx[endPoint][static_cast(direction)] = ghostFirst; + boundaryZBeginIdx[endPoint][static_cast(direction)] = boundaryFirst; + } + + memPhyDim[endPoint] = Neon::size_4d( + SBlock::memBlockCountElements, + 1, + 1, + size_t(blockViewPartitions[endPoint]->getCountAllocated()) * SBlock::memBlockCountElements); + } + + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + + T* srcMem = blockViewPartitions[Data::EndPoints::src]->mem(); + T* dstMem = blockViewPartitions[Data::EndPoints::dst]->mem(); + + Neon::size_4d dstGhostBuff(ghostZBeginIdx[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))], 0, 0, 0); + Neon::size_4d srcBoundaryBuff(boundaryZBeginIdx[Data::EndPoints::src][static_cast(byDirection)], 0, 0, 0); + + size_t transferDataBlockCount = mData->grid->mData->partitioner1D.getSpanLayout().getBoundsBoundary(setIdxVec[Data::EndPoints::src], byDirection).count; + + // std::cout << "To " << dstGhostBuff << " prt " << blockViewPartitions[Data::EndPoints::dst]->prtID() << " From " << srcBoundaryBuff << " prt " << blockViewPartitions[Data::EndPoints::src]->prtID() << std::endl; + // std::cout << "dst mem " << blockViewPartitions[Data::EndPoints::dst]->mem() << " " << std::endl; + // std::cout << "dst transferDataBlockCount " << transferDataBlockCount << " " << std::endl; + // std::cout << "dst pitch " << (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum() << " " << std::endl; + // std::cout << "dst dstGhostBuff " << dstGhostBuff << " " << std::endl; + // std::cout << "dst pitch all" << memPhyDim[Data::EndPoints::dst] << " " << std::endl; + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum(), dstGhostBuff}, + {setIdxSrc, srcMem + (srcBoundaryBuff * memPhyDim[Data::EndPoints::src]).rSum(), srcBoundaryBuff}, + sizeof(T) * SBlock::memBlockCountElements * transferDataBlockCount); + + transfersVec.push_back(transfer); + } + }); +} + + +} // namespace Neon::domain::details::disaggregated::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid.h new file mode 100644 index 00000000..72e39ee9 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid.h @@ -0,0 +1,275 @@ +#pragma once +#include "Neon/core/core.h" + +#include "Neon/domain/aGrid.h" +#include "Neon/domain/details/bGridDisg/BlockView.h" +#include "Neon/domain/details/bGridDisg/StaticBlock.h" +#include "Neon/domain/details/bGridDisg/bField.h" +#include "Neon/domain/details/bGridDisg/bIndex.h" +#include "Neon/domain/details/bGridDisg/bPartition.h" +#include "Neon/domain/details/bGridDisg/bSpan.h" +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/Partitioner1D.h" +#include "Neon/domain/tools/PointHashTable.h" +#include "Neon/domain/tools/SpanTable.h" +#include "Neon/set/Containter.h" +#include "Neon/set/LaunchParametersTable.h" +#include "Neon/set/memory/memSet.h" + +#include "Neon/domain/details/bGridDisg/ClassificationGrid/cGrid.h" + +#include "ClassificationGrid/cGrid.h" +#include "bField.h" +#include "bPartition.h" +#include "bSpan.h" + +namespace Neon::domain::details::disaggregated::bGrid { + + +template +class bField; + +template +class bGrid : public Neon::domain::interface::GridBaseTemplate, + bIndex> +{ + public: + using Grid = bGrid; + template + using Partition = bPartition; + template + using Field = Neon::domain::details::disaggregated::bGrid::bField; + + using Span = bSpan; + using NghIdx = typename Partition::NghIdx; + using GridBaseTemplate = Neon::domain::interface::GridBaseTemplate>; + + using Idx = bIndex; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Neon::set::details::ExecutionThreadSpan::d1b3; + using ExecutionThreadSpanIndexType = uint32_t; + + using BlockIdx = uint32_t; + + using AlphaGrid = typename Neon::domain::details::disaggregated::bGrid::details::cGrid::cGrid; + using BetaGrid = typename Neon::domain::details::disaggregated::bGrid::details::cGrid::cGrid; + + bGrid() = default; + virtual ~bGrid(); + + /** + * Constructor for the vanilla block data structure with depth of 1 + */ + template + bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData = double_3d(1, 1, 1), + const double_3d& origin = double_3d(0, 0, 0), + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + + /** + * Constructor for bGrid. This constructor should be directly used only by mGrid + */ + template + bGrid(const Neon::Backend& backend /**< Neon backend for the computation */, + const Neon::int32_3d& domainSize /**< Size of the bounded Cartesian */, + const ActiveCellLambda activeCellLambda /**< Function that identify the user domain inside the boxed Cartesian discretization */, + const Neon::domain::Stencil& stencil /**< union of tall the stencil that will be used in the computation */, + const int multiResDiscreteIdxSpacing /**< Parameter for the multi-resolution. Index i and index (i+1) may be remapped as i*voxelSpacing and (i+1)* voxelSpacing. + * For a uniform bGrid, i.e outside the context of multi-resolution this parameter is always 1 */ + , + const double_3d& spacingData /** Physical spacing between two consecutive data points in the Cartesian domain */, + const double_3d& origin /** Physical location in space of the origin of the Cartesian discretization */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + /** + * Returns some properties for a given cartesian in the Cartesian domain. + * The provide index my be inside or outside the user defined bounded Cartesian domain + */ + auto getProperties(const Neon::index_3d& idx) + const -> typename GridBaseTemplate::CellProperties final; + + /** + * Returns true if the query 3D point is inside the user domain + * @param idx + * @return + */ + auto isInsideDomain(const Neon::index_3d& idx) + const -> bool final; + + /** + * Retrieves the device index that contains the query point + * @param idx + * @return + */ + auto getSetIdx(const Neon::index_3d& idx) + const -> int32_t final; + + /** + * Allocates a new field on the grid + */ + template + auto newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> Field; + + /** + * Allocates a new field on the block view grid + */ + template + auto newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> BlockView::Field; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newAlphaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newBetaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newAlphaBetaContainer(const std::string& name, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container; + + /** + * Defines a new set of parameter to launch a Container + */ + auto getLaunchParameters(Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& sharedMem) const -> Neon::set::LaunchParameters; + + /** + * Retrieve the span associated to the grid w.r.t. some user defined parameters. + */ + auto getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const Span&; + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getBlockViewGrid() const -> BlockView::Grid&; + + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getActiveBitMask() const -> BlockView::Field&; + + /** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ + template + auto helGetMultiResDiscreteIdxSpacing() const -> std::enable_if_t; + + + /** + * Help function to retrieve the block connectivity as a BlockViewGrid field + */ + auto helpGetBlockConnectivity() const -> BlockView::Field&; + + /** + * Help function to retrieve the block origin as a BlockViewGrid field + */ + auto helpGetDataBlockOriginField() const -> Neon::aGrid::Field&; + + /** + * Help function to retrieve the map that converts a stencil point id to 3d offset + */ + auto helpGetStencilIdTo3dOffset() const -> Neon::set::MemSet&; + + auto helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D&; + + /** + * Help function retriev the device and the block index associated to a point in the BlockViewGrid grid + */ + auto helpGetSetIdxAndGridIdx(Neon::index_3d idx) const -> std::tuple; + + template + auto init_mask_field(ActiveCellLambda activeCellLambda) -> void; + auto helpGetClassField() -> Field&; + + struct Data + { + auto init(const Neon::Backend& bk) + { + spanTable.init(bk); + launchParametersTable.init(bk); + } + + Neon::domain::tool::SpanTable spanTable /** Span for each data view configurations */; + Neon::set::LaunchParametersTable launchParametersTable; + + Neon::domain::tool::Partitioner1D partitioner1D; + Stencil stencil; + Neon::sys::patterns::Engine reduceEngine; + + Neon::aGrid memoryGrid /** memory allocator for fields */; + Neon::aGrid::Field mDataBlockOriginField; + Neon::set::MemSet mStencil3dTo1dOffset; + + BlockView::Grid blockViewGrid; + BlockView::Field activeBitField; + BlockView::Field blockConnectivity; + Neon::set::MemSet stencilIdTo3dOffset; + + int mMultiResDiscreteIdxSpacing; + + // number of active voxels in each block + Neon::set::DataSet mNumActiveVoxel; + + + // Stencil neighbor indices + Neon::set::MemSet mStencilNghIndex; + + AlphaGrid alphaGrid; + BetaGrid betaGrid; + + Field maskClassField; + + }; + std::shared_ptr mData; +}; +extern template class bGrid>; +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "bField_imp.h" +#include "bGrid_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid_imp.h new file mode 100644 index 00000000..338418fb --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bGrid_imp.h @@ -0,0 +1,574 @@ +#include "Neon/domain/details/bGridDisg/bGrid.h" +#include "Neon/domain/tools/SpaceCurves.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) + : bGrid(backend, domainSize, activeCellLambda, stencil, 1, spacingData, origin, encoderType) +{ +} + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const int multiResDiscreteIdxSpacing, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) +{ + + + mData = std::make_shared(); + mData->init(backend); + + mData->mMultiResDiscreteIdxSpacing = multiResDiscreteIdxSpacing; + mData->stencil = stencil; + const index_3d defaultKernelBlockSize(SBlock::memBlockSizeX, + SBlock::memBlockSizeY, + SBlock::memBlockSizeZ); + + std::stringstream gridName; + gridName << "bGrid_" << SBlock::memBlockSizeX << "_" + << SBlock::memBlockSizeY << "_" + << SBlock::memBlockSizeZ; + { + auto nElementsPerPartition = backend.devSet().template newDataSet(0); + // We do an initialization with nElementsPerPartition to zero, + // then we reset to the computed number. + + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + stencil, + nElementsPerPartition, + defaultKernelBlockSize, + multiResDiscreteIdxSpacing, + origin, + encoderType, + defaultKernelBlockSize); + } + + { // Initialization of the partitioner + using returTypeOfLambda = typename std::invoke_result::type; + if constexpr (std::is_same_v) { + mData->partitioner1D = Neon::domain::tool::Partitioner1D( + backend, + activeCellLambda, + nullptr, + SBlock::memBlockSize3D.template newType(), + domainSize, + Neon::domain::Stencil::s27_t(false), + encoderType, + multiResDiscreteIdxSpacing); + } else if constexpr (std::is_same_v) { + mData->partitioner1D = Neon::domain::tool::Partitioner1D( + backend, + [&](Neon::index_3d idx) { + return activeCellLambda(idx) != details::cGrid::ClassSelector::outside; + }, + [&](Neon::index_3d idx) { + return (activeCellLambda(idx) == details::cGrid::ClassSelector::beta) + ? Neon::domain::tool::partitioning::ByDomain::bc + : Neon::domain::tool::partitioning::ByDomain::bulk; + }, + SBlock::memBlockSize3D.template newType(), + domainSize, + Neon::domain::Stencil::s27_t(false), + encoderType, + multiResDiscreteIdxSpacing); + } else { + NEON_THROW_UNSUPPORTED_OPERATION("The user defined lambda must return a bool or a ClassSelector"); + } + + mData->mDataBlockOriginField = mData->partitioner1D.getGlobalMapping(); + mData->mStencil3dTo1dOffset = mData->partitioner1D.getStencil3dTo1dOffset(); + mData->memoryGrid = mData->partitioner1D.getMemoryGrid(); + } + + { // BlockViewGrid + Neon::domain::details::eGrid::eGrid egrid( + backend, + mData->partitioner1D.getBlockSpan(), + mData->partitioner1D, + Neon::domain::Stencil::s27_t(false), + spacingData * SBlock::memBlockSize3D, + origin); + + mData->blockViewGrid = BlockView::Grid(egrid); + } + + { // Active bitmask + mData->activeBitField = mData->blockViewGrid.template newField( + "BlockViewBitMask", + 1, + [] { + typename SBlock::BitMask outsideBitMask; + outsideBitMask.reset(); + return outsideBitMask; + }(), + Neon::DataUse::HOST_DEVICE, backend.getMemoryOptions(BlockView::layout)); + + mData->mNumActiveVoxel = backend.devSet().template newDataSet(); + + mData->activeBitField + .getGrid() + .template newContainer( + "activeBitMaskInit", + [&, this](Neon::set::Loader& loader) { + auto bitMaskPartition = loader.load(mData->activeBitField); + return [&, bitMaskPartition](const auto& bitMaskIdx) mutable { + auto prtIdx = bitMaskPartition.prtID(); + int countActive = 0; + auto const blockOrigin = bitMaskPartition.getGlobalIndex(bitMaskIdx); + typename SBlock::BitMask& bitMask = bitMaskPartition(bitMaskIdx, 0); + bitMask.reset(); + + for (int k = 0; k < SBlock::memBlockSize3D.template newType().z; k++) { + for (int j = 0; j < SBlock::memBlockSize3D.template newType().y; j++) { + for (int i = 0; i < SBlock::memBlockSize3D.template newType().x; i++) { + auto globalPosition = blockOrigin + Neon::int32_3d(i * this->mData->mMultiResDiscreteIdxSpacing, + j * this->mData->mMultiResDiscreteIdxSpacing, + k * this->mData->mMultiResDiscreteIdxSpacing); + bool const isInDomain = globalPosition < domainSize * this->mData->mMultiResDiscreteIdxSpacing; + bool const isActive = activeCellLambda(globalPosition); + if (isActive && isInDomain) { + countActive++; + bitMask.setActive(i, j, k); + } + } + } + } +#pragma omp critical + { + this->mData->mNumActiveVoxel[prtIdx] += countActive; + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + + + mData->activeBitField.updateDeviceData(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + mData->activeBitField.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::put, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + } + + + { // Neighbor blocks + mData->blockConnectivity = mData->blockViewGrid.template newField("blockConnectivity", + 27, + Span::getInvalidBlockId(), + Neon::DataUse::HOST_DEVICE, + Neon::MemoryLayout::arrayOfStructs); + + mData->blockConnectivity.getGrid().template newContainer( + "blockConnectivityInit", + [&](Neon::set::Loader& loader) { + auto blockConnectivity = loader.load(mData->blockConnectivity); + return [&, blockConnectivity](auto const& idx) mutable { + for (int8_t k = 0; k < 3; k++) { + for (int8_t j = 0; j < 3; j++) { + for (int8_t i = 0; i < 3; i++) { + auto targetDirection = i + 3 * j + 3 * 3 * k; + BlockIdx blockNghIdx = Span::getInvalidBlockId(); + typename decltype(blockConnectivity)::Idx nghIdx; + Neon::int8_3d stencilPoint(i - int8_t(1), + j - int8_t(1), + k - int8_t(1)); + bool isValid = blockConnectivity.getNghIndex(idx, stencilPoint, nghIdx); + if (isValid) { + blockNghIdx = static_cast(nghIdx.helpGet()); + } + blockConnectivity(idx, targetDirection) = blockNghIdx; + } + } + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + mData->blockConnectivity.updateDeviceData(Neon::Backend::mainStreamIdx); + } + + // Initialization of the SPAN table + mData->spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span.mDataView = dw; + switch (dw) { + case Neon::DataView::STANDARD: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + case Neon::DataView::BOUNDARY: { + span.mFirstDataBlockOffset = mData->partitioner1D.getSpanClassifier().countInternal(setIdx); + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + + break; + } + case Neon::DataView::INTERNAL: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + default: { + NeonException exc("dFieldDev"); + NEON_THROW(exc); + } + } + }); + + { // Stencil Idx to 3d offset + auto nPoints = backend.devSet().newDataSet(stencil.nNeighbours()); + mData->stencilIdTo3dOffset = backend.devSet().template newMemSet(Neon::DataUse::HOST_DEVICE, + 1, + backend.getMemoryOptions(), + nPoints); + for (int i = 0; i < stencil.nNeighbours(); ++i) { + for (int devIdx = 0; devIdx < backend.devSet().setCardinality(); devIdx++) { + index_3d pLong = stencil.neighbours()[i]; + Neon::int8_3d pShort = pLong.newType(); + mData->stencilIdTo3dOffset.eRef(devIdx, i) = pShort; + } + } + mData->stencilIdTo3dOffset.updateDeviceData(backend, Neon::Backend::mainStreamIdx); + } + // Init the base grid + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + Neon::domain::Stencil(), + mData->mNumActiveVoxel, + SBlock::memBlockSize3D.template newType(), + spacingData, + origin, + encoderType, + defaultKernelBlockSize); + { // setting launchParameters + mData->launchParametersTable.forEachSeq([&](Neon::DataView dw, + Neon::set::LaunchParameters& bLaunchParameters) { + auto defEGridBlock = mData->blockViewGrid.getDefaultBlock(); + auto eGridParams = mData->blockViewGrid.getLaunchParameters(dw, defEGridBlock, 0); + eGridParams.forEachSeq([&](Neon::SetIdx setIdx, Neon::sys::GpuLaunchInfo const& launchSingleDev) { + auto eDomainGridSize = launchSingleDev.domainGrid(); + assert(eDomainGridSize.y == 1); + assert(eDomainGridSize.z == 1); + int nBlocks = static_cast(eDomainGridSize.x); + bLaunchParameters.get(setIdx).set(Neon::sys::GpuLaunchInfo::mode_e::cudaGridMode, + nBlocks, SBlock::memBlockSize3D.template newType(), 0); + }); + }); + } + + mData->alphaGrid = details::cGrid::cGrid(*this); + mData->betaGrid = details::cGrid::cGrid(*this); + init_mask_field(activeCellLambda); +} + +template +template +auto bGrid::newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + Field field(name, dataUse, memoryOptions, *this, cardinality, inactiveValue); + return field; +} + +template +template +auto bGrid::newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> BlockView::Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + BlockView::Field blockViewField = mData->blockViewGrid.template newField(name, cardinality, inactiveValue, dataUse, memoryOptions); + return blockViewField; +} + +template +template +auto bGrid::newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container +{ + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + blockSize, + [sharedMem](const Neon::index_3d&) { return sharedMem; }); + return kContainer; +} + +template +template +auto bGrid::newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + const Neon::index_3d& defaultBlockSize = this->getDefaultBlock(); + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + defaultBlockSize, + [](const Neon::index_3d&) { return 0; }); + return kContainer; +} + +template +template +auto bGrid::newAlphaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + + auto kContainer = mData->alphaGrid.newContainer(name, + lambda); + return kContainer; +} + +template +template +auto bGrid::newBetaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + + auto kContainer = mData->betaGrid.newContainer(name, + lambda); + return kContainer; +} +template + +template +auto bGrid::newAlphaBetaContainer(const std::string& name, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container +{ + std::vector sequence; + auto containerAlpha = mData->alphaGrid.newContainer(name + "Alpha", + lambdaAlpha); + auto containerBeta = mData->betaGrid.newContainer(name + "Beta", + lambdaBeta); + + sequence.push_back(containerAlpha); + sequence.push_back(containerBeta); + + Neon::set::Container exec = Neon::set::Container::factorySequence(name + "Sequence", sequence); + return exec; +} + +template +auto bGrid:: + getBlockViewGrid() + const -> BlockView::Grid& +{ + return mData->blockViewGrid; +} + +template +auto bGrid:: + getActiveBitMask() + const -> BlockView::Field& +{ + return mData->activeBitField; +} + +/** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ +template +template +auto bGrid::helGetMultiResDiscreteIdxSpacing() const + -> std::enable_if_t +{ + return mData->mMultiResDiscreteIdxSpacing; +} + +template +auto bGrid:: + helpGetBlockConnectivity() + const -> BlockView::Field& +{ + return mData->blockConnectivity; +} +template +auto bGrid:: + helpGetDataBlockOriginField() + const -> Neon::aGrid::Field& +{ + return mData->mDataBlockOriginField; +} +template +auto bGrid::getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const bGrid::Span& +{ + return mData->spanTable.getSpan(execution, setIdx, dataView); +} + +template +bGrid::~bGrid() +{ +} +template +auto bGrid::getSetIdx(const index_3d& idx) const -> int32_t +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return -1; + } + Neon::SetIdx setIdx = cellProperties.getSetIdx(); + return setIdx; +} +template +auto bGrid::getLaunchParameters(Neon::DataView dataView, + const index_3d&, + const size_t& sharedMem) const -> Neon::set::LaunchParameters +{ + auto res = mData->launchParametersTable.get(dataView); + res.forEachSeq([&](SetIdx const& /*setIdx*/, + Neon::set::LaunchParameters::launchInfo_e& launchParams) -> void { + launchParams.setShm(sharedMem); + }); + return res; +} + +template +auto bGrid:: + helpGetStencilIdTo3dOffset() + const -> Neon::set::MemSet& +{ + return mData->stencilIdTo3dOffset; +} + +template +auto bGrid::isInsideDomain(const index_3d& idx) const -> bool +{ + // 1. check if the block is active + const BlockView::index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto blockProperties = mData->blockViewGrid.getProperties(blockIdx3d); + + if (!blockProperties.isInside()) { + return false; + } + // 2. The block is active, check the element in the block + typename SBlock::BitMask const& bitMask = mData->activeBitField.getReference(blockIdx3d, 0); + + bool isActive = bitMask.isActive((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x, + (idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y, + (idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + return isActive; +} + +template +auto bGrid::getProperties(const index_3d& idx) + const -> typename GridBaseTemplate::CellProperties +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return cellProperties; + } + + if (this->getDevSet().setCardinality() == 1) { + cellProperties.init(0, DataView::INTERNAL); + } else { + const index_3d blockIdx3d = idx / SBlock::memBlockSize3D.template newType(); + auto blockViewProperty = mData->blockViewGrid.getProperties(blockIdx3d); + + cellProperties.init(blockViewProperty.getSetIdx(), + blockViewProperty.getDataView()); + } + return cellProperties; +} + +template +auto bGrid::helpGetSetIdxAndGridIdx(Neon::index_3d idx) + const -> std::tuple +{ + const index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto [setIdx, bvGridIdx] = mData->blockViewGrid.helpGetSetIdxAndGridIdx(blockIdx3d); + Idx bIdx; + bIdx.mDataBlockIdx = bvGridIdx.helpGet(); + bIdx.mInDataBlockIdx.x = static_cast((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x); + bIdx.mInDataBlockIdx.y = static_cast((idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y); + bIdx.mInDataBlockIdx.z = static_cast((idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + + return {setIdx, bIdx}; +} + +template +auto bGrid::helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D& +{ + return mData->partitioner1D; +} + +template +template +auto bGrid::init_mask_field([[maybe_unused]] ActiveCellLambda activeCellLambda) -> void +{ + using returTypeOfLambda = typename std::invoke_result::type; + if constexpr (std::is_same_v) { + + + auto maskField = this->newField("maskField", 1, 0, Neon::DataUse::HOST_DEVICE); + maskField.getGrid().template newContainer( + "maskFieldInit", + [&](Neon::set::Loader& loader) { + auto maskFieldPartition = loader.load(maskField); + return [activeCellLambda, maskFieldPartition] (const auto& gIdx) mutable { + auto globalPosition = maskFieldPartition.getGlobalIndex(gIdx); + details::cGrid::ClassSelector voxelClass = activeCellLambda(globalPosition); + maskFieldPartition(gIdx, 0) = static_cast(voxelClass); +// maskFieldPartition(gIdx, 0) = 33; + }; + }) + .run(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + maskField.updateDeviceData(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + //maskField.template ioToVtk("maskField", "maskField"); + this->mData->maskClassField = maskField; + return; + } +} + +template +auto bGrid::helpGetClassField() -> Field& +{ + return mData->maskClassField; +} + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex.h new file mode 100644 index 00000000..5dd65754 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex.h @@ -0,0 +1,142 @@ +#pragma once + +#include "Neon/core/core.h" + + +namespace Neon::domain::details::disaggregated::bGrid { + +// Common forward declarations +template +class bGrid; +template +class bSpan; +template +class bPartition; + +class MicroIndex +{ + public: + using TrayIdx = int32_t; + using InTrayIdx = int8_3d; + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex() + : MicroIndex(0, 0, 0, 0) + { + } + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex(const TrayIdx& blockIdx, + const InTrayIdx::Integer& x, + const InTrayIdx::Integer& y, + const InTrayIdx::Integer& z) + { + mTrayBlockIdx = blockIdx; + mInTrayBlockIdx.x = x; + mInTrayBlockIdx.y = y; + mInTrayBlockIdx.z = z; + } + + NEON_CUDA_HOST_DEVICE inline auto getInTrayBlockIdx() const -> InTrayIdx const& + { + return mInTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto getTrayBlockIdx() const -> TrayIdx const& + { + return mTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setInTrayBlockIdx(InTrayIdx const& inTrayIdx) -> void + { + mInTrayBlockIdx = inTrayIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setTrayBlockIdx(TrayIdx const& trayIdx) -> void + { + mTrayBlockIdx = trayIdx; + } + + InTrayIdx mInTrayBlockIdx; + TrayIdx mTrayBlockIdx{}; +}; + +template +class bIndex +{ + public: + template + friend class bSpan; + using OuterIdx = bIndex; + + using NghIdx = int8_3d; + template + friend class bPartition; + + template + friend class bField; + + template + friend class bSpan; + template + friend class bGrid; + + + using TrayIdx = MicroIndex::TrayIdx; + using InTrayIdx = MicroIndex::InTrayIdx; + + using DataBlockCount = std::make_unsigned_t; + using DataBlockIdx = std::make_unsigned_t; + using InDataBlockIdx = InTrayIdx; + + bIndex() = default; + ~bIndex() = default; + + NEON_CUDA_HOST_DEVICE inline explicit bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z); + + NEON_CUDA_HOST_DEVICE inline auto getMicroIndex() -> MicroIndex; + NEON_CUDA_HOST_DEVICE inline auto init(MicroIndex const&) -> void; + + NEON_CUDA_HOST_DEVICE inline auto getInDataBlockIdx() const -> InDataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto getDataBlockIdx() const -> DataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto setInDataBlockIdx(InDataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto setDataBlockIdx(DataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto isActive() const -> bool; + // the local index within the block + InDataBlockIdx mInDataBlockIdx; + DataBlockIdx mDataBlockIdx{}; +}; + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setDataBlockIdx(const bIndex::DataBlockIdx& dataBlockIdx) -> void +{ + mDataBlockIdx = dataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setInDataBlockIdx(const bIndex::InDataBlockIdx& inDataBlockIdx) -> void +{ + mInDataBlockIdx = inDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::getDataBlockIdx() const -> const bIndex::DataBlockIdx& +{ + return mDataBlockIdx; +} +template +NEON_CUDA_HOST_DEVICE auto bIndex::getInDataBlockIdx() const -> const bIndex::InDataBlockIdx& +{ + return mInDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::isActive() const -> bool +{ + return mDataBlockIdx != std::numeric_limits::max(); +} + +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisg/bIndex_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex_imp.h new file mode 100644 index 00000000..8f571cf7 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bIndex_imp.h @@ -0,0 +1,67 @@ +#pragma once +#include "Neon/domain/details/bGridDisg/bIndex.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +NEON_CUDA_HOST_DEVICE inline bIndex:: + bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z) +{ + mDataBlockIdx = blockIdx; + mInDataBlockIdx.x = x; + mInDataBlockIdx.y = y; + mInDataBlockIdx.z = z; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::getMicroIndex() -> MicroIndex +{ + + + TrayIdx const exBlockOffset = mDataBlockIdx * (SBlock::blockRatioX * SBlock::blockRatioY * SBlock::blockRatioZ); + TrayIdx const exTrayOffset = [&] { + TrayIdx const trayBlockIdxX = mInDataBlockIdx.x / SBlock::userBlockSizeX; + TrayIdx const trayBlockIdxY = mInDataBlockIdx.y / SBlock::userBlockSizeY; + TrayIdx const trayBlockIdxZ = mInDataBlockIdx.z / SBlock::userBlockSizeZ; + + TrayIdx const res = trayBlockIdxX + trayBlockIdxY * SBlock::blockRatioX + + trayBlockIdxZ * (SBlock::blockRatioX * SBlock::blockRatioY); + return res; + }(); + MicroIndex res; + res.setTrayBlockIdx(exBlockOffset + exTrayOffset); + res.setInTrayBlockIdx({static_cast(mInDataBlockIdx.x % SBlock::userBlockSizeX), + static_cast(mInDataBlockIdx.y % SBlock::userBlockSizeY), + static_cast(mInDataBlockIdx.z % SBlock::userBlockSizeZ)}); + return res; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::init(MicroIndex const& microIndex) -> void +{ + constexpr uint32_t memBlockSize = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + constexpr uint32_t userBlockSize = SBlock::userBlockSizeX * SBlock::userBlockSizeY * SBlock::userBlockSizeZ; + constexpr uint32_t blockRatioSize = memBlockSize / userBlockSize; + + constexpr uint32_t blockRatioX = SBlock::memBlockSizeX / SBlock::userBlockSizeX; + constexpr uint32_t blockRatioY = SBlock::memBlockSizeY / SBlock::userBlockSizeY; + + mDataBlockIdx = microIndex.getTrayBlockIdx() / (blockRatioSize); + + uint32_t reminder = microIndex.getTrayBlockIdx() % (blockRatioSize); + + const uint32_t reminderInZ = reminder / (blockRatioX * blockRatioY); + mInDataBlockIdx.z = static_cast(microIndex.getInTrayBlockIdx().z + reminderInZ * SBlock::userBlockSizeZ); + reminder = reminder % (blockRatioX * blockRatioY); + const uint32_t reminderInY = reminder / (blockRatioX); + mInDataBlockIdx.y = static_cast(microIndex.getInTrayBlockIdx().y + reminderInY * SBlock::userBlockSizeY); + const uint32_t reminderInX = reminder % blockRatioX; + mInDataBlockIdx.x = static_cast(microIndex.getInTrayBlockIdx().x + reminderInX * SBlock::userBlockSizeX); +} + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition.h new file mode 100644 index 00000000..95de4e25 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition.h @@ -0,0 +1,197 @@ +#pragma once + +#include "Neon/domain/details/bGridDisg/bIndex.h" +#include "Neon/domain/details/bGridDisg/bSpan.h" + +#include "Neon/domain/interface/NghData.h" + +#include "Neon/sys/memory/CUDASharedMemoryUtil.h" + +namespace Neon::domain::details::disaggregated::bGrid { + + template + class bSpan; + + template + class bPartition { + public: + using Span = bSpan; + using Idx = bIndex; + using NghIdx = typename Idx::NghIdx; + using Type = T; + using NghData = Neon::domain::NghData; + + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + using BlockViewGridIdx = BlockViewGrid::Idx; + + public: + bPartition(); + + ~bPartition() = default; + + explicit bPartition(int setIdx, + int mCardinality, + T *mMem, + typename Idx::DataBlockIdx *mBlockConnectivity, + typename SBlock::BitMask const *NEON_RESTRICT mMask, + Neon::int32_3d *mOrigin, + NghIdx *mStencilNghIndex, + Neon::int32_3d mDomainSize); + + /** + * Retrieve the cardinality of the field. + */ + inline NEON_CUDA_HOST_DEVICE auto + cardinality() + const -> int; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx &cell, + int card) + -> T &; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx &cell, + int card) + const -> const T &; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &cell, + const NghIdx &offset, + const int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + uint8_t nghID, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + int card, + T defaultValue) + const -> NghData; + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t && (std::is_invocable_v || + std::is_same_v), void>; + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx &gidx, + int card, + T value) + -> bool; + + /** + * Gets the global coordinates of the cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getGlobalIndex(const Idx &cell) + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE inline auto + isActive(const Idx &cell, + const typename SBlock::BitMask *mask = nullptr) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto + isActive(const Idx& cell, + const NghIdx nghDir) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto + getDomainSize() + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE + auto mem() const -> T const *; + + /** + * Gets the Idx for in the block view space. + */ + NEON_CUDA_HOST_DEVICE inline auto + getBlockViewIdx(const Idx &cell) + const -> BlockViewGridIdx; + + + NEON_CUDA_HOST_DEVICE inline auto + helpGetPitch(const Idx &cell, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetValidIdxPitchExplicit(const Idx &idx, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpNghPitch(const Idx &nghIdx, int card) + const -> std::tuple; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const NghIdx &offset) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx) + const -> Idx; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const NghIdx &offset, const typename Idx::DataBlockIdx *blockConnectivity) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const typename Idx::DataBlockIdx *blockConnectivity) + const -> Idx; + + + int mCardinality; + T *mMem; + NghIdx const *NEON_RESTRICT mStencilNghIndex; + typename Idx::DataBlockIdx const *NEON_RESTRICT mBlockConnectivity; + typename SBlock::BitMask const *NEON_RESTRICT mMask; + Neon::int32_3d const *NEON_RESTRICT mOrigin; + int mSetIdx; + int mMultiResDiscreteIdxSpacing = 1; + Neon::int32_3d mDomainSize; + }; + +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisg/bPartition_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition_imp.h new file mode 100644 index 00000000..f3ded3cd --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bPartition_imp.h @@ -0,0 +1,469 @@ +#pragma once + +#include "Neon/domain/details/bGridDisg/bGrid.h" +#include "Neon/domain/details/bGridDisg/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +bPartition::bPartition() + : mCardinality(0), + mMem(nullptr), + mStencilNghIndex(), + mBlockConnectivity(nullptr), + mMask(nullptr), + mOrigin(0), + mSetIdx(0) +{ +} + +template +bPartition:: + bPartition(int setIdx, + int cardinality, + T* mem, + typename Idx::DataBlockIdx* blockConnectivity, + typename SBlock::BitMask const* NEON_RESTRICT mask, + Neon::int32_3d* origin, + NghIdx* stencilNghIndex, + Neon::int32_3d mDomainSize) + : mCardinality(cardinality), + mMem(mem), + mStencilNghIndex(stencilNghIndex), + mBlockConnectivity(blockConnectivity), + mMask(mask), + mOrigin(origin), + mSetIdx(setIdx), + mDomainSize(mDomainSize) +{ +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getGlobalIndex(const Idx& gidx) + const -> Neon::index_3d +{ + auto location = mOrigin[gidx.mDataBlockIdx]; + location.x += gidx.mInDataBlockIdx.x; + location.y += gidx.mInDataBlockIdx.y; + location.z += gidx.mInDataBlockIdx.z; + if constexpr (SBlock::isMultiResMode) { + return location * mMultiResDiscreteIdxSpacing; + } + return location; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getDomainSize() + const -> Neon::index_3d +{ + return mDomainSize; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: +mem() const -> T const *{ + return mMem; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getBlockViewIdx(const Idx& gidx) + const -> BlockViewGridIdx +{ + BlockViewGridIdx res; + res.manualSet(gidx.getDataBlockIdx()); + return res; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + cardinality() + const -> int +{ + return mCardinality; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) -> T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) const -> const T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetPitch(const Idx& idx, int card) + const -> uint32_t +{ + uint32_t const pitch = helpGetValidIdxPitchExplicit(idx, card); + return pitch; +} + + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetValidIdxPitchExplicit(const Idx& idx, int card) + const -> uint32_t +{ + uint32_t constexpr blockPitchByCard = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + uint32_t const inBlockInCardPitch = idx.mInDataBlockIdx.x + + SBlock::memBlockSizeX * idx.mInDataBlockIdx.y + + (SBlock::memBlockSizeX * SBlock::memBlockSizeY) * idx.mInDataBlockIdx.z; + uint32_t const blockAdnCardPitch = (idx.mDataBlockIdx * mCardinality + card) * blockPitchByCard; + uint32_t const pitch = blockAdnCardPitch + inBlockInCardPitch; + return pitch; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpNghPitch(const Idx& nghIdx, int card) + const -> std::tuple +{ + if (nghIdx.mDataBlockIdx == Span::getInvalidBlockId()) { + return {false, 0}; + } + + const bool isActive = mMask[nghIdx.mDataBlockIdx].isActive(nghIdx.mInDataBlockIdx.x, nghIdx.mInDataBlockIdx.y, nghIdx.mInDataBlockIdx.z); + if (!isActive) { + return {false, 0}; + } + auto const offset = helpGetValidIdxPitchExplicit(nghIdx, card); + return {true, offset}; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset) + const -> Idx +{ + return this->helpGetNghIdx(idx, offset, mBlockConnectivity); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset, + const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + offset.x, + idx.mInDataBlockIdx.y + offset.y, + idx.mInDataBlockIdx.z + offset.z); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + const int yFlag = ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + const int zFlag = ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx) + const -> Idx +{ + return this->helpGetNghIdx(idx, mBlockConnectivity); +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + xOff, + idx.mInDataBlockIdx.y + yOff, + idx.mInDataBlockIdx.z + zOff); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = [&] { + if constexpr (xOff == 0) { + return 0; + } else { + return ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + + const int yFlag = [&] { + if constexpr (yOff == 0) { + return 0; + } else { + return ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + const int zFlag = [&] { + if constexpr (zOff == 0) { + return 0; + } else { + return ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& eId, + uint8_t nghID, + int card) + const -> NghData +{ + NghIdx nghOffset = mStencilNghIndex[nghID]; + return getNghData(eId, nghOffset, card); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + const NghIdx& offset, + const int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx, offset); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card, + T defaultValue) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.set(defaultValue, false); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void> +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + + if (isValid) { + auto const& value = mMem[pitch]; + funIfValid(value); + return; + } + + if constexpr (!std::is_same_v) { + funIfNOTValid(); + } + return; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + writeNghData(const Idx& gidx, + int card, + T value) + -> bool +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + return false; + } + mMem[pitch] = value; + return true; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::isActive(const Idx& cell, + const typename SBlock::BitMask* mask) const -> bool +{ + if (!cell.isActive()) { + return false; + } + if (!mask) { + return mMask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } else { + return mask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::isActive(const Idx& cell, + const NghIdx nghDir) const -> bool +{ + Idx nghCell = this->helpGetNghIdx(cell, nghDir); + if (nghCell.mDataBlockIdx == std::numeric_limits::max()) { + return false; + } + return isActive(nghCell); +} + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan.h new file mode 100644 index 00000000..3357c1a8 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan.h @@ -0,0 +1,55 @@ +#pragma once + +#include "Neon/domain/details/bGridDisg/bIndex.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +class bSpan +{ + public: + // bit mask information + using BitMaskWordType = uint64_t; + + static constexpr uint32_t bitMaskStorageBitWidth = 64; + static constexpr Neon::MemoryLayout activeMaskMemoryLayout = Neon::MemoryLayout::arrayOfStructs; + static constexpr uint32_t log2OfbitMaskWordSize = 6; + + using Idx = bIndex; + friend class bGrid; + + static constexpr int SpaceDim = 3; + + bSpan() = default; + virtual ~bSpan() = default; + + NEON_CUDA_HOST_DEVICE inline static auto getInvalidBlockId() + -> typename Idx::DataBlockIdx + { + return std::numeric_limits::max(); + } + + inline bSpan( + typename Idx::DataBlockCount mFirstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask, + Neon::DataView mDataView); + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateCPUDevice( + Idx& bidx, + uint32_t const& threadIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateGPUDevice( + Idx& bidx) const -> bool; + + + // We don't need to have a count on active blocks + typename Idx::DataBlockCount mFirstDataBlockOffset; + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask; + Neon::DataView mDataView; +}; +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisg/bSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan_imp.h new file mode 100644 index 00000000..0fafc78e --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisg/bSpan_imp.h @@ -0,0 +1,52 @@ +#include "Neon/domain/details/bGridDisg/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGrid { + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateGPUDevice([[maybe_unused]] Idx& bidx) const -> bool +{ +#ifdef NEON_PLACE_CUDA_DEVICE + bidx.mDataBlockIdx = blockIdx.x + mFirstDataBlockOffset; + bidx.mInDataBlockIdx.x = threadIdx.x; + bidx.mInDataBlockIdx.y = threadIdx.y; + bidx.mInDataBlockIdx.z = threadIdx.z; + + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + + return isActive; +#else + NEON_THROW_UNSUPPORTED_OPERATION("Operation supported only on GPU"); +#endif +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateCPUDevice(Idx& bidx, + uint32_t const& dataBlockIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool +{ + + bidx.mDataBlockIdx = dataBlockIdx + mFirstDataBlockOffset; + ; + bidx.mInDataBlockIdx.x = static_cast(x); + bidx.mInDataBlockIdx.y = static_cast(y); + bidx.mInDataBlockIdx.z = static_cast(z); + const bool isActive = mActiveMask[dataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + return isActive; +} + +template +bSpan::bSpan(typename Idx::DataBlockCount firstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT activeMask, + Neon::DataView dataView) + : mFirstDataBlockOffset(firstDataBlockOffset), + mActiveMask(activeMask), + mDataView(dataView) +{ +} + + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockView.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockView.h new file mode 100644 index 00000000..6b5cfffc --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockView.h @@ -0,0 +1,29 @@ +#include "Neon/domain/details/bGridDisgMask/BlockViewGrid//BlockViewGrid.h" +#include "Neon/domain/tools/GridTransformer.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +struct BlockView +{ + public: + using Grid = Neon::domain::tool::GridTransformer::Grid; + template + using Field = Grid::template Field; + using index_3d = Neon::index_3d; + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * card]; + } + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * C]; + } + + static constexpr Neon::MemoryLayout layout = Neon::MemoryLayout::arrayOfStructs; +}; + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewGrid.h new file mode 100644 index 00000000..51eb9717 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewGrid.h @@ -0,0 +1,97 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/aGrid.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/patterns/PatternScalar.h" + +#include "BlockViewPartition.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +namespace details { +struct GridTransformation +{ + template + using Partition = BlockViewPartition; + using Span = Neon::domain::details::eGrid::eSpan; + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + + using FoundationGrid = Neon::domain::details::eGrid::eGrid; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = int32_t; + using Idx = FoundationGrid::Idx; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span = foundationGrid.getSpan(execution, setIdx, dw); + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + return foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + } + + static auto helpGetGridIdx(FoundationGrid&, + Neon::SetIdx const&, + FoundationGrid::Idx const& fgIdx) + -> GridTransformation::Idx + { + GridTransformation::Idx tgIdx = fgIdx; + return tgIdx; + } + + template + static auto initFieldPartition(FoundationGrid::Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = Partition(foundationPartition); + }); + } +}; +using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + +} // namespace details + +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewPartition.h new file mode 100644 index 00000000..3a860baa --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/BlockViewGrid/BlockViewPartition.h @@ -0,0 +1,43 @@ +#pragma once +#include +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/details/eGrid/eIndex.h" +#include "Neon/domain/interface/NghData.h" +#include "Neon/set/DevSet.h" +#include "Neon/sys/memory/CudaIntrinsics.h" +#include "cuda_fp16.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +class BlockViewPartition : public Neon::domain::details::eGrid::ePartition +{ + public: + BlockViewPartition() + { + } + BlockViewPartition(Neon::domain::details::eGrid::ePartition ePartition) + : Neon::domain::details::eGrid::ePartition(ePartition) + { + } + + template + static auto getInBlockIdx(typename Neon::domain::details::eGrid::ePartition::Idx const& idx, + uint8_3d const& inBlockLocation) -> BlockIdexType + { + BlockIdexType blockIdx(idx.helpGet(), inBlockLocation); + return inBlockLocation; + } + + auto getCountAllocated() const -> int32_t; +}; + +template +auto BlockViewPartition::getCountAllocated() const -> int32_t +{ + return this->mCountAllocated; +} +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/ClassSelector.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/ClassSelector.h new file mode 100644 index 00000000..9b2f441b --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/ClassSelector.h @@ -0,0 +1,10 @@ +#pragma once + +namespace Neon::domain::details::disaggregated::bGridMask::details::cGrid { +enum ClassSelector +{ + alpha = 1, + beta = 2, + outside = 0, +}; +} \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cGrid.h new file mode 100644 index 00000000..a6c20f48 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cGrid.h @@ -0,0 +1,145 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "../bGrid.h" +#include "./ClassSelector.h" +#include "./cSpan.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +namespace details::cGrid { + +template +struct GridTransformation_cGrid +{ + using FoundationGrid = Neon::domain::details::disaggregated::bGridMask::bGrid; + + template + using Partition = Neon::domain::details::disaggregated::bGridMask::bPartition; + using Span = cSpan; + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = typename FoundationGrid::ExecutionThreadSpanIndexType; + using Idx = typename FoundationGrid::Idx; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, + Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dataViewOfTheTableEntry, + Span& NEON_OUT span) { + typename FoundationGrid::Span const& foundationSpan = foundationGrid.getSpan(execution, setIdx, dataViewOfTheTableEntry); + span = cSpan(foundationSpan.mFirstDataBlockOffset, + foundationSpan.mActiveMask, + foundationSpan.mDataView, + foundationGrid.helpGetClassField().getPartition(execution, setIdx, dataViewOfTheTableEntry)); + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + Neon::set::LaunchParameters launchParameters = foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + + launchParameters.forEachSeq([&](Neon::SetIdx setIdx, Neon::sys::GpuLaunchInfo& launchParameter) { + Neon::domain::tool::Partitioner1D const& foundationPartitioner1D = foundationGrid.helpGetPartitioner1D(); + auto const& spanLayout = foundationPartitioner1D.getSpanLayout(); + int nBlocks; + + Neon::domain::tool::partitioning::ByDomain byDomain = classSelector == cGrid::ClassSelector::alpha + ? Neon::domain::tool::partitioning::ByDomain::bulk + : Neon::domain::tool::partitioning::ByDomain::bc; + + int countInternal = spanLayout.getBoundsInternal(setIdx, byDomain).count; + int countBcUp = spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::up, + byDomain) + .count; + int countBcDw = spanLayout.getBoundsBoundary(setIdx, + Neon::domain::tool::partitioning::ByDirection::down, + byDomain) + .count; + + switch (dataView) { + case Neon::DataView::INTERNAL: + nBlocks = countInternal; + break; + case Neon::DataView::BOUNDARY: + nBlocks = countBcUp + countBcDw; + break; + case Neon::DataView::STANDARD: + nBlocks = countInternal + + countBcUp + + countBcDw; + break; + default: + throw Neon::NeonException("Unknown data view"); + } + + launchParameter.set(Neon::sys::GpuLaunchInfo::mode_e::cudaGridMode, + nBlocks, + SBlock::memBlockSize3D.template newType(), shareMem); + }); + return launchParameters; + } + + static auto helpGetGridIdx(FoundationGrid&, + Neon::SetIdx const&, + typename FoundationGrid::Idx const& fgIdx) + -> GridTransformation::Idx + { + GridTransformation::Idx tgIdx = fgIdx; + return tgIdx; + } + + template + static auto initFieldPartition(typename FoundationGrid::template Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = foundationPartition; + }); + } +}; + +template +using cGrid = typename Neon::domain::tool::GridTransformer>::Grid; + +} // namespace details::cGrid +} // namespace Neon::domain::details::disaggregated::bGridMask diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan.h new file mode 100644 index 00000000..e38180ee --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan.h @@ -0,0 +1,58 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bIndex.h" + +namespace Neon::domain::details::disaggregated::bGridMask { +namespace details::cGrid { + +template +class cSpan +{ + public: + // bit mask information + using BitMaskWordType = uint64_t; + + static constexpr uint32_t bitMaskStorageBitWidth = 64; + static constexpr Neon::MemoryLayout activeMaskMemoryLayout = Neon::MemoryLayout::arrayOfStructs; + static constexpr uint32_t log2OfbitMaskWordSize = 6; + + using Idx = bIndex; + friend class bGrid; + + static constexpr int SpaceDim = 3; + + cSpan() = default; + virtual ~cSpan() = default; + + NEON_CUDA_HOST_DEVICE inline static auto getInvalidBlockId() + -> typename Idx::DataBlockIdx + { + return std::numeric_limits::max(); + } + + inline cSpan( + typename Idx::DataBlockCount mFirstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask, + Neon::DataView mDataView, + uint8_t const* NEON_RESTRICT mClassMask); + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateCPUDevice( + Idx& bidx, + uint32_t const& threadIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateGPUDevice( + Idx& bidx) const -> bool; + + + // We don't need to have a count on active blocks + typename Idx::DataBlockCount mFirstDataBlockOffset; + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask; + Neon::DataView mDataView; + uint8_t const* NEON_RESTRICT mClassMask; +}; +} // namespace Neon::domain::details::disaggregated::bGridMask +} +#include "Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan_imp.h new file mode 100644 index 00000000..f8783a2e --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan_imp.h @@ -0,0 +1,60 @@ +#include +#include "Neon/domain/details/bGridDisgMask/ClassificationGrid/cSpan.h" +namespace Neon::domain::details::disaggregated::bGridMask { +namespace details::cGrid { + +template +NEON_CUDA_HOST_DEVICE inline auto +cSpan::setAndValidateGPUDevice([[maybe_unused]] Idx& bidx) const -> bool +{ +#ifdef NEON_PLACE_CUDA_DEVICE + bidx.mDataBlockIdx = blockIdx.x + mFirstDataBlockOffset; + bidx.mInDataBlockIdx.x = threadIdx.x; + bidx.mInDataBlockIdx.y = threadIdx.y; + bidx.mInDataBlockIdx.z = threadIdx.z; + + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + const bool isClass = mClassMask[bidx.mDataBlockIdx * SB] == classSelector; + return isActive; +#else + NEON_THROW_UNSUPPORTED_OPERATION("Operation supported only on GPU"); +#endif +} + +template +NEON_CUDA_HOST_DEVICE inline auto +cSpan::setAndValidateCPUDevice(Idx& bidx, + uint32_t const& dataBlockIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool +{ + + bidx.mDataBlockIdx = dataBlockIdx + mFirstDataBlockOffset; + ; + bidx.mInDataBlockIdx.x = static_cast(x); + bidx.mInDataBlockIdx.y = static_cast(y); + bidx.mInDataBlockIdx.z = static_cast(z); + const bool isActive = mActiveMask[dataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + const bool isClass = mClassMask[bidx.mDataBlockIdx * SBlock::memBlockCountElements + + bidx.mInDataBlockIdx.x + + bidx.mInDataBlockIdx.y * SBlock::memBlockSizeX + + bidx.mInDataBlockIdx.z * SBlock::memBlockSizeX * SBlock::memBlockSizeY] == classSelector; + + return isActive && isClass; +} + +template +cSpan::cSpan(typename Idx::DataBlockCount firstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT activeMask, + Neon::DataView dataView, + uint8_t const* NEON_RESTRICT ClassMask) + : mFirstDataBlockOffset(firstDataBlockOffset), + mActiveMask(activeMask), + mDataView(dataView), + mClassMask(ClassMask) +{ +} + +} +} // namespace Neon::domain::details::disaggregated::bGridMask \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/StaticBlock.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/StaticBlock.h new file mode 100644 index 00000000..8ef687ce --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/StaticBlock.h @@ -0,0 +1,106 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +struct StaticBlock +{ + public: + constexpr static uint32_t memBlockSizeX = memBlockSizeX_; + constexpr static uint32_t memBlockSizeY = memBlockSizeY_; + constexpr static uint32_t memBlockSizeZ = memBlockSizeZ_; + constexpr static Neon::uint32_3d memBlockSize3D = Neon::uint32_3d(memBlockSizeX, memBlockSizeY, memBlockSizeZ); + + constexpr static uint32_t userBlockSizeX = userBlockSizeX_; + constexpr static uint32_t userBlockSizeY = userBlockSizeY_; + constexpr static uint32_t userBlockSizeZ = userBlockSizeZ_; + constexpr static Neon::uint32_3d userBlockSize3D = Neon::uint32_3d(userBlockSizeX, userBlockSizeY, userBlockSizeZ); + + constexpr static uint32_t blockRatioX = memBlockSizeX / userBlockSizeX; + constexpr static uint32_t blockRatioY = memBlockSizeY / userBlockSizeY; + constexpr static uint32_t blockRatioZ = memBlockSizeZ / userBlockSizeZ; + + constexpr static uint32_t memBlockPitchX = 1; + constexpr static uint32_t memBlockPitchY = memBlockSizeX; + constexpr static uint32_t memBlockPitchZ = memBlockSizeX * memBlockSizeY; + + constexpr static bool isMultiResMode = isMultiResMode_; + + constexpr static uint32_t memBlockCountElements = memBlockSizeX * memBlockSizeY * memBlockSizeZ; + + static_assert(memBlockSizeX >= userBlockSizeX); + static_assert(memBlockSizeY >= userBlockSizeY); + static_assert(memBlockSizeZ >= userBlockSizeZ); + + static_assert(memBlockSizeX % userBlockSizeX == 0); + static_assert(memBlockSizeY % userBlockSizeY == 0); + static_assert(memBlockSizeZ % userBlockSizeZ == 0); + + struct BitMask + { + using BitMaskWordType = uint32_t; + auto reset() -> void + { + for (BitMaskWordType i = 0; i < nWords; ++i) { + bits[i] = 0; + } + } + + auto setActive(int threadX, + int threadY, + int threadZ) -> void + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + word = word | mask; + } + + inline auto NEON_CUDA_HOST_DEVICE isActive(int threadX, + int threadY, + int threadZ) const -> bool + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + return (word & mask) != 0; + } + + static inline auto NEON_CUDA_HOST_DEVICE getMaskAndWordI(int threadX, + int threadY, + int threadZ, + NEON_OUT BitMaskWordType& mask, + NEON_OUT uint32_t& wordIdx) -> void + { + const uint32_t threadPitch = threadX * memBlockPitchX + + threadY * memBlockPitchY + + threadZ * memBlockPitchZ; + + // threadPitch >> log2_of_bitPerWord + // the same as: threadPitch / 2^{log2_of_bitPerWord} + wordIdx = threadPitch >> log2_of_bitPerWord; + // threadPitch & ((bitMaskWordType(bitMaskStorageBitWidth)) - 1); + // same as threadPitch % 2^{log2OfbitMaskWordSize} + const uint32_t offsetInWord = threadPitch & ((BitMaskWordType(bitPerWord)) - 1); + mask = BitMaskWordType(1) << offsetInWord; + } + + constexpr static BitMaskWordType nWords = (memBlockCountElements + 31) / 32; + static constexpr uint32_t log2_of_bitPerWord = 5; + static constexpr uint32_t bitPerWord = 32; + + BitMaskWordType bits[nWords]; + }; +}; + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField.h new file mode 100644 index 00000000..60235a8c --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField.h @@ -0,0 +1,119 @@ +#pragma once +#include "Neon/domain/details/bGridDisgMask/bPartition.h" +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/set/patterns/BlasSet.h" + +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/DevSet.h" +#include "Neon/set/HuOptions.h" +#include "Neon/set/MemoryTransfer.h" + +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/domain/tools/HaloUpdateTable1DPartitioning.h" +#include "Neon/domain/tools/PartitionTable.h" +#include "bPartition.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + + +template +class bField : public Neon::domain::interface::FieldBaseTemplate, + bPartition, + int> +{ + friend bGrid; + + public: + using Type = T; + using Grid = bGrid; + using Field = bField; + using Partition = bPartition; + using Idx = bIndex; + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + template + using BlockViewField = BlockViewGrid::template Field; + + using NghIdx = typename Partition::NghIdx; + using NghData = typename Partition::NghData; + + bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue); + + bField(); + + virtual ~bField() = default; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) const -> const Partition& final; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) -> Partition& final; + + auto isInsideDomain(const Neon::index_3d& idx) const -> bool; + + + auto operator()(const Neon::index_3d& idx, + const int& cardinality) const -> T final; + + auto getReference(const Neon::index_3d& idx, + const int& cardinality) -> T& final; + + auto updateHostData(int streamId = 0) -> void final; + + auto updateDeviceData(int streamId = 0) -> void final; + + auto newHaloUpdate(Neon::set::StencilSemantic semantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container; + + auto getMemoryField() -> BlockViewGrid::Field&; + + + private: + auto getRef(const Neon::index_3d& idx, const int& cardinality) const -> T&; + + auto initHaloUpdateTable() -> void; + + + struct Data + { + Data() = default; + Data(Neon::Backend const& bk) + { + partitionTable.init(bk); + } + + enum EndPoints + { + src = 1, + dst = 0 + }; + + struct EndPointsUtils + { + static constexpr int nConfigs = 2; + }; + + std::shared_ptr grid; + BlockViewField memoryField; + int cardinality; + + Neon::domain::tool::HaloTable1DPartitioning mStandardHaloUpdateTable; + Neon::domain::tool::PartitionTable partitionTable; + }; + std::shared_ptr mData; +}; + + +} // namespace Neon::domain::details::disaggregated::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField_imp.h new file mode 100644 index 00000000..006a9d3f --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bField_imp.h @@ -0,0 +1,337 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bField.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +bField::bField() +{ + mData = std::make_shared(); +} + +template +bField::bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue) + : Neon::domain::interface::FieldBaseTemplate(&grid, + fieldUserName, + "bField", + cardinality, + inactiveValue, + dataUse, + memoryOptions, + Neon::domain::haloStatus_et::e::ON) +{ + mData = std::make_shared(grid.getBackend()); + mData->grid = std::make_shared(grid); + + if (memoryOptions.getOrder() == Neon::MemoryLayout::arrayOfStructs) { + NEON_WARNING("bField does not support MemoryLayout::arrayOfStructs, enforcing MemoryLayout::structOfArrays"); + memoryOptions.setOrder(Neon::MemoryLayout::structOfArrays); + } + // the allocation size is the number of blocks x block size x cardinality + mData->memoryField = mData->grid->getBlockViewGrid().template newField( + "BitMask", + [&] { + int elPerBlock = SBlock::memBlockCountElements * cardinality; + return elPerBlock; + }(), + inactiveValue, + dataUse, + mData->grid->getBackend().getMemoryOptions(bSpan::activeMaskMemoryLayout)); + + + { // Setting up partitionTable + // const int setCardinality = mData->grid->getBackend().getDeviceCount(); + mData->partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView, + Partition& partition) { + auto& memoryFieldPartition = mData->memoryField.getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& blockConnectivity = mData->grid->helpGetBlockConnectivity().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& bitmask = mData->grid->getActiveBitMask().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& dataBlockOrigins = mData->grid->helpGetDataBlockOriginField().getPartition(execution, setIdx, Neon::DataView::STANDARD); + + partition = bPartition(setIdx, + cardinality, + memoryFieldPartition.mem(), + blockConnectivity.mem(), + bitmask.mem(), + dataBlockOrigins.mem(), + mData->grid->helpGetStencilIdTo3dOffset().rawMem(execution, setIdx), + mData->grid->getDimension()); + }); + } + + initHaloUpdateTable(); +} + +template +auto bField::getMemoryField() -> BlockViewGrid::Field& +{ + return mData->memoryField; +} + +template +auto bField::isInsideDomain(const Neon::index_3d& idx) const -> bool +{ + return mData->grid->isInsideDomain(idx); +} + +template +auto bField::getReference(const Neon::index_3d& cartesianIdx, + const int& cardinality) -> T& +{ + if constexpr (SBlock::isMultiResMode) { + auto& grid = this->getGrid(); + auto uniformCartesianIdx = cartesianIdx / grid.helGetMultiResDiscreteIdxSpacing(); + + if (cartesianIdx.x % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.y % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.z % grid.helGetMultiResDiscreteIdxSpacing() != 0) { + NeonException exp("bField::getReference"); + exp << "Input index is not multiple of the grid resolution"; + exp << "Index = " << cartesianIdx; + NEON_THROW(exp); + } + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(uniformCartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } else { + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } +} + +template +auto bField::operator()(const Neon::index_3d& cartesianIdx, + const int& cardinality) const -> T +{ + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + if (setIdx.idx() == -1) { + return this->getOutsideValue(); + } + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; +} + +template +auto bField::updateHostData(int streamId) -> void +{ + mData->memoryField.updateHostData(streamId); +} + +template +auto bField::updateDeviceData(int streamId) -> void +{ + mData->memoryField.updateDeviceData(streamId); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) const -> const Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition const& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) -> Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::newHaloUpdate(Neon::set::StencilSemantic stencilSemantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) const -> Neon::set::Container +{ + + + // We need to define a graph of Containers + // One for the actual memory transfer + // One for the synchronization + // The order depends on the transfer mode: put or get + Neon::set::Container dataTransferContainer; + auto const& bk = this->getGrid().getBackend(); + + if (stencilSemantic == Neon::set::StencilSemantic::standard) { + auto transfers = bk.template newDataSet>(); + + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->mStandardHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + } else { + NEON_DEV_UNDER_CONSTRUCTION(""); + } + Neon::set::Container SyncContainer = + Neon::set::Container::factorySynchronization( + *this, + Neon::set::SynchronizationContainerType::hostOmpBarrier); + + Neon::set::container::Graph graph(this->getBackend()); + const auto& dataTransferNode = graph.addNode(dataTransferContainer); + const auto& syncNode = graph.addNode(SyncContainer); + + switch (transferMode) { + case Neon::set::TransferMode::put: + graph.addDependency(dataTransferNode, syncNode, Neon::GraphDependencyType::data); + break; + case Neon::set::TransferMode::get: + graph.addDependency(syncNode, dataTransferNode, Neon::GraphDependencyType::data); + break; + default: + NEON_THROW_UNSUPPORTED_OPTION(); + break; + } + + graph.removeRedundantDependencies(); + + Neon::set::Container output = + Neon::set::Container::factoryGraph("dGrid-Halo-Update", + graph, + [](Neon::SetIdx, Neon::set::Loader&) {}); + return output; +} + +template +auto bField::initHaloUpdateTable() -> void +{ + // NEON_THROW_UNSUPPORTED_OPERATION(""); + auto& grid = this->getGrid(); + auto bk = grid.getBackend(); + auto getNghSetIdx = [&](SetIdx setIdx, Neon::domain::tool::partitioning::ByDirection direction) { + int res; + if (direction == Neon::domain::tool::partitioning::ByDirection::up) { + res = (setIdx + 1) % bk.getDeviceCount(); + } else { + res = (setIdx + bk.getDeviceCount() - 1) % bk.getDeviceCount(); + } + return res; + }; + + mData->mStandardHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + Neon::SetIdx setIdxVec[2]; + setIdxVec[Data::EndPoints::dst] = setIdxDst; + setIdxVec[Data::EndPoints::src] = setIdxSrc; + + std::array partitions; + std::array*, Data::EndPointsUtils::nConfigs> blockViewPartitions; + std::array, Data::EndPointsUtils::nConfigs> ghostZBeginIdx; + std::array, Data::EndPointsUtils::nConfigs> boundaryZBeginIdx; + std::array memPhyDim; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + blockViewPartitions[Data::EndPoints::dst] = &(mData->memoryField.getPartition(execution, setIdxDst, Neon::DataView::STANDARD)); + blockViewPartitions[Data::EndPoints::src] = &(mData->memoryField.getPartition(execution, setIdxSrc, Neon::DataView::STANDARD)); + + for (auto endPoint : {Data::EndPoints::dst, Data::EndPoints::src}) { + for (auto direction : {ByDirection::down, ByDirection::up}) { + auto ghostFirst = mData->grid->mData->partitioner1D.getSpanLayout().getGhostBoundary(setIdxVec[endPoint], direction).first; + auto boundaryFirst = mData->grid->mData->partitioner1D.getSpanLayout().getBoundsBoundary(setIdxVec[endPoint], direction).first; + ghostZBeginIdx[endPoint][static_cast(direction)] = ghostFirst; + boundaryZBeginIdx[endPoint][static_cast(direction)] = boundaryFirst; + } + + memPhyDim[endPoint] = Neon::size_4d( + SBlock::memBlockCountElements, + 1, + 1, + size_t(blockViewPartitions[endPoint]->getCountAllocated()) * SBlock::memBlockCountElements); + } + + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + + T* srcMem = blockViewPartitions[Data::EndPoints::src]->mem(); + T* dstMem = blockViewPartitions[Data::EndPoints::dst]->mem(); + + Neon::size_4d dstGhostBuff(ghostZBeginIdx[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))], 0, 0, 0); + Neon::size_4d srcBoundaryBuff(boundaryZBeginIdx[Data::EndPoints::src][static_cast(byDirection)], 0, 0, 0); + + size_t transferDataBlockCount = mData->grid->mData->partitioner1D.getSpanLayout().getBoundsBoundary(setIdxVec[Data::EndPoints::src], byDirection).count; + + // std::cout << "To " << dstGhostBuff << " prt " << blockViewPartitions[Data::EndPoints::dst]->prtID() << " From " << srcBoundaryBuff << " prt " << blockViewPartitions[Data::EndPoints::src]->prtID() << std::endl; + // std::cout << "dst mem " << blockViewPartitions[Data::EndPoints::dst]->mem() << " " << std::endl; + // std::cout << "dst transferDataBlockCount " << transferDataBlockCount << " " << std::endl; + // std::cout << "dst pitch " << (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum() << " " << std::endl; + // std::cout << "dst dstGhostBuff " << dstGhostBuff << " " << std::endl; + // std::cout << "dst pitch all" << memPhyDim[Data::EndPoints::dst] << " " << std::endl; + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum(), dstGhostBuff}, + {setIdxSrc, srcMem + (srcBoundaryBuff * memPhyDim[Data::EndPoints::src]).rSum(), srcBoundaryBuff}, + sizeof(T) * SBlock::memBlockCountElements * transferDataBlockCount); + + transfersVec.push_back(transfer); + } + }); +} + + +} // namespace Neon::domain::details::disaggregated::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid.h new file mode 100644 index 00000000..de0fec98 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid.h @@ -0,0 +1,274 @@ +#pragma once +#include "Neon/core/core.h" + +#include "Neon/domain/aGrid.h" +#include "Neon/domain/details/bGridDisgMask/BlockView.h" +#include "Neon/domain/details/bGridDisgMask/StaticBlock.h" +#include "Neon/domain/details/bGridDisgMask/bField.h" +#include "Neon/domain/details/bGridDisgMask/bIndex.h" +#include "Neon/domain/details/bGridDisgMask/bPartition.h" +#include "Neon/domain/details/bGridDisgMask/bSpan.h" +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/Partitioner1D.h" +#include "Neon/domain/tools/PointHashTable.h" +#include "Neon/domain/tools/SpanTable.h" +#include "Neon/set/Containter.h" +#include "Neon/set/LaunchParametersTable.h" +#include "Neon/set/memory/memSet.h" + +#include "Neon/domain/details/bGridDisgMask/ClassificationGrid/cGrid.h" + +#include "ClassificationGrid/cGrid.h" +#include "bField.h" +#include "bPartition.h" +#include "bSpan.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + + +template +class bField; + +template +class bGrid : public Neon::domain::interface::GridBaseTemplate, + bIndex> +{ + public: + using Grid = bGrid; + template + using Partition = bPartition; + template + using Field = Neon::domain::details::disaggregated::bGridMask::bField; + + using Span = bSpan; + using NghIdx = typename Partition::NghIdx; + using GridBaseTemplate = Neon::domain::interface::GridBaseTemplate>; + + using Idx = bIndex; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Neon::set::details::ExecutionThreadSpan::d1b3; + using ExecutionThreadSpanIndexType = uint32_t; + + using BlockIdx = uint32_t; + + using AlphaGrid = typename Neon::domain::details::disaggregated::bGridMask::details::cGrid::cGrid; + using BetaGrid = typename Neon::domain::details::disaggregated::bGridMask::details::cGrid::cGrid; + + bGrid() = default; + virtual ~bGrid(); + + /** + * Constructor for the vanilla block data structure with depth of 1 + */ + template + bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData = double_3d(1, 1, 1), + const double_3d& origin = double_3d(0, 0, 0), + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + + /** + * Constructor for bGrid. This constructor should be directly used only by mGrid + */ + template + bGrid(const Neon::Backend& backend /**< Neon backend for the computation */, + const Neon::int32_3d& domainSize /**< Size of the bounded Cartesian */, + const ActiveCellLambda activeCellLambda /**< Function that identify the user domain inside the boxed Cartesian discretization */, + const Neon::domain::Stencil& stencil /**< union of tall the stencil that will be used in the computation */, + const int multiResDiscreteIdxSpacing /**< Parameter for the multi-resolution. Index i and index (i+1) may be remapped as i*voxelSpacing and (i+1)* voxelSpacing. + * For a uniform bGrid, i.e outside the context of multi-resolution this parameter is always 1 */ + , + const double_3d& spacingData /** Physical spacing between two consecutive data points in the Cartesian domain */, + const double_3d& origin /** Physical location in space of the origin of the Cartesian discretization */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + /** + * Returns some properties for a given cartesian in the Cartesian domain. + * The provide index my be inside or outside the user defined bounded Cartesian domain + */ + auto getProperties(const Neon::index_3d& idx) + const -> typename GridBaseTemplate::CellProperties final; + + /** + * Returns true if the query 3D point is inside the user domain + * @param idx + * @return + */ + auto isInsideDomain(const Neon::index_3d& idx) + const -> bool final; + + /** + * Retrieves the device index that contains the query point + * @param idx + * @return + */ + auto getSetIdx(const Neon::index_3d& idx) + const -> int32_t final; + + /** + * Allocates a new field on the grid + */ + template + auto newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> Field; + + /** + * Allocates a new field on the block view grid + */ + template + auto newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> BlockView::Field; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newAlphaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newBetaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newAlphaBetaContainer(const std::string& name, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container; + + /** + * Defines a new set of parameter to launch a Container + */ + auto getLaunchParameters(Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& sharedMem) const -> Neon::set::LaunchParameters; + + /** + * Retrieve the span associated to the grid w.r.t. some user defined parameters. + */ + auto getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const Span&; + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getBlockViewGrid() const -> BlockView::Grid&; + + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getActiveBitMask() const -> BlockView::Field&; + + /** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ + template + auto helGetMultiResDiscreteIdxSpacing() const -> std::enable_if_t; + + + /** + * Help function to retrieve the block connectivity as a BlockViewGrid field + */ + auto helpGetBlockConnectivity() const -> BlockView::Field&; + + /** + * Help function to retrieve the block origin as a BlockViewGrid field + */ + auto helpGetDataBlockOriginField() const -> Neon::aGrid::Field&; + + /** + * Help function to retrieve the map that converts a stencil point id to 3d offset + */ + auto helpGetStencilIdTo3dOffset() const -> Neon::set::MemSet&; + + auto helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D&; + + /** + * Help function retriev the device and the block index associated to a point in the BlockViewGrid grid + */ + auto helpGetSetIdxAndGridIdx(Neon::index_3d idx) const -> std::tuple; + + template + auto init_mask_field(ActiveCellLambda activeCellLambda) -> void; + auto helpGetClassField() -> Field&; + + + struct Data + { + auto init(const Neon::Backend& bk) + { + spanTable.init(bk); + launchParametersTable.init(bk); + } + + Neon::domain::tool::SpanTable spanTable /** Span for each data view configurations */; + Neon::set::LaunchParametersTable launchParametersTable; + + Neon::domain::tool::Partitioner1D partitioner1D; + Stencil stencil; + Neon::sys::patterns::Engine reduceEngine; + + Neon::aGrid memoryGrid /** memory allocator for fields */; + Neon::aGrid::Field mDataBlockOriginField; + Neon::set::MemSet mStencil3dTo1dOffset; + + BlockView::Grid blockViewGrid; + BlockView::Field activeBitField; + BlockView::Field blockConnectivity; + Neon::set::MemSet stencilIdTo3dOffset; + + int mMultiResDiscreteIdxSpacing; + + // number of active voxels in each block + Neon::set::DataSet mNumActiveVoxel; + + + // Stencil neighbor indices + Neon::set::MemSet mStencilNghIndex; + + AlphaGrid alphaGrid; + BetaGrid betaGrid; + Field maskClassField; + }; + std::shared_ptr mData; +}; +extern template class bGrid>; +} // namespace Neon::domain::details::disaggregated::bGridMask + +#include "bField_imp.h" +#include "bGrid_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid_imp.h new file mode 100644 index 00000000..95fde021 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bGrid_imp.h @@ -0,0 +1,572 @@ +#include "Neon/domain/details/bGridDisgMask/bGrid.h" +#include "Neon/domain/tools/SpaceCurves.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) + : bGrid(backend, domainSize, activeCellLambda, stencil, 1, spacingData, origin, encoderType) +{ +} + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const int multiResDiscreteIdxSpacing, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) +{ + + + mData = std::make_shared(); + mData->init(backend); + + mData->mMultiResDiscreteIdxSpacing = multiResDiscreteIdxSpacing; + mData->stencil = stencil; + const index_3d defaultKernelBlockSize(SBlock::memBlockSizeX, + SBlock::memBlockSizeY, + SBlock::memBlockSizeZ); + + std::stringstream gridName; + gridName << "bGrid_" << SBlock::memBlockSizeX << "_" + << SBlock::memBlockSizeY << "_" + << SBlock::memBlockSizeZ; + { + auto nElementsPerPartition = backend.devSet().template newDataSet(0); + // We do an initialization with nElementsPerPartition to zero, + // then we reset to the computed number. + + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + stencil, + nElementsPerPartition, + defaultKernelBlockSize, + multiResDiscreteIdxSpacing, + origin, + encoderType, + defaultKernelBlockSize); + } + + { // Initialization of the partitioner + using returTypeOfLambda = typename std::invoke_result::type; + if constexpr (std::is_same_v) { + mData->partitioner1D = Neon::domain::tool::Partitioner1D( + backend, + activeCellLambda, + nullptr, + SBlock::memBlockSize3D.template newType(), + domainSize, + Neon::domain::Stencil::s27_t(false), + encoderType, + multiResDiscreteIdxSpacing); + } else if constexpr (std::is_same_v) { + mData->partitioner1D = Neon::domain::tool::Partitioner1D( + backend, + [&](Neon::index_3d idx) { + return activeCellLambda(idx) != details::cGrid::ClassSelector::outside; + }, + // [&](Neon::index_3d idx) { + // return (activeCellLambda(idx) == details::cGrid::ClassSelector::beta) + // ? Neon::domain::tool::partitioning::ByDomain::bc + // : Neon::domain::tool::partitioning::ByDomain::bulk; + // }, + nullptr, + SBlock::memBlockSize3D.template newType(), + domainSize, + Neon::domain::Stencil::s27_t(false), + encoderType, + multiResDiscreteIdxSpacing); + } else { + NEON_THROW_UNSUPPORTED_OPERATION("The user defined lambda must return a bool or a ClassSelector"); + } + + mData->mDataBlockOriginField = mData->partitioner1D.getGlobalMapping(); + mData->mStencil3dTo1dOffset = mData->partitioner1D.getStencil3dTo1dOffset(); + mData->memoryGrid = mData->partitioner1D.getMemoryGrid(); + } + + { // BlockViewGrid + Neon::domain::details::eGrid::eGrid egrid( + backend, + mData->partitioner1D.getBlockSpan(), + mData->partitioner1D, + Neon::domain::Stencil::s27_t(false), + spacingData * SBlock::memBlockSize3D, + origin); + + mData->blockViewGrid = BlockView::Grid(egrid); + } + + { // Active bitmask + mData->activeBitField = mData->blockViewGrid.template newField( + "BlockViewBitMask", + 1, + [] { + typename SBlock::BitMask outsideBitMask; + outsideBitMask.reset(); + return outsideBitMask; + }(), + Neon::DataUse::HOST_DEVICE, backend.getMemoryOptions(BlockView::layout)); + + mData->mNumActiveVoxel = backend.devSet().template newDataSet(); + + mData->activeBitField + .getGrid() + .template newContainer( + "activeBitMaskInit", + [&, this](Neon::set::Loader& loader) { + auto bitMaskPartition = loader.load(mData->activeBitField); + return [&, bitMaskPartition](const auto& bitMaskIdx) mutable { + auto prtIdx = bitMaskPartition.prtID(); + int countActive = 0; + auto const blockOrigin = bitMaskPartition.getGlobalIndex(bitMaskIdx); + typename SBlock::BitMask& bitMask = bitMaskPartition(bitMaskIdx, 0); + bitMask.reset(); + + for (int k = 0; k < SBlock::memBlockSize3D.template newType().z; k++) { + for (int j = 0; j < SBlock::memBlockSize3D.template newType().y; j++) { + for (int i = 0; i < SBlock::memBlockSize3D.template newType().x; i++) { + auto globalPosition = blockOrigin + Neon::int32_3d(i * this->mData->mMultiResDiscreteIdxSpacing, + j * this->mData->mMultiResDiscreteIdxSpacing, + k * this->mData->mMultiResDiscreteIdxSpacing); + bool const isInDomain = globalPosition < domainSize * this->mData->mMultiResDiscreteIdxSpacing; + bool const isActive = activeCellLambda(globalPosition); + if (isActive && isInDomain) { + countActive++; + bitMask.setActive(i, j, k); + } + } + } + } +#pragma omp critical + { + this->mData->mNumActiveVoxel[prtIdx] += countActive; + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + + + mData->activeBitField.updateDeviceData(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + mData->activeBitField.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::put, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + } + + + { // Neighbor blocks + mData->blockConnectivity = mData->blockViewGrid.template newField("blockConnectivity", + 27, + Span::getInvalidBlockId(), + Neon::DataUse::HOST_DEVICE, + Neon::MemoryLayout::arrayOfStructs); + + mData->blockConnectivity.getGrid().template newContainer( + "blockConnectivityInit", + [&](Neon::set::Loader& loader) { + auto blockConnectivity = loader.load(mData->blockConnectivity); + return [&, blockConnectivity](auto const& idx) mutable { + for (int8_t k = 0; k < 3; k++) { + for (int8_t j = 0; j < 3; j++) { + for (int8_t i = 0; i < 3; i++) { + auto targetDirection = i + 3 * j + 3 * 3 * k; + BlockIdx blockNghIdx = Span::getInvalidBlockId(); + typename decltype(blockConnectivity)::Idx nghIdx; + Neon::int8_3d stencilPoint(i - int8_t(1), + j - int8_t(1), + k - int8_t(1)); + bool isValid = blockConnectivity.getNghIndex(idx, stencilPoint, nghIdx); + if (isValid) { + blockNghIdx = static_cast(nghIdx.helpGet()); + } + blockConnectivity(idx, targetDirection) = blockNghIdx; + } + } + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + mData->blockConnectivity.updateDeviceData(Neon::Backend::mainStreamIdx); + } + + // Initialization of the SPAN table + mData->spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span.mDataView = dw; + switch (dw) { + case Neon::DataView::STANDARD: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + case Neon::DataView::BOUNDARY: { + span.mFirstDataBlockOffset = mData->partitioner1D.getSpanClassifier().countInternal(setIdx); + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + + break; + } + case Neon::DataView::INTERNAL: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + default: { + NeonException exc("dFieldDev"); + NEON_THROW(exc); + } + } + }); + + { // Stencil Idx to 3d offset + auto nPoints = backend.devSet().newDataSet(stencil.nNeighbours()); + mData->stencilIdTo3dOffset = backend.devSet().template newMemSet(Neon::DataUse::HOST_DEVICE, + 1, + backend.getMemoryOptions(), + nPoints); + for (int i = 0; i < stencil.nNeighbours(); ++i) { + for (int devIdx = 0; devIdx < backend.devSet().setCardinality(); devIdx++) { + index_3d pLong = stencil.neighbours()[i]; + Neon::int8_3d pShort = pLong.newType(); + mData->stencilIdTo3dOffset.eRef(devIdx, i) = pShort; + } + } + mData->stencilIdTo3dOffset.updateDeviceData(backend, Neon::Backend::mainStreamIdx); + } + // Init the base grid + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + Neon::domain::Stencil(), + mData->mNumActiveVoxel, + SBlock::memBlockSize3D.template newType(), + spacingData, + origin, + encoderType, + defaultKernelBlockSize); + { // setting launchParameters + mData->launchParametersTable.forEachSeq([&](Neon::DataView dw, + Neon::set::LaunchParameters& bLaunchParameters) { + auto defEGridBlock = mData->blockViewGrid.getDefaultBlock(); + auto eGridParams = mData->blockViewGrid.getLaunchParameters(dw, defEGridBlock, 0); + eGridParams.forEachSeq([&](Neon::SetIdx setIdx, Neon::sys::GpuLaunchInfo const& launchSingleDev) { + auto eDomainGridSize = launchSingleDev.domainGrid(); + assert(eDomainGridSize.y == 1); + assert(eDomainGridSize.z == 1); + int nBlocks = static_cast(eDomainGridSize.x); + bLaunchParameters.get(setIdx).set(Neon::sys::GpuLaunchInfo::mode_e::cudaGridMode, + nBlocks, SBlock::memBlockSize3D.template newType(), 0); + }); + }); + } + + this->init_mask_field(); + mData->alphaGrid = details::cGrid::cGrid(*this); + mData->betaGrid = details::cGrid::cGrid(*this); +} + +template +template +auto bGrid::newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + Field field(name, dataUse, memoryOptions, *this, cardinality, inactiveValue); + return field; +} + +template +template +auto bGrid::newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> BlockView::Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + BlockView::Field blockViewField = mData->blockViewGrid.template newField(name, cardinality, inactiveValue, dataUse, memoryOptions); + return blockViewField; +} + +template +template +auto bGrid::newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container +{ + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + blockSize, + [sharedMem](const Neon::index_3d&) { return sharedMem; }); + return kContainer; +} + +template +template +auto bGrid::newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + const Neon::index_3d& defaultBlockSize = this->getDefaultBlock(); + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + defaultBlockSize, + [](const Neon::index_3d&) { return 0; }); + return kContainer; +} + +template +template +auto bGrid::newAlphaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + + auto kContainer = mData->alphaGrid.newContainer(name, + lambda); + return kContainer; +} + +template +template +auto bGrid::newBetaContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + + auto kContainer = mData->betaGrid.newContainer(name, + lambda); + return kContainer; +} +template + +template +auto bGrid::newAlphaBetaContainer(const std::string& name, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container +{ + std::vector sequence; + auto containerAlpha = mData->alphaGrid.newContainer(name + "Alpha", + lambdaAlpha); + auto containerBeta = mData->betaGrid.newContainer(name + "Beta", + lambdaBeta); + + sequence.push_back(containerAlpha); + sequence.push_back(containerBeta); + + Neon::set::Container exec = Neon::set::Container::factorySequence(name + "Sequence", sequence); + return exec; +} + +template +auto bGrid:: + getBlockViewGrid() + const -> BlockView::Grid& +{ + return mData->blockViewGrid; +} + +template +auto bGrid:: + getActiveBitMask() + const -> BlockView::Field& +{ + return mData->activeBitField; +} + +/** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ +template +template +auto bGrid::helGetMultiResDiscreteIdxSpacing() const + -> std::enable_if_t +{ + return mData->mMultiResDiscreteIdxSpacing; +} + +template +auto bGrid:: + helpGetBlockConnectivity() + const -> BlockView::Field& +{ + return mData->blockConnectivity; +} +template +auto bGrid:: + helpGetDataBlockOriginField() + const -> Neon::aGrid::Field& +{ + return mData->mDataBlockOriginField; +} +template +auto bGrid::getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const bGrid::Span& +{ + return mData->spanTable.getSpan(execution, setIdx, dataView); +} + +template +bGrid::~bGrid() +{ +} +template +auto bGrid::getSetIdx(const index_3d& idx) const -> int32_t +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return -1; + } + Neon::SetIdx setIdx = cellProperties.getSetIdx(); + return setIdx; +} +template +auto bGrid::getLaunchParameters(Neon::DataView dataView, + const index_3d&, + const size_t& sharedMem) const -> Neon::set::LaunchParameters +{ + auto res = mData->launchParametersTable.get(dataView); + res.forEachSeq([&](SetIdx const& /*setIdx*/, + Neon::set::LaunchParameters::launchInfo_e& launchParams) -> void { + launchParams.setShm(sharedMem); + }); + return res; +} + +template +auto bGrid:: + helpGetStencilIdTo3dOffset() + const -> Neon::set::MemSet& +{ + return mData->stencilIdTo3dOffset; +} + +template +auto bGrid::isInsideDomain(const index_3d& idx) const -> bool +{ + // 1. check if the block is active + const BlockView::index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto blockProperties = mData->blockViewGrid.getProperties(blockIdx3d); + + if (!blockProperties.isInside()) { + return false; + } + // 2. The block is active, check the element in the block + typename SBlock::BitMask const& bitMask = mData->activeBitField.getReference(blockIdx3d, 0); + + bool isActive = bitMask.isActive((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x, + (idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y, + (idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + return isActive; +} + +template +auto bGrid::getProperties(const index_3d& idx) + const -> typename GridBaseTemplate::CellProperties +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return cellProperties; + } + + if (this->getDevSet().setCardinality() == 1) { + cellProperties.init(0, DataView::INTERNAL); + } else { + const index_3d blockIdx3d = idx / SBlock::memBlockSize3D.template newType(); + auto blockViewProperty = mData->blockViewGrid.getProperties(blockIdx3d); + + cellProperties.init(blockViewProperty.getSetIdx(), + blockViewProperty.getDataView()); + } + return cellProperties; +} + +template +auto bGrid::helpGetSetIdxAndGridIdx(Neon::index_3d idx) + const -> std::tuple +{ + const index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto [setIdx, bvGridIdx] = mData->blockViewGrid.helpGetSetIdxAndGridIdx(blockIdx3d); + Idx bIdx; + bIdx.mDataBlockIdx = bvGridIdx.helpGet(); + bIdx.mInDataBlockIdx.x = static_cast((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x); + bIdx.mInDataBlockIdx.y = static_cast((idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y); + bIdx.mInDataBlockIdx.z = static_cast((idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + + return {setIdx, bIdx}; +} + +template +auto bGrid::helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D& +{ + return mData->partitioner1D; +} + +template +template +auto bGrid::init_mask_field(ActiveCellLambda activeCellLambda) -> void +{ + using returTypeOfLambda = typename std::invoke_result::type; + if constexpr (std::is_same_v) { + + + auto maskField = this->newField("maskField", 1, 0, Neon::DataUse::HOST_DEVICE); + maskField.getGrid().template newContainer( + "maskFieldInit", + [&](Neon::set::Loader& loader) { + auto maskFieldPartition = loader.load(maskField); + return [&, maskFieldPartition](const auto& gIdx) mutable { + details::cGrid::ClassSelector voxelClass = activeCellLambda(gIdx); + maskFieldPartition(gIdx, 0) = static_cast(voxelClass); + }; + }) + .run(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + maskField.updateDeviceData(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + this->mData->maskClassField = maskField; + return; + } +} + +template +auto bGrid::helpGetClassField() -> Field& +{ + return mData->maskClassField; +} + +} // namespace Neon::domain::details::disaggregated::bGridMask \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex.h new file mode 100644 index 00000000..7bc7bf74 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex.h @@ -0,0 +1,142 @@ +#pragma once + +#include "Neon/core/core.h" + + +namespace Neon::domain::details::disaggregated::bGridMask { + +// Common forward declarations +template +class bGrid; +template +class bSpan; +template +class bPartition; + +class MicroIndex +{ + public: + using TrayIdx = int32_t; + using InTrayIdx = int8_3d; + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex() + : MicroIndex(0, 0, 0, 0) + { + } + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex(const TrayIdx& blockIdx, + const InTrayIdx::Integer& x, + const InTrayIdx::Integer& y, + const InTrayIdx::Integer& z) + { + mTrayBlockIdx = blockIdx; + mInTrayBlockIdx.x = x; + mInTrayBlockIdx.y = y; + mInTrayBlockIdx.z = z; + } + + NEON_CUDA_HOST_DEVICE inline auto getInTrayBlockIdx() const -> InTrayIdx const& + { + return mInTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto getTrayBlockIdx() const -> TrayIdx const& + { + return mTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setInTrayBlockIdx(InTrayIdx const& inTrayIdx) -> void + { + mInTrayBlockIdx = inTrayIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setTrayBlockIdx(TrayIdx const& trayIdx) -> void + { + mTrayBlockIdx = trayIdx; + } + + InTrayIdx mInTrayBlockIdx; + TrayIdx mTrayBlockIdx{}; +}; + +template +class bIndex +{ + public: + template + friend class bSpan; + using OuterIdx = bIndex; + + using NghIdx = int8_3d; + template + friend class bPartition; + + template + friend class bField; + + template + friend class bSpan; + template + friend class bGrid; + + + using TrayIdx = MicroIndex::TrayIdx; + using InTrayIdx = MicroIndex::InTrayIdx; + + using DataBlockCount = std::make_unsigned_t; + using DataBlockIdx = std::make_unsigned_t; + using InDataBlockIdx = InTrayIdx; + + bIndex() = default; + ~bIndex() = default; + + NEON_CUDA_HOST_DEVICE inline explicit bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z); + + NEON_CUDA_HOST_DEVICE inline auto getMicroIndex() -> MicroIndex; + NEON_CUDA_HOST_DEVICE inline auto init(MicroIndex const&) -> void; + + NEON_CUDA_HOST_DEVICE inline auto getInDataBlockIdx() const -> InDataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto getDataBlockIdx() const -> DataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto setInDataBlockIdx(InDataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto setDataBlockIdx(DataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto isActive() const -> bool; + // the local index within the block + InDataBlockIdx mInDataBlockIdx; + DataBlockIdx mDataBlockIdx{}; +}; + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setDataBlockIdx(const bIndex::DataBlockIdx& dataBlockIdx) -> void +{ + mDataBlockIdx = dataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setInDataBlockIdx(const bIndex::InDataBlockIdx& inDataBlockIdx) -> void +{ + mInDataBlockIdx = inDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::getDataBlockIdx() const -> const bIndex::DataBlockIdx& +{ + return mDataBlockIdx; +} +template +NEON_CUDA_HOST_DEVICE auto bIndex::getInDataBlockIdx() const -> const bIndex::InDataBlockIdx& +{ + return mInDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::isActive() const -> bool +{ + return mDataBlockIdx != std::numeric_limits::max(); +} + +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisgMask/bIndex_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex_imp.h new file mode 100644 index 00000000..10ad51b5 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bIndex_imp.h @@ -0,0 +1,67 @@ +#pragma once +#include "Neon/domain/details/bGridDisgMask/bIndex.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +NEON_CUDA_HOST_DEVICE inline bIndex:: + bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z) +{ + mDataBlockIdx = blockIdx; + mInDataBlockIdx.x = x; + mInDataBlockIdx.y = y; + mInDataBlockIdx.z = z; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::getMicroIndex() -> MicroIndex +{ + + + TrayIdx const exBlockOffset = mDataBlockIdx * (SBlock::blockRatioX * SBlock::blockRatioY * SBlock::blockRatioZ); + TrayIdx const exTrayOffset = [&] { + TrayIdx const trayBlockIdxX = mInDataBlockIdx.x / SBlock::userBlockSizeX; + TrayIdx const trayBlockIdxY = mInDataBlockIdx.y / SBlock::userBlockSizeY; + TrayIdx const trayBlockIdxZ = mInDataBlockIdx.z / SBlock::userBlockSizeZ; + + TrayIdx const res = trayBlockIdxX + trayBlockIdxY * SBlock::blockRatioX + + trayBlockIdxZ * (SBlock::blockRatioX * SBlock::blockRatioY); + return res; + }(); + MicroIndex res; + res.setTrayBlockIdx(exBlockOffset + exTrayOffset); + res.setInTrayBlockIdx({static_cast(mInDataBlockIdx.x % SBlock::userBlockSizeX), + static_cast(mInDataBlockIdx.y % SBlock::userBlockSizeY), + static_cast(mInDataBlockIdx.z % SBlock::userBlockSizeZ)}); + return res; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::init(MicroIndex const& microIndex) -> void +{ + constexpr uint32_t memBlockSize = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + constexpr uint32_t userBlockSize = SBlock::userBlockSizeX * SBlock::userBlockSizeY * SBlock::userBlockSizeZ; + constexpr uint32_t blockRatioSize = memBlockSize / userBlockSize; + + constexpr uint32_t blockRatioX = SBlock::memBlockSizeX / SBlock::userBlockSizeX; + constexpr uint32_t blockRatioY = SBlock::memBlockSizeY / SBlock::userBlockSizeY; + + mDataBlockIdx = microIndex.getTrayBlockIdx() / (blockRatioSize); + + uint32_t reminder = microIndex.getTrayBlockIdx() % (blockRatioSize); + + const uint32_t reminderInZ = reminder / (blockRatioX * blockRatioY); + mInDataBlockIdx.z = static_cast(microIndex.getInTrayBlockIdx().z + reminderInZ * SBlock::userBlockSizeZ); + reminder = reminder % (blockRatioX * blockRatioY); + const uint32_t reminderInY = reminder / (blockRatioX); + mInDataBlockIdx.y = static_cast(microIndex.getInTrayBlockIdx().y + reminderInY * SBlock::userBlockSizeY); + const uint32_t reminderInX = reminder % blockRatioX; + mInDataBlockIdx.x = static_cast(microIndex.getInTrayBlockIdx().x + reminderInX * SBlock::userBlockSizeX); +} + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition.h new file mode 100644 index 00000000..031e50b5 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition.h @@ -0,0 +1,194 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bIndex.h" +#include "Neon/domain/details/bGridDisgMask/bSpan.h" + +#include "Neon/domain/interface/NghData.h" + +#include "Neon/sys/memory/CUDASharedMemoryUtil.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + + template + class bSpan; + + template + class bPartition { + public: + using Span = bSpan; + using Idx = bIndex; + using NghIdx = typename Idx::NghIdx; + using Type = T; + using NghData = Neon::domain::NghData; + + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + using BlockViewGridIdx = BlockViewGrid::Idx; + + public: + bPartition(); + + ~bPartition() = default; + + explicit bPartition(int setIdx, + int mCardinality, + T *mMem, + typename Idx::DataBlockIdx *mBlockConnectivity, + typename SBlock::BitMask const *NEON_RESTRICT mMask, + Neon::int32_3d *mOrigin, + NghIdx *mStencilNghIndex, + Neon::int32_3d mDomainSize); + + /** + * Retrieve the cardinality of the field. + */ + inline NEON_CUDA_HOST_DEVICE auto + cardinality() + const -> int; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx &cell, + int card) + -> T &; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx &cell, + int card) + const -> const T &; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &cell, + const NghIdx &offset, + const int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + uint8_t nghID, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &eId, + int card, + T defaultValue) + const -> NghData; + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx &gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t && (std::is_invocable_v || + std::is_same_v), void>; + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx &gidx, + int card, + T value) + -> bool; + + /** + * Gets the global coordinates of the cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getGlobalIndex(const Idx &cell) + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE inline auto + isActive(const Idx &cell, + const typename SBlock::BitMask *mask = nullptr) const -> bool; + + + NEON_CUDA_HOST_DEVICE inline auto + getDomainSize() + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE + auto mem() const -> T const *; + + /** + * Gets the Idx for in the block view space. + */ + NEON_CUDA_HOST_DEVICE inline auto + getBlockViewIdx(const Idx &cell) + const -> BlockViewGridIdx; + + + NEON_CUDA_HOST_DEVICE inline auto + helpGetPitch(const Idx &cell, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetValidIdxPitchExplicit(const Idx &idx, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpNghPitch(const Idx &nghIdx, int card) + const -> std::tuple; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const NghIdx &offset) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx) + const -> Idx; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const NghIdx &offset, const typename Idx::DataBlockIdx *blockConnectivity) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx &idx, const typename Idx::DataBlockIdx *blockConnectivity) + const -> Idx; + + + int mCardinality; + T *mMem; + NghIdx const *NEON_RESTRICT mStencilNghIndex; + typename Idx::DataBlockIdx const *NEON_RESTRICT mBlockConnectivity; + typename SBlock::BitMask const *NEON_RESTRICT mMask; + Neon::int32_3d const *NEON_RESTRICT mOrigin; + int mSetIdx; + int mMultiResDiscreteIdxSpacing = 1; + Neon::int32_3d mDomainSize; + }; + +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisgMask/bPartition_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition_imp.h new file mode 100644 index 00000000..80b635ba --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bPartition_imp.h @@ -0,0 +1,454 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bGrid.h" +#include "Neon/domain/details/bGridDisgMask/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +bPartition::bPartition() + : mCardinality(0), + mMem(nullptr), + mStencilNghIndex(), + mBlockConnectivity(nullptr), + mMask(nullptr), + mOrigin(0), + mSetIdx(0) +{ +} + +template +bPartition:: + bPartition(int setIdx, + int cardinality, + T* mem, + typename Idx::DataBlockIdx* blockConnectivity, + typename SBlock::BitMask const* NEON_RESTRICT mask, + Neon::int32_3d* origin, + NghIdx* stencilNghIndex, + Neon::int32_3d mDomainSize) + : mCardinality(cardinality), + mMem(mem), + mStencilNghIndex(stencilNghIndex), + mBlockConnectivity(blockConnectivity), + mMask(mask), + mOrigin(origin), + mSetIdx(setIdx), + mDomainSize(mDomainSize) +{ +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getGlobalIndex(const Idx& gidx) + const -> Neon::index_3d +{ + auto location = mOrigin[gidx.mDataBlockIdx]; + location.x += gidx.mInDataBlockIdx.x; + location.y += gidx.mInDataBlockIdx.y; + location.z += gidx.mInDataBlockIdx.z; + if constexpr (SBlock::isMultiResMode) { + return location * mMultiResDiscreteIdxSpacing; + } + return location; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getDomainSize() + const -> Neon::index_3d +{ + return mDomainSize; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: +mem() const -> T const *{ + return mMem; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getBlockViewIdx(const Idx& gidx) + const -> BlockViewGridIdx +{ + BlockViewGridIdx res; + res.manualSet(gidx.getDataBlockIdx()); + return res; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + cardinality() + const -> int +{ + return mCardinality; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) -> T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) const -> const T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetPitch(const Idx& idx, int card) + const -> uint32_t +{ + uint32_t const pitch = helpGetValidIdxPitchExplicit(idx, card); + return pitch; +} + + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetValidIdxPitchExplicit(const Idx& idx, int card) + const -> uint32_t +{ + uint32_t constexpr blockPitchByCard = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + uint32_t const inBlockInCardPitch = idx.mInDataBlockIdx.x + + SBlock::memBlockSizeX * idx.mInDataBlockIdx.y + + (SBlock::memBlockSizeX * SBlock::memBlockSizeY) * idx.mInDataBlockIdx.z; + uint32_t const blockAdnCardPitch = (idx.mDataBlockIdx * mCardinality + card) * blockPitchByCard; + uint32_t const pitch = blockAdnCardPitch + inBlockInCardPitch; + return pitch; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpNghPitch(const Idx& nghIdx, int card) + const -> std::tuple +{ + if (nghIdx.mDataBlockIdx == Span::getInvalidBlockId()) { + return {false, 0}; + } + + const bool isActive = mMask[nghIdx.mDataBlockIdx].isActive(nghIdx.mInDataBlockIdx.x, nghIdx.mInDataBlockIdx.y, nghIdx.mInDataBlockIdx.z); + if (!isActive) { + return {false, 0}; + } + auto const offset = helpGetValidIdxPitchExplicit(nghIdx, card); + return {true, offset}; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset) + const -> Idx +{ + return this->helpGetNghIdx(idx, offset, mBlockConnectivity); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset, + const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + offset.x, + idx.mInDataBlockIdx.y + offset.y, + idx.mInDataBlockIdx.z + offset.z); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + const int yFlag = ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + const int zFlag = ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx) + const -> Idx +{ + return this->helpGetNghIdx(idx, mBlockConnectivity); +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + xOff, + idx.mInDataBlockIdx.y + yOff, + idx.mInDataBlockIdx.z + zOff); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = [&] { + if constexpr (xOff == 0) { + return 0; + } else { + return ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + + const int yFlag = [&] { + if constexpr (yOff == 0) { + return 0; + } else { + return ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + const int zFlag = [&] { + if constexpr (zOff == 0) { + return 0; + } else { + return ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& eId, + uint8_t nghID, + int card) + const -> NghData +{ + NghIdx nghOffset = mStencilNghIndex[nghID]; + return getNghData(eId, nghOffset, card); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + const NghIdx& offset, + const int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx, offset); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card, + T defaultValue) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.set(defaultValue, false); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void> +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + + if (isValid) { + auto const& value = mMem[pitch]; + funIfValid(value); + return; + } + + if constexpr (!std::is_same_v) { + funIfNOTValid(); + } + return; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + writeNghData(const Idx& gidx, + int card, + T value) + -> bool +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + return false; + } + mMem[pitch] = value; + return true; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::isActive(const Idx& cell, + const typename SBlock::BitMask* mask) const -> bool +{ + if (!mask) { + return mMask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } else { + return mask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } +} + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan.h new file mode 100644 index 00000000..f2cb0a93 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan.h @@ -0,0 +1,55 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMask/bIndex.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +class bSpan +{ + public: + // bit mask information + using BitMaskWordType = uint64_t; + + static constexpr uint32_t bitMaskStorageBitWidth = 64; + static constexpr Neon::MemoryLayout activeMaskMemoryLayout = Neon::MemoryLayout::arrayOfStructs; + static constexpr uint32_t log2OfbitMaskWordSize = 6; + + using Idx = bIndex; + friend class bGrid; + + static constexpr int SpaceDim = 3; + + bSpan() = default; + virtual ~bSpan() = default; + + NEON_CUDA_HOST_DEVICE inline static auto getInvalidBlockId() + -> typename Idx::DataBlockIdx + { + return std::numeric_limits::max(); + } + + inline bSpan( + typename Idx::DataBlockCount mFirstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask, + Neon::DataView mDataView); + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateCPUDevice( + Idx& bidx, + uint32_t const& threadIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateGPUDevice( + Idx& bidx) const -> bool; + + + // We don't need to have a count on active blocks + typename Idx::DataBlockCount mFirstDataBlockOffset; + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask; + Neon::DataView mDataView; +}; +} // namespace Neon::domain::details::disaggregated::bGrid + +#include "Neon/domain/details/bGridDisgMask/bSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan_imp.h new file mode 100644 index 00000000..8c23df74 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMask/bSpan_imp.h @@ -0,0 +1,52 @@ +#include "Neon/domain/details/bGridDisgMask/bSpan.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateGPUDevice([[maybe_unused]] Idx& bidx) const -> bool +{ +#ifdef NEON_PLACE_CUDA_DEVICE + bidx.mDataBlockIdx = blockIdx.x + mFirstDataBlockOffset; + bidx.mInDataBlockIdx.x = threadIdx.x; + bidx.mInDataBlockIdx.y = threadIdx.y; + bidx.mInDataBlockIdx.z = threadIdx.z; + + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + + return isActive; +#else + NEON_THROW_UNSUPPORTED_OPERATION("Operation supported only on GPU"); +#endif +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateCPUDevice(Idx& bidx, + uint32_t const& dataBlockIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool +{ + + bidx.mDataBlockIdx = dataBlockIdx + mFirstDataBlockOffset; + ; + bidx.mInDataBlockIdx.x = static_cast(x); + bidx.mInDataBlockIdx.y = static_cast(y); + bidx.mInDataBlockIdx.z = static_cast(z); + const bool isActive = mActiveMask[dataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + return isActive; +} + +template +bSpan::bSpan(typename Idx::DataBlockCount firstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT activeMask, + Neon::DataView dataView) + : mFirstDataBlockOffset(firstDataBlockOffset), + mActiveMask(activeMask), + mDataView(dataView) +{ +} + + +} // namespace Neon::domain::details::disaggregated::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView.h new file mode 100644 index 00000000..5ef7df3b --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView.h @@ -0,0 +1,29 @@ +#include "Neon/domain/details/bGridDisgMgpu//BlockView/BlockViewGrid.h" +#include "Neon/domain/tools/GridTransformer.h" + +namespace Neon::domain::details::bGridMgpu { + +struct BlockView +{ + public: + using Grid = Neon::domain::tool::GridTransformer::Grid; + template + using Field = Grid::template Field; + using index_3d = Neon::index_3d; + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * card]; + } + + template + static auto helpGetReference(T* mem, const int idx, const int card) -> std::enable_if_t + { + return mem[idx * C]; + } + + static constexpr Neon::MemoryLayout layout = Neon::MemoryLayout::arrayOfStructs; +}; + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewGrid.h new file mode 100644 index 00000000..6047bb88 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewGrid.h @@ -0,0 +1,97 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/aGrid.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/patterns/PatternScalar.h" + +#include "BlockViewPartition.h" + +namespace Neon::domain::details::bGridMgpu { + +namespace details { +struct GridTransformation +{ + template + using Partition = BlockViewPartition; + using Span = Neon::domain::details::eGrid::eSpan; + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + + using FoundationGrid = Neon::domain::details::eGrid::eGrid; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = int32_t; + using Idx = FoundationGrid::Idx; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span = foundationGrid.getSpan(execution, setIdx, dw); + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + return foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + } + + static auto helpGetGridIdx(FoundationGrid&, + Neon::SetIdx const&, + FoundationGrid::Idx const& fgIdx) + -> GridTransformation::Idx + { + GridTransformation::Idx tgIdx = fgIdx; + return tgIdx; + } + + template + static auto initFieldPartition(FoundationGrid::Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = Partition(foundationPartition); + }); + } +}; +using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + +} // namespace details + +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition.h new file mode 100644 index 00000000..e1d7be2b --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition.h @@ -0,0 +1,42 @@ +#pragma once +#include +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/details/eGrid/eIndex.h" +#include "Neon/domain/interface/NghData.h" +#include "Neon/set/DevSet.h" +#include "Neon/sys/memory/CudaIntrinsics.h" +#include "cuda_fp16.h" + +namespace Neon::domain::details::bGridMgpu { + +template +class BlockViewPartition : public Neon::domain::details::eGrid::ePartition +{ + public: + BlockViewPartition() + { + } + BlockViewPartition(Neon::domain::details::eGrid::ePartition ePartition) + : Neon::domain::details::eGrid::ePartition(ePartition) + { + } + + template + static auto getInBlockIdx(typename Neon::domain::details::eGrid::ePartition::Idx const& idx, + uint8_3d const& inBlockLocation) -> BlockIdexType + { + BlockIdexType blockIdx(idx.helpGet(), inBlockLocation); + return inBlockLocation; + } + + auto getCountAllocated() const -> int32_t; +}; +template +auto BlockViewPartition::getCountAllocated() const -> int32_t +{ + return this->mCountAllocated; +} +} // namespace Neon::domain::details::bGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition_imp.h new file mode 100644 index 00000000..4464f686 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/BlockView/BlockViewPartition_imp.h @@ -0,0 +1,184 @@ +#pragma once + +#include "Neon/domain/details//eGrid/ePartition.h" + +namespace Neon::domain::details::bGridMgpu { + + +template +NEON_CUDA_HOST_DEVICE auto +ePartition::prtID() const + -> int +{ + return mPrtID; +} + +template +template +inline NEON_CUDA_HOST_DEVICE auto +ePartition::cardinality() const + -> std::enable_if_t +{ + return mCardinality; +} + +template +template +constexpr inline NEON_CUDA_HOST_DEVICE auto +ePartition::cardinality() const + -> std::enable_if_t +{ + return C; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::operator()(eIndex eId, int cardinalityIdx) const + -> T +{ + Offset jump = getOffset(eId, cardinalityIdx); + return mMem[jump]; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::operator()(eIndex eId, int cardinalityIdx) -> T& +{ + Offset jump = getOffset(eId, cardinalityIdx); + return mMem[jump]; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getNghData(eIndex eId, + NghIdx nghIdx, + int card, + const Type& alternativeVal) + const -> NghData +{ + eIndex eIdxNgh; + const bool isValidNeighbour = isValidNgh(eId, nghIdx, eIdxNgh); + T val = (isValidNeighbour) ? this->operator()(eIdxNgh, card) : alternativeVal; + // printf("(prtId %d)getNghData id %d card %d eIdxNgh %d val %d\n", + // mPrtID, eId.mIdx, card, eIdxNgh.mIdx, int(val)); + return NghData(val, isValidNeighbour); +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getNghData(eIndex eId, + const Neon::int8_3d& ngh3dIdx, + int card, + const Type& alternativeVal) + const -> NghData +{ + int tablePithc = (ngh3dIdx.x + mStencilRadius) + + (ngh3dIdx.y + mStencilRadius) * mStencilTableYPitch + + (ngh3dIdx.z + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; + NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; + NghData res = getNghData(eId, nghIdx, card, alternativeVal); + + return res; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::isValidNgh(eIndex eId, + NghIdx nghIdx, + eIndex& neighbourIdx) const + -> bool +{ + const eIndex::Offset connectivityJumo = mCountAllocated * nghIdx + eId.get(); + neighbourIdx.set() = NEON_CUDA_CONST_LOAD((mConnectivity + connectivityJumo)); + const bool isValidNeighbour = (neighbourIdx.mIdx > -1); +// printf("(prtId %d) getNghData id %d eIdxNgh %d connectivityJumo %d\n", +// mPrtID, +// eId.mIdx, neighbourIdx.mIdx, connectivityJumo); + return isValidNeighbour; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getGlobalIndex(eIndex eIndex) const + -> Neon::index_3d +{ + Neon::index_3d loc; + const auto baseAddr = mOrigins + eIndex.get(); + loc = mOrigins[eIndex.get()]; + return loc; +} + +template +ePartition::ePartition(int prtId, + T* mem, + ePitch pitch, + int32_t cardinality, + int32_t countAllocated, + Offset* connRaw, + Neon::index_3d* toGlobal, + int8_t* stencil3dTo1dOffset, + int32_t stencilRadius) +{ + mPrtID = prtId; + mMem = mem; + mPitch = pitch; + mCardinality = cardinality; + mCountAllocated = countAllocated; + + mConnectivity = connRaw; + mOrigins = toGlobal; + + mStencil3dTo1dOffset = stencil3dTo1dOffset; + mStencilTableYPitch = 2 * stencilRadius + 1; + + mStencilRadius = stencilRadius; +} + +template +NEON_CUDA_HOST_DEVICE auto +ePartition::pointer(eIndex eId, int cardinalityIdx) const + -> const Type* +{ + Offset jump = getOffset(eId, cardinalityIdx); + return mMem + jump; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getOffset(eIndex eId, int cardinalityIdx) const + -> Offset +{ + return Offset(eId.get() * mPitch.x + cardinalityIdx * mPitch.y); +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::mem() + -> T* +{ + return mMem; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::mem() const + -> const T* +{ + return mMem; +} + +} // namespace Neon::domain::details::eGrid diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/StaticBlock.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/StaticBlock.h new file mode 100644 index 00000000..7fdd4577 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/StaticBlock.h @@ -0,0 +1,106 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMgpu/bSpan.h" + +namespace Neon::domain::details::bGridMgpu { + +template +struct StaticBlock +{ + public: + constexpr static uint32_t memBlockSizeX = memBlockSizeX_; + constexpr static uint32_t memBlockSizeY = memBlockSizeY_; + constexpr static uint32_t memBlockSizeZ = memBlockSizeZ_; + constexpr static Neon::uint32_3d memBlockSize3D = Neon::uint32_3d(memBlockSizeX, memBlockSizeY, memBlockSizeZ); + + constexpr static uint32_t userBlockSizeX = userBlockSizeX_; + constexpr static uint32_t userBlockSizeY = userBlockSizeY_; + constexpr static uint32_t userBlockSizeZ = userBlockSizeZ_; + constexpr static Neon::uint32_3d userBlockSize3D = Neon::uint32_3d(userBlockSizeX, userBlockSizeY, userBlockSizeZ); + + constexpr static uint32_t blockRatioX = memBlockSizeX / userBlockSizeX; + constexpr static uint32_t blockRatioY = memBlockSizeY / userBlockSizeY; + constexpr static uint32_t blockRatioZ = memBlockSizeZ / userBlockSizeZ; + + constexpr static uint32_t memBlockPitchX = 1; + constexpr static uint32_t memBlockPitchY = memBlockSizeX; + constexpr static uint32_t memBlockPitchZ = memBlockSizeX * memBlockSizeY; + + constexpr static bool isMultiResMode = isMultiResMode_; + + constexpr static uint32_t memBlockCountElements = memBlockSizeX * memBlockSizeY * memBlockSizeZ; + + static_assert(memBlockSizeX >= userBlockSizeX); + static_assert(memBlockSizeY >= userBlockSizeY); + static_assert(memBlockSizeZ >= userBlockSizeZ); + + static_assert(memBlockSizeX % userBlockSizeX == 0); + static_assert(memBlockSizeY % userBlockSizeY == 0); + static_assert(memBlockSizeZ % userBlockSizeZ == 0); + + struct BitMask + { + using BitMaskWordType = uint32_t; + auto reset() -> void + { + for (BitMaskWordType i = 0; i < nWords; ++i) { + bits[i] = 0; + } + } + + auto setActive(int threadX, + int threadY, + int threadZ) -> void + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + word = word | mask; + } + + inline auto NEON_CUDA_HOST_DEVICE isActive(int threadX, + int threadY, + int threadZ) const -> bool + { + BitMaskWordType mask; + uint32_t wordIdx; + getMaskAndWordI(threadX, threadY, threadZ, mask, wordIdx); + auto& word = bits[wordIdx]; + return (word & mask) != 0; + } + + static inline auto NEON_CUDA_HOST_DEVICE getMaskAndWordI(int threadX, + int threadY, + int threadZ, + NEON_OUT BitMaskWordType& mask, + NEON_OUT uint32_t& wordIdx) -> void + { + const uint32_t threadPitch = threadX * memBlockPitchX + + threadY * memBlockPitchY + + threadZ * memBlockPitchZ; + + // threadPitch >> log2_of_bitPerWord + // the same as: threadPitch / 2^{log2_of_bitPerWord} + wordIdx = threadPitch >> log2_of_bitPerWord; + // threadPitch & ((bitMaskWordType(bitMaskStorageBitWidth)) - 1); + // same as threadPitch % 2^{log2OfbitMaskWordSize} + const uint32_t offsetInWord = threadPitch & ((BitMaskWordType(bitPerWord)) - 1); + mask = BitMaskWordType(1) << offsetInWord; + } + + constexpr static BitMaskWordType nWords = (memBlockCountElements + 31) / 32; + static constexpr uint32_t log2_of_bitPerWord = 5; + static constexpr uint32_t bitPerWord = 32; + + BitMaskWordType bits[nWords]; + }; +}; + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField.h new file mode 100644 index 00000000..ef911c45 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField.h @@ -0,0 +1,120 @@ +#pragma once +#include "Neon/domain/details/bGridDisgMgpu/bPartition.h" +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/set/patterns/BlasSet.h" + +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/DevSet.h" +#include "Neon/set/HuOptions.h" +#include "Neon/set/MemoryTransfer.h" + +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/domain/tools/HaloUpdateTable1DPartitioning.h" +#include "Neon/domain/tools/PartitionTable.h" +#include "bPartition.h" + +namespace Neon::domain::details::bGridMgpu { + + +template +class bField : public Neon::domain::interface::FieldBaseTemplate, + bPartition, + int> +{ + friend bGrid; + + public: + using Type = T; + using Grid = bGrid; + using Field = bField; + using Partition = bPartition; + using Idx = bIndex; + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + template + using BlockViewField = BlockViewGrid::template Field; + + using NghIdx = typename Partition::NghIdx; + using NghData = typename Partition::NghData; + + bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue); + + bField(); + + virtual ~bField() = default; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) const -> const Partition& final; + + auto getPartition(Neon::Execution, + Neon::SetIdx, + const Neon::DataView& dataView) -> Partition& final; + + auto isInsideDomain(const Neon::index_3d& idx) const -> bool; + + + auto operator()(const Neon::index_3d& idx, + const int& cardinality) const -> T final; + + auto getReference(const Neon::index_3d& idx, + const int& cardinality) -> T& final; + + auto updateHostData(int streamId = 0) -> void final; + + auto updateDeviceData(int streamId = 0) -> void final; + + auto newHaloUpdate(Neon::set::StencilSemantic semantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container; + + auto getMemoryField() -> BlockViewGrid::Field&; + + + private: + auto getRef(const Neon::index_3d& idx, const int& cardinality) const -> T&; + + auto initHaloUpdateTable() -> void; + + + struct Data + { + Data() = default; + Data(Neon::Backend const& bk) + { + mPartitionTable.init(bk); + } + + enum EndPoints + { + src = 1, + dst = 0 + }; + + struct EndPointsUtils + { + static constexpr int nConfigs = 2; + }; + + std::shared_ptr grid; + BlockViewField memoryField; + int cardinality; + + Neon::domain::tool::HaloTable1DPartitioning mLatticeHaloUpdateTable; + Neon::domain::tool::HaloTable1DPartitioning mStandardHaloUpdateTable; + Neon::domain::tool::PartitionTable mPartitionTable; + }; + std::shared_ptr mData; +}; + + +} // namespace Neon::domain::details::bGridMgpu diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField_imp.h new file mode 100644 index 00000000..80f807f6 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bField_imp.h @@ -0,0 +1,523 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMgpu/bField.h" + +namespace Neon::domain::details::bGridMgpu { + +template +bField::bField() +{ + mData = std::make_shared(); +} + +template +bField::bField(const std::string& fieldUserName, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions, + const Grid& grid, + int cardinality, + T inactiveValue) + : Neon::domain::interface::FieldBaseTemplate(&grid, + fieldUserName, + "bField", + cardinality, + inactiveValue, + dataUse, + memoryOptions, + Neon::domain::haloStatus_et::e::ON) +{ + mData = std::make_shared(grid.getBackend()); + mData->grid = std::make_shared(grid); + + if (memoryOptions.getOrder() == Neon::MemoryLayout::arrayOfStructs) { + NEON_WARNING("bField does not support MemoryLayout::arrayOfStructs, enforcing MemoryLayout::structOfArrays"); + memoryOptions.setOrder(Neon::MemoryLayout::structOfArrays); + } + // the allocation size is the number of blocks x block size x cardinality + mData->memoryField = mData->grid->getBlockViewGrid().template newField( + "BitMask", + [&] { + int elPerBlock = SBlock::memBlockCountElements * cardinality; + return elPerBlock; + }(), + inactiveValue, + dataUse, + mData->grid->getBackend().getMemoryOptions(bSpan::activeMaskMemoryLayout)); + + + { // Setting up mPartitionTable + // const int setCardinality = mData->grid->getBackend().getDeviceCount(); + mData->mPartitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView, + Partition& partition) { + auto& partitioner = mData->grid->helpGetPartitioner1D(); + auto firstBup = partitioner.getSpanLayout().getBoundsBoundary(setIdx, Neon::domain::tool::partitioning::ByDirection::up).first; + auto firstBdw = partitioner.getSpanLayout().getBoundsBoundary(setIdx, Neon::domain::tool::partitioning::ByDirection::down).first; + auto firstGup = partitioner.getSpanLayout().getGhostBoundary(setIdx, Neon::domain::tool::partitioning::ByDirection::up).first; + auto firstGdw = partitioner.getSpanLayout().getGhostBoundary(setIdx, Neon::domain::tool::partitioning::ByDirection::down).first; + auto lastGdw = firstGdw + partitioner.getSpanLayout().getGhostBoundary(setIdx, Neon::domain::tool::partitioning::ByDirection::down).count; + + auto& memoryFieldPartition = mData->memoryField.getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& blockConnectivity = mData->grid->helpGetBlockConnectivity().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& bitmask = mData->grid->getActiveBitMask().getPartition(execution, setIdx, Neon::DataView::STANDARD); + auto& dataBlockOrigins = mData->grid->helpGetDataBlockOriginField().getPartition(execution, setIdx, Neon::DataView::STANDARD); + + partition = bPartition(setIdx, + cardinality, + memoryFieldPartition.mem(), + blockConnectivity.mem(), + bitmask.mem(), + dataBlockOrigins.mem(), + mData->grid->helpGetStencilIdTo3dOffset().rawMem(execution, setIdx), + mData->grid->getDimension(), + firstBup, + firstBdw, + firstGup, + firstGdw, + lastGdw); + }); + } + + initHaloUpdateTable(); +} + +template +auto bField::getMemoryField() -> BlockViewGrid::Field& +{ + return mData->memoryField; +} + +template +auto bField::isInsideDomain(const Neon::index_3d& idx) const -> bool +{ + return mData->grid->isInsideDomain(idx); +} + +template +auto bField::getReference(const Neon::index_3d& cartesianIdx, + const int& cardinality) -> T& +{ + if constexpr (SBlock::isMultiResMode) { + auto& grid = this->getGrid(); + auto uniformCartesianIdx = cartesianIdx / grid.helGetMultiResDiscreteIdxSpacing(); + + if (cartesianIdx.x % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.y % grid.helGetMultiResDiscreteIdxSpacing() != 0 || + cartesianIdx.z % grid.helGetMultiResDiscreteIdxSpacing() != 0) { + NeonException exp("bField::getReference"); + exp << "Input index is not multiple of the grid resolution"; + exp << "Index = " << cartesianIdx; + NEON_THROW(exp); + } + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(uniformCartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } else { + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; + } +} + +template +auto bField::operator()(const Neon::index_3d& cartesianIdx, + const int& cardinality) const -> T +{ + auto& grid = this->getGrid(); + auto [setIdx, bIdx] = grid.helpGetSetIdxAndGridIdx(cartesianIdx); + if (setIdx.idx() == -1) { + return this->getOutsideValue(); + } + auto& partition = getPartition(Neon::Execution::host, setIdx, Neon::DataView::STANDARD); + auto& result = partition(bIdx, cardinality); + return result; +} + +template +auto bField::updateHostData(int streamId) -> void +{ + mData->memoryField.updateHostData(streamId); +} + +template +auto bField::updateDeviceData(int streamId) -> void +{ + mData->memoryField.updateDeviceData(streamId); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) const -> const Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition const& result = mData->mPartitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) -> Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition& result = mData->mPartitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto bField::newHaloUpdate(Neon::set::StencilSemantic stencilSemantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) const -> Neon::set::Container +{ + + + // We need to define a graph of Containers + // One for the actual memory transfer + // One for the synchronization + // The order depends on the transfer mode: put or get + Neon::set::Container dataTransferContainer; + auto const& bk = this->getGrid().getBackend(); + + if (stencilSemantic == Neon::set::StencilSemantic::standard) { + auto transfers = bk.template newDataSet>(); + + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->mStandardHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + } else { + auto transfers = bk.template newDataSet>(); + + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->mLatticeHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + } + Neon::set::Container SyncContainer = + Neon::set::Container::factorySynchronization( + *this, + Neon::set::SynchronizationContainerType::hostOmpBarrier); + + Neon::set::container::Graph graph(this->getBackend()); + const auto& dataTransferNode = graph.addNode(dataTransferContainer); + const auto& syncNode = graph.addNode(SyncContainer); + + switch (transferMode) { + case Neon::set::TransferMode::put: + graph.addDependency(dataTransferNode, syncNode, Neon::GraphDependencyType::data); + break; + case Neon::set::TransferMode::get: + graph.addDependency(syncNode, dataTransferNode, Neon::GraphDependencyType::data); + break; + default: + NEON_THROW_UNSUPPORTED_OPTION(); + break; + } + + graph.removeRedundantDependencies(); + + Neon::set::Container output = + Neon::set::Container::factoryGraph("dGrid-Halo-Update", + graph, + [](Neon::SetIdx, Neon::set::Loader&) {}); + return output; +} + +template +auto bField::initHaloUpdateTable() -> void +{ + // NEON_THROW_UNSUPPORTED_OPERATION(""); + auto& grid = this->getGrid(); + auto bk = grid.getBackend(); + auto getNghSetIdx = [&](SetIdx setIdx, Neon::domain::tool::partitioning::ByDirection direction) { + int res; + if (direction == Neon::domain::tool::partitioning::ByDirection::up) { + res = (setIdx + 1) % bk.getDeviceCount(); + } else { + res = (setIdx + bk.getDeviceCount() - 1) % bk.getDeviceCount(); + } + return res; + }; + + mData->mStandardHaloUpdateTable.forEachPutConfiguration( + bk, [&]( + Neon::SetIdx setIdxSend, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSend)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSend)) { + return; + } + + + Neon::SetIdx setIdxRecv = getNghSetIdx(setIdxSend, byDirection); + + Partition* partitionsRecv = &this->getPartition(execution, setIdxRecv, Neon::DataView::STANDARD); + Partition* partitionsSend = &this->getPartition(execution, setIdxSend, Neon::DataView::STANDARD); + + auto const recvDirection = byDirection == ByDirection::up + ? ByDirection::down + : ByDirection::up; + auto const sendDirection = byDirection; + + int const ghostSectorFirstBlockIdx = + recvDirection == ByDirection::up + ? partitionsRecv->helpGetSectorFirstBlock(Partition::Sectors::gUp) + : partitionsRecv->helpGetSectorFirstBlock(Partition::Sectors::gDw); + + int const boundarySectorFirstBlockIdx = + sendDirection == ByDirection::up + ? partitionsSend->helpGetSectorFirstBlock(Partition::Sectors::bUp) + : partitionsSend->helpGetSectorFirstBlock(Partition::Sectors::bDw); + + auto const msgLengthInBlocks = partitionsSend->helpGetSectorLength(sendDirection == ByDirection::up + ? Partition::Sectors::bUp + : Partition::Sectors::bDw); + + + for (int c = 0; c < this->getCardinality(); c++) { + + auto const recvPitch = [&] { + Idx idx; + typename Idx::InDataBlockIdx inDataBlockIdx; + if (recvDirection == ByDirection::up) { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, 0); + } else { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, SBlock::memBlockSizeZ - 1); + } + idx.setInDataBlockIdx(inDataBlockIdx); + idx.setDataBlockIdx(ghostSectorFirstBlockIdx); + + auto pitch = partitionsRecv->helpGetPitch(idx, c); + return pitch; + }(); + + auto const sendPitch = [&] { + typename Idx::InDataBlockIdx inDataBlockIdx; + if (sendDirection == ByDirection::up) { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, SBlock::memBlockSizeZ - 1); + } else { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, 0); + } + Idx idx; + idx.setInDataBlockIdx(inDataBlockIdx); + idx.setDataBlockIdx(boundarySectorFirstBlockIdx); + auto pitch = partitionsSend->helpGetPitch(idx, c); + return pitch; + }(); + + auto const msgSizePerCardinality = [&] { + // All blocks are mapped into a 3D grid, where blocks are places one after the other in a 1D mapping + // for each block we send only the top or bottom slice + // Therefore the size of the message is equal to the number of blocks in the sector + // by the size of element in a slice of a block... + auto size = msgLengthInBlocks * SBlock::memBlockSizeX * SBlock::memBlockSizeY; + return size; + }(); + + T const* sendMem = partitionsSend->mem(); + T const* recvMem = partitionsRecv->mem(); + + + Neon::set::MemoryTransfer transfer({setIdxRecv, (void*)(recvMem + recvPitch)}, + {setIdxSend, (void*)(sendMem + sendPitch)}, + sizeof(T) * msgSizePerCardinality); + + transfersVec.push_back(transfer); + } + } + }); + + mData->mLatticeHaloUpdateTable.forEachPutConfiguration( + bk, [&]( + Neon::SetIdx setIdxSend, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSend)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSend)) { + return; + } + + + Neon::SetIdx setIdxRecv = getNghSetIdx(setIdxSend, byDirection); + Partition* partitionsRecv = &this->getPartition(execution, setIdxRecv, Neon::DataView::STANDARD); + Partition* partitionsSend = &this->getPartition(execution, setIdxSend, Neon::DataView::STANDARD); + + auto const recvDirection = byDirection == ByDirection::up + ? ByDirection::down + : ByDirection::up; + auto const sendDirection = byDirection; + + int const ghostSectorFirstBlockIdx = + recvDirection == ByDirection::up + ? partitionsRecv->helpGetSectorFirstBlock(Partition::Sectors::gUp) + : partitionsRecv->helpGetSectorFirstBlock(Partition::Sectors::gDw); + + int const boundarySectorFirstBlockIdx = + sendDirection == ByDirection::up + ? partitionsSend->helpGetSectorFirstBlock(Partition::Sectors::bUp) + : partitionsSend->helpGetSectorFirstBlock(Partition::Sectors::bDw); + + auto const msgLengthInBlocks = partitionsSend->helpGetSectorLength(sendDirection == ByDirection::up + ? Partition::Sectors::bUp + : Partition::Sectors::bDw); + + bool canBeFusedWithPrevious = false; + + for (int c = 0; c < this->getCardinality(); c++) { + auto const& stencil = this->getGrid().getStencil(); + + auto const recvPitch = [&] { + Idx idx; + typename Idx::InDataBlockIdx inDataBlockIdx; + if (recvDirection == ByDirection::up) { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, 0); + } else { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, SBlock::memBlockSizeZ - 1); + } + idx.setInDataBlockIdx(inDataBlockIdx); + idx.setDataBlockIdx(ghostSectorFirstBlockIdx); + + auto pitch = partitionsRecv->helpGetPitch(idx, c); + return pitch; + }(); + + auto const sendPitch = [&] { + typename Idx::InDataBlockIdx inDataBlockIdx; + if (sendDirection == ByDirection::up) { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, SBlock::memBlockSizeZ - 1); + } else { + inDataBlockIdx = typename Idx::InDataBlockIdx(0, 0, 0); + } + Idx idx; + idx.setInDataBlockIdx(inDataBlockIdx); + idx.setDataBlockIdx(boundarySectorFirstBlockIdx); + auto pitch = partitionsSend->helpGetPitch(idx, c); + return pitch; + }(); + + auto const msgSizePerCardinality = [&] { + // All blocks are mapped into a 3D grid, where blocks are places one after the other in a 1D mapping + // for each block we send only the top or bottom slice + // Therefore the size of the message is equal to the number of blocks in the sector + // by the size of element in a slice of a block... + auto size = msgLengthInBlocks * SBlock::memBlockSizeX * SBlock::memBlockSizeY; + return size; + }(); + + T const* sendMem = partitionsSend->mem(); + T const* recvMem = partitionsRecv->mem(); + + + Neon::set::MemoryTransfer transfer({setIdxRecv, (void*)(recvMem + recvPitch)}, + {setIdxSend, (void*)(sendMem + sendPitch)}, + sizeof(T) * msgSizePerCardinality); + + if (ByDirection::up == sendDirection && !(stencil.points()[c].z > 0)) { + std::cout << "c " << c << " " << stencil.points()[c] << "skipped" << std::endl; + canBeFusedWithPrevious = false; + continue; + } + if (ByDirection::down == sendDirection && !(stencil.points()[c].z < 0)) { + std::cout << "c " << c << " " << stencil.points()[c] << "skipped" << std::endl; + canBeFusedWithPrevious = false; + continue; + } + if (canBeFusedWithPrevious) { + + const T* begin = (recvMem + recvPitch); + const T* previous = (((T*)(transfersVec[transfersVec.size() - 1].src.mem)) + msgSizePerCardinality); + if (begin != previous) { + NEON_THROW_UNSUPPORTED_OPTION("begin != transfersVec[transfersVec.size() - 1].dst"); + } + transfersVec[transfersVec.size() - 1].size += sizeof(T) * msgSizePerCardinality; + std::cout << "c " << c << " " << stencil.points()[c] << "fused" << std::endl + << "new size = " << transfersVec[transfersVec.size() - 1].size << std::endl; + } else { + transfersVec.push_back(transfer); + std::cout << "c " << c << " " << stencil.points()[c] << "added " << transfer.toString() << std::endl; + canBeFusedWithPrevious = false; + } + } + } + }); +} + + +} // namespace Neon::domain::details::bGridMgpu diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid.h new file mode 100644 index 00000000..b7d42d94 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid.h @@ -0,0 +1,243 @@ +#pragma once +#include "Neon/core/core.h" + +#include "Neon/domain/aGrid.h" +#include "Neon/domain/details/bGridDisgMgpu/BlockView.h" +#include "Neon/domain/details/bGridDisgMgpu/StaticBlock.h" +#include "Neon/domain/details/bGridDisgMgpu/bField.h" +#include "Neon/domain/details/bGridDisgMgpu/bIndex.h" +#include "Neon/domain/details/bGridDisgMgpu/bPartition.h" +#include "Neon/domain/details/bGridDisgMgpu/bSpan.h" +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/Partitioner1D.h" +#include "Neon/domain/tools/PointHashTable.h" +#include "Neon/domain/tools/SpanTable.h" +#include "Neon/set/Containter.h" +#include "Neon/set/LaunchParametersTable.h" +#include "Neon/set/memory/memSet.h" + +#include "bField.h" +#include "bPartition.h" +#include "bSpan.h" + +namespace Neon::domain::details::bGridMgpu { + + +template +class bField; + +template +class bGrid : public Neon::domain::interface::GridBaseTemplate, + bIndex> +{ + public: + using Grid = bGrid; + template + using Partition = bPartition; + template + using Field = Neon::domain::details::bGridMgpu::bField; + + using Span = bSpan; + using NghIdx = typename Partition::NghIdx; + using GridBaseTemplate = Neon::domain::interface::GridBaseTemplate>; + + using Idx = bIndex; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Neon::set::details::ExecutionThreadSpan::d1b3; + using ExecutionThreadSpanIndexType = uint32_t; + + using BlockIdx = uint32_t; + + bGrid() = default; + virtual ~bGrid(); + + /** + * Constructor for the vanilla block data structure with depth of 1 + */ + template + bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData = double_3d(1, 1, 1), + const double_3d& origin = double_3d(0, 0, 0), + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + + /** + * Constructor for bGrid. This constructor should be directly used only by mGrid + */ + template + bGrid(const Neon::Backend& backend /**< Neon backend for the computation */, + const Neon::int32_3d& domainSize /**< Size of the bounded Cartesian */, + const ActiveCellLambda activeCellLambda /**< Function that identify the user domain inside the boxed Cartesian discretization */, + const Neon::domain::Stencil& stencil /**< union of tall the stencil that will be used in the computation */, + const int multiResDiscreteIdxSpacing /**< Parameter for the multi-resolution. Index i and index (i+1) may be remapped as i*voxelSpacing and (i+1)* voxelSpacing. + * For a uniform bGrid, i.e outside the context of multi-resolution this parameter is always 1 */ + , + const double_3d& spacingData /** Physical spacing between two consecutive data points in the Cartesian domain */, + const double_3d& origin /** Physical location in space of the origin of the Cartesian discretization */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + /** + * Returns some properties for a given cartesian in the Cartesian domain. + * The provide index my be inside or outside the user defined bounded Cartesian domain + */ + auto getProperties(const Neon::index_3d& idx) + const -> typename GridBaseTemplate::CellProperties final; + + /** + * Returns true if the query 3D point is inside the user domain + * @param idx + * @return + */ + auto isInsideDomain(const Neon::index_3d& idx) + const -> bool final; + + /** + * Retrieves the device index that contains the query point + * @param idx + * @return + */ + auto getSetIdx(const Neon::index_3d& idx) + const -> int32_t final; + + /** + * Allocates a new field on the grid + */ + template + auto newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> Field; + + /** + * Allocates a new field on the block view grid + */ + template + auto newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> BlockView::Field; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container; + + /** + * Allocates a new container to execute some computation in the grid + */ + template + auto newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container; + + /** + * Defines a new set of parameter to launch a Container + */ + auto getLaunchParameters(Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& sharedMem) const -> Neon::set::LaunchParameters; + + /** + * Retrieve the span associated to the grid w.r.t. some user defined parameters. + */ + auto getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const Span&; + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getBlockViewGrid() const -> BlockView::Grid&; + + + /** + * Retrieve the block vew grid internally used. + * This grid can be leverage to allocate data at the block level. + */ + auto getActiveBitMask() const -> BlockView::Field&; + + /** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ + template + auto helGetMultiResDiscreteIdxSpacing() const -> std::enable_if_t; + + + /** + * Help function to retrieve the block connectivity as a BlockViewGrid field + */ + auto helpGetBlockConnectivity() const -> BlockView::Field&; + + /** + * Help function to retrieve the block origin as a BlockViewGrid field + */ + auto helpGetDataBlockOriginField() const -> Neon::aGrid::Field&; + + /** + * Help function to retrieve the map that converts a stencil point id to 3d offset + */ + auto helpGetStencilIdTo3dOffset() const -> Neon::set::MemSet&; + + auto helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D&; + + /** + * Help function retriev the device and the block index associated to a point in the BlockViewGrid grid + */ + auto helpGetSetIdxAndGridIdx(Neon::index_3d idx) const -> std::tuple; + + struct Data + { + auto init(const Neon::Backend& bk) + { + spanTable.init(bk); + launchParametersTable.init(bk); + } + + Neon::domain::tool::SpanTable spanTable /** Span for each data view configurations */; + Neon::set::LaunchParametersTable launchParametersTable; + + Neon::domain::tool::Partitioner1D partitioner1D; + Stencil stencil; + Neon::sys::patterns::Engine reduceEngine; + + Neon::aGrid memoryGrid /** memory allocator for fields */; + Neon::aGrid::Field mDataBlockOriginField; + Neon::set::MemSet mStencil3dTo1dOffset; + + BlockView::Grid blockViewGrid; + BlockView::Field activeBitField; + BlockView::Field blockConnectivity; + Neon::set::MemSet stencilIdTo3dOffset; + + int mMultiResDiscreteIdxSpacing; + + // number of active voxels in each block + Neon::set::DataSet mNumActiveVoxel; + + + // Stencil neighbor indices + Neon::set::MemSet mStencilNghIndex; + }; + std::shared_ptr mData; +}; + +constexpr int defaultBlockSize = 4; +using bGridMgpuDefault = bGrid>; +extern template class bGrid>; +} // namespace Neon::domain::details::bGridMgpu + +#include "bField_imp.h" +#include "bGrid_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid_imp.h new file mode 100644 index 00000000..1ebc0468 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bGrid_imp.h @@ -0,0 +1,470 @@ +#include "Neon/domain/details/bGridDisgMgpu/bGrid.h" +#include "Neon/domain/tools/SpaceCurves.h" + +namespace Neon::domain::details::bGridMgpu { + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) + : bGrid(backend, domainSize, activeCellLambda, stencil, 1, spacingData, origin, encoderType) +{ +} + +template +template +bGrid::bGrid(const Neon::Backend& backend, + const Neon::int32_3d& domainSize, + const ActiveCellLambda activeCellLambda, + const Neon::domain::Stencil& stencil, + const int multiResDiscreteIdxSpacing, + const double_3d& spacingData, + const double_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) +{ + + + mData = std::make_shared(); + mData->init(backend); + + mData->mMultiResDiscreteIdxSpacing = multiResDiscreteIdxSpacing; + mData->stencil = stencil; + const index_3d defaultKernelBlockSize(SBlock::memBlockSizeX, + SBlock::memBlockSizeY, + SBlock::memBlockSizeZ); + + std::stringstream gridName; + gridName << "bGridMgpu_" << SBlock::memBlockSizeX << "_" + << SBlock::memBlockSizeY << "_" + << SBlock::memBlockSizeZ; + { + auto nElementsPerPartition = backend.devSet().template newDataSet(0); + // We do an initialization with nElementsPerPartition to zero, + // then we reset to the computed number. + + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + stencil, + nElementsPerPartition, + defaultKernelBlockSize, + multiResDiscreteIdxSpacing, + origin, + encoderType, + defaultKernelBlockSize); + } + + { // Initialization of the partitioner + + mData->partitioner1D = Neon::domain::tool::Partitioner1D( + backend, + activeCellLambda, + nullptr, + SBlock::memBlockSize3D.template newType(), + domainSize, + Neon::domain::Stencil::s27_t(false), + encoderType, + multiResDiscreteIdxSpacing); + + mData->mDataBlockOriginField = mData->partitioner1D.getGlobalMapping(); + mData->mStencil3dTo1dOffset = mData->partitioner1D.getStencil3dTo1dOffset(); + mData->memoryGrid = mData->partitioner1D.getMemoryGrid(); + } + + { // BlockViewGrid + Neon::domain::details::eGrid::eGrid egrid( + backend, + mData->partitioner1D.getBlockSpan(), + mData->partitioner1D, + Neon::domain::Stencil::s27_t(false), + spacingData * SBlock::memBlockSize3D, + origin); + + mData->blockViewGrid = BlockView::Grid(egrid); + } + + { // Active bitmask + mData->activeBitField = mData->blockViewGrid.template newField( + "BlockViewBitMask", + 1, + [] { + typename SBlock::BitMask outsideBitMask; + outsideBitMask.reset(); + return outsideBitMask; + }(), + Neon::DataUse::HOST_DEVICE, backend.getMemoryOptions(BlockView::layout)); + + mData->mNumActiveVoxel = backend.devSet().template newDataSet(); + + mData->activeBitField + .getGrid() + .template newContainer( + "activeBitMaskInit", + [&, this](Neon::set::Loader& loader) { + auto bitMaskPartition = loader.load(mData->activeBitField); + return [&, bitMaskPartition](const auto& bitMaskIdx) mutable { + auto prtIdx = bitMaskPartition.prtID(); + int countActive = 0; + auto const blockOrigin = bitMaskPartition.getGlobalIndex(bitMaskIdx); + typename SBlock::BitMask& bitMask = bitMaskPartition(bitMaskIdx, 0); + bitMask.reset(); + + for (int k = 0; k < SBlock::memBlockSize3D.template newType().z; k++) { + for (int j = 0; j < SBlock::memBlockSize3D.template newType().y; j++) { + for (int i = 0; i < SBlock::memBlockSize3D.template newType().x; i++) { + auto globalPosition = blockOrigin + Neon::int32_3d(i * this->mData->mMultiResDiscreteIdxSpacing, + j * this->mData->mMultiResDiscreteIdxSpacing, + k * this->mData->mMultiResDiscreteIdxSpacing); + bool const isInDomain = globalPosition < domainSize * this->mData->mMultiResDiscreteIdxSpacing; + bool const isActive = activeCellLambda(globalPosition); + if (isActive && isInDomain) { + countActive++; + bitMask.setActive(i, j, k); + } + } + } + } +#pragma omp critical + { + this->mData->mNumActiveVoxel[prtIdx] += countActive; + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + + + mData->activeBitField.updateDeviceData(Neon::Backend::mainStreamIdx); + this->getBackend().sync(Neon::Backend::mainStreamIdx); + mData->activeBitField.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::put, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + } + + + { // Neighbor blocks + mData->blockConnectivity = mData->blockViewGrid.template newField("blockConnectivity", + 27, + Span::getInvalidBlockId(), + Neon::DataUse::HOST_DEVICE, + Neon::MemoryLayout::arrayOfStructs); + + mData->blockConnectivity.getGrid().template newContainer( + "blockConnectivityInit", + [&](Neon::set::Loader& loader) { + auto blockConnectivity = loader.load(mData->blockConnectivity); + return [&, blockConnectivity](auto const& idx) mutable { + for (int8_t k = 0; k < 3; k++) { + for (int8_t j = 0; j < 3; j++) { + for (int8_t i = 0; i < 3; i++) { + auto targetDirection = i + 3 * j + 3 * 3 * k; + BlockIdx blockNghIdx = Span::getInvalidBlockId(); + typename decltype(blockConnectivity)::Idx nghIdx; + Neon::int8_3d stencilPoint(i - int8_t(1), + j - int8_t(1), + k - int8_t(1)); + bool isValid = blockConnectivity.getNghIndex(idx, stencilPoint, nghIdx); + if (isValid) { + blockNghIdx = static_cast(nghIdx.helpGet()); + } + blockConnectivity(idx, targetDirection) = blockNghIdx; + } + } + } + }; + }) + .run(Neon::Backend::mainStreamIdx); + mData->blockConnectivity.updateDeviceData(Neon::Backend::mainStreamIdx); + } + + // Initialization of the SPAN table + mData->spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span.mDataView = dw; + switch (dw) { + case Neon::DataView::STANDARD: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + case Neon::DataView::BOUNDARY: { + span.mFirstDataBlockOffset = mData->partitioner1D.getSpanClassifier().countInternal(setIdx); + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + + break; + } + case Neon::DataView::INTERNAL: { + span.mFirstDataBlockOffset = 0; + span.mDataView = dw; + span.mActiveMask = mData->activeBitField.getPartition(execution, setIdx, dw).mem(); + break; + } + default: { + NeonException exc("dFieldDev"); + NEON_THROW(exc); + } + } + }); + + { // Stencil Idx to 3d offset + auto nPoints = backend.devSet().newDataSet(stencil.nNeighbours()); + mData->stencilIdTo3dOffset = backend.devSet().template newMemSet(Neon::DataUse::HOST_DEVICE, + 1, + backend.getMemoryOptions(), + nPoints); + for (int i = 0; i < stencil.nNeighbours(); ++i) { + for (int devIdx = 0; devIdx < backend.devSet().setCardinality(); devIdx++) { + index_3d pLong = stencil.neighbours()[i]; + Neon::int8_3d pShort = pLong.newType(); + mData->stencilIdTo3dOffset.eRef(devIdx, i) = pShort; + } + } + mData->stencilIdTo3dOffset.updateDeviceData(backend, Neon::Backend::mainStreamIdx); + } + // Init the base grid + bGrid::GridBase::init(gridName.str(), + backend, + domainSize, + Neon::domain::Stencil(), + mData->mNumActiveVoxel, + SBlock::memBlockSize3D.template newType(), + spacingData, + origin, + encoderType, + defaultKernelBlockSize); + { // setting launchParameters + mData->launchParametersTable.forEachSeq([&](Neon::DataView dw, + Neon::set::LaunchParameters& bLaunchParameters) { + auto defEGridBlock = mData->blockViewGrid.getDefaultBlock(); + auto eGridParams = mData->blockViewGrid.getLaunchParameters(dw, defEGridBlock, 0); + eGridParams.forEachSeq([&](Neon::SetIdx setIdx, Neon::sys::GpuLaunchInfo const& launchSingleDev) { + auto eDomainGridSize = launchSingleDev.domainGrid(); + assert(eDomainGridSize.y == 1); + assert(eDomainGridSize.z == 1); + int nBlocks = static_cast(eDomainGridSize.x); + bLaunchParameters.get(setIdx).set(Neon::sys::GpuLaunchInfo::mode_e::cudaGridMode, + nBlocks, SBlock::memBlockSize3D.template newType(), 0); + }); + }); + } +} + +template +template +auto bGrid::newField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + Field field(name, dataUse, memoryOptions, *this, cardinality, inactiveValue); + + return field; +} + +template +template +auto bGrid::newBlockViewField(const std::string name, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const -> BlockView::Field +{ + memoryOptions = this->getDevSet().sanitizeMemoryOption(memoryOptions); + BlockView::Field blockViewField = mData->blockViewGrid.template newField(name, cardinality, inactiveValue, dataUse, memoryOptions); + return blockViewField; +} + +template +template +auto bGrid::newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const -> Neon::set::Container +{ + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + blockSize, + [sharedMem](const Neon::index_3d&) { return sharedMem; }); + return kContainer; +} + +template +template +auto bGrid::newContainer(const std::string& name, + LoadingLambda lambda) const -> Neon::set::Container +{ + const Neon::index_3d& defaultBlockSize = this->getDefaultBlock(); + Neon::set::Container kContainer = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + defaultBlockSize, + [](const Neon::index_3d&) { return 0; }); + return kContainer; +} + +template +auto bGrid:: + getBlockViewGrid() + const -> BlockView::Grid& +{ + return mData->blockViewGrid; +} + +template +auto bGrid:: + getActiveBitMask() + const -> BlockView::Field& +{ + return mData->activeBitField; +} + +/** + * Helper function to retrieve the discrete index spacing used for the multi-resolution + */ +template +template +auto bGrid::helGetMultiResDiscreteIdxSpacing() const + -> std::enable_if_t +{ + return mData->mMultiResDiscreteIdxSpacing; +} + +template +auto bGrid:: + helpGetBlockConnectivity() + const -> BlockView::Field& +{ + return mData->blockConnectivity; +} +template +auto bGrid:: + helpGetDataBlockOriginField() + const -> Neon::aGrid::Field& +{ + return mData->mDataBlockOriginField; +} +template +auto bGrid::getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) -> const bGrid::Span& +{ + return mData->spanTable.getSpan(execution, setIdx, dataView); +} + +template +bGrid::~bGrid() +{ +} +template +auto bGrid::getSetIdx(const index_3d& idx) const -> int32_t +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return -1; + } + Neon::SetIdx setIdx = cellProperties.getSetIdx(); + return setIdx; +} +template +auto bGrid::getLaunchParameters(Neon::DataView dataView, + const index_3d&, + const size_t& sharedMem) const -> Neon::set::LaunchParameters +{ + auto res = mData->launchParametersTable.get(dataView); + res.forEachSeq([&](SetIdx const& /*setIdx*/, + Neon::set::LaunchParameters::launchInfo_e& launchParams) -> void { + launchParams.setShm(sharedMem); + }); + return res; +} + +template +auto bGrid:: + helpGetStencilIdTo3dOffset() + const -> Neon::set::MemSet& +{ + return mData->stencilIdTo3dOffset; +} + +template +auto bGrid::isInsideDomain(const index_3d& idx) const -> bool +{ + // 1. check if the block is active + const BlockView::index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto blockProperties = mData->blockViewGrid.getProperties(blockIdx3d); + + if (!blockProperties.isInside()) { + return false; + } + // 2. The block is active, check the element in the block + typename SBlock::BitMask const& bitMask = mData->activeBitField.getReference(blockIdx3d, 0); + + bool isActive = bitMask.isActive((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x, + (idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y, + (idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + return isActive; +} + +template +auto bGrid::getProperties(const index_3d& idx) + const -> typename GridBaseTemplate::CellProperties +{ + typename GridBaseTemplate::CellProperties cellProperties; + + cellProperties.setIsInside(this->isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return cellProperties; + } + + if (this->getDevSet().setCardinality() == 1) { + cellProperties.init(0, DataView::INTERNAL); + } else { + const index_3d blockIdx3d = idx / SBlock::memBlockSize3D.template newType(); + auto blockViewProperty = mData->blockViewGrid.getProperties(blockIdx3d); + + cellProperties.init(blockViewProperty.getSetIdx(), + blockViewProperty.getDataView()); + } + return cellProperties; +} + +template +auto bGrid::helpGetSetIdxAndGridIdx(Neon::index_3d idx) + const -> std::tuple +{ + const index_3d blockIdx3d = idx / (SBlock::memBlockSize3D.template newType() * mData->mMultiResDiscreteIdxSpacing); + auto [setIdx, bvGridIdx] = mData->blockViewGrid.helpGetSetIdxAndGridIdx(blockIdx3d); + Idx bIdx; + bIdx.mDataBlockIdx = bvGridIdx.helpGet(); + bIdx.mInDataBlockIdx.x = static_cast((idx.x / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.x); + bIdx.mInDataBlockIdx.y = static_cast((idx.y / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.y); + bIdx.mInDataBlockIdx.z = static_cast((idx.z / mData->mMultiResDiscreteIdxSpacing) % SBlock::memBlockSize3D.z); + + return {setIdx, bIdx}; +} + +template +auto bGrid::helpGetPartitioner1D() -> Neon::domain::tool::Partitioner1D& +{ + return mData->partitioner1D; +} + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex.h new file mode 100644 index 00000000..0452cfc9 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex.h @@ -0,0 +1,142 @@ +#pragma once + +#include "Neon/core/core.h" + + +namespace Neon::domain::details::bGridMgpu { + +// Common forward declarations +template +class bGrid; +template +class bSpan; +template +class bPartition; + +class MicroIndex +{ + public: + using TrayIdx = int32_t; + using InTrayIdx = int8_3d; + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex() + : MicroIndex(0, 0, 0, 0) + { + } + + NEON_CUDA_HOST_DEVICE inline explicit MicroIndex(const TrayIdx& blockIdx, + const InTrayIdx::Integer& x, + const InTrayIdx::Integer& y, + const InTrayIdx::Integer& z) + { + mTrayBlockIdx = blockIdx; + mInTrayBlockIdx.x = x; + mInTrayBlockIdx.y = y; + mInTrayBlockIdx.z = z; + } + + NEON_CUDA_HOST_DEVICE inline auto getInTrayBlockIdx() const -> InTrayIdx const& + { + return mInTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto getTrayBlockIdx() const -> TrayIdx const& + { + return mTrayBlockIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setInTrayBlockIdx(InTrayIdx const& inTrayIdx) -> void + { + mInTrayBlockIdx = inTrayIdx; + } + + NEON_CUDA_HOST_DEVICE inline auto setTrayBlockIdx(TrayIdx const& trayIdx) -> void + { + mTrayBlockIdx = trayIdx; + } + + InTrayIdx mInTrayBlockIdx; + TrayIdx mTrayBlockIdx{}; +}; + +template +class bIndex +{ + public: + template + friend class bSpan; + using OuterIdx = bIndex; + + using NghIdx = int8_3d; + template + friend class bPartition; + + template + friend class bField; + + template + friend class bSpan; + template + friend class bGrid; + + + using TrayIdx = MicroIndex::TrayIdx; + using InTrayIdx = MicroIndex::InTrayIdx; + + using DataBlockCount = std::make_unsigned_t; + using DataBlockIdx = std::make_unsigned_t; + using InDataBlockIdx = InTrayIdx; + + bIndex() = default; + ~bIndex() = default; + + NEON_CUDA_HOST_DEVICE inline explicit bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z); + + NEON_CUDA_HOST_DEVICE inline auto getMicroIndex() -> MicroIndex; + NEON_CUDA_HOST_DEVICE inline auto init(MicroIndex const&) -> void; + + NEON_CUDA_HOST_DEVICE inline auto getInDataBlockIdx() const -> InDataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto getDataBlockIdx() const -> DataBlockIdx const&; + NEON_CUDA_HOST_DEVICE inline auto setInDataBlockIdx(InDataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto setDataBlockIdx(DataBlockIdx const&) -> void; + NEON_CUDA_HOST_DEVICE inline auto isActive() const -> bool; + // the local index within the block + InDataBlockIdx mInDataBlockIdx; + DataBlockIdx mDataBlockIdx{}; +}; + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setDataBlockIdx(const bIndex::DataBlockIdx& dataBlockIdx) -> void +{ + mDataBlockIdx = dataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::setInDataBlockIdx(const bIndex::InDataBlockIdx& inDataBlockIdx) -> void +{ + mInDataBlockIdx = inDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::getDataBlockIdx() const -> const bIndex::DataBlockIdx& +{ + return mDataBlockIdx; +} +template +NEON_CUDA_HOST_DEVICE auto bIndex::getInDataBlockIdx() const -> const bIndex::InDataBlockIdx& +{ + return mInDataBlockIdx; +} + +template +NEON_CUDA_HOST_DEVICE auto bIndex::isActive() const -> bool +{ + return mDataBlockIdx != std::numeric_limits::max(); +} + +} // namespace Neon::domain::details::bGrid + +#include "Neon/domain/details/bGrid/bIndex_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex_imp.h new file mode 100644 index 00000000..9da43b62 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bIndex_imp.h @@ -0,0 +1,67 @@ +#pragma once +#include "Neon/domain/details/bGridDisgMgpu/bIndex.h" + +namespace Neon::domain::details::bGridMgpu { + +template +NEON_CUDA_HOST_DEVICE inline bIndex:: + bIndex(const DataBlockIdx& blockIdx, + const InDataBlockIdx::Integer& x, + const InDataBlockIdx::Integer& y, + const InDataBlockIdx::Integer& z) +{ + mDataBlockIdx = blockIdx; + mInDataBlockIdx.x = x; + mInDataBlockIdx.y = y; + mInDataBlockIdx.z = z; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::getMicroIndex() -> MicroIndex +{ + + + TrayIdx const exBlockOffset = mDataBlockIdx * (SBlock::blockRatioX * SBlock::blockRatioY * SBlock::blockRatioZ); + TrayIdx const exTrayOffset = [&] { + TrayIdx const trayBlockIdxX = mInDataBlockIdx.x / SBlock::userBlockSizeX; + TrayIdx const trayBlockIdxY = mInDataBlockIdx.y / SBlock::userBlockSizeY; + TrayIdx const trayBlockIdxZ = mInDataBlockIdx.z / SBlock::userBlockSizeZ; + + TrayIdx const res = trayBlockIdxX + trayBlockIdxY * SBlock::blockRatioX + + trayBlockIdxZ * (SBlock::blockRatioX * SBlock::blockRatioY); + return res; + }(); + MicroIndex res; + res.setTrayBlockIdx(exBlockOffset + exTrayOffset); + res.setInTrayBlockIdx({static_cast(mInDataBlockIdx.x % SBlock::userBlockSizeX), + static_cast(mInDataBlockIdx.y % SBlock::userBlockSizeY), + static_cast(mInDataBlockIdx.z % SBlock::userBlockSizeZ)}); + return res; +} + + +template +NEON_CUDA_HOST_DEVICE inline auto bIndex::init(MicroIndex const& microIndex) -> void +{ + constexpr uint32_t memBlockSize = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + constexpr uint32_t userBlockSize = SBlock::userBlockSizeX * SBlock::userBlockSizeY * SBlock::userBlockSizeZ; + constexpr uint32_t blockRatioSize = memBlockSize / userBlockSize; + + constexpr uint32_t blockRatioX = SBlock::memBlockSizeX / SBlock::userBlockSizeX; + constexpr uint32_t blockRatioY = SBlock::memBlockSizeY / SBlock::userBlockSizeY; + + mDataBlockIdx = microIndex.getTrayBlockIdx() / (blockRatioSize); + + uint32_t reminder = microIndex.getTrayBlockIdx() % (blockRatioSize); + + const uint32_t reminderInZ = reminder / (blockRatioX * blockRatioY); + mInDataBlockIdx.z = static_cast(microIndex.getInTrayBlockIdx().z + reminderInZ * SBlock::userBlockSizeZ); + reminder = reminder % (blockRatioX * blockRatioY); + const uint32_t reminderInY = reminder / (blockRatioX); + mInDataBlockIdx.y = static_cast(microIndex.getInTrayBlockIdx().y + reminderInY * SBlock::userBlockSizeY); + const uint32_t reminderInX = reminder % blockRatioX; + mInDataBlockIdx.x = static_cast(microIndex.getInTrayBlockIdx().x + reminderInX * SBlock::userBlockSizeX); +} + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition.h new file mode 100644 index 00000000..666f813b --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition.h @@ -0,0 +1,218 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMgpu//bIndex.h" +#include "Neon/domain/details/bGridDisgMgpu//bSpan.h" + +#include "Neon/domain/interface/NghData.h" + +#include "Neon/sys/memory/CUDASharedMemoryUtil.h" + +namespace Neon::domain::details::bGridMgpu { + +template +class bSpan; + +template +class bPartition +{ + public: + enum Sectors + { + bUp = 0, + bDw = 1, + gUp = 2, + gDw = 3, + after = 4, + first = bUp + }; + + using Span = bSpan; + using Idx = bIndex; + using NghIdx = typename Idx::NghIdx; + using Type = T; + using NghData = Neon::domain::NghData; + + using BlockViewGrid = Neon::domain::tool::GridTransformer::Grid; + using BlockViewGridIdx = BlockViewGrid::Idx; + + public: + bPartition(); + + ~bPartition() = default; + + explicit bPartition(int setIdx, + int mCardinality, + T* mMem, + typename Idx::DataBlockIdx* mBlockConnectivity, + typename SBlock::BitMask const* NEON_RESTRICT mMask, + Neon::int32_3d* mOrigin, + NghIdx* mStencilNghIndex, + Neon::int32_3d mDomainSize, + typename Idx::DataBlockCount mFirstDataBUP, + typename Idx::DataBlockCount mFirstDataBDW, + typename Idx::DataBlockCount mFirstDataGUP, + typename Idx::DataBlockCount mFirstDataGDW, + typename Idx::DataBlockCount mLastDataGDW); + + /** + * Retrieve the cardinality of the field. + */ + inline NEON_CUDA_HOST_DEVICE auto + cardinality() + const -> int; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx& cell, + int card) + -> T&; + + /** + * Gets the field metadata at a cartesian point. + */ + inline NEON_CUDA_HOST_DEVICE auto + operator()(const Idx& cell, + int card) + const -> const T&; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& cell, + const NghIdx& offset, + const int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& eId, + uint8_t nghID, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& eId, + int card) + const -> NghData; + + /** + * Gets the field metadata at a neighbour cartesian point. + */ + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& eId, + int card, + T defaultValue) + const -> NghData; + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void>; + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx& gidx, + int card, + T value) + -> bool; + + /** + * Gets the global coordinates of the cartesian point. + */ + NEON_CUDA_HOST_DEVICE inline auto + getGlobalIndex(const Idx& cell) + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE inline auto + isActive(const Idx& cell, + const typename SBlock::BitMask* mask = nullptr) const -> bool; + + + NEON_CUDA_HOST_DEVICE inline auto + getDomainSize() + const -> Neon::index_3d; + + NEON_CUDA_HOST_DEVICE + auto mem() const -> T const*; + + /** + * Gets the Idx for in the block view space. + */ + NEON_CUDA_HOST_DEVICE inline auto + getBlockViewIdx(const Idx& cell) + const -> BlockViewGridIdx; + + + NEON_CUDA_HOST_DEVICE inline auto + helpGetPitch(const Idx& cell, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetValidIdxPitchExplicit(const Idx& idx, int card) + const -> uint32_t; + + NEON_CUDA_HOST_DEVICE inline auto + helpNghPitch(const Idx& nghIdx, int card) + const -> std::tuple; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& idx, const NghIdx& offset) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& idx) + const -> Idx; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& idx, const NghIdx& offset, const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx; + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx; + + auto NEON_CUDA_HOST_DEVICE helpGetSectorFirstBlock(Sectors sector) const + -> typename Idx::DataBlockCount; + + auto NEON_CUDA_HOST_DEVICE helpGetSectorLength(Sectors sector) const + -> typename Idx::DataBlockCount; + + int mCardinality; + T* mMem; + NghIdx const* NEON_RESTRICT mStencilNghIndex; + typename Idx::DataBlockIdx const* NEON_RESTRICT mBlockConnectivity; + typename SBlock::BitMask const* NEON_RESTRICT mMask; + Neon::int32_3d const* NEON_RESTRICT mOrigin; + int mSetIdx; + int mMultiResDiscreteIdxSpacing = 1; + Neon::int32_3d mDomainSize; + + + + typename Idx::DataBlockCount mSectorFirstBlockIdx[Sectors::after + 1]; +}; + +} // namespace Neon::domain::details::bGridMgpu + +#include "Neon/domain/details/bGridDisgMgpu//bPartition_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition_imp.h new file mode 100644 index 00000000..7fdf8bc4 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bPartition_imp.h @@ -0,0 +1,517 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMgpu//bGrid.h" +#include "Neon/domain/details/bGridDisgMgpu/bSpan.h" + +namespace Neon::domain::details::bGridMgpu { + +template +bPartition::bPartition() + : mCardinality(0), + mMem(nullptr), + mStencilNghIndex(), + mBlockConnectivity(nullptr), + mMask(nullptr), + mOrigin(0), + mSetIdx(0) +{ +} + +template +bPartition:: + bPartition(int setIdx, + int cardinality, + T* mem, + typename Idx::DataBlockIdx* blockConnectivity, + typename SBlock::BitMask const* NEON_RESTRICT mask, + Neon::int32_3d* origin, + NghIdx* stencilNghIndex, + Neon::int32_3d mDomainSize, + typename Idx::DataBlockCount mFirstDataBUP, + typename Idx::DataBlockCount mFirstDataBDW, + typename Idx::DataBlockCount mFirstDataGUP, + typename Idx::DataBlockCount mFirstDataGDW, + typename Idx::DataBlockCount mLastDataGDW) + : mCardinality(cardinality), + mMem(mem), + mStencilNghIndex(stencilNghIndex), + mBlockConnectivity(blockConnectivity), + mMask(mask), + mOrigin(origin), + mSetIdx(setIdx), + mDomainSize(mDomainSize) +{ + mSectorFirstBlockIdx[Sectors::bUp] = mFirstDataBUP; + mSectorFirstBlockIdx[Sectors::bDw] = mFirstDataBDW; + mSectorFirstBlockIdx[Sectors::gUp] = mFirstDataGUP; + mSectorFirstBlockIdx[Sectors::gDw] = mFirstDataGDW; + mSectorFirstBlockIdx[Sectors::after] = mLastDataGDW; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getGlobalIndex(const Idx& gidx) + const -> Neon::index_3d +{ + auto location = mOrigin[gidx.mDataBlockIdx]; + location.x += gidx.mInDataBlockIdx.x; + location.y += gidx.mInDataBlockIdx.y; + location.z += gidx.mInDataBlockIdx.z; + if constexpr (SBlock::isMultiResMode) { + return location * mMultiResDiscreteIdxSpacing; + } + return location; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getDomainSize() + const -> Neon::index_3d +{ + return mDomainSize; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getBlockViewIdx(const Idx& gidx) + const -> BlockViewGridIdx +{ + BlockViewGridIdx res; + res.manualSet(gidx.getDataBlockIdx()); + return res; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + cardinality() + const -> int +{ + return mCardinality; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) -> T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: +operator()(const Idx& cell, + int card) const -> const T& +{ + return mMem[helpGetPitch(cell, card)]; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + mem() const -> T const* +{ + return mMem; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetPitch(const Idx& idx, int card) + const -> uint32_t +{ + uint32_t const pitch = helpGetValidIdxPitchExplicit(idx, card); + return pitch; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpGetValidIdxPitchExplicit(const Idx& idx, int card) + const -> uint32_t +{ + // we are in the internal sector, so we have the standard AoSoA + if (idx.getDataBlockIdx() < mSectorFirstBlockIdx[Sectors::first]) { + + uint32_t constexpr blockPitchByCard = SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ; + uint32_t const inBlockInCardPitch = idx.mInDataBlockIdx.x + + SBlock::memBlockSizeX * idx.mInDataBlockIdx.y + + (SBlock::memBlockSizeX * SBlock::memBlockSizeY) * idx.mInDataBlockIdx.z; + uint32_t const blockAdnCardPitch = (idx.mDataBlockIdx * mCardinality + card) * blockPitchByCard; + uint32_t const pitch = blockAdnCardPitch + inBlockInCardPitch; + return pitch; + } + + // We switch to the other sector where we have a SoA + int sectorLenght = 0; + int myFirstBlock = 0; + + auto const myBlockIdx = idx.getDataBlockIdx(); + for (int mySector = Sectors::gDw; mySector >= 0; mySector--) { + if (myBlockIdx >= mSectorFirstBlockIdx[mySector]) { + sectorLenght = mSectorFirstBlockIdx[mySector + 1] - mSectorFirstBlockIdx[mySector]; + myFirstBlock = mSectorFirstBlockIdx[mySector]; + break; + } + } + int const denseX = (myBlockIdx - myFirstBlock) * SBlock::memBlockSizeX + idx.getInDataBlockIdx().x; + int const denseY = idx.mInDataBlockIdx.y; + int const denseZ = idx.mInDataBlockIdx.z; + + int const xStride = 1; + int const yStride = SBlock::memBlockSizeX * sectorLenght; + int const zStride = SBlock::memBlockSizeY * yStride; + + int const pitch = (SBlock::memBlockSizeX * SBlock::memBlockSizeY * SBlock::memBlockSizeZ) * + card * + sectorLenght + + denseX * xStride + + denseY * yStride + + denseZ * zStride; + + int const fullPitch = myFirstBlock * + SBlock::memBlockSizeX * + SBlock::memBlockSizeY * + SBlock::memBlockSizeZ * + cardinality() + + pitch; + return fullPitch; +} + +template +inline NEON_CUDA_HOST_DEVICE auto bPartition:: + helpNghPitch(const Idx& nghIdx, int card) + const -> std::tuple +{ + if (nghIdx.mDataBlockIdx == Span::getInvalidBlockId()) { + return {false, 0}; + } + + const bool isActive = mMask[nghIdx.mDataBlockIdx].isActive(nghIdx.mInDataBlockIdx.x, nghIdx.mInDataBlockIdx.y, nghIdx.mInDataBlockIdx.z); + if (!isActive) { + return {false, 0}; + } + auto const offset = helpGetValidIdxPitchExplicit(nghIdx, card); + return {true, offset}; +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset) + const -> Idx +{ + return this->helpGetNghIdx(idx, offset, mBlockConnectivity); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, + const NghIdx& offset, + const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + offset.x, + idx.mInDataBlockIdx.y + offset.y, + idx.mInDataBlockIdx.z + offset.z); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + const int yFlag = ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + const int zFlag = ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx) + const -> Idx +{ + return this->helpGetNghIdx(idx, mBlockConnectivity); +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + helpGetNghIdx(const Idx& idx, const typename Idx::DataBlockIdx* blockConnectivity) + const -> Idx +{ + + typename Idx::InDataBlockIdx ngh(idx.mInDataBlockIdx.x + xOff, + idx.mInDataBlockIdx.y + yOff, + idx.mInDataBlockIdx.z + zOff); + + /** + * 0 if no offset on the direction + * 1 positive offset + * -1 negative offset + */ + const int xFlag = [&] { + if constexpr (xOff == 0) { + return 0; + } else { + return ngh.x < 0 ? -1 : (ngh.x >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + + const int yFlag = [&] { + if constexpr (yOff == 0) { + return 0; + } else { + return ngh.y < 0 ? -1 : (ngh.y >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + const int zFlag = [&] { + if constexpr (zOff == 0) { + return 0; + } else { + return ngh.z < 0 ? -1 : (ngh.z >= SBlock::memBlockSizeX ? +1 : 0); + } + }(); + + const bool isLocal = (xFlag | yFlag | zFlag) == 0; + if (!(isLocal)) { + typename Idx::InDataBlockIdx remoteInBlockOffset; + /** + * Example + * - 8 block (1D case) + * Case 1: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 starting point + * + * - idx.inBlock = 2 + * - offset = -1 + * - remote.x = (2-3) - ((-1) * 4) = -1 + 4 = 3 + * Case 2: + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * starting point +3 from 3 + * + * - idx.inBlock = 3 + * - offset = (+3,0) + * - remote.x = (7+3) - ((+1) * 8) = 10 - 8 = 2 + * + * |0,1,2,3|0,1,2,3|0,1,2,3| + * ^ ^ + * -3 from 0 +3 from 3 + * + * NOTE: if in one direction the neighbour offet is zero, xFalg is 0; + * */ + + Idx remoteNghIdx; + remoteNghIdx.mInDataBlockIdx.x = ngh.x - xFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.y = ngh.y - yFlag * SBlock::memBlockSizeX; + remoteNghIdx.mInDataBlockIdx.z = ngh.z - zFlag * SBlock::memBlockSizeX; + + int connectivityJump = idx.mDataBlockIdx * 27 + + (xFlag + 1) + + (yFlag + 1) * 3 + + (zFlag + 1) * 9; + remoteNghIdx.mDataBlockIdx = blockConnectivity[connectivityJump]; + + return remoteNghIdx; + } else { + Idx localNghIdx; + localNghIdx.mDataBlockIdx = idx.mDataBlockIdx; + localNghIdx.mInDataBlockIdx = ngh; + return localNghIdx; + } +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& eId, + uint8_t nghID, + int card) + const -> NghData +{ + NghIdx nghOffset = mStencilNghIndex[nghID]; + return getNghData(eId, nghOffset, card); +} + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + const NghIdx& offset, + const int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx, offset); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.invalidate(); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& idx, + int card, + T defaultValue) + const -> NghData +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(idx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + result.set(defaultValue, false); + return result; + } + auto const value = mMem[pitch]; + result.set(value, true); + return result; +} + +template + +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void> +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + + if (isValid) { + auto const& value = mMem[pitch]; + funIfValid(value); + return; + } + + if constexpr (!std::is_same_v) { + funIfNOTValid(); + } + return; +} + +template +template +NEON_CUDA_HOST_DEVICE inline auto bPartition:: + writeNghData(const Idx& gidx, + int card, + T value) + -> bool +{ + NghData result; + bIndex nghIdx = helpGetNghIdx(gidx); + auto [isValid, pitch] = helpNghPitch(nghIdx, card); + if (!isValid) { + return false; + } + mMem[pitch] = value; + return true; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::isActive(const Idx& cell, + const typename SBlock::BitMask* mask) const -> bool +{ + if (!mask) { + return mMask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } else { + return mask[cell.mDataBlockIdx].isActive(cell.mInDataBlockIdx.x, cell.mInDataBlockIdx.y, cell.mInDataBlockIdx.z); + } +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::helpGetSectorFirstBlock(Sectors sector) const + -> typename Idx::DataBlockCount +{ + return mSectorFirstBlockIdx[sector]; +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bPartition::helpGetSectorLength(Sectors sector) const + -> typename Idx::DataBlockCount +{ + return mSectorFirstBlockIdx[sector + 1] - mSectorFirstBlockIdx[sector]; +} +} // namespace Neon::domain::details::bGridMgpu \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan.h new file mode 100644 index 00000000..397133c8 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan.h @@ -0,0 +1,55 @@ +#pragma once + +#include "Neon/domain/details/bGridDisgMgpu/bIndex.h" + +namespace Neon::domain::details::bGridMgpu { + +template +class bSpan +{ + public: + // bit mask information + using BitMaskWordType = uint64_t; + + static constexpr uint32_t bitMaskStorageBitWidth = 64; + static constexpr Neon::MemoryLayout activeMaskMemoryLayout = Neon::MemoryLayout::arrayOfStructs; + static constexpr uint32_t log2OfbitMaskWordSize = 6; + + using Idx = bIndex; + friend class bGrid; + + static constexpr int SpaceDim = 3; + + bSpan() = default; + virtual ~bSpan() = default; + + NEON_CUDA_HOST_DEVICE inline static auto getInvalidBlockId() + -> typename Idx::DataBlockIdx + { + return std::numeric_limits::max(); + } + + inline bSpan( + typename Idx::DataBlockCount mFirstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask, + Neon::DataView mDataView); + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateCPUDevice( + Idx& bidx, + uint32_t const& threadIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool; + + NEON_CUDA_HOST_DEVICE inline auto setAndValidateGPUDevice( + Idx& bidx) const -> bool; + + + // We don't need to have a count on active blocks + typename Idx::DataBlockCount mFirstDataBlockOffset; + typename SBlock::BitMask const* NEON_RESTRICT mActiveMask; + Neon::DataView mDataView; +}; +} // namespace Neon::domain::details::bGrid + +#include "Neon/domain/details/bGridDisgMgpu/bSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan_imp.h b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan_imp.h new file mode 100644 index 00000000..45e40eeb --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/bGridDisgMgpu/bSpan_imp.h @@ -0,0 +1,51 @@ +#include "Neon/domain/details/bGridDisgMgpu/bSpan.h" + +namespace Neon::domain::details::bGridMgpu { + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateGPUDevice([[maybe_unused]] Idx& bidx) const -> bool +{ +#ifdef NEON_PLACE_CUDA_DEVICE + bidx.mDataBlockIdx = blockIdx.x + mFirstDataBlockOffset; + bidx.mInDataBlockIdx.x = threadIdx.x; + bidx.mInDataBlockIdx.y = threadIdx.y; + bidx.mInDataBlockIdx.z = threadIdx.z; + + const bool isActive = mActiveMask[bidx.mDataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + + return isActive; +#else + NEON_THROW_UNSUPPORTED_OPERATION("Operation supported only on GPU"); +#endif +} + +template +NEON_CUDA_HOST_DEVICE inline auto +bSpan::setAndValidateCPUDevice(Idx& bidx, + uint32_t const& dataBlockIdx, + uint32_t const& x, + uint32_t const& y, + uint32_t const& z) const -> bool +{ + + bidx.mDataBlockIdx = dataBlockIdx + mFirstDataBlockOffset; + bidx.mInDataBlockIdx.x = static_cast(x); + bidx.mInDataBlockIdx.y = static_cast(y); + bidx.mInDataBlockIdx.z = static_cast(z); + const bool isActive = mActiveMask[dataBlockIdx].isActive(bidx.mInDataBlockIdx.x, bidx.mInDataBlockIdx.y, bidx.mInDataBlockIdx.z); + return isActive; +} + +template +bSpan::bSpan(typename Idx::DataBlockCount firstDataBlockOffset, + typename SBlock::BitMask const* NEON_RESTRICT activeMask, + Neon::DataView dataView) + : mFirstDataBlockOffset(firstDataBlockOffset), + mActiveMask(activeMask), + mDataView(dataView) +{ +} + + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dField_imp.h b/libNeonDomain/include/Neon/domain/details/dGrid/dField_imp.h index 49f57dbd..11dda19e 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dField_imp.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dField_imp.h @@ -26,7 +26,8 @@ dField::dField(const std::string& fieldUserName, T(0), dataUse, memoryOptions, - haloStatus) { + haloStatus) +{ // only works if dims in x and y direction for all partitions match for (int i = 0; i < dims.size() - 1; ++i) { @@ -88,7 +89,7 @@ dField::dField(const std::string& fieldUserName, { // Setting up partitions Neon::aGrid const& aGrid = mData->grid->helpFieldMemoryAllocator(); - mData->memoryField = aGrid.newField(fieldUserName + "-storage", cardinality, T(), dataUse, memoryOptions); + mData->memoryField = aGrid.newField(fieldUserName + "-storage", cardinality, T(), dataUse, memoryOptions); // const int setCardinality = mData->grid->getBackend().getDeviceCount(); mData->partitionTable.forEachConfiguration( [&](Neon::Execution execution, @@ -306,7 +307,7 @@ auto dField::operator()(const Neon::index_3d& idxGlobal, auto& partition = mData->partitionTable.getPartition(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); - auto& span = mData->grid->getSpan(Neon::Execution::host,partitionIdx, Neon::DataView::STANDARD); + auto& span = mData->grid->getSpan(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); Idx idx; bool isOk = span.setAndValidate(idx, localIDx.x, localIDx.y, localIDx.z); if (!isOk) { @@ -326,7 +327,7 @@ auto dField::getReference(const Neon::index_3d& idxGlobal, auto& partition = mData->partitionTable.getPartition(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); - auto& span = mData->grid->getSpan(Neon::Execution::host,partitionIdx, Neon::DataView::STANDARD); + auto& span = mData->grid->getSpan(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); Idx idx; bool isOk = span.setAndValidate(idx, localIDx.x, localIDx.y, localIDx.z); if (!isOk) { @@ -484,6 +485,81 @@ auto dField::initHaloUpdateTable() transfersVec.push_back(transfer); } }); + + mData->latticeHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + + int r = grid.getStencil().getRadius(); + + std::array partitions; + std::array, Data::EndPointsUtils::nConfigs> ghostZBeginIdx; + std::array, Data::EndPointsUtils::nConfigs> boundaryZBeginIdx; + std::array memPhyDim; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + for (auto endPoint : {Data::EndPoints::dst, Data::EndPoints::src}) { + ghostZBeginIdx[endPoint][static_cast(ByDirection::down)] = 0; + boundaryZBeginIdx[endPoint][static_cast(ByDirection::down)] = r; + boundaryZBeginIdx[endPoint][static_cast(ByDirection::up)] = partitions[endPoint]->dim().z; + ghostZBeginIdx[endPoint][static_cast(ByDirection::up)] = partitions[endPoint]->dim().z + r; + + memPhyDim[endPoint] = Neon::size_4d( + 1, + size_t(partitions[endPoint]->dim().x), + size_t(partitions[endPoint]->dim().x) * partitions[endPoint]->dim().y, + size_t(partitions[endPoint]->dim().x) * partitions[endPoint]->dim().y * (partitions[endPoint]->dim().z + 2 * r)); + } + + for (int j = 0; j < this->getCardinality(); j++) { + auto const& stencil = this->getGrid().getStencil(); + if (this->getCardinality() != stencil.nPoints()) { + continue; + } + T* srcMem = partitions[Data::EndPoints::src]->mem(); + T* dstMem = partitions[Data::EndPoints::dst]->mem(); + + Neon::size_4d srcBoundaryBuff(0, 0, boundaryZBeginIdx[Data::EndPoints::src][static_cast(byDirection)], j); + Neon::size_4d dstGhostBuff(0, 0, ghostZBeginIdx[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))], j); + + // std::cout << "To " << dstGhostBuff << " prt " << partitions[Data::EndPoints::dst]->prtID() << " From " << srcBoundaryBuff << "(src dim" << partitions[Data::EndPoints::src]->dim() << ")" << std::endl; + // std::cout << "dst mem " << partitions[Data::EndPoints::dst]->mem() << " " << std::endl; + // std::cout << "dst pitch " << (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum() << " " << std::endl; + // std::cout << "dst dstGhostBuff " << dstGhostBuff << " " << std::endl; + // std::cout << "dst pitch all" << memPhyDim[Data::EndPoints::dst] << " " << std::endl; + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + (dstGhostBuff * memPhyDim[Data::EndPoints::dst]).rSum(), dstGhostBuff}, + {setIdxSrc, srcMem + (srcBoundaryBuff * memPhyDim[Data::EndPoints::src]).rSum(), srcBoundaryBuff}, + sizeof(T) * + r * + partitions[Data::EndPoints::src]->dim().x * + partitions[Data::EndPoints::src]->dim().y); + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + if (ByDirection::up == byDirection && !(stencil.points()[j].z > 0)) { + continue; + } + if (ByDirection::down == byDirection && !(stencil.points()[j].z < 0)) { + continue; + } + // std::cout << transfer.toString() << std::endl; + transfersVec.push_back(transfer); + } + } + }); // // mData->latticeHaloUpdateTable.forEachPutConfiguration( // bk, [&](Neon::SetIdx setIdxSrc, @@ -608,7 +684,33 @@ auto dField:: execution); } } else { - NEON_DEV_UNDER_CONSTRUCTION(""); + auto transfers = bk.template newDataSet>(); + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->latticeHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_DEV_UNDER_CONSTRUCTION(""); + } } Neon::set::Container SyncContainer = Neon::set::Container::factorySynchronization( diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dGrid.h b/libNeonDomain/include/Neon/domain/details/dGrid/dGrid.h index 226b0bb8..5d56e526 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dGrid.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dGrid.h @@ -20,7 +20,7 @@ #include "Neon/domain/interface/LaunchConfig.h" #include "Neon/domain/interface/Stencil.h" #include "Neon/domain/interface/common.h" - +#include "Neon/domain/tools/SpaceCurves.h" #include "Neon/domain/tools/SpanTable.h" #include "Neon/domain/patterns/PatternScalar.h" @@ -84,7 +84,8 @@ class dGrid : public Neon::domain::interface::GridBaseTemplate const SparsityPattern& activeCellLambda /**< InOrOutLambda({x,y,z}->{true, false}) */, const Neon::domain::Stencil& stencil /**< Stencil used by any computation on the grid */, const Vec_3d& spacing = Vec_3d(1, 1, 1) /**< Spacing, i.e. size of a voxel */, - const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */); + const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); /** * Returns a LaunchParameters configured for the specified inputs. diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dGrid_imp.h b/libNeonDomain/include/Neon/domain/details/dGrid/dGrid_imp.h index 297971de..a263400a 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dGrid_imp.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dGrid_imp.h @@ -8,12 +8,18 @@ template dGrid::dGrid(const Neon::Backend& backend, const Neon::int32_3d& dimension, const ActiveCellLambda& /*activeCellLambda*/, - const Neon::domain::Stencil& stencil, - const Vec_3d& spacing, - const Vec_3d& origin) + const Neon::domain::Stencil& stencil, + const Vec_3d& spacing, + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) { mData = std::make_shared(backend); const index_3d defaultBlockSize(256, 1, 1); + if (encoderType != Neon::domain::tool::spaceCurves::EncoderType::sweep) { + NeonException exce("dGrid"); + exce << "dGRid only supports sweep space filling curves"; + NEON_THROW(exce); + } { auto nElementsPerPartition = backend.devSet().template newDataSet(0); @@ -26,7 +32,9 @@ dGrid::dGrid(const Neon::Backend& backend, nElementsPerPartition, Neon::index_3d(256, 1, 1), spacing, - origin); + origin, + Neon::domain::tool::spaceCurves::EncoderType::sweep, + {0, 0, 0}); } const int32_t numDevices = getBackend().devSet().setCardinality(); @@ -83,15 +91,17 @@ dGrid::dGrid(const Neon::Backend& backend, Neon::DataView dw, dSpan& span) { span.mDataView = dw; - span.mZHaloRadius = setCardinality == 1 ? 0 : mData->halo.z; - span.mZBoundaryRadius = mData->halo.z; + span.mZghostRadius = setCardinality == 1 ? 0 : mData->halo.z; + span.mZboundaryRadius = mData->halo.z; + span.mMaxZInDomain = mData->partitionDims[setIdx].z; switch (dw) { case Neon::DataView::STANDARD: { // Only works z partitions. assert(mData->halo.x == 0 && mData->halo.y == 0); - span.mDim = mData->partitionDims[setIdx]; + span.mSpanDim = mData->partitionDims[setIdx]; + break; } case Neon::DataView::BOUNDARY: { @@ -99,8 +109,8 @@ dGrid::dGrid(const Neon::Backend& backend, // Only works z partitions. assert(mData->halo.x == 0 && mData->halo.y == 0); - span.mDim = mData->partitionDims[setIdx]; - span.mDim.z = span.mZBoundaryRadius * 2; + span.mSpanDim = mData->partitionDims[setIdx]; + span.mSpanDim.z = span.mZboundaryRadius * 2; break; } @@ -109,12 +119,12 @@ dGrid::dGrid(const Neon::Backend& backend, // Only works z partitions. assert(mData->halo.x == 0 && mData->halo.y == 0); - span.mDim = mData->partitionDims[setIdx]; - span.mDim.z = span.mDim.z - span.mZBoundaryRadius * 2; - if (span.mDim.z <= 0 && setCardinality > 1) { + span.mSpanDim = mData->partitionDims[setIdx]; + span.mSpanDim.z = span.mSpanDim.z - span.mZboundaryRadius * 2; + if (span.mSpanDim.z <= 0 && setCardinality > 1) { NeonException exp("dGrid"); exp << "The grid size is too small to support the data view model correctly \n"; - exp << span.mDim << " for setIdx " << setIdx << " and device " << getDevSet().devId(setIdx); + exp << span.mSpanDim << " for setIdx " << setIdx << " and device " << getDevSet().devId(setIdx); NEON_THROW(exp); } @@ -132,7 +142,7 @@ dGrid::dGrid(const Neon::Backend& backend, Neon::DataView dw, int& count) { if (Execution::host == execution) { - count = mData->spanTable.getSpan(Neon::Execution::host, setIdx, dw).mDim.rMul(); + count = mData->spanTable.getSpan(Neon::Execution::host, setIdx, dw).mSpanDim.rMul(); } }); } @@ -180,7 +190,9 @@ dGrid::dGrid(const Neon::Backend& backend, nElementsPerPartition, defaultBlockSize, spacing, - origin); + origin, + Neon::domain::tool::spaceCurves::EncoderType::sweep, + {0, 0, 0}); } } @@ -224,11 +236,11 @@ auto dGrid::newContainer(const std::string& name, { const Neon::index_3d& defaultBlockSize = getDefaultBlock(); Neon::set::Container c = Neon::set::Container::factory(name, - Neon::set::internal::ContainerAPI::DataViewSupport::on, - *this, - lambda, - defaultBlockSize, - [](const Neon::index_3d&) { return 0; }); + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + defaultBlockSize, + [](const Neon::index_3d&) { return 0; }); return c; } @@ -242,11 +254,11 @@ auto dGrid::newContainer(const std::string& name, -> Neon::set::Container { Neon::set::Container c = Neon::set::Container::factory(name, - Neon::set::internal::ContainerAPI::DataViewSupport::on, - *this, - lambda, - blockSize, - [sharedMem](const Neon::index_3d&) { return sharedMem; }); + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + blockSize, + [sharedMem](const Neon::index_3d&) { return sharedMem; }); return c; } diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dIndex.h b/libNeonDomain/include/Neon/domain/details/dGrid/dIndex.h index 3291e622..a2c57cdb 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dIndex.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dIndex.h @@ -37,9 +37,9 @@ struct dIndex NEON_CUDA_HOST_DEVICE inline explicit dIndex(const Location& location); - NEON_CUDA_HOST_DEVICE inline auto set() -> Location&; + NEON_CUDA_HOST_DEVICE inline auto setLocation() -> Location&; - NEON_CUDA_HOST_DEVICE inline auto get() const -> const Location&; + NEON_CUDA_HOST_DEVICE inline auto getLocation() const -> const Location&; }; } // namespace Neon::domain::details::dGrid diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dIndex_imp.h b/libNeonDomain/include/Neon/domain/details/dGrid/dIndex_imp.h index 4389fb3f..6426e43a 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dIndex_imp.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dIndex_imp.h @@ -16,11 +16,11 @@ NEON_CUDA_HOST_DEVICE inline dIndex::dIndex(const Location::Integer &x, mLocation.z = z; } -NEON_CUDA_HOST_DEVICE inline auto dIndex::set() -> Location& +NEON_CUDA_HOST_DEVICE inline auto dIndex::setLocation() -> Location& { return mLocation; } -NEON_CUDA_HOST_DEVICE inline auto dIndex::get() const -> const Location& +NEON_CUDA_HOST_DEVICE inline auto dIndex::getLocation() const -> const Location& { return mLocation; } diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dPartition.h b/libNeonDomain/include/Neon/domain/details/dGrid/dPartition.h index 196f6b70..c1e17b0b 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dPartition.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dPartition.h @@ -44,16 +44,16 @@ class dPartition int cardinality, Neon::index_3d fullGridSize, NghIdx* stencil = nullptr) - : m_dataView(dataView), - m_mem(mem), - m_dim(dim), - m_zHaloRadius(zHaloRadius), - m_zBoundaryRadius(zBoundaryRadius), - m_pitch(pitch), - m_prtID(prtID), - m_origin(origin), - m_cardinality(cardinality), - m_fullGridSize(fullGridSize), + : mDataView(dataView), + mMem(mem), + mDim(dim), + mZHaloRadius(zHaloRadius), + mZBoundaryRadius(zBoundaryRadius), + mPitch(pitch), + mPrtID(prtID), + mOrigin(origin), + mCardinality(cardinality), + mFullGridSize(fullGridSize), mPeriodicZ(false), mStencil(stencil) { @@ -70,21 +70,21 @@ class dPartition prtID() const -> int { - return m_prtID; + return mPrtID; } inline NEON_CUDA_HOST_DEVICE auto cardinality() const -> int { - return m_cardinality; + return mCardinality; } inline NEON_CUDA_HOST_DEVICE auto getPitchData() const -> const Pitch& { - return m_pitch; + return mPitch; } inline NEON_CUDA_HOST_DEVICE auto @@ -92,76 +92,76 @@ class dPartition int cardinalityIdx = 0) const -> int64_t { - return idx.get().x * int64_t(m_pitch.x) + - idx.get().y * int64_t(m_pitch.y) + - idx.get().z * int64_t(m_pitch.z) + - cardinalityIdx * int64_t(m_pitch.w); + return idx.getLocation().x * int64_t(mPitch.x) + + idx.getLocation().y * int64_t(mPitch.y) + + idx.getLocation().z * int64_t(mPitch.z) + + cardinalityIdx * int64_t(mPitch.w); } inline NEON_CUDA_HOST_DEVICE auto dim() const -> const Neon::index_3d { - return m_dim; + return mDim; } inline NEON_CUDA_HOST_DEVICE auto halo() const -> const Neon::index_3d { - return Neon::index_3d(0, 0, m_zHaloRadius); + return Neon::index_3d(0, 0, mZHaloRadius); } inline NEON_CUDA_HOST_DEVICE auto origin() const -> const Neon::index_3d { - return m_origin; + return mOrigin; } NEON_CUDA_HOST_DEVICE inline auto - getNghData(const Idx& eId, + getNghData(const Idx& gidx, NghIdx nghOffset, int card, const T& alternativeVal) const -> NghData { - Idx cellNgh; - const bool isValidNeighbour = nghIdx(eId, nghOffset, cellNgh); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); T val = alternativeVal; if (isValidNeighbour) { - val = operator()(cellNgh, card); + val = operator()(gidxNgh, card); } return NghData(val, isValidNeighbour); } NEON_CUDA_HOST_DEVICE inline auto - getNghData(const Idx& eId, + getNghData(const Idx& gidx, NghIdx nghOffset, int card) const -> NghData { - Idx cellNgh; - const bool isValidNeighbour = nghIdx(eId, nghOffset, cellNgh); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); T val; if (isValidNeighbour) { - val = operator()(cellNgh, card); + val = operator()(gidxNgh, card); } return NghData(val, isValidNeighbour); } - template + template NEON_CUDA_HOST_DEVICE inline auto - getNghData(const Idx& eId, + getNghData(const Idx& gidx, int card, LambdaVALID funIfValid, LambdaNOTValid funIfNOTValid = nullptr) - const -> std::enable_if_t , void> + const -> std::enable_if_t, void> { - Idx cellNgh; - const bool isValidNeighbour = nghIdx(eId, cellNgh); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); if (isValidNeighbour) { - T val = this->operator()(cellNgh, card); + T val = this->operator()(gidxNgh, card); funIfValid(val); } if constexpr (!std::is_same_v) { @@ -171,129 +171,146 @@ class dPartition } } - template + template NEON_CUDA_HOST_DEVICE inline auto - getNghData(const Idx& eId, + getNghData(const Idx& gidx, int card) const -> NghData { - NghData res; - Idx cellNgh; - const bool isValidNeighbour = nghIdx(eId, cellNgh); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); if (isValidNeighbour) { - T val = operator()(cellNgh, card); - res.set(val, true); - } else { - res.invalidate(); + T val = operator()(gidxNgh, card); + return NghData(val, isValidNeighbour); } - return res; + return NghData(); + } + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx& gidx, + int card, + T value) + -> bool + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + operator()(gidxNgh, card) = value; + } + return isValidNeighbour; } template NEON_CUDA_HOST_DEVICE inline auto - getNghData(const Idx& eId, + getNghData(const Idx& gidx, int card, T const& defaultValue) const -> NghData { NghData res(defaultValue, false); - Idx cellNgh; - const bool isValidNeighbour = nghIdx(eId, cellNgh); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); if (isValidNeighbour) { - T val = operator()(cellNgh, card); + T val = operator()(gidxNgh, card); res.set(val, true); } return res; } NEON_CUDA_HOST_DEVICE inline auto - nghVal(const Idx& eId, + nghVal(const Idx& gidx, uint8_t nghID, int card, const T& alternativeVal) const -> NghData { NghIdx nghOffset = mStencil[nghID]; - return getNghData(eId, nghOffset, card, alternativeVal); + return getNghData(gidx, nghOffset, card, alternativeVal); } /** * Get the index of the neighbor given the offset * @tparam dataView_ta - * @param[in] eId Index of the current element + * @param[in] gidx Index of the current element * @param[in] nghOffset Offset of the neighbor of interest from the current element * @param[in,out] neighbourIdx Index of the neighbor * @return Whether the neighbour is valid */ NEON_CUDA_HOST_DEVICE inline auto - nghIdx(const Idx& eId, - const NghIdx& nghOffset, - Idx& neighbourIdx) + helpGetNghIdx(const Idx& gidx, + const NghIdx& nghOffset, + Idx& neighbourIdx) const -> bool { - Idx cellNgh(eId.get().x + nghOffset.x, - eId.get().y + nghOffset.y, - eId.get().z + nghOffset.z); + Idx gidxNgh(gidx.getLocation().x + nghOffset.x, + gidx.getLocation().y + nghOffset.y, + gidx.getLocation().z + nghOffset.z); - const auto cellNghGlobal = getGlobalIndex(cellNgh); + const auto gidxNghGlobal = getGlobalIndex(gidxNgh); bool isValidNeighbour = true; - if (mPeriodicZ) { - printf("Error, periodic not implemented yet"); - assert(false); - } - - isValidNeighbour = (cellNghGlobal.x >= 0) && - (cellNghGlobal.y >= 0) && - (cellNghGlobal.z >= 0); - - // isValidNeighbour = (cellNgh.get().x < m_dim.x) && - // (cellNgh.get().y < m_dim.y) && - // (cellNgh.get().z < m_dim.z + 2 * m_zHaloRadius) && isValidNeighbour; + isValidNeighbour = (gidxNghGlobal.x >= 0) && + (gidxNghGlobal.y >= 0) && + (gidxNghGlobal.z >= 0); - isValidNeighbour = (cellNghGlobal.x < m_fullGridSize.x) && - (cellNghGlobal.y < m_fullGridSize.y) && - (cellNghGlobal.z < m_fullGridSize.z) && + isValidNeighbour = (gidxNghGlobal.x < mFullGridSize.x) && + (gidxNghGlobal.y < mFullGridSize.y) && + (gidxNghGlobal.z < mFullGridSize.z) && isValidNeighbour; if (isValidNeighbour) { - neighbourIdx = cellNgh; + neighbourIdx = gidxNgh; } return isValidNeighbour; } template NEON_CUDA_HOST_DEVICE inline auto - nghIdx(const Idx& eId, - Idx& cellNgh) + helpGetNghIdx(const Idx& gidx, + Idx& gidxNgh) const -> bool { - cellNgh = Idx(eId.get().x + xOff, - eId.get().y + yOff, - eId.get().z + zOff); - Idx cellNgh_global(cellNgh.get() + m_origin); - // const bool isValidNeighbour = (cellNgh_global >= 0 && cellNgh < (m_dim + m_halo) && cellNgh_global < m_fullGridSize); + // NghIdx offset(xOff, yOff, zOff); + // return helpGetNghIdx(gidx, offset, gidxNgh); + gidxNgh = Idx(gidx.getLocation().x + xOff, + gidx.getLocation().y + yOff, + gidx.getLocation().z + zOff); + bool isValidNeighbour = true; if constexpr (xOff > 0) { - isValidNeighbour = cellNgh.get().x < (m_dim.x) && isValidNeighbour; - isValidNeighbour = cellNgh_global.get().x <= m_fullGridSize.x && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; } if constexpr (xOff < 0) { - isValidNeighbour = cellNgh_global.get().x >= 0 && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; } if constexpr (yOff > 0) { - isValidNeighbour = cellNgh.get().y < (m_dim.y) && isValidNeighbour; - isValidNeighbour = cellNgh_global.get().y <= m_fullGridSize.y && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; } if constexpr (yOff < 0) { - isValidNeighbour = cellNgh_global.get().y >= 0 && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; } if constexpr (zOff > 0) { - isValidNeighbour = cellNgh.get().z < (m_dim.z + m_zHaloRadius * 2) && isValidNeighbour; - isValidNeighbour = cellNgh_global.get().z <= m_fullGridSize.z && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; } if constexpr (zOff < 0) { - isValidNeighbour = cellNgh_global.get().z >= m_zHaloRadius && isValidNeighbour; + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; } return isValidNeighbour; } @@ -303,7 +320,7 @@ class dPartition mem() -> T* { - return m_mem; + return mMem; } NEON_CUDA_HOST_DEVICE inline auto @@ -311,7 +328,7 @@ class dPartition const -> const T* { - return m_mem; + return mMem; } NEON_CUDA_HOST_DEVICE inline auto @@ -319,7 +336,7 @@ class dPartition int cardinalityIdx) -> T* { int64_t p = getPitch(cell, cardinalityIdx); - return m_mem[p]; + return mMem[p]; } NEON_CUDA_HOST_DEVICE inline auto @@ -327,7 +344,7 @@ class dPartition int cardinalityIdx) -> T& { int64_t p = getPitch(cell, cardinalityIdx); - return m_mem[p]; + return mMem[p]; } NEON_CUDA_HOST_DEVICE inline auto @@ -335,7 +352,7 @@ class dPartition int cardinalityIdx) const -> const T& { int64_t p = getPitch(cell, cardinalityIdx); - return m_mem[p]; + return mMem[p]; } template @@ -377,7 +394,8 @@ class dPartition } } - NEON_CUDA_HOST_DEVICE inline auto getGlobalIndex(const Idx& local) const -> Neon::index_3d + NEON_CUDA_HOST_DEVICE inline auto + getGlobalIndex(const Idx& local) const -> Neon::index_3d { // assert(local.mLocation.x >= 0 && // local.mLocation.y >= 0 && @@ -386,22 +404,35 @@ class dPartition // local.mLocation.y < m_dim.y && // local.mLocation.z < m_dim.z + m_zHaloRadius); - Neon::index_3d result = local.mLocation + m_origin; - result.z -= m_zHaloRadius; + Neon::index_3d result = local.mLocation; + result.z = result.z + mOrigin.z - mZHaloRadius; return result; } + template + NEON_CUDA_HOST_DEVICE inline auto getGlobalIndexByDirection(const Idx& local) + const -> int + { + if constexpr (Neon::index_3d::directionZ != direction) { + return local.mLocation.v[direction]; + } else { + return local.mLocation.v[Neon::index_3d::directionZ] + + mOrigin.v[Neon::index_3d::directionZ] - + mZHaloRadius; + } + } + NEON_CUDA_HOST_DEVICE inline auto getDomainSize() const -> Neon::index_3d { - return m_fullGridSize; + return mFullGridSize; } auto ioToVti(std::string const& fname, std::string const& fieldName) { - auto fnameCommplete = fname + "_" + std::to_string(m_prtID); - auto haloOrigin = Vec_3d(m_origin.x, m_origin.y, m_origin.z - m_zHaloRadius); - auto haloDim = m_dim + Neon::index_3d(0, 0, 2 * m_zHaloRadius) + 1; + auto fnameCommplete = fname + "_" + std::to_string(mPrtID); + auto haloOrigin = Vec_3d(mOrigin.x, mOrigin.y, mOrigin.z - mZHaloRadius); + auto haloDim = mDim + Neon::index_3d(0, 0, 2 * mZHaloRadius) + 1; IoToVTK io(fnameCommplete, haloDim, @@ -413,25 +444,37 @@ class dPartition io.addField([&](const Neon::index_3d& idx, int i) { return operator()(dIndex(idx), i); }, - m_cardinality, "Partition", ioToVTKns::VtiDataType_e::voxel); + mCardinality, "Partition", ioToVTKns::VtiDataType_e::voxel); io.flushAndClear(); return; } + auto getDataView() + const -> Neon::DataView + { + return mDataView; + } + + auto helpGetGlobalToLocalOffets() + const -> NghIdx* + { + return mStencil; + } + private: - Neon::DataView m_dataView; - T* m_mem; - Neon::index_3d m_dim; - int m_zHaloRadius; - int m_zBoundaryRadius; - Pitch m_pitch; - int m_prtID; - Neon::index_3d m_origin; - int m_cardinality; - Neon::index_3d m_fullGridSize; - bool mPeriodicZ; - NghIdx* mStencil; + Neon::DataView mDataView; + T* NEON_RESTRICT mMem; + Neon::index_3d mDim; + int mZHaloRadius; + int mZBoundaryRadius; + Pitch mPitch; + int mPrtID; + Neon::index_3d mOrigin; + int mCardinality; + Neon::index_3d mFullGridSize; + bool mPeriodicZ; + NghIdx* NEON_RESTRICT mStencil; }; diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dSpan.h b/libNeonDomain/include/Neon/domain/details/dGrid/dSpan.h index 74ab5ff3..c81baace 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dSpan.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dSpan.h @@ -43,11 +43,12 @@ class dSpan private: Neon::DataView mDataView; - int mZHaloRadius; - int mZBoundaryRadius; - Neon::index_3d mDim /** Dimension of the span, its values depends on the mDataView*/; + int mZghostRadius; + int mZboundaryRadius; + int mMaxZInDomain; + Neon::index_3d mSpanDim /** Dimension of the span, its values depends on the mDataView*/; }; -} // namespace Neon::domain::details::dGrid +} // namespace Neon::domain::deta ils::dGrid #include "dSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGrid/dSpan_imp.h b/libNeonDomain/include/Neon/domain/details/dGrid/dSpan_imp.h index 8f6f9fea..37bea7d7 100644 --- a/libNeonDomain/include/Neon/domain/details/dGrid/dSpan_imp.h +++ b/libNeonDomain/include/Neon/domain/details/dGrid/dSpan_imp.h @@ -10,29 +10,29 @@ dSpan::setAndValidate(Idx& idx, const -> bool { bool res = false; - idx.set().x = int(x); - idx.set().y = int(y); - idx.set().z = int(z); + idx.setLocation().x = int(x); + idx.setLocation().y = int(y); + idx.setLocation().z = int(z); - if (idx.get() < mDim) { + if (idx.getLocation() < mSpanDim) { res = true; } switch (mDataView) { case Neon::DataView::STANDARD: { - idx.set().z += mZHaloRadius; + idx.setLocation().z += mZghostRadius; return res; } case Neon::DataView::INTERNAL: { - idx.set().z += mZHaloRadius + mZBoundaryRadius; + idx.setLocation().z += mZghostRadius + mZboundaryRadius; return res; } case Neon::DataView::BOUNDARY: { - idx.set().z += idx.get().z < mZBoundaryRadius - ? 0 - : (mDim.z - 1) + (-1 * mZBoundaryRadius /* we remove zBoundaryRadius as the first zBoundaryRadius will manage the lower slices */); - idx.set().z += mZHaloRadius; + idx.setLocation().z += idx.getLocation().z < mZboundaryRadius + ? 0 + : (mMaxZInDomain - 1) + (-1 * mZboundaryRadius /* we remove zBoundaryRadius as the first zBoundaryRadius will manage the lower slices */); + idx.setLocation().z += mZghostRadius; return res; } @@ -51,19 +51,19 @@ NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetDataView() NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetZHaloRadius() const -> int const& { - return mZHaloRadius; + return mZghostRadius; } NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetZBoundaryRadius() const -> int const& { - return mZBoundaryRadius; + return mZboundaryRadius; } NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetDim() const -> Neon::index_3d const& { - return mDim; + return mSpanDim; } } // namespace Neon::domain::details::dGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dField.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dField.h new file mode 100644 index 00000000..0dd26cde --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dField.h @@ -0,0 +1,197 @@ +#pragma once + +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/DevSet.h" +#include "Neon/set/HuOptions.h" + + +#include "Neon/domain/aGrid.h" +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/domain/tools/PartitionTable.h" + +#include "Neon/domain/tools/HaloUpdateTable1DPartitioning.h" +#include "dPartition.h" + +namespace Neon::domain::details::disaggregated::dGrid { + + +/** + * Create and manage a dense field on both GPU and CPU. dField also manages updating + * the GPU->CPU and CPU-GPU as well as updating the halo. User can use dField to populate + * the field with data as well was exporting it to VTI. To create a new dField, + * use the newField function in dGrid. + */ +template +class dField : public Neon::domain::interface::FieldBaseTemplate, + int> +{ + friend dGrid; + + public: + static constexpr int Cardinality = C; + using Type = T; + using Self = dField; + using Grid = dGrid; + using Field = dField; + using Partition = dPartition; + using Idx = typename Partition::Idx; + using NghIdx = typename Partition::NghIdx; + using NghData = typename Partition::NghData; + + /** + * Empty constructor + */ + dField(); + + /** + * Destructor + */ + virtual ~dField() = default; + + /** + * Self operator + */ + auto self() -> Self&; + + /** + * Self operator + */ + auto self() const -> const Self&; + + auto constSelf() const -> const Self&; + + /** + * Returns the metadata associated with the element in location idx. + * If the element is not active (it does not belong to the voxelized domain), + * then the default outside value is returned. + */ + auto operator()(const Neon::index_3d& idx, + const int& cardinality) const + -> Type final; + + auto ioVtiAllocator(std::string name) + { + mData->memoryField.ioToVtk(name, name); + } + /** + * Creates a container that executes a halo update operation on host or device + */ + auto newHaloUpdate(Neon::set::StencilSemantic semantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container; + + virtual auto + getReference(const Neon::index_3d& idx, + const int& cardinality) + -> Type& final; + + /** + * It copies host data to the device + * @param streamSetId + */ + auto updateDeviceData(int streamSetId) + -> void; + + /** + * It copies device data to the host + * @param streamSetId + */ + auto updateHostData(int streamSetId) + -> void; + + /** + * Returns a constant reference to a specific partition based on a set of parameters: + * execution type, target device, dataView + */ + auto getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) const + -> const Partition& final; + + /** + * Return a reference to a specific partition based on a set of parameters: + * execution type, target device, dataView + */ + auto getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) + -> Partition& final; + + auto ioToVtiPartitions(const std::string& fname) const -> void; + + static auto swap(Field& A, Field& B) + -> void; + + private: + auto initHaloUpdateTable() + -> void; + + + /** Convert a global 3d index into a Partition local offset */ + auto helpGlobalIdxToPartitionIdx(Neon::index_3d const& index) + const -> std::pair; + + dField(const std::string& fieldUserName, + Neon::DataUse dataUse, + const Neon::MemoryOptions& memoryOptions, + const Grid& grid, + const Neon::set::DataSet& dims, + int zHaloRadius, + Neon::domain::haloStatus_et::e haloStatus, + int cardinality, + Neon::set::MemSet& stencilIdTo3dOffset); + + struct Data + { + Data() = default; + Data(Neon::Backend const& bk) + { + partitionTable.init(bk); + } + + enum EndPoints + { + src = 1, + dst = 0 + }; + + struct EndPointsUtils + { + static constexpr int nConfigs = 2; + }; + + struct ReductionInformation + { + std::vector startIDByView /* one entry for each cardinality */; + std::vector nElementsByView /* one entry for each cardinality */; + }; + + Neon::domain::tool::PartitionTable partitionTable; + Neon::domain::tool::HaloTable1DPartitioning latticeHaloUpdateTable; + Neon::domain::tool::HaloTable1DPartitioning soaHaloUpdateTable; + Neon::domain::tool::HaloTable1DPartitioning aosHaloUpdateTable; + Neon::aGrid::Field memoryField; + + Neon::DataUse dataUse; + Neon::MemoryOptions memoryOptions; + int cardinality; + + std::shared_ptr grid; + static constexpr int zHaloDim = 1; + static constexpr Neon::domain::haloStatus_et::e haloStatus = Neon::domain::haloStatus_et::e::ON; + + Neon::set::MemSet stencilNghIndex; + }; + + std::shared_ptr mData; + auto getData() -> Data&; +}; + + +} // namespace Neon::domain::details::disaggregated::dGrid diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dField_imp.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dField_imp.h new file mode 100644 index 00000000..1b949d15 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dField_imp.h @@ -0,0 +1,760 @@ +#pragma once +#include "dField.h" + +namespace Neon::domain::details::disaggregated::dGrid { + +template +dField::dField() +{ + mData = std::make_shared(); +} + +template +dField::dField(const std::string& fieldUserName, + Neon::DataUse dataUse, + const Neon::MemoryOptions& memoryOptions, + const Grid& grid, + const Neon::set::DataSet& dims, + int zHaloRadius, + Neon::domain::haloStatus_et::e haloStatus, + int cardinality, + Neon::set::MemSet& stencilIdTo3dOffset) + : Neon::domain::interface::FieldBaseTemplate(&grid, + fieldUserName, + "dField", + cardinality, + T(0), + dataUse, + memoryOptions, + haloStatus) +{ + + // only works if dims in x and y direction for all partitions match + for (int i = 0; i < dims.size() - 1; ++i) { + for (int j = i + 1; j < dims.size(); ++j) { + if (dims[i].x != dims[j].x || dims[i].y != dims[j].y) { + NeonException exc("dField_t"); + exc << "New dField only works on partitioning along z axis."; + NEON_THROW(exc); + } + } + } + + mData = std::make_shared(grid.getBackend()); + mData->dataUse = dataUse; + mData->memoryOptions = memoryOptions; + mData->cardinality = cardinality; + mData->memoryOptions = memoryOptions; + mData->grid = std::make_shared(grid); + + + const int haloRadius = 1; + if (zHaloRadius != 1) { + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + + Neon::set::DataSet origins = this->getGrid().getBackend().template newDataSet({0, 0, 0}); + { // Computing origins + origins.forEachSeq( + [&](Neon::SetIdx setIdx, Neon::index_3d& val) { + if (setIdx == 0) { + val.z = 0; + return; + } + const Neon::SetIdx proceedingIdx = setIdx - 1; + val.z = origins[proceedingIdx].z + dims[proceedingIdx].z; + }); + } + + + { // Setting up partitions + Neon::aGrid const& aGrid = mData->grid->helpFieldMemoryAllocator(); + mData->memoryField = aGrid.newField(fieldUserName + "-storage", cardinality, T(), dataUse, memoryOptions); + // const int setCardinality = mData->grid->getBackend().getDeviceCount(); + mData->partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + typename Self::Partition& partition) { + auto memoryFieldPartition = mData->memoryField.getPartition(execution, setIdx, Neon::DataView::STANDARD); + + partition = dPartition(dw, + memoryFieldPartition.mem(), + dims[setIdx], + dims[setIdx].x * dims[setIdx].y, + setIdx.idx(), + origins[setIdx], + mData->cardinality, + mData->grid->getDimension(), + stencilIdTo3dOffset.rawMem(execution, setIdx)); + }); + } + + { // Setting Reduction information + mData->partitionTable.forEachConfigurationWithUserData( + [&](Neon::Execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + typename Self::Partition&, + typename Data::ReductionInformation& reductionInfo) { + switch (dw) { + case Neon::DataView::STANDARD: { + // old structure [dv_id][c][i] + if (grid.getBackend().devSet().setCardinality() == 1) { + // As the number of devices is 1, we don't have halos. + reductionInfo.startIDByView.push_back(0); + reductionInfo.nElementsByView.push_back(int(dims[setIdx.idx()].rMul())); + } else { + switch (mData->memoryOptions.getOrder()) { + case MemoryLayout::structOfArrays: { + for (int c = 0; c < mData->cardinality; ++c) { + // To compute the start point we need to + // jump the previous cardinalities -> c * dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + 2 * haloRadius) + // jump one halo -> dims[setIdx].x * dims[setIdx].y * haloRadius + int const startPoint = c * dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + 2 * haloRadius) + + dims[setIdx].x * dims[setIdx].y * haloRadius; + int const nElements = dims[setIdx].rMul(); + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + break; + } + case MemoryLayout::arrayOfStructs: { + int const startPoint = dims[setIdx].x * dims[setIdx].y * haloRadius * mData->cardinality; + int const nElements = dims[setIdx].x * dims[setIdx].y * dims[setIdx].z * mData->cardinality; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + + break; + } + } + } + break; + } + case Neon::DataView::INTERNAL: { + if (grid.getBackend().devSet().setCardinality() > 1) { + switch (mData->memoryOptions.getOrder()) { + case MemoryLayout::structOfArrays: { + for (int c = 0; c < mData->cardinality; ++c) { + + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = c * dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + 2 * haloRadius) + + dims[setIdx].x * dims[setIdx].y * (haloRadius + boundaryRadius); + + int const nElements = dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z - 2 * haloRadius); + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + break; + } + case MemoryLayout::arrayOfStructs: { + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = dims[setIdx].x * dims[setIdx].y * (haloRadius + boundaryRadius) * mData->cardinality; + int const nElements = dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z - 2 * haloRadius) * mData->cardinality; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + + break; + } + } + } + break; + } + case Neon::DataView::BOUNDARY: { + if (grid.getBackend().devSet().setCardinality() > 1) { + switch (mData->memoryOptions.getOrder()) { + case MemoryLayout::structOfArrays: { + for (int c = 0; c < mData->cardinality; ++c) { + { // up + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = c * dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + 2 * haloRadius) + + dims[setIdx].x * dims[setIdx].y * haloRadius; + int const nElements = dims[setIdx].x * dims[setIdx].y * boundaryRadius; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + + { // down + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = c * dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + 2 * haloRadius) + + dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + haloRadius - boundaryRadius); + int const nElements = dims[setIdx].x * dims[setIdx].y * boundaryRadius; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + } + break; + } + case MemoryLayout::arrayOfStructs: { + { // up + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = dims[setIdx].x * dims[setIdx].y * haloRadius * mData->cardinality; + int const nElements = dims[setIdx].x * dims[setIdx].y * boundaryRadius * mData->cardinality; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + { // down + auto const boundaryRadius = mData->zHaloDim; + int const startPoint = dims[setIdx].x * dims[setIdx].y * (dims[setIdx].z + haloRadius - boundaryRadius) * mData->cardinality; + int const nElements = dims[setIdx].x * dims[setIdx].y * boundaryRadius * mData->cardinality; + + reductionInfo.startIDByView.push_back(startPoint); + reductionInfo.nElementsByView.push_back(nElements); + } + break; + } + } + } + break; + } + default: { + NeonException exp("dFieldDev_t"); + exp << " Invalid DataView"; + NEON_THROW(exp); + } + } + }); + + this->initHaloUpdateTable(); + } +} + + +template +auto dField::updateDeviceData(int streamSetId) + -> void +{ + mData->memoryField.updateDeviceData(streamSetId); +} + +template +auto dField::updateHostData(int streamSetId) + -> void +{ + mData->memoryField.updateHostData(streamSetId); +} + +template +auto dField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) + const + -> const Partition& +{ + const Neon::DataUse dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition const& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto dField::getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) + -> Partition& +{ + const auto dataUse = this->getDataUse(); + bool isOk = Neon::ExecutionUtils::checkCompatibility(dataUse, execution); + if (isOk) { + Partition& result = mData->partitionTable.getPartition(execution, setIdx, dataView); + return result; + } + std::stringstream message; + message << "The requested execution mode ( " << execution << " ) is not compatible with the field DataUse (" << dataUse << ")"; + NEON_THROW_UNSUPPORTED_OPERATION(message.str()); +} + +template +auto dField::operator()(const Neon::index_3d& idxGlobal, + const int& cardinality) const + -> Type +{ + auto [localIDx, partitionIdx] = helpGlobalIdxToPartitionIdx(idxGlobal); + auto& partition = mData->partitionTable.getPartition(Neon::Execution::host, + partitionIdx, + Neon::DataView::STANDARD); + auto& span = mData->grid->getSpan(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); + Idx idx; + bool isOk = span.setAndValidate(idx, localIDx.x, localIDx.y, localIDx.z); + if (!isOk) { +#pragma omp barrier + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + auto& result = partition(idx, cardinality); + return result; +} + +template +auto dField::getReference(const Neon::index_3d& idxGlobal, + const int& cardinality) + -> Type& +{ + auto [localIDx, partitionIdx] = helpGlobalIdxToPartitionIdx(idxGlobal); + auto& partition = mData->partitionTable.getPartition(Neon::Execution::host, + partitionIdx, + Neon::DataView::STANDARD); + auto& span = mData->grid->getSpan(Neon::Execution::host, partitionIdx, Neon::DataView::STANDARD); + Idx idx; + bool isOk = span.setAndValidate(idx, localIDx.x, localIDx.y, localIDx.z); + if (!isOk) { +#pragma omp barrier + NEON_THROW_UNSUPPORTED_OPERATION(""); + } + auto& result = partition(idx, cardinality); + return result; +} + +template +auto dField::initHaloUpdateTable() + -> void +{ + auto& grid = this->getGrid(); + auto bk = grid.getBackend(); + auto getNghSetIdx = [&](SetIdx setIdx, Neon::domain::tool::partitioning::ByDirection direction) { + int res; + if (direction == Neon::domain::tool::partitioning::ByDirection::up) { + res = (setIdx + 1) % bk.getDeviceCount(); + } else { + res = (setIdx + bk.getDeviceCount() - 1) % bk.getDeviceCount(); + } + return res; + }; + + mData->soaHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + std::array, Data::EndPointsUtils::nConfigs> beginBoundary; + std::array partitions; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + size_t const transferSize = [&] { + typename Data::EndPoints anyEndPoint = Data::EndPoints::dst; + size_t res = partitions[anyEndPoint]->dim().x * + partitions[anyEndPoint]->dim().y * + this->getCardinality(); + return res; + }(); + + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::down)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + 1 * size_t(this->getCardinality()); + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + size_t(partitions[Data::EndPoints::src]->dim().z) * + this->getCardinality(); + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::down)] = 0; + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::dst]->dim().x) * + size_t(partitions[Data::EndPoints::dst]->dim().y) * + size_t(partitions[Data::EndPoints::dst]->dim().z + 1) * + this->getCardinality(); + + + T* srcMem = partitions[Data::EndPoints::src]->mem(); + T* dstMem = partitions[Data::EndPoints::dst]->mem(); + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + beginBoundary[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))]}, + {setIdxSrc, srcMem + beginBoundary[Data::EndPoints::src][static_cast(byDirection)]}, + sizeof(T) * transferSize); + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + + // std::cout << transfer.toString() << std::endl; + transfersVec.push_back(transfer); + } + }); + + mData->aosHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + std::array, Data::EndPointsUtils::nConfigs> beginBoundary; + std::array partitions; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + size_t const transferSize = [&] { + typename Data::EndPoints anyEndPoint = Data::EndPoints::dst; + size_t res = partitions[anyEndPoint]->dim().x * + partitions[anyEndPoint]->dim().y * + this->getCardinality(); + return res; + }(); + + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::down)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + 1 * size_t(this->getCardinality()); + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + size_t(partitions[Data::EndPoints::src]->dim().z) * + this->getCardinality(); + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::down)] = 0; + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::dst]->dim().x) * + size_t(partitions[Data::EndPoints::dst]->dim().y) * + size_t(partitions[Data::EndPoints::dst]->dim().z + 1) * + this->getCardinality(); + + + T* srcMem = partitions[Data::EndPoints::src]->mem(); + T* dstMem = partitions[Data::EndPoints::dst]->mem(); + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + beginBoundary[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))]}, + {setIdxSrc, srcMem + beginBoundary[Data::EndPoints::src][static_cast(byDirection)]}, + sizeof(T) * transferSize); + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + + // std::cout << transfer.toString() << std::endl; + transfersVec.push_back(transfer); + } + }); + + mData->latticeHaloUpdateTable.forEachPutConfiguration( + bk, [&](Neon::SetIdx setIdxSrc, + Execution execution, + Neon::domain::tool::partitioning::ByDirection byDirection, + std::vector& transfersVec) { + { + using namespace Neon::domain::tool::partitioning; + + Neon::SetIdx setIdxDst = getNghSetIdx(setIdxSrc, byDirection); + std::array, Data::EndPointsUtils::nConfigs> beginBoundary; + std::array partitions; + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + size_t const transferByteOneCardinality = [&] { + typename Data::EndPoints anyEndPoint = Data::EndPoints::dst; + size_t res = + partitions[anyEndPoint]->dim().x * + partitions[anyEndPoint]->dim().y * + sizeof(T); + return res; + }(); + + + partitions[Data::EndPoints::dst] = &this->getPartition(execution, setIdxDst, Neon::DataView::STANDARD); + partitions[Data::EndPoints::src] = &this->getPartition(execution, setIdxSrc, Neon::DataView::STANDARD); + + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::down)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + 1 * size_t(this->getCardinality()); + + beginBoundary[Data::EndPoints::src][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::src]->dim().x) * + size_t(partitions[Data::EndPoints::src]->dim().y) * + size_t(partitions[Data::EndPoints::src]->dim().z) * + this->getCardinality(); + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::down)] = 0; + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirection::up)] = + size_t(partitions[Data::EndPoints::dst]->dim().x) * + size_t(partitions[Data::EndPoints::dst]->dim().y) * + size_t(partitions[Data::EndPoints::dst]->dim().z + 1) * + this->getCardinality(); + + if (ByDirection::up == byDirection && bk.isLastDevice(setIdxSrc)) { + return; + } + + if (ByDirection::down == byDirection && bk.isFirstDevice(setIdxSrc)) { + return; + } + + bool canBeFusedWithPrevious = false; + for (int j = 0; j < this->getCardinality(); j++) { + auto const& stencil = this->getGrid().getStencil(); + if (this->getCardinality() != stencil.nPoints()) { + continue; + } + T* srcMem = partitions[Data::EndPoints::src]->mem(); + T* dstMem = partitions[Data::EndPoints::dst]->mem(); + + Neon::set::MemoryTransfer transfer({setIdxDst, dstMem + + beginBoundary[Data::EndPoints::dst][static_cast(ByDirectionUtils::invert(byDirection))] + + size_t(partitions[Data::EndPoints::dst]->dim().x) * size_t(partitions[Data::EndPoints::dst]->dim().y) * size_t(j)}, + {setIdxSrc, srcMem + beginBoundary[Data::EndPoints::src][static_cast(byDirection)] + + size_t(partitions[Data::EndPoints::dst]->dim().x) * size_t(partitions[Data::EndPoints::dst]->dim().y) * size_t(j)}, + transferByteOneCardinality); + + if (ByDirection::up == byDirection && !(stencil.points()[j].z > 0)) { + std::cout << "j " << j << " " << stencil.points()[j] << "skipped" << std::endl; + canBeFusedWithPrevious = false; + continue; + } + if (ByDirection::down == byDirection && !(stencil.points()[j].z < 0)) { + std::cout << "j " << j << " " << stencil.points()[j] << "skipped" << std::endl; + canBeFusedWithPrevious = false; + continue; + } + if (canBeFusedWithPrevious) { + transfersVec[transfersVec.size()-1].size += transferByteOneCardinality; + std::cout << "j " << j << " " << stencil.points()[j] << "fused" << std::endl; + } else { + transfersVec.push_back(transfer); + std::cout << "j " << j << " " << stencil.points()[j] << "added " << transfer.toString() << std::endl; + canBeFusedWithPrevious = true; + } + } + } + }); +} + + +template +auto dField::ioToVtiPartitions(std::string const& fname) const -> void +{ + auto bk = mData->grid->getBackend(); + bk.forEachDeviceSeq([&](Neon::SetIdx setIdx) { + auto partition = this->getPartition(Neon::Execution::device, setIdx, Neon::DataView::STANDARD); + partition.ioToVti(fname, "sdfsd"); + }); +} + +template +auto dField:: + newHaloUpdate(Neon::set::StencilSemantic stencilSemantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container +{ + + + // We need to define a graph of Containers + // One for the actual memory transfer + // One for the synchronization + // The order depends on the transfer mode: put or get + Neon::set::Container dataTransferContainer; + auto const& bk = this->getGrid().getBackend(); + + if (stencilSemantic == Neon::set::StencilSemantic::standard) { + auto transfers = bk.template newDataSet>(); + + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->soaHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->aosHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + } + } else { + auto transfers = bk.template newDataSet>(); + if (this->getMemoryOptions().getOrder() == Neon::MemoryLayout::structOfArrays) { + for (auto byDirection : {tool::partitioning::ByDirection::up, + tool::partitioning::ByDirection::down}) { + + auto const& tableEntryByDir = mData->latticeHaloUpdateTable.get(transferMode, + execution, + byDirection); + + tableEntryByDir.forEachSeq([&](SetIdx setIdx, auto const& tableEntryByDirBySetIdx) { + transfers[setIdx].insert(std::end(transfers[setIdx]), + std::begin(tableEntryByDirBySetIdx), + std::end(tableEntryByDirBySetIdx)); + }); + } + dataTransferContainer = + Neon::set::Container::factoryDataTransfer( + *this, + transferMode, + stencilSemantic, + transfers, + execution); + + + } else { + NEON_DEV_UNDER_CONSTRUCTION(""); + } + } + Neon::set::Container SyncContainer = + Neon::set::Container::factorySynchronization( + *this, + Neon::set::SynchronizationContainerType::hostOmpBarrier); + + Neon::set::container::Graph graph(this->getBackend()); + const auto& dataTransferNode = graph.addNode(dataTransferContainer); + const auto& syncNode = graph.addNode(SyncContainer); + + switch (transferMode) { + case Neon::set::TransferMode::put: + graph.addDependency(dataTransferNode, syncNode, Neon::GraphDependencyType::data); + break; + case Neon::set::TransferMode::get: + graph.addDependency(syncNode, dataTransferNode, Neon::GraphDependencyType::data); + break; + default: + NEON_THROW_UNSUPPORTED_OPTION(); + break; + } + + graph.removeRedundantDependencies(); + + Neon::set::Container output = + Neon::set::Container::factoryGraph("dGrid-Halo-Update", + graph, + [](Neon::SetIdx, Neon::set::Loader&) {}); + return output; +} + +template +auto dField::self() -> dField::Self& +{ + return *this; +} + +template +auto dField::self() const -> const dField::Self& +{ + return *this; +} + +template +auto dField::constSelf() const -> const dField::Self& +{ + return *this; +} + +template +auto dField::swap(dField::Field& A, dField::Field& B) -> void +{ + Neon::domain::interface::FieldBaseTemplate::swapUIDBeforeFullSwap(A, B); + std::swap(A, B); +} + +template +auto dField::getData() + -> Data& +{ + return *(mData.get()); +} + +template +auto dField::helpGlobalIdxToPartitionIdx(Neon::index_3d const& index) + const -> std::pair +{ + Neon::index_3d result = index; + + // since we partition along the z-axis, only the z-component of index will change + const int32_t setCardinality = mData->grid->getBackend().devSet().setCardinality(); + if (setCardinality == 1) { + return {result, 0}; + } + + Neon::set::DataSet firstZindex = mData->grid->helpGetFirstZindex(); + + for (int i = 0; i < setCardinality - 1; i++) { + if (index.z < firstZindex[i + 1]) { + result.z -= firstZindex[i]; + return {result, i}; + } + } + if (index.z < this->getGrid().getDimension().z) { + result.z -= firstZindex[setCardinality - 1]; + return {result, setCardinality - 1}; + } + + NeonException exc("dField"); + exc << "Data inconsistency was detected"; + NEON_THROW(exc); +} + +} // namespace Neon::domain::details::disaggregated::dGrid diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid.h new file mode 100644 index 00000000..b4c2a005 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid.h @@ -0,0 +1,237 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/aGrid.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" +#include "Neon/domain/tools/SpaceCurves.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "Neon/domain/patterns/PatternScalar.h" + +#include "dField.h" +#include "dPartition.h" +#include "dSpan.h" + + +namespace Neon::domain::details::disaggregated::dGrid { + +/** + * dGrid is the blueprint of creating dense field. It store the number of devices, + * how data is distributed among them. User needs to create and instance of dGrid to + * be able to create field. dGrid also manages launching kernels and exporting + * fields to VTI + */ +class dGrid : public Neon::domain::interface::GridBaseTemplate +{ + public: + using Grid = dGrid; + using Idx = dIndex; + + template + using Field = dField; + + template + using Partition = typename Field::Partition; + + using Span = dSpan; + using NghIdx = typename Partition::NghIdx; + + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Span::executionThreadSpan; + using ExecutionThreadSpanIndexType = dSpan::ExecutionThreadSpanIndexType; + + template + friend class dField; + + public: + /** + * Empty constructor + */ + dGrid(); + + /** + * Copy constructor with a shallow copy semantic + */ + dGrid(const dGrid& rhs) = default; + + /** + * Destructor + */ + virtual ~dGrid() = default; + + /** + * Constructor compatible with the general grid API + */ + template + dGrid(const Neon::Backend& backend /**< Target for computation */, + const Neon::int32_3d& dimension /**< Dimension of the bounding box containing the domain */, + const SparsityPattern& activeCellLambda /**< InOrOutLambda({x,y,z}->{true, false}) */, + const Neon::domain::Stencil& stencil /**< Stencil used by any computation on the grid */, + const Vec_3d& spacing = Vec_3d(1, 1, 1) /**< Spacing, i.e. size of a voxel */, + const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + + /** + * Returns a LaunchParameters configured for the specified inputs. + * This methods used by the Container infrastructure. + */ + auto getLaunchParameters(Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) const + -> Neon::set::LaunchParameters; + + /** + * Method used by the Container infrastructure to retrieve the thread space + */ + auto getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) + const -> const Span&; + + /** + * Creates a new Field + */ + template + auto newField(const std::string& fieldUserName, + int cardinality, + T inactiveValue, + Neon::DataUse dataUse = Neon::DataUse::HOST_DEVICE, + Neon::MemoryOptions memoryOptions = Neon::MemoryOptions()) const + -> Field; + + /** + * Creates a new container running on this grid + */ + template + auto newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) const + -> Neon::set::Container; + + /** + * Creates a new container running on this grid + */ + template + auto newContainer(const std::string& name, + LoadingLambda lambda) + const + -> Neon::set::Container; + + /** + * Switch for different reduction engines. + */ + auto setReduceEngine(Neon::sys::patterns::Engine eng) + -> void; + + /** + * Creation of a new scalar type that can store output from reduction operations + */ + template + auto newPatternScalar() + const -> Neon::template PatternScalar; + + /** + * creates a container implementing a dot product + */ + template + auto dot(const std::string& name, + dField& input1, + dField& input2, + Neon::template PatternScalar& scalar) const + -> Neon::set::Container; + + /** + * creates a container implementing a norm2 operation + */ + template + auto norm2(const std::string& name, + dField& input, + Neon::template PatternScalar& scalar, + Neon::Execution execution) const + -> Neon::set::Container; + + /** + * Convert a list of 3d offsets for stencil operation in 1D local offsets + */ + auto convertToNghIdx(std::vector const& stencilOffsets) + const -> std::vector; + + /** + * Convert a list of 3d offsets for stencil operation in 1D local offsets + */ + auto convertToNghIdx(Neon::index_3d const& stencilOffsets) + const -> NghIdx; + + /** + * The methods returns true if the the domain index has been flagged as active during initialization + */ + auto isInsideDomain(const Neon::index_3d& idx) + const -> bool final; + + auto getSetIdx(const Neon::index_3d& idx) + const -> int32_t final; + /** + * Return the properties of a point + */ + auto getProperties(const Neon::index_3d& idx) const + -> GridBaseTemplate::CellProperties final; + + private: + auto helpGetPartitionDim() + const -> const Neon::set::DataSet; + + auto helpIdexPerPartition(Neon::DataView dataView = Neon::DataView::STANDARD) + const -> const Neon::set::DataSet; + + auto helpFieldMemoryAllocator() + const -> const Neon::aGrid&; + + auto helpGetFirstZindex() + const -> const Neon::set::DataSet&; + + private: + struct Data + { + Data() = default; + Data(const Neon::Backend& bk); + + // partitionDims indicates the size of each partition. For example, + // given a gridDim of size 77 (in 1D for simplicity) distrusted over 5 + // device, it should be distributed as (16 16 15 15 15) + Neon::set::DataSet partitionDims /** Bounding box size of each partition */; + Neon::set::DataSet firstZIndex /** Lower z-index for each partition */; + Neon::domain::tool::SpanTable spanTable /** Span for each data view configurations */; + Neon::domain::tool::SpanTable elementsPerPartition /** Number of indexes for each partition */; + + Neon::index_3d halo; + Neon::sys::patterns::Engine reduceEngine; + Neon::aGrid memoryGrid /** memory allocator for fields */; + + Neon::set::MemSet stencilIdTo3dOffset; + }; + + std::shared_ptr mData; +}; + +} // namespace Neon::domain::details::dGrid +#include "dField_imp.h" +#include "dGrid_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid_imp.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid_imp.h new file mode 100644 index 00000000..2cbb976a --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dGrid_imp.h @@ -0,0 +1,306 @@ +#pragma once +#include "dGrid.h" + +namespace Neon::domain::details::disaggregated::dGrid { + + +template +dGrid::dGrid(const Neon::Backend& backend, + const Neon::int32_3d& dimension, + const ActiveCellLambda& /*activeCellLambda*/, + const Neon::domain::Stencil& stencil, + const Vec_3d& spacing, + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) +{ + mData = std::make_shared(backend); + const index_3d defaultBlockSize(256, 1, 1); + if (encoderType != Neon::domain::tool::spaceCurves::EncoderType::sweep) { + NeonException exce("dGrid"); + exce << "dGRid only supports sweep space filling curves"; + NEON_THROW(exce); + } + + { + auto nElementsPerPartition = backend.devSet().template newDataSet(0); + // We do an initialization with nElementsPerPartition to zero, + // then we reset to the computed number. + dGrid::GridBase::init("dGridDisg", + backend, + dimension, + stencil, + nElementsPerPartition, + Neon::index_3d(256, 1, 1), + spacing, + origin, + Neon::domain::tool::spaceCurves::EncoderType::sweep, + {0, 0, 0}); + } + + const int32_t numDevices = getBackend().devSet().setCardinality(); + if (numDevices == 1) { + // Single device + mData->partitionDims[0] = getDimension(); + mData->firstZIndex[0] = 0; + } else if (getDimension().z < numDevices) { + NeonException exc("dGrid_t"); + exc << "The grid size in the z-direction (" << getDimension().z << ") is less the number of devices (" << numDevices + << "). It is ambiguous how to distribute the gird"; + NEON_THROW(exc); + } else { + // we only partition along the z-direction. Each partition has uniform_z + // along the z-direction. The rest is distribute to make the partitions + // as equal as possible + int32_t uniform_z = getDimension().z / numDevices; + int32_t reminder = getDimension().z % numDevices; + + mData->firstZIndex[0] = 0; + backend.forEachDeviceSeq([&](const Neon::SetIdx& setIdx) { + mData->partitionDims[setIdx].x = getDimension().x; + mData->partitionDims[setIdx].y = getDimension().y; + if (setIdx < reminder) { + mData->partitionDims[setIdx].z = uniform_z + 1; + } else { + mData->partitionDims[setIdx].z = uniform_z; + } + if (setIdx.idx() > 0) { + mData->firstZIndex[setIdx] = mData->firstZIndex[setIdx - 1] + + mData->partitionDims[setIdx - 1].z; + } + }); + } + + { // Computing halo size + // we partition along z so we only need halo along z + mData->halo = Neon::index_3d(0, 0, 0); + mData->halo.z = 1; + } + + { // Computing halo size + for (const auto& dw : DataViewUtil::validOptions()) { + getDefaultLaunchParameters(dw) = getLaunchParameters(dw, defaultBlockSize, 0); + } + } + + { // Initialization of the span table + const int setCardinality = getDevSet().setCardinality(); + mData->spanTable.forEachConfiguration([&](Neon::Execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + dSpan& span) { + span.mDataView = dw; + int mZboundaryRadius = mData->halo.z; + + if (mZboundaryRadius != 1) { + NEON_THROW_UNSUPPORTED_OPERATION("") + } + + span.mMaxZInDomain = mData->partitionDims[setIdx].z; + + switch (dw) { + case Neon::DataView::STANDARD: { + // Only works z partitions. + assert(mData->halo.x == 0 && mData->halo.y == 0); + + span.mSpanDim = mData->partitionDims[setIdx]; + + break; + } + case Neon::DataView::BOUNDARY: { + auto dims = getDevSet().newDataSet(); + // Only works z partitions. + assert(mData->halo.x == 0 && mData->halo.y == 0); + + span.mSpanDim = mData->partitionDims[setIdx]; + span.mSpanDim.z = span.mZboundaryRadius * 2; + + break; + } + case Neon::DataView::INTERNAL: { + auto dims = getDevSet().newDataSet(); + // Only works z partitions. + assert(mData->halo.x == 0 && mData->halo.y == 0); + + span.mSpanDim = mData->partitionDims[setIdx]; + span.mSpanDim.z = span.mSpanDim.z - span.mZboundaryRadius * 2; + if (span.mSpanDim.z <= 0 && setCardinality > 1) { + NeonException exp("dGrid"); + exp << "The grid size is too small to support the data view model correctly \n"; + exp << span.mSpanDim << " for setIdx " << setIdx << " and device " << getDevSet().devId(setIdx); + NEON_THROW(exp); + } + + break; + } + default: { + NeonException exc("dFieldDev"); + NEON_THROW(exc); + } + } + }); + + mData->elementsPerPartition.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + int& count) { + if (Execution::host == execution) { + count = mData->spanTable.getSpan(Neon::Execution::host, setIdx, dw).mSpanDim.rMul(); + } + }); + } + + + { // a Grid allocation + auto haloStatus = Neon::domain::haloStatus_et::ON; + // haloStatus = (backend.devSet().setCardinality() == 1) ? haloStatus_et::e::OFF : haloStatus; + auto partitionMemoryDim = mData->partitionDims; + Neon::set::DataSet elementPerPartition = backend.devSet().template newDataSet( + [&](Neon::SetIdx setIdx, size_t& count) { + size_3d dim = partitionMemoryDim[setIdx.idx()].newType(); + if (haloStatus == Neon::domain::haloStatus_et::ON) { + dim.z += mData->halo.z * 2; + } + count = dim.rMul(); + }); + mData->memoryGrid = Neon::aGrid(backend, elementPerPartition); + } + + { // Stencil Idx to 3d offset + auto nPoints = backend.devSet().newDataSet(stencil.nNeighbours()); + mData->stencilIdTo3dOffset = backend.devSet().template newMemSet(Neon::DataUse::HOST_DEVICE, + 1, + backend.getMemoryOptions(), + nPoints); + for (int i = 0; i < stencil.nNeighbours(); ++i) { + for (int devIdx = 0; devIdx < backend.devSet().setCardinality(); devIdx++) { + index_3d pLong = stencil.neighbours()[i]; + Neon::int8_3d pShort = pLong.newType(); + mData->stencilIdTo3dOffset.eRef(devIdx, i) = pShort; + } + } + mData->stencilIdTo3dOffset.updateDeviceData(backend, Neon::Backend::mainStreamIdx); + } + + { // Init base class information + Neon::set::DataSet nElementsPerPartition = backend.devSet().template newDataSet([this](Neon::SetIdx idx, size_t& size) { + size = mData->partitionDims[idx.idx()].template rMulTyped(); + }); + dGrid::GridBase::init("dGrid", + backend, + dimension, + stencil, + nElementsPerPartition, + defaultBlockSize, + spacing, + origin, + Neon::domain::tool::spaceCurves::EncoderType::sweep, + {0, 0, 0}); + } +} + + +template +auto dGrid::newField(const std::string& fieldUserName, + int cardinality, + [[maybe_unused]] T inactiveValue, + Neon::DataUse dataUse, + Neon::MemoryOptions memoryOptions) const + -> dField +{ + memoryOptions = getDevSet().sanitizeMemoryOption(memoryOptions); + + const auto haloStatus = Neon::domain::haloStatus_et::ON; + + if (C != 0 && cardinality != C) { + NeonException exception("dGrid::newField Dynamic and static cardinality do not match."); + NEON_THROW(exception); + } + + dField field(fieldUserName, + dataUse, + memoryOptions, + *this, + mData->partitionDims, + mData->halo.z, + haloStatus, + cardinality, + mData->stencilIdTo3dOffset); + + return field; +} + +template +auto dGrid::newContainer(const std::string& name, + LoadingLambda lambda) + const + -> Neon::set::Container +{ + const Neon::index_3d& defaultBlockSize = getDefaultBlock(); + Neon::set::Container c = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + defaultBlockSize, + [](const Neon::index_3d&) { return 0; }); + return c; +} + +template +auto dGrid::newContainer(const std::string& name, + index_3d blockSize, + size_t sharedMem, + LoadingLambda lambda) + const + -> Neon::set::Container +{ + Neon::set::Container c = Neon::set::Container::factory(name, + Neon::set::internal::ContainerAPI::DataViewSupport::on, + *this, + lambda, + blockSize, + [sharedMem](const Neon::index_3d&) { return sharedMem; }); + return c; +} + +template +auto dGrid::newPatternScalar() const -> Neon::template PatternScalar +{ + auto pattern = Neon::PatternScalar(getBackend(), mData->reduceEngine); + + if (mData->reduceEngine == Neon::sys::patterns::Engine::CUB) { + for (auto& dataview : {Neon::DataView::STANDARD, + Neon::DataView::INTERNAL, + Neon::DataView::BOUNDARY}) { + auto launchParam = getLaunchParameters(dataview, getDefaultBlock(), 0); + for (SetIdx id = 0; id < launchParam.cardinality(); id++) { + uint32_t numBlocks = launchParam[id].cudaGrid().x * + launchParam[id].cudaGrid().y * + launchParam[id].cudaGrid().z; + pattern.getBlasSet(dataview).getBlas(id.idx()).setNumBlocks(numBlocks); + } + } + } + return pattern; +} + +template +auto dGrid::dot([[maybe_unused]] const std::string& name, + [[maybe_unused]] dField& input1, + [[maybe_unused]] dField& input2, + [[maybe_unused]] Neon::template PatternScalar& scalar) const -> Neon::set::Container +{ + NEON_DEV_UNDER_CONSTRUCTION(""); +} + +template +auto dGrid::norm2([[maybe_unused]] const std::string& name, + [[maybe_unused]] dField& input, + [[maybe_unused]] Neon::template PatternScalar& scalar, + [[maybe_unused]] Neon::Execution execution) const -> Neon::set::Container +{ + NEON_DEV_UNDER_CONSTRUCTION(""); +} + +} // namespace Neon::domain::details::disaggregated::dGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex.h new file mode 100644 index 00000000..ee01f1cc --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex.h @@ -0,0 +1,70 @@ +#pragma once + +#include "Neon/core/core.h" + +namespace Neon::domain::details::disaggregated::dGrid { + +// Common forward declarations +class dGrid; +class dSpan; +template +class dPartition; + +enum class RegionId +{ + UpGhost, + UpBoundary, + Internal, + DwBoundary, + DwGhost, +}; + +struct dIndex +{ + using OuterIdx = dIndex; + + template + friend class dPartition; + friend dSpan; + friend dGrid; + + template + friend class dField; + + // dGrid specific types + using Offset = int32_t; + using Location = index_3d; + using Count = int32_t; + + + dIndex() = default; + + Location mLocation = 0; + size_t mOffsetLocalNoCard = 0; + int32_t mRegionFirstZ; + int32_t mRegionZDim; + + // NEON_CUDA_HOST_DEVICE inline explicit dIndex(const Location::Integer& x, + // const Location::Integer& y, + // const Location::Integer& z); + + // NEON_CUDA_HOST_DEVICE inline explicit dIndex(const Location& location); + // + NEON_CUDA_HOST_DEVICE inline auto setLocation() -> Location&; + NEON_CUDA_HOST_DEVICE inline auto getLocation() const -> const Location&; + + NEON_CUDA_HOST_DEVICE inline auto getOffsetLocalNoCard() const -> size_t; + NEON_CUDA_HOST_DEVICE inline auto setOffsetLocalNoCard(size_t xyzOffset) -> void; + + NEON_CUDA_HOST_DEVICE inline auto getRegionFirstZ() const -> int32_t; + NEON_CUDA_HOST_DEVICE inline auto setRegionFirstZ(int32_t mRegionFirstZ) -> void; + + NEON_CUDA_HOST_DEVICE inline auto getRegionZDim() const -> int32_t; + NEON_CUDA_HOST_DEVICE inline auto setRegionZDim(int32_t mRegionFirstZ) -> void; +}; + + +} // namespace Neon::domain::details::disaggregated::dGrid + +#include "dIndex_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex_imp.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex_imp.h new file mode 100644 index 00000000..7a11ddd0 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dIndex_imp.h @@ -0,0 +1,58 @@ +#pragma once +#include "Neon/core/core.h" + +namespace Neon::domain::details::disaggregated::dGrid { + +// NEON_CUDA_HOST_DEVICE inline dIndex::dIndex(const Location& location) +//{ +// mLocation = location; +// } + +// NEON_CUDA_HOST_DEVICE inline dIndex::dIndex(const Location::Integer &x, +// const Location::Integer &y, +// const Location::Integer &z){ +// mLocation.x = x; +// mLocation.y = y; +// mLocation.z = z; +// } + +NEON_CUDA_HOST_DEVICE inline auto dIndex::setLocation() -> Location& +{ + return mLocation; +} +NEON_CUDA_HOST_DEVICE inline auto dIndex::getLocation() const -> const Location& +{ + return mLocation; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::getOffsetLocalNoCard() const -> size_t +{ + return mOffsetLocalNoCard; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::setOffsetLocalNoCard(size_t xyzOffset) -> void +{ + mOffsetLocalNoCard = xyzOffset; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::getRegionFirstZ() const -> int32_t +{ + return mRegionFirstZ; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::setRegionFirstZ(int32_t regionFirstZ) -> void +{ + mRegionFirstZ = regionFirstZ; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::getRegionZDim() const -> int32_t +{ + return mRegionZDim; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndex::setRegionZDim(int32_t regionZDim) -> void +{ + mRegionZDim = regionZDim; +} + +} // namespace Neon::domain::details::disaggregated::dGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dPartition.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dPartition.h new file mode 100644 index 00000000..57306a43 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dPartition.h @@ -0,0 +1,538 @@ +#pragma once +#include +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" +#include "Neon/domain/interface/NghData.h" +#include "Neon/set/DevSet.h" +#include "Neon/sys/memory/CudaIntrinsics.h" +#include "cuda_fp16.h" +#include "dIndex.h" +namespace Neon::domain::details::disaggregated::dGrid { + +/** + * Local representation for the dField for one device + * works as a wrapper for the mem3d which represent the allocated memory on a + * single device. + **/ + +template +class dPartition +{ + public: + using PartitionIndexSpace = dSpan; + using Span = dSpan; + using Self = dPartition; + using Idx = dIndex; + using NghIdx = int8_3d; + using NghData = Neon::domain::NghData; + using Type = T; + using Pitch = Neon::size_4d; + + public: + dPartition() = default; + + ~dPartition() = default; + + explicit dPartition(Neon::DataView dataView, + T* mem, + Neon::index_3d dim, + size_t xyPitch, + int prtID, + Neon::index_3d origin, + int cardinality, + Neon::index_3d fullGridSize, + NghIdx* stencil = nullptr) + : mDataView(dataView), + mMem(mem), + mDim(dim), + mPitchForZ(xyPitch), + mPrtID(prtID), + mOrigin(origin), + mCardinality(cardinality), + mFullGridSize(fullGridSize), + mStencil(stencil) + { + } + + + inline NEON_CUDA_HOST_DEVICE auto + prtID() + const -> int + { + return mPrtID; + } + + inline NEON_CUDA_HOST_DEVICE auto + cardinality() + const -> int + { + return mCardinality; + } + + inline NEON_CUDA_HOST_DEVICE auto + getPitch(const Idx& idx, + int cardinalityIdx = 0) + const -> int64_t + { + if constexpr (C != 0) { + return idx.getOffsetLocalNoCard() + + mPitchForZ * + (idx.getRegionFirstZ() * C + + cardinalityIdx * idx.getRegionZDim()); + } + + return idx.getOffsetLocalNoCard() + + mPitchForZ * + (idx.getRegionFirstZ() * mCardinality + + cardinalityIdx * idx.getRegionZDim()); + } + + inline NEON_CUDA_HOST_DEVICE auto + dim() + const -> const Neon::index_3d + { + return mDim; + } + + inline NEON_CUDA_HOST_DEVICE auto + halo() + const -> const Neon::index_3d + { + return Neon::index_3d(0, 0, mZHaloRadius); + } + + inline NEON_CUDA_HOST_DEVICE auto + origin() + const -> const Neon::index_3d + { + return mOrigin; + } + + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + NghIdx nghOffset, + int card, + const T& alternativeVal) + const -> NghData + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); + T val = alternativeVal; + if (isValidNeighbour) { + val = operator()(gidxNgh, card); + } + return NghData(val, isValidNeighbour); + } + + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + NghIdx nghOffset, + int card) + const -> NghData + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); + T val; + if (isValidNeighbour) { + val = operator()(gidxNgh, card); + } + return NghData(val, isValidNeighbour); + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t, void> + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = this->operator()(gidxNgh, card); + funIfValid(val); + } + if constexpr (!std::is_same_v) { + if (!isValidNeighbour) { + funIfNOTValid(); + } + } + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card) + const -> NghData + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = operator()(gidxNgh, card); + return NghData(val, isValidNeighbour); + } + return NghData(); + } + + template + NEON_CUDA_HOST_DEVICE inline auto + writeNghData(const Idx& gidx, + int card, + T value) + -> bool + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + operator()(gidxNgh, card) = value; + } + return isValidNeighbour; + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + T const& defaultValue) + const -> NghData + { + NghData res(defaultValue, false); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = operator()(gidxNgh, card); + res.set(val, true); + } + return res; + } + + NEON_CUDA_HOST_DEVICE inline auto + nghVal(const Idx& gidx, + uint8_t nghID, + int card, + const T& alternativeVal) + const -> NghData + { + NghIdx nghOffset = mStencil[nghID]; + return getNghData(gidx, nghOffset, card, alternativeVal); + } + /** + * Get the index of the neighbor given the offset + * @tparam dataView_ta + * @param[in] gidx Index of the current element + * @param[in] nghOffset Offset of the neighbor of interest from the current element + * @param[in,out] neighbourIdx Index of the neighbor + * @return Whether the neighbour is valid + */ + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& gidx, + const NghIdx& nghOffset, + Idx& gidxNgh) + const -> bool + { + gidxNgh.setLocation().x = gidx.getLocation().x + nghOffset.x; + gidxNgh.setLocation().y = gidx.getLocation().y + nghOffset.y; + gidxNgh.setLocation().z = gidx.getLocation().z + nghOffset.z; + + const auto gidxNghGlobal = getGlobalIndex(gidxNgh); + + bool isValidNeighbour = true; + + isValidNeighbour = (gidxNghGlobal.x >= 0) && + (gidxNghGlobal.y >= 0) && + (gidxNghGlobal.z >= 0); + + isValidNeighbour = (gidxNghGlobal.x < mFullGridSize.x) && + (gidxNghGlobal.y < mFullGridSize.y) && + (gidxNghGlobal.z < mFullGridSize.z) && + isValidNeighbour; + + + if (nghOffset.z == 0) { + gidxNgh.setRegionZDim(gidx.getRegionZDim()); + gidxNgh.setRegionFirstZ(gidx.getRegionFirstZ()); + size_t offsetLocalNoCard = gidx.getOffsetLocalNoCard(); + offsetLocalNoCard += nghOffset.x; + offsetLocalNoCard += nghOffset.y * mDim.x; + gidxNgh.setOffsetLocalNoCard(offsetLocalNoCard); + } + + if (nghOffset.z != 0) { + size_t offsetLocalNoCard; + int regionFirstZ; + int regionZDim; + + regionFirstZ = gidxNgh.getLocation().z; + regionZDim = 1; + offsetLocalNoCard = size_t(gidxNgh.getLocation().x) + + size_t(gidxNgh.getLocation().y) * mDim.x; + + if (gidxNgh.getLocation().z < mDim.z) { + // Internal + regionFirstZ = 2; + regionZDim = mDim.z - 2 * mZHaloRadius; + offsetLocalNoCard = size_t(gidxNgh.getLocation().x) + + size_t(gidxNgh.getLocation().y) * mDim.x + + size_t(gidxNgh.getLocation().z - 2 * mZHaloRadius) * mPitchForZ; + } + + gidxNgh.setRegionFirstZ(regionFirstZ); + gidxNgh.setOffsetLocalNoCard(offsetLocalNoCard); + gidxNgh.setRegionZDim(regionZDim); + } + + + return isValidNeighbour; + } + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& gidx, + Idx& gidxNgh) + const -> bool + { + // NghIdx offset(xOff, yOff, zOff); + // return helpGetNghIdx(gidx, offset, gidxNgh); + gidxNgh.setLocation().x = gidx.getLocation().x + xOff; + gidxNgh.setLocation().y = gidx.getLocation().y + yOff; + gidxNgh.setLocation().z = gidx.getLocation().z + zOff; + + bool isValidNeighbour = true; + if constexpr (xOff > 0) { + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (xOff < 0) { + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + if constexpr (yOff > 0) { + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (yOff < 0) { + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + if constexpr (zOff > 0) { + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (zOff < 0) { + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + + if constexpr (zOff == 0) { + gidxNgh.setRegionZDim(gidx.getRegionZDim()); + gidxNgh.setRegionFirstZ(gidx.getRegionFirstZ()); + size_t offsetLocalNoCard = gidx.getOffsetLocalNoCard(); + offsetLocalNoCard += xOff; + offsetLocalNoCard += yOff * mDim.x; + gidxNgh.setOffsetLocalNoCard(offsetLocalNoCard); + } + if constexpr (zOff != 0) { + size_t offsetLocalNoCard; + int regionFirstZ; + int regionZDim; + + regionFirstZ = gidxNgh.getLocation().z; + regionZDim = 1; + offsetLocalNoCard = size_t(gidxNgh.getLocation().x) + + size_t(gidxNgh.getLocation().y) * mDim.x; + + if (zOff > 0 && gidxNgh.getLocation().z < mDim.z) { + // Internal + regionFirstZ = 2; + regionZDim = mDim.z - 2 * mZHaloRadius; + offsetLocalNoCard += size_t(gidxNgh.getLocation().z - 2 * mZHaloRadius) * mPitchForZ; + } + if (zOff < 0 && gidxNgh.getLocation().z > 1) { + // Internal + regionFirstZ = 2; + regionZDim = mDim.z - 2 * mZHaloRadius; + offsetLocalNoCard += size_t(gidxNgh.getLocation().z - 2 * mZHaloRadius) * mPitchForZ; + } + gidxNgh.setRegionFirstZ(regionFirstZ); + gidxNgh.setOffsetLocalNoCard(offsetLocalNoCard); + gidxNgh.setRegionZDim(regionZDim); + } + + + return isValidNeighbour; + } + + + NEON_CUDA_HOST_DEVICE inline auto + mem() + -> T* + { + return mMem; + } + + NEON_CUDA_HOST_DEVICE inline auto + mem() + const + -> const T* + { + return mMem; + } + + NEON_CUDA_HOST_DEVICE inline auto + mem(const Idx& cell, + int cardinalityIdx) -> T* + { + int64_t p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + NEON_CUDA_HOST_DEVICE inline auto + operator()(const Idx& cell, + int cardinalityIdx) -> T& + { + int64_t p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + NEON_CUDA_HOST_DEVICE inline auto + operator()(const Idx& cell, + int cardinalityIdx) const -> const T& + { + int64_t p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + template + NEON_CUDA_HOST_DEVICE inline auto + castRead(const Idx& cell, + int cardinalityIdx) + const -> ComputeType + { + Type value = this->operator()(cell, cardinalityIdx); + if constexpr (std::is_same_v<__half, Type>) { + + if constexpr (std::is_same_v) { + return __half2float(value); + } + if constexpr (std::is_same_v) { + return static_cast(__half2double(value)); + } + } else { + return static_cast(value); + } + } + + template + NEON_CUDA_HOST_DEVICE inline auto + castWrite(const Idx& cell, + int cardinalityIdx, + const ComputeType& value) + -> void + { + if constexpr (std::is_same_v<__half, Type>) { + if constexpr (std::is_same_v) { + this->operator()(cell, cardinalityIdx) = __float2half(value); + } + if constexpr (std::is_same_v) { + this->operator()(cell, cardinalityIdx) = __double2half(value); + } + } else { + this->operator()(cell, cardinalityIdx) = static_cast(value); + } + } + + NEON_CUDA_HOST_DEVICE inline auto + getGlobalIndex(const Idx& local) const -> Neon::index_3d + { + // assert(local.mLocation.x >= 0 && + // local.mLocation.y >= 0 && + // local.mLocation.z >= m_zHaloRadius && + // local.mLocation.x < m_dim.x && + // local.mLocation.y < m_dim.y && + // local.mLocation.z < m_dim.z + m_zHaloRadius); + + Neon::index_3d result = local.mLocation; + result.z = result.z + mOrigin.z - mZHaloRadius; + return result; + } + + template + NEON_CUDA_HOST_DEVICE inline auto getGlobalIndexByDirection(const Idx& local) + const -> int + { + if constexpr (Neon::index_3d::directionZ != direction) { + return local.mLocation.v[direction]; + } else { + return local.mLocation.v[Neon::index_3d::directionZ] + + mOrigin.v[Neon::index_3d::directionZ] - + mZHaloRadius; + } + } + + NEON_CUDA_HOST_DEVICE inline auto getDomainSize() + const -> Neon::index_3d + { + return mFullGridSize; + } + + auto ioToVti(std::string const& fname, std::string const& fieldName) + { + auto fnameCommplete = fname + "_" + std::to_string(mPrtID); + auto haloOrigin = Vec_3d(mOrigin.x, mOrigin.y, mOrigin.z - mZHaloRadius); + auto haloDim = mDim + Neon::index_3d(0, 0, 2 * mZHaloRadius) + 1; + + IoToVTK io(fnameCommplete, + haloDim, + Vec_3d(1, 1, 1), + haloOrigin, + Neon::IoFileType::ASCII); + + + io.addField([&](const Neon::index_3d& idx, int i) { + return operator()(dIndex(idx), i); + }, + mCardinality, "Partition", ioToVTKns::VtiDataType_e::voxel); + + io.flushAndClear(); + return; + } + + auto getDataView() + const -> Neon::DataView + { + return mDataView; + } + + auto helpGetGlobalToLocalOffets() + const -> NghIdx* + { + return mStencil; + } + + private: + Neon::DataView mDataView; + T* NEON_RESTRICT mMem; + Neon::index_3d mDim; + static constexpr int mZHaloRadius = 1; + static constexpr int mZBoundaryRadius = 1; + size_t mPitchForZ; + int mPrtID; + Neon::index_3d mOrigin; + int mCardinality; + Neon::index_3d mFullGridSize; + NghIdx* NEON_RESTRICT mStencil; +}; + + +} // namespace Neon::domain::details::disaggregated::dGrid diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dSectors.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSectors.h new file mode 100644 index 00000000..51a5cefd --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSectors.h @@ -0,0 +1,200 @@ +#pragma once + +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/DevSet.h" +#include "Neon/set/HuOptions.h" + + +#include "Neon/domain/aGrid.h" +#include "Neon/domain/interface/FieldBaseTemplate.h" +#include "Neon/domain/tools/PartitionTable.h" + +#include "Neon/domain/tools/HaloUpdateTable1DPartitioning.h" +#include "dPartition.h" + +namespace Neon::domain::details::disaggregated::dGrid { + + +/** + * Create and manage a dense field on both GPU and CPU. dField also manages updating + * the GPU->CPU and CPU-GPU as well as updating the halo. User can use dField to populate + * the field with data as well was exporting it to VTI. To create a new dField, + * use the newField function in dGrid. + */ +template +class dField : public Neon::domain::interface::FieldBaseTemplate, + int> +{ + friend dGrid; + + public: + static constexpr int Cardinality = C; + using Type = T; + using Self = dField; + using Grid = dGrid; + using Field = dField; + using Partition = dPartition; + using Idx = typename Partition::Idx; + using NghIdx = typename Partition::NghIdx; + using NghData = typename Partition::NghData; + + /** + * Empty constructor + */ + dField(); + + /** + * Destructor + */ + virtual ~dField() = default; + + /** + * Self operator + */ + auto self() -> Self&; + + /** + * Self operator + */ + auto self() const -> const Self&; + + auto constSelf() const -> const Self&; + + /** + * Returns the metadata associated with the element in location idx. + * If the element is not active (it does not belong to the voxelized domain), + * then the default outside value is returned. + */ + auto operator()(const Neon::index_3d& idx, + const int& cardinality) const + -> Type final; + + auto ioVtiAllocator(std::string name) + { + mData->memoryField.ioToVtk(name, name); + } + /** + * Creates a container that executes a halo update operation on host or device + */ + auto newHaloUpdate(Neon::set::StencilSemantic semantic, + Neon::set::TransferMode transferMode, + Neon::Execution execution) + const -> Neon::set::Container; + + virtual auto + getReference(const Neon::index_3d& idx, + const int& cardinality) + -> Type& final; + + /** + * It copies host data to the device + * @param streamSetId + */ + auto updateDeviceData(int streamSetId) + -> void; + + /** + * It copies device data to the host + * @param streamSetId + */ + auto updateHostData(int streamSetId) + -> void; + + /** + * Returns a constant reference to a specific partition based on a set of parameters: + * execution type, target device, dataView + */ + auto getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) const + -> const Partition& final; + + /** + * Return a reference to a specific partition based on a set of parameters: + * execution type, target device, dataView + */ + auto getPartition(Neon::Execution execution, + Neon::SetIdx setIdx, + const Neon::DataView& dataView) + -> Partition& final; + + auto ioToVtiPartitions(const std::string& fname) const -> void; + + static auto swap(Field& A, Field& B) + -> void; + + private: + auto initHaloUpdateTable() + -> void; + + + /** Convert a global 3d index into a Partition local offset */ + auto helpGlobalIdxToPartitionIdx(Neon::index_3d const& index) + const -> std::pair; + + dField(const std::string& fieldUserName, + Neon::DataUse dataUse, + const Neon::MemoryOptions& memoryOptions, + const Grid& grid, + const Neon::set::DataSet& dims, + int zHaloRadius, + Neon::domain::haloStatus_et::e haloStatus, + int cardinality, + Neon::set::MemSet& stencilIdTo3dOffset); + + struct Data + { + Data() = default; + Data(Neon::Backend const& bk) + { + partitionTable.init(bk); + pitch = bk.newDataSet(); + } + + enum EndPoints + { + src = 1, + dst = 0 + }; + + struct EndPointsUtils + { + static constexpr int nConfigs = 2; + }; + + struct ReductionInformation + { + std::vector startIDByView /* one entry for each cardinality */; + std::vector nElementsByView /* one entry for each cardinality */; + }; + + Neon::domain::tool::PartitionTable partitionTable; + Neon::domain::tool::HaloTable1DPartitioning latticeHaloUpdateTable; + Neon::domain::tool::HaloTable1DPartitioning soaHaloUpdateTable; + Neon::domain::tool::HaloTable1DPartitioning aosHaloUpdateTable; + Neon::aGrid::Field memoryField; + + Neon::DataUse dataUse; + Neon::MemoryOptions memoryOptions; + int cardinality; + Neon::set::DataSet pitch; + + std::shared_ptr grid; + int zHaloDim; + Neon::domain::haloStatus_et::e haloStatus; + bool periodic_z; + + Neon::set::MemSet stencilNghIndex; + }; + + std::shared_ptr mData; + auto getData() -> Data&; +}; + + +} // namespace Neon::domain::details::dGrid diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan.h new file mode 100644 index 00000000..91485b91 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan.h @@ -0,0 +1,48 @@ +#pragma once +#include "Neon/set/DevSet.h" +#include "dIndex.h" + +namespace Neon::domain::details::disaggregated::dGrid { + +/** + * Abstraction that represents the Cell space of a partition + * This abstraction is used by the neon lambda executor to + * run a containers on aGrid + */ +class dSpan +{ + public: + using Idx = dIndex; + friend class dGrid; + + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Neon::set::details::ExecutionThreadSpan::d3; + using ExecutionThreadSpanIndexType = int32_t; + + + NEON_CUDA_HOST_DEVICE inline auto + setAndValidate(Idx& idx, + const uint32_t& x, + const uint32_t& y, + const uint32_t& z) const + -> bool; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetDataView() + const -> Neon::DataView const&; + + + NEON_CUDA_HOST_DEVICE inline auto + helpGetDim() + const -> Neon::index_3d const&; + + private: + Neon::DataView mDataView; + static const int mZghostRadius = 1; + static const int mZboundaryRadius = 1; + int mMaxZInDomain; + Neon::index_3d mSpanDim /** Dimension of the span, its values depends on the mDataView*/; +}; + +} // namespace Neon::domain::details::disaggregated::dGrid + +#include "dSpan_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan_imp.h b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan_imp.h new file mode 100644 index 00000000..1c467d9d --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridDisg/dSpan_imp.h @@ -0,0 +1,91 @@ +#pragma once + +namespace Neon::domain::details::disaggregated::dGrid { + +NEON_CUDA_HOST_DEVICE inline auto +dSpan::setAndValidate(Idx& idx, + const uint32_t& x, + const uint32_t& y, + const uint32_t& z) + const -> bool +{ + bool res = false; + idx.setLocation().x = int(x); + idx.setLocation().y = int(y); + idx.setLocation().z = int(z); + + if (idx.getLocation() < mSpanDim) { + res = true; + } + + switch (mDataView) { + case Neon::DataView::STANDARD: { + + idx.setLocation().z += mZghostRadius; + + // Boundary DW up and down + size_t regionFirstZ = idx.setLocation().z; // 2 for boundary down and dim.z for up + int regionZDim = 1; + int offsetLocalNoCard = size_t(x) + size_t(y) * mSpanDim.x; + + if (idx.getLocation().z > 1 && idx.getLocation().z < mSpanDim.z) { + // Internal + regionFirstZ = 2; + regionZDim = mSpanDim.z - 2; + offsetLocalNoCard += size_t(idx.setLocation().z - 2) * mSpanDim.x * mSpanDim.y; + } + + idx.setRegionFirstZ(int32_t(regionFirstZ)); + idx.setOffsetLocalNoCard(offsetLocalNoCard); + idx.setRegionZDim(regionZDim); + + return res; + } + case Neon::DataView::INTERNAL: { + idx.setLocation().z += 2; + int regionFirstZ = 2; + int regionZDim = mSpanDim.z; + + size_t offsetLocalNoCard = size_t(x) + + size_t(y) * mSpanDim.x + + size_t(z) * mSpanDim.x * mSpanDim.y; + + idx.setOffsetLocalNoCard(offsetLocalNoCard); + idx.setRegionFirstZ(regionFirstZ); + idx.setRegionZDim(regionZDim); + + return res; + } + case Neon::DataView::BOUNDARY: { + + idx.setLocation().z = idx.getLocation().z == 0 ? 1 : mMaxZInDomain; + int regionFirstZ = idx.setLocation().z; + int regionZDim = 1; + size_t regionOffsetLocalNoCard = size_t(x) + + size_t(y) * mSpanDim.x; + + idx.setOffsetLocalNoCard(regionOffsetLocalNoCard); + idx.setRegionFirstZ(regionFirstZ); + idx.setRegionZDim(regionZDim); + return res; + } + default: { + } + } + return false; +} + +NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetDataView() + const -> Neon::DataView const& +{ + return mDataView; +} + + +NEON_CUDA_HOST_DEVICE inline auto dSpan::helpGetDim() + const -> Neon::index_3d const& +{ + return mSpanDim; +} + +} // namespace Neon::domain::details::disaggregated::dGrid \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dGridSoA.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dGridSoA.h new file mode 100644 index 00000000..7ce3e582 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dGridSoA.h @@ -0,0 +1,98 @@ +#pragma once +#include + +#include "Neon/core/core.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/Macros.h" + +#include "Neon/set/BlockConfig.h" +#include "Neon/set/Containter.h" +#include "Neon/set/DevSet.h" +#include "Neon/set/MemoryOptions.h" + +#include "Neon/sys/memory/MemDevice.h" + +#include "Neon/domain/aGrid.h" + +#include "Neon/domain/interface/GridBaseTemplate.h" +#include "Neon/domain/interface/GridConcept.h" +#include "Neon/domain/interface/KernelConfig.h" +#include "Neon/domain/interface/LaunchConfig.h" +#include "Neon/domain/interface/Stencil.h" +#include "Neon/domain/interface/common.h" + +#include "Neon/domain/tools/GridTransformer.h" +#include "Neon/domain/tools/SpanTable.h" + +#include "Neon/domain/details/eGrid/eGrid.h" +#include "Neon/domain/patterns/PatternScalar.h" + +#include "dPartitionSoA.h" +#include "dSpanSoA.h" + +namespace Neon::domain::details::dGridSoA { + +namespace details { +struct dGridSoATransformation +{ + using FoundationGrid = Neon::domain::details::dGrid::dGrid; + using Idx = dIndexSoA; + using Span = dSpanSoA; + template + using Partition = dPartitionSoA; + + static constexpr Neon::set::internal::ContainerAPI::DataViewSupport dataViewSupport = Neon::set::internal::ContainerAPI::DataViewSupport::on; + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = FoundationGrid::executionThreadSpan; + using ExecutionThreadSpanIndexType = int32_t; + + static auto getDefaultBlock(FoundationGrid& foundationGrid) -> Neon::index_3d const& + { + return foundationGrid.getDefaultBlock(); + } + + static auto initSpan(FoundationGrid& foundationGrid, Neon::domain::tool::SpanTable& spanTable) -> void + { + spanTable.forEachConfiguration([&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Span& span) { + span.helpInit(foundationGrid.getSpan(execution, setIdx, dw)); + }); + } + + static auto initLaunchParameters(FoundationGrid& foundationGrid, + Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) -> Neon::set::LaunchParameters + { + return foundationGrid.getLaunchParameters(dataView, blockSize, shareMem); + } + + // static auto helpGetGridIdx(FoundationGrid&, + // Neon::SetIdx const&, + // FoundationGrid::Idx const& fgIdx) + // -> dGridSoATransformation::Idx + // { + // dGridSoATransformation::Idx tgIdx = fgIdx; + // return tgIdx; + // } + + template + static auto initFieldPartition(FoundationGrid::Field& foundationField, + Neon::domain::tool::PartitionTable>& partitionTable) -> void + { + partitionTable.forEachConfiguration( + [&](Neon::Execution execution, + Neon::SetIdx setIdx, + Neon::DataView dw, + Partition& partition) { + auto& foundationPartition = foundationField.getPartition(execution, setIdx, dw); + partition = Partition(foundationPartition); + }); + } +}; + +} // namespace details +using dGridSoA = Neon::domain::tool::GridTransformer::Grid; + +} // namespace Neon::domain::details::dGridSoA diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA.h new file mode 100644 index 00000000..2ed82d86 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA.h @@ -0,0 +1,53 @@ +#pragma once + +#include "Neon/core/core.h" +#include "Neon/domain/details/dGridSoA/dIndexSoA.h" + +namespace Neon::domain::details::dGridSoA { + +// Common forward declarations +class dSpanSoA; +template +class dPartitionSoA; + +struct dIndexSoA +{ + using OuterIdx = dIndexSoA; + + template + friend class dPartition; + friend dSpanSoA; + + template + friend class dField; + + // dGrid specific types + using Offset = int32_t; + using Location = index_3d; + using Count = int32_t; + + dIndexSoA() = default; + Location mLocation = 0; + Offset mOffset = 0; + + NEON_CUDA_HOST_DEVICE inline explicit dIndexSoA(Location const& location, + Offset const& offset); + + NEON_CUDA_HOST_DEVICE inline explicit dIndexSoA(Location::Integer const& x, + Location::Integer const& y, + Location::Integer const& z, + Offset const& offset); + + NEON_CUDA_HOST_DEVICE inline auto setLocation() -> Location&; + + NEON_CUDA_HOST_DEVICE inline auto setOffset() -> Offset&; + + NEON_CUDA_HOST_DEVICE inline auto getLocation() const -> const Location&; + + NEON_CUDA_HOST_DEVICE inline auto getOffset() const -> const Offset&; +}; + +} // namespace Neon::domain::details::dGridSoA + +#include "dIndexSoA_imp.h" diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA_imp.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA_imp.h new file mode 100644 index 00000000..790608c7 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dIndexSoA_imp.h @@ -0,0 +1,50 @@ +#pragma once +#include "Neon/core/core.h" + +namespace Neon::domain::details::dGridSoA { + +NEON_CUDA_HOST_DEVICE inline dIndexSoA:: + dIndexSoA(const Location& location, + Offset const& offset) +{ + mLocation = location; + mOffset = offset; +} + +NEON_CUDA_HOST_DEVICE inline dIndexSoA:: + dIndexSoA(const Location::Integer& x, + const Location::Integer& y, + const Location::Integer& z, + Offset const& offset) +{ + mLocation.x = x; + mLocation.y = y; + mLocation.z = z; + mOffset = offset; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndexSoA:: + setLocation() -> Location& +{ + return mLocation; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndexSoA:: + setOffset() -> Offset& +{ + return mOffset; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndexSoA:: + getLocation() const -> const Location& +{ + return mLocation; +} + +NEON_CUDA_HOST_DEVICE inline auto dIndexSoA:: + getOffset() + const -> const Offset& +{ + return mOffset; +} +} // namespace Neon::domain::details::dGridSoA \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dPartitionSoA.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dPartitionSoA.h new file mode 100644 index 00000000..15c914a3 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dPartitionSoA.h @@ -0,0 +1,365 @@ +#pragma once +#include +#include "Neon/core/core.h" +#include "Neon/core/types/Macros.h" +#include "Neon/domain/details/dGrid/dGrid.h" +#include "Neon/domain/interface/NghData.h" +#include "Neon/set/DevSet.h" +#include "Neon/sys/memory/CudaIntrinsics.h" +#include "cuda_fp16.h" +#include "dIndexSoA.h" + +namespace Neon::domain::details::dGridSoA { + +template +class dPartitionSoA +{ + public: + using Idx = dIndexSoA; + using NghData = Neon::domain::NghData; + using Pitch = uint32_4d; + using NghIdx = int8_3d; + using Type = T; + + dPartitionSoA() + { + } + + dPartitionSoA(Neon::domain::details::dGrid::dPartition& dPartitionOriginal) + { + mDataView = dPartitionOriginal.getDataView(); + mMem = dPartitionOriginal.mem(); + mDim = dPartitionOriginal.dim(); + mZHaloRadius = dPartitionOriginal.halo().z; + mPitch = dPartitionOriginal.getPitchData().template newType(); + mPrtID = dPartitionOriginal.prtID(); + mOrigin = dPartitionOriginal.origin(); + mCardinality = dPartitionOriginal.cardinality(); + mFullGridSize = dPartitionOriginal.getDomainSize(); + mStencil = dPartitionOriginal.helpGetGlobalToLocalOffets(); + } + + inline NEON_CUDA_HOST_DEVICE auto + prtID() + const -> int + { + return mPrtID; + } + + inline NEON_CUDA_HOST_DEVICE auto + cardinality() + const -> int + { + return mCardinality; + } + + inline NEON_CUDA_HOST_DEVICE auto + getPitchData() + const -> const Pitch& + { + return mPitch; + } + + inline NEON_CUDA_HOST_DEVICE auto + getPitch(const Idx& idx, + int cardinality) + const -> Idx::Offset + { + return idx.getOffset() + cardinality * mPitch.w; + } + + inline NEON_CUDA_HOST_DEVICE auto + dim() + const -> const Neon::index_3d + { + return mDim; + } + + inline NEON_CUDA_HOST_DEVICE auto + halo() + const -> const Neon::index_3d + { + return Neon::index_3d(0, 0, mZHaloRadius); + } + + inline NEON_CUDA_HOST_DEVICE auto + origin() + const -> const Neon::index_3d + { + return mOrigin; + } + + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + NghIdx nghOffset, + int card, + const T& alternativeVal) + const -> NghData + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); + T val = alternativeVal; + if (isValidNeighbour) { + val = operator()(gidxNgh, card); + } + return NghData(val, isValidNeighbour); + } + + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + NghIdx nghOffset, + int card) + const -> NghData + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, nghOffset, gidxNgh); + T val; + if (isValidNeighbour) { + val = operator()(gidxNgh, card); + } + return NghData(val, isValidNeighbour); + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t, void> + { + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = this->operator()(gidxNgh, card); + funIfValid(val); + } + if constexpr (!std::is_same_v) { + if (!isValidNeighbour) { + funIfNOTValid(); + } + } + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card) + const -> NghData + { + NghData res; + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = operator()(gidxNgh, card); + res.set(val, true); + } else { + res.invalidate(); + } + return res; + } + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + T const& defaultValue) + const -> NghData + { + NghData res(defaultValue, false); + Idx gidxNgh; + const bool isValidNeighbour = helpGetNghIdx(gidx, gidxNgh); + if (isValidNeighbour) { + T val = operator()(gidxNgh, card); + res.set(val, true); + } + return res; + } + + NEON_CUDA_HOST_DEVICE inline auto + nghVal(const Idx& gidx, + uint8_t nghID, + int card, + const T& alternativeVal) + const -> NghData + { + NghIdx nghOffset = mStencil[nghID]; + return getNghData(gidx, nghOffset, card, alternativeVal); + } + + /** + * Get the index of the neighbor given the offset + * @tparam dataView_ta + * @param[in] gidx Index of the current element + * @param[in] nghOffset Offset of the neighbor of interest from the current element + * @param[in,out] neighbourIdx Index of the neighbor + * @return Whether the neighbour is valid + */ + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& gidx, + const NghIdx& nghOffset, + Idx& neighbourIdx) + const -> bool + { + Neon::index_3d cartesian(gidx.getLocation().x + nghOffset.x, + gidx.getLocation().y + nghOffset.y, + gidx.getLocation().z + nghOffset.z); + + neighbourIdx = Idx(cartesian, gidx.getOffset() + + nghOffset.x * getPitchData().x + + nghOffset.y * getPitchData().y + + nghOffset.z * getPitchData().z); + + Neon::index_3d const nghCartesianIdx = getGlobalIndex(neighbourIdx); + + bool isValidNeighbour = true; + + isValidNeighbour = (nghCartesianIdx.x >= 0) && + (nghCartesianIdx.y >= 0) && + (nghCartesianIdx.z >= 0); + + isValidNeighbour = (nghCartesianIdx.x < mFullGridSize.x) && + (nghCartesianIdx.y < mFullGridSize.y) && + (nghCartesianIdx.z < mFullGridSize.z) && + isValidNeighbour; + + return isValidNeighbour; + } + + template + NEON_CUDA_HOST_DEVICE inline auto + helpGetNghIdx(const Idx& gidx, + Idx& gidxNgh) + const -> bool + { + { + Neon::index_3d cartesian(gidx.getLocation().x + xOff, + gidx.getLocation().y + yOff, + gidx.getLocation().z + zOff); + gidxNgh = Idx(cartesian, gidx.getOffset() + + xOff * static_cast(getPitchData().x) + + yOff * static_cast(getPitchData().y) + + zOff * static_cast(getPitchData().z)); + } + + bool isValidNeighbour = true; + if constexpr (xOff > 0) { + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (xOff < 0) { + int constexpr direction = Neon::index_3d::directionX; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + if constexpr (yOff > 0) { + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (yOff < 0) { + int constexpr direction = Neon::index_3d::directionY; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + if constexpr (zOff > 0) { + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection < mFullGridSize.v[direction] && isValidNeighbour; + } + if constexpr (zOff < 0) { + int constexpr direction = Neon::index_3d::directionZ; + int const cartesianByDirection = getGlobalIndexByDirection(gidxNgh); + isValidNeighbour = cartesianByDirection >= 0 && isValidNeighbour; + } + return isValidNeighbour; + } + + NEON_CUDA_HOST_DEVICE inline auto + mem() + -> T* + { + return mMem; + } + + NEON_CUDA_HOST_DEVICE inline auto + mem() const + -> const T* + { + return mMem; + } + + NEON_CUDA_HOST_DEVICE inline auto + mem(const Idx& cell, + int cardinalityIdx) + -> T* + { + Idx::Offset p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + NEON_CUDA_HOST_DEVICE inline auto + operator()(const Idx& cell, + int cardinalityIdx) + -> T& + { + Idx::Offset p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + NEON_CUDA_HOST_DEVICE inline auto + operator()(const Idx& cell, + int cardinalityIdx) + const -> const T& + { + Idx::Offset p = getPitch(cell, cardinalityIdx); + return mMem[p]; + } + + NEON_CUDA_HOST_DEVICE inline auto getGlobalIndex(const Idx& local) + const -> Neon::index_3d + { + Neon::index_3d result = local.mLocation + mOrigin; + result.z -= mZHaloRadius; + return result; + } + + template + NEON_CUDA_HOST_DEVICE inline auto getGlobalIndexByDirection(const Idx& local) + const -> int + { + if constexpr (Neon::index_3d::directionZ != direction) { + return local.mLocation.v[direction] + + mOrigin.v[direction]; + } else { + return local.mLocation.v[Neon::index_3d::directionZ] + + mOrigin.v[Neon::index_3d::directionZ] - + mZHaloRadius; + } + } + + NEON_CUDA_HOST_DEVICE inline auto getDomainSize() + const -> Neon::index_3d + { + return mFullGridSize; + } + + Neon::DataView mDataView; + T* NEON_RESTRICT mMem; + Neon::index_3d mDim; + int mZHaloRadius; + Pitch mPitch; + int mPrtID; + Neon::index_3d mOrigin; + int mCardinality; + Neon::index_3d mFullGridSize; + NghIdx* NEON_RESTRICT mStencil; +}; + +} // namespace Neon::domain::details::dGridSoA diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA.h new file mode 100644 index 00000000..3aee038c --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA.h @@ -0,0 +1,57 @@ +#pragma once +#include "Neon/set/DevSet.h" +#include "dIndexSoA.h" +#include "Neon/domain/details/dGrid/dSpan.h" + +namespace Neon::domain::details::dGridSoA { + +/** + * Abstraction that represents the Cell space of a partition + * This abstraction is used by the neon lambda executor to + * run a containers on aGrid + */ +class dSpanSoA +{ + public: + using Idx = dIndexSoA; + + static constexpr Neon::set::details::ExecutionThreadSpan executionThreadSpan = Neon::set::details::ExecutionThreadSpan::d3; + using ExecutionThreadSpanIndexType = int32_t; + + + NEON_CUDA_HOST_DEVICE inline auto + setAndValidate(Idx& idx, + const uint32_t& x, + const uint32_t& y, + const uint32_t& z) const + -> bool; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetDataView() + const -> Neon::DataView const&; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetZHaloRadius() + const -> int const&; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetZBoundaryRadius() + const -> int const&; + + NEON_CUDA_HOST_DEVICE inline auto + helpGetDim() + const -> Neon::index_3d const&; + + NEON_CUDA_HOST_DEVICE inline auto + helpInit(Neon::domain::details::dGrid::dSpan const&) ->void; + + private: + Neon::DataView mDataView; + int mZHaloRadius; + int mZBoundaryRadius; + Neon::index_3d mDim /** Dimension of the span, its values depends on the mDataView*/; +}; + +} // namespace Neon::domain::details::dGrid + +#include "dSpanSoA_imp.h" \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA_imp.h b/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA_imp.h new file mode 100644 index 00000000..f760adb5 --- /dev/null +++ b/libNeonDomain/include/Neon/domain/details/dGridSoA/dSpanSoA_imp.h @@ -0,0 +1,86 @@ +#pragma once + +namespace Neon::domain::details::dGridSoA { + +NEON_CUDA_HOST_DEVICE inline auto +dSpanSoA::setAndValidate(Idx& idx, + const uint32_t& x, + const uint32_t& y, + const uint32_t& z) + const -> bool +{ + idx.setLocation().x = int(x); + idx.setLocation().y = int(y); + idx.setLocation().z = int(z); + + bool isValid = idx.getLocation() < mDim; + + switch (mDataView) { + case Neon::DataView::STANDARD: { + idx.setLocation().z += mZHaloRadius; + idx.setOffset() = idx.getLocation().x + + idx.getLocation().y * mDim.x + + idx.getLocation().z * mDim.x * mDim.y; + break ; + } + case Neon::DataView::INTERNAL: { + idx.setLocation().z += mZHaloRadius + mZBoundaryRadius; + idx.setOffset() = idx.getLocation().x + + idx.getLocation().y * mDim.x + + idx.getLocation().z * mDim.x * mDim.y; + break ; + } + case Neon::DataView::BOUNDARY: { + idx.setLocation().z += idx.getLocation().z < mZBoundaryRadius + ? 0 + : (mDim.z - 1) + (-1 * mZBoundaryRadius /* we remove zBoundaryRadius as the first zBoundaryRadius will manage the lower slices */); + idx.setLocation().z += mZHaloRadius; + idx.setOffset() = idx.getLocation().x + + idx.getLocation().y * mDim.x + + idx.getLocation().z * mDim.x * mDim.y; + break ; + } + default: { + } + } + return isValid; +} + +NEON_CUDA_HOST_DEVICE inline auto +dSpanSoA::helpGetDataView() + const -> Neon::DataView const& +{ + return mDataView; +} + +NEON_CUDA_HOST_DEVICE inline auto +dSpanSoA::helpGetZHaloRadius() + const -> int const& +{ + return mZHaloRadius; +} + +NEON_CUDA_HOST_DEVICE inline auto +dSpanSoA::helpGetZBoundaryRadius() + const -> int const& +{ + return mZBoundaryRadius; +} + +NEON_CUDA_HOST_DEVICE inline auto +dSpanSoA::helpGetDim() + const -> Neon::index_3d const& +{ + return mDim; +} + +NEON_CUDA_HOST_DEVICE inline auto dSpanSoA::helpInit(Neon::domain::details::dGrid::dSpan const& dspan) -> void +{ + mDataView = dspan.helpGetDataView(); + mZHaloRadius = dspan.helpGetZHaloRadius(); + mZBoundaryRadius = dspan.helpGetZBoundaryRadius(); + mDim = dspan.helpGetDim(); +} + + +} // namespace Neon::domain::details::dGridSoA \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/details/eGrid/eField_imp.h b/libNeonDomain/include/Neon/domain/details/eGrid/eField_imp.h index c89cfdc3..7fab92b1 100644 --- a/libNeonDomain/include/Neon/domain/details/eGrid/eField_imp.h +++ b/libNeonDomain/include/Neon/domain/details/eGrid/eField_imp.h @@ -65,7 +65,8 @@ eField::eField(const std::string& fieldUserName, mData->grid->getConnectivityField().getPartition(execution, setIdx, Neon::DataView::STANDARD).mem(), mData->grid->getGlobalMappingField().getPartition(execution, setIdx, Neon::DataView::STANDARD).mem(), mData->grid->getStencil3dTo1dOffset().rawMem(execution, setIdx), - mData->grid->getStencil().getRadius()); + mData->grid->getStencil().getRadius(), + mData->grid->getDimension()); }); } @@ -74,7 +75,7 @@ eField::eField(const std::string& fieldUserName, } #if 0 { // Setting Reduction information - mData->partitionTable.forEachConfigurationWithUserData( + mData->mPartitionTable.forEachConfigurationWithUserData( [&](Neon::Execution, Neon::SetIdx setIdx, Neon::DataView dw, @@ -321,7 +322,7 @@ auto eField::helpHaloUpdate(SetIdx setIdx, T* src = [&]() { auto southDevice = setId; - auto& partition = mData->partitionTable.getPartition(execution, + auto& partition = mData->mPartitionTable.getPartition(execution, southDevice, Neon::DataView::STANDARD); dIndex firstBoundaryNorthCell(0, 0, partition.dim.z - mData->zHaloDim); @@ -331,7 +332,7 @@ auto eField::helpHaloUpdate(SetIdx setIdx, T* dst = [&]() { auto northDevice = setId + 1; - auto& partition = mData->partitionTable.getPartition(execution, + auto& partition = mData->mPartitionTable.getPartition(execution, northDevice, Neon::DataView::STANDARD); dIndex firstBoundarySouthCell(0, 0, 0); @@ -354,7 +355,7 @@ auto eField::helpHaloUpdate(SetIdx setIdx, const size_t transferBytes = sizeof(T) * mData->zHaloDim * mData->pitch[setId].z; if (setId != setCardinality - 1) { // Addressing all partitions that needs to send data north - auto& partition = mData->partitionTable.getPartition(Neon::Execution::device, + auto& partition = mData->mPartitionTable.getPartition(Neon::Execution::device, setId, Neon::DataView::STANDARD); diff --git a/libNeonDomain/include/Neon/domain/details/eGrid/eGrid.h b/libNeonDomain/include/Neon/domain/details/eGrid/eGrid.h index 346c2121..8a6269eb 100644 --- a/libNeonDomain/include/Neon/domain/details/eGrid/eGrid.h +++ b/libNeonDomain/include/Neon/domain/details/eGrid/eGrid.h @@ -84,7 +84,8 @@ class eGrid : public Neon::domain::interface::GridBaseTemplate const SparsityPattern& activeCellLambda /**< InOrOutLambda({x,y,z}->{true, false}) */, const Neon::domain::Stencil& stencil /**< Stencil used by any computation on the grid */, const Vec_3d& spacing = Vec_3d(1, 1, 1) /**< Spacing, i.e. size of a voxel */, - const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */); + const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); eGrid(const Neon::Backend& backend /**< Target for computation */, const Neon::int32_3d& dimension /**< Dimension of the bounding box containing the domain */, diff --git a/libNeonDomain/include/Neon/domain/details/eGrid/eGrid_imp.h b/libNeonDomain/include/Neon/domain/details/eGrid/eGrid_imp.h index a12f87ce..ba3f90b2 100644 --- a/libNeonDomain/include/Neon/domain/details/eGrid/eGrid_imp.h +++ b/libNeonDomain/include/Neon/domain/details/eGrid/eGrid_imp.h @@ -10,7 +10,8 @@ eGrid::eGrid(const Neon::Backend& backend, const ActiveCellLambda& activeCellLambda, const Neon::domain::Stencil& stencil, const Vec_3d& spacing, - const Vec_3d& origin) + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType spaceFillingCode ) { mData = std::make_shared(backend); mData->stencil = stencil; @@ -29,17 +30,20 @@ eGrid::eGrid(const Neon::Backend& backend, nElementsPerPartition, Neon::index_3d(256, 1, 1), spacing, - origin); + origin, + spaceFillingCode, + {1,1,1}); } mData->partitioner1D = Neon::domain::tool::Partitioner1D( backend, activeCellLambda, - [](Neon::index_3d /*idx*/) { return false; }, + nullptr, 1, dimension, stencil, + spaceFillingCode, 1); @@ -124,7 +128,9 @@ eGrid::eGrid(const Neon::Backend& backend, nElementsPerPartition, defaultBlockSize, spacing, - origin); + origin, + spaceFillingCode, + {1,1,1}); } } diff --git a/libNeonDomain/include/Neon/domain/details/eGrid/ePartition.h b/libNeonDomain/include/Neon/domain/details/eGrid/ePartition.h index 012a3588..4381a24c 100644 --- a/libNeonDomain/include/Neon/domain/details/eGrid/ePartition.h +++ b/libNeonDomain/include/Neon/domain/details/eGrid/ePartition.h @@ -59,7 +59,7 @@ class ePartition * | * | Connectivity table has the same layout of a field with cardinality equal to * | the number of neighbours and an SoA layout. Let's call this field nghField. - * | nghField(e, nghIdx) is the eIdx_t of the neighbour element as in a STANDARD + * | nghField(e, helpGetNghIdx) is the eIdx_t of the neighbour element as in a STANDARD * | view. * |--) */ @@ -186,8 +186,21 @@ class ePartition NEON_CUDA_HOST_DEVICE inline auto getNghData(Idx eId, int card, - T defaultValue) + T defaultValue) const -> NghData; + + template + NEON_CUDA_HOST_DEVICE inline auto + getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid = nullptr) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void>; + /** * Check is the * @tparam dataView_ta @@ -211,6 +224,10 @@ class ePartition getGlobalIndex(Idx Idx) const -> Neon::index_3d; + NEON_CUDA_HOST_DEVICE inline auto + getDomainSize() + const -> Neon::index_3d; + NEON_CUDA_HOST_DEVICE inline auto mem() const -> const T*; @@ -231,7 +248,8 @@ class ePartition Offset* connRaw, Neon::index_3d* toGlobal, int8_t* stencil3dTo1dOffset, - int32_t stencilRadius); + int32_t stencilRadius, + Neon::index_3d domainSize); /** * Returns a pointer to element eId with target cardinality cardinalityIdx @@ -256,11 +274,6 @@ class ePartition getOffset(Idx eId, int cardinalityIdx) const -> Offset; - /** - * Returns raw pointer of the field - * @tparam dataView_ta - * @return - */ protected: //-- [INTERNAL DATA] ---------------------------------------------------------------------------- @@ -278,6 +291,7 @@ class ePartition int8_t* mStencil3dTo1dOffset = {nullptr}; int32_t mStencilTableYPitch; int32_t mStencilRadius; // Shift to be applied to all 3d offset component to access mStencil3dTo1dOffset table + Neon::index_3d mDomainSize; }; } // namespace Neon::domain::details::eGrid diff --git a/libNeonDomain/include/Neon/domain/details/eGrid/ePartition_imp.h b/libNeonDomain/include/Neon/domain/details/eGrid/ePartition_imp.h index 0063ee9e..29980a61 100644 --- a/libNeonDomain/include/Neon/domain/details/eGrid/ePartition_imp.h +++ b/libNeonDomain/include/Neon/domain/details/eGrid/ePartition_imp.h @@ -37,43 +37,43 @@ ePartition::cardinality() const template NEON_CUDA_HOST_DEVICE inline auto -ePartition::operator()(eIndex eId, int cardinalityIdx) const +ePartition::operator()(eIndex gidx, int cardinalityIdx) const -> T { - Offset jump = getOffset(eId, cardinalityIdx); + Offset jump = getOffset(gidx, cardinalityIdx); return mMem[jump]; } template NEON_CUDA_HOST_DEVICE inline auto -ePartition::operator()(eIndex eId, int cardinalityIdx) -> T& +ePartition::operator()(eIndex gidx, int cardinalityIdx) -> T& { - Offset jump = getOffset(eId, cardinalityIdx); + Offset jump = getOffset(gidx, cardinalityIdx); return mMem[jump]; } template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getNghData(eIndex eId, +ePartition::getNghData(eIndex gidx, NghIdx nghIdx, int card) const -> NghData { - eIndex eIdxNgh; - const bool isValidNeighbour = isValidNgh(eId, nghIdx, eIdxNgh); + eIndex gidxxNgh; + const bool isValidNeighbour = isValidNgh(gidx, nghIdx, gidxxNgh); if (isValidNeighbour) { - T val = this->operator()(eIdxNgh, card); + T val = this->operator()(gidxxNgh, card); return NghData(val, isValidNeighbour); } - return NghData(isValidNeighbour); + return NghData(); } template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getNghData(eIndex eId, +ePartition::getNghData(eIndex gidx, const Neon::int8_3d& ngh3dIdx, int card) const -> NghData @@ -82,7 +82,7 @@ ePartition::getNghData(eIndex eId, (ngh3dIdx.y + mStencilRadius) * mStencilTableYPitch + (ngh3dIdx.z + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; - NghData res = getNghData(eId, nghIdx, card); + NghData res = getNghData(gidx, nghIdx, card); return res; } @@ -91,15 +91,15 @@ template template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getNghData(eIndex eId, - int card) +ePartition::getNghData(eIndex gidx, + int card) const -> NghData { int tablePithc = (xOff + mStencilRadius) + (yOff + mStencilRadius) * mStencilTableYPitch + (zOff + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; - NghData res = getNghData(eId, nghIdx, card); + NghData res = getNghData(gidx, nghIdx, card); return res; } @@ -108,37 +108,66 @@ template template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getNghData(eIndex eId, - int card, - T defaultVal) +ePartition::getNghData(eIndex gidx, + int card, + T defaultVal) const -> NghData { int tablePithc = (xOff + mStencilRadius) + (yOff + mStencilRadius) * mStencilTableYPitch + (zOff + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; - NghData res = getNghData(eId, nghIdx, card); + NghData res = getNghData(gidx, nghIdx, card); if (!res.isValid()) { res.set(defaultVal, false); } return res; } +template +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getNghData(const Idx& gidx, + int card, + LambdaVALID funIfValid, + LambdaNOTValid funIfNOTValid) + const -> std::enable_if_t && (std::is_invocable_v || std::is_same_v), void> +{ + int tablePithc = (xOff + mStencilRadius) + + (yOff + mStencilRadius) * mStencilTableYPitch + + (zOff + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; + NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; + NghData res = getNghData(gidx, nghIdx, card); + if (res.isValid()) { + funIfValid(res.getData()); + return; + } + if constexpr (!std::is_same_v) { + funIfNOTValid(); + } + return; +} + template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getNghIndex(eIndex eId, +ePartition::getNghIndex(eIndex gidx, const Neon::int8_3d& ngh3dIdx, - eIndex& eIdxNgh) const -> bool + eIndex& gidxxNgh) const -> bool { int tablePithc = (ngh3dIdx.x + mStencilRadius) + (ngh3dIdx.y + mStencilRadius) * mStencilTableYPitch + (ngh3dIdx.z + mStencilRadius) * mStencilTableYPitch * mStencilTableYPitch; NghIdx nghIdx = mStencil3dTo1dOffset[tablePithc]; eIndex tmpEIdxNgh; - const bool isValidNeighbour = isValidNgh(eId, nghIdx, tmpEIdxNgh); + const bool isValidNeighbour = isValidNgh(gidx, nghIdx, tmpEIdxNgh); if (isValidNeighbour) { - eIdxNgh = tmpEIdxNgh; + gidxxNgh = tmpEIdxNgh; } return isValidNeighbour; } @@ -146,17 +175,17 @@ ePartition::getNghIndex(eIndex eId, template NEON_CUDA_HOST_DEVICE inline auto -ePartition::isValidNgh(eIndex eId, +ePartition::isValidNgh(eIndex gidx, NghIdx nghIdx, eIndex& neighbourIdx) const -> bool { - const eIndex::Offset connectivityJumo = mCountAllocated * nghIdx + eId.helpGet(); + const eIndex::Offset connectivityJumo = mCountAllocated * nghIdx + gidx.helpGet(); neighbourIdx.helpSet() = NEON_CUDA_CONST_LOAD((mConnectivity + connectivityJumo)); const bool isValidNeighbour = (neighbourIdx.mIdx > -1); - // printf("(prtId %d) getNghData id %d eIdxNgh %d connectivityJumo %d\n", + // printf("(prtId %d) getNghData id %d gidxxNgh %d connectivityJumo %d\n", // mPrtID, - // eId.mIdx, neighbourIdx.mIdx, connectivityJumo); + // gidx.mIdx, neighbourIdx.mIdx, connectivityJumo); return isValidNeighbour; } @@ -181,7 +210,8 @@ ePartition::ePartition(int prtId, Offset* connRaw, Neon::index_3d* toGlobal, int8_t* stencil3dTo1dOffset, - int32_t stencilRadius) + int32_t stencilRadius, + Neon::index_3d domainSize) { mPrtID = prtId; mMem = mem; @@ -196,25 +226,26 @@ ePartition::ePartition(int prtId, mStencilTableYPitch = 2 * stencilRadius + 1; mStencilRadius = stencilRadius; + mDomainSize = domainSize; } template NEON_CUDA_HOST_DEVICE auto -ePartition::pointer(eIndex eId, int cardinalityIdx) const +ePartition::pointer(eIndex gidx, int cardinalityIdx) const -> const Type* { - Offset jump = getOffset(eId, cardinalityIdx); + Offset jump = getOffset(gidx, cardinalityIdx); return mMem + jump; } template NEON_CUDA_HOST_DEVICE inline auto -ePartition::getOffset(eIndex eId, int cardinalityIdx) const +ePartition::getOffset(eIndex gidx, int cardinalityIdx) const -> Offset { - return Offset(eId.helpGet() * mPitch.x + cardinalityIdx * mPitch.y); + return Offset(gidx.helpGet() * mPitch.x + cardinalityIdx * mPitch.y); } template ::mem() const return mMem; } +template +NEON_CUDA_HOST_DEVICE inline auto +ePartition::getDomainSize() + const -> Neon::index_3d +{ + return mDomainSize; +} + } // namespace Neon::domain::details::eGrid diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mField.h b/libNeonDomain/include/Neon/domain/details/mGrid/mField.h index 59b1a299..502675ed 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mField.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mField.h @@ -57,6 +57,14 @@ class mField const int& cardinality, const int level) const -> const T&; + auto operator()(const Idx& idx, + const int& cardinality, + const int level) -> T&; + + + auto operator()(const Idx& idx, + const int& cardinality, + const int level) const -> const T&; auto getReference(const Neon::index_3d& idx, const int& cardinality, @@ -83,11 +91,12 @@ class mField Neon::computeMode_t::computeMode_e mode = Neon::computeMode_t::computeMode_e::par) -> void; - auto ioToVtk(std::string fileName, - bool outputLevels = true, - bool outputBlockID = true, - bool outputVoxelID = true, - bool filterOverlaps = true) const -> void; + auto ioToVtk(std::string fileName, + bool outputLevels = true, + bool outputBlockID = true, + bool outputVoxelID = true, + bool filterOverlaps = true, + const Neon::int8_3d slice = {-1, -1, -1}) const -> void; auto load(Neon::set::Loader loader, int level, Neon::MultiResCompute compute) -> typename xField::Partition&; diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mField_imp.h b/libNeonDomain/include/Neon/domain/details/mGrid/mField_imp.h index 1c8bb264..0b2164de 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mField_imp.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mField_imp.h @@ -197,12 +197,31 @@ auto mField::operator()(const Neon::index_3d& idx, return getReference(idx, cardinality, level); } +template +auto mField::operator()(const Idx& idx, + const int& cardinality, + const int level) -> T& +{ + Neon::SetIdx devID(0); + return (*this)(level).getPartition(Neon::Execution::host, devID, Neon::DataView::STANDARD)(idx, cardinality); +} + + +template +auto mField::operator()(const Idx& idx, + const int& cardinality, + const int level) const -> const T& +{ + Neon::SetIdx devID(0); + return (*this)(level).getPartition(Neon::Execution::host, devID, Neon::DataView::STANDARD)(idx, cardinality); +} + template auto mField::getReference(const Neon::index_3d& idx, const int& cardinality, const int level) -> T& { - return mData->fields[level].getReference()(idx, cardinality); + return mData->fields[level].getReference(idx, cardinality); } template @@ -309,11 +328,12 @@ auto mField::load(Neon::set::Loader loader, template -auto mField::ioToVtk(std::string fileName, - bool outputLevels, - bool outputBlockID, - bool outputVoxelID, - bool filterOverlaps) const -> void +auto mField::ioToVtk(std::string fileName, + bool outputLevels, + bool outputBlockID, + bool outputVoxelID, + bool filterOverlaps, + const Neon::int8_3d slice) const -> void { auto l0Dim = mData->grid->getDimension(0); @@ -347,6 +367,7 @@ auto mField::ioToVtk(std::string fileName, OutputBlockID = 3, OutputVoxelID = 4, OutputData = 5, + Interface = 6, }; auto desc = mData->grid->getDescriptor(); @@ -360,6 +381,9 @@ auto mField::ioToVtk(std::string fileName, // TODO need to figure out which device owns this block SetIdx devID(0); + constexpr double tiny = 1e-7; + const Neon::double_3d voxelSize(1.0 / mData->grid->getDimension(l).x, 1.0 / mData->grid->getDimension(l).y, 1.0 / mData->grid->getDimension(l).z); + (*(mData->grid))(l).helpGetPartitioner1D().forEachSeq(devID, [&](const uint32_t blockIdx, const Neon::int32_3d memBlockOrigin, auto /*byPartition*/) { Neon::index_3d blockOrigin = memBlockOrigin; blockOrigin.x *= kMemBlockSizeX * voxelSpacing; @@ -389,6 +413,26 @@ auto mField::ioToVtk(std::string fileName, draw = !((*(mData->grid))(l - 1).isInsideDomain(voxelGlobalID)); } + const Neon::double_3d location(double(voxelGlobalID.x) / double(l0Dim.x), + double(voxelGlobalID.y) / double(l0Dim.y), + double(voxelGlobalID.z) / double(l0Dim.z)); + + //if (!(/*(location.x > lowSlice && location.x < highSlice) || + // (location.y > lowSlice && location.y < highSlice) ||*/ + // (location.z > lowSlice && location.z < highSlice))) { + // draw = false; + //} + + if (draw && (slice.x == 1 || slice.y == 1 || slice.z == 1)) { + draw = false; + for (int s = 0; s < 3 && !draw; ++s) { + if (slice.v[s] == 1 && location.v[s] - tiny <= 0.5 && location.v[s] + voxelSize.v[s] >= 0.5 - tiny) { + draw = true; + } + } + } + + if (draw) { if (op == Op::Count) { num_cells++; @@ -428,8 +472,11 @@ auto mField::ioToVtk(std::string fileName, } else if (op == Op::OutputData) { Idx idx(blockIdx, int8_t(i * kUserBlockSizeX + x), int8_t(j * kUserBlockSizeY + y), int8_t(k * kUserBlockSizeZ + z)); for (int c = 0; c < card; ++c) { - file << (*this)(l).getPartition(Neon::Execution::host, devID, Neon::DataView::STANDARD)(idx, c) << "\n"; + file << float((*this)(l).getPartition(Neon::Execution::host, devID, Neon::DataView::STANDARD)(idx, c)) << "\n"; } + } else if (op == Op::Interface) { + int inter = mData->grid->isOnInterface(voxelGlobalID, l); + file << inter << "\n"; } } } @@ -480,6 +527,12 @@ auto mField::ioToVtk(std::string fileName, } + { + file << "SCALARS Interface int 1 \n"; + file << "LOOKUP_TABLE default \n"; + loopOverActiveBlocks(Op::Interface); + } + file.close(); } diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mGrid.h b/libNeonDomain/include/Neon/domain/details/mGrid/mGrid.h index 2d2634aa..a6f3fc78 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mGrid.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mGrid.h @@ -5,6 +5,7 @@ #include "Neon/set/memory/memSet.h" #include "Neon/domain/details/bGrid/bGrid.h" +#include "Neon/domain/details/bGridDisg/bGrid.h" #include "Neon/domain/details/mGrid/mGridDescriptor.h" @@ -28,8 +29,9 @@ class mGrid { public: using Grid = mGrid; - using InternalGrid = Neon::domain::details::bGrid::bGrid; - using Idx = typename InternalGrid::Idx; + using InternalGrid = Neon::domain::details::disaggregated::bGrid::bGrid; + //using Idx = typename InternalGrid::Idx; + using Idx = Neon::domain::details::disaggregated::bGrid::bIndex; using Descriptor = mGridDescriptor<1>; template @@ -67,6 +69,7 @@ class mGrid const Neon::domain::Stencil& stencil, const Descriptor descriptor, bool isStrongBalanced = true, + bool isCullOverlaps = true, const double_3d& spacingData = double_3d(1, 1, 1), const double_3d& origin = double_3d(0, 0, 0)); @@ -78,6 +81,12 @@ class mGrid */ auto isInsideDomain(const Neon::index_3d& idx, int level) const -> bool; + + /** + * Given a voxel, check if it is on the interface between two different resolutions + */ + auto isOnInterface(const Neon::index_3d& idx, int level) const -> bool; + /** * Since mGird is internally represented by a stack of grids, this return the grid at certain level * @param level at which the grid is queried @@ -117,7 +126,7 @@ class mGrid * @param sharedMem amount of shared memory in bytes for CUDA kernels * @param lambda the lambda function that will do the computation */ - template + template auto newContainer(const std::string& name, int level, index_3d blockSize, @@ -131,11 +140,34 @@ class mGrid * @param level at which the work/kernel will be launched * @param lambda the lambda function that will do the computation */ - template + template + auto newContainer(const std::string& name, + int level, + LoadingLambda lambda) const -> Neon::set::Container; + + template auto newContainer(const std::string& name, int level, + bool isAlpha, LoadingLambda lambda) const -> Neon::set::Container; + template + auto newAlphaContainer(const std::string& name, + int level, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newBetaContainer(const std::string& name, + int level, + LoadingLambda lambda) const -> Neon::set::Container; + + template + auto newAlphaBetaContainer(const std::string& name, + int level, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container; + + auto getParentsBlockID(int level) const -> Neon::set::MemSet&; auto getChildBlockID(int level) const -> const Neon::set::MemSet&; @@ -183,6 +215,9 @@ class mGrid //set the bitmask assuming a dense domain auto setLevelBitMask(int l, const Neon::index_3d& blockID, const Neon::index_3d& localChild) -> void; + //clear the bitmask assuming a dense domain + auto clearLevelBitMask(int l, const Neon::index_3d& blockID, const Neon::index_3d& localChild) -> void; + struct Data { Neon::index_3d domainSize; @@ -209,9 +244,14 @@ class mGrid bool mStrongBalanced; + bool mCullOverlaps; + //bitmask of the active cells at each level and works as if the grid is dense at each level std::vector> denseLevelsBitmask; + //bitmask of the active cells at each level that are also along the interface of two resolution + std::vector> atInterfaceBitmask; + //collection of bGrids that make up the multi-resolution grid std::vector grids; diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mGrid_imp.h b/libNeonDomain/include/Neon/domain/details/mGrid/mGrid_imp.h index c0b3e6b7..7fb70905 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mGrid_imp.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mGrid_imp.h @@ -15,7 +15,7 @@ auto mGrid::newField(const std::string name, } -template +template auto mGrid::newContainer(const std::string& name, int level, index_3d blockSize, @@ -24,18 +24,64 @@ auto mGrid::newContainer(const std::string& name, { - Neon::set::Container kContainer = mData->grids[level].newContainer(name, blockSize, sharedMem, lambda); + Neon::set::Container kContainer = mData->grids[level].template newContainer(name, blockSize, sharedMem, lambda); return kContainer; } -template +template auto mGrid::newContainer(const std::string& name, int level, LoadingLambda lambda) const -> Neon::set::Container { - Neon::set::Container kContainer = mData->grids[level].newContainer(name, lambda); + Neon::set::Container kContainer = mData->grids[level].template newContainer(name, lambda); return kContainer; } + +template +auto mGrid::newContainer(const std::string& name, + int level, + bool isAlpha, + LoadingLambda lambda) const -> Neon::set::Container +{ + if (isAlpha) { + return newAlphaContainer(name, level, lambda); + } else { + return newBetaContainer(name, level, lambda); + } +} + +template +auto mGrid::newAlphaContainer(const std::string& name, + int level, + LoadingLambda lambda) const -> Neon::set::Container +{ + Neon::set::Container kContainer = mData->grids[level].template newAlphaContainer(name, lambda); + + return kContainer; +} + +template +auto mGrid::newBetaContainer(const std::string& name, + int level, + LoadingLambda lambda) const -> Neon::set::Container +{ + Neon::set::Container kContainer = mData->grids[level].template newBetaContainer(name, lambda); + + return kContainer; +} + +template +auto mGrid::newAlphaBetaContainer(const std::string& name, + int level, + LoadingLambdaAlpha lambdaAlpha, + LoadingLambdaBeta lambdaBeta) const -> Neon::set::Container +{ + Neon::set::Container kContainer = mData->grids[level].template newAlphaBetaContainer(name, lambdaAlpha, lambdaBeta); + + return kContainer; +} + + } // namespace Neon::domain::details::mGrid diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mPartition.h b/libNeonDomain/include/Neon/domain/details/mGrid/mPartition.h index ff8e5b08..52139dd5 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mPartition.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mPartition.h @@ -3,6 +3,7 @@ #include "Neon/domain/details/bGrid/bIndex.h" #include "Neon/domain/details/bGrid/bPartition.h" +#include "Neon/domain/details/bGridDisg/bPartition.h" #include "Neon/domain/interface/NghData.h" #include "Neon/domain/details/bGrid/StaticBlock.h" @@ -21,13 +22,13 @@ constexpr uint32_t kNumUserBlockPerMemBlockX = kMemBlockSizeX / kUserBlockSizeX; constexpr uint32_t kNumUserBlockPerMemBlockY = kMemBlockSizeY / kUserBlockSizeY; constexpr uint32_t kNumUserBlockPerMemBlockZ = kMemBlockSizeZ / kUserBlockSizeZ; -using kStaticBlock = Neon::domain::details::bGrid::StaticBlock; +using kStaticBlock = Neon::domain::details::disaggregated::bGrid::StaticBlock; template -class mPartition : public Neon::domain::details::bGrid::bPartition +class mPartition : public Neon::domain::details::disaggregated::bGrid::bPartition { public: - using Idx = Neon::domain::details::bGrid::bIndex; + using Idx = Neon::domain::details::disaggregated::bGrid::bIndex; using NghIdx = Idx::NghIdx; using NghData = Neon::domain::NghData; using Type = T; diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/mPartition_imp.h b/libNeonDomain/include/Neon/domain/details/mGrid/mPartition_imp.h index 9473ca55..bd5f2508 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/mPartition_imp.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/mPartition_imp.h @@ -4,7 +4,7 @@ namespace Neon::domain::details::mGrid { template mPartition::mPartition() - : Neon::domain::details::bGrid::bPartition(), + : Neon::domain::details::disaggregated::bGrid::bPartition(), mMemParent(nullptr), mMemChild(nullptr), mParentBlockID(nullptr), @@ -33,7 +33,7 @@ mPartition::mPartition(int level, NghIdx* stencilNghIndex, int* refFactors, int* spacing) - : Neon::domain::details::bGrid::bPartition(0, cardinality, mem, neighbourBlocks, mask, origin, stencilNghIndex), + : Neon::domain::details::disaggregated::bGrid::bPartition(0, cardinality, mem, neighbourBlocks, mask, origin, stencilNghIndex, {0, 0, 0}), mLevel(level), mMemParent(memParent), mMemChild(memChild), @@ -209,10 +209,10 @@ NEON_CUDA_HOST_DEVICE inline auto mPartition::parentVal(const Idx& eId, template NEON_CUDA_HOST_DEVICE inline auto mPartition::hasParent(const Idx& cell) const -> bool { - if (mMemParent) { - return true; + if (!cell.isActive()) { + return false; } - return false; + return getParent(cell).isActive(); } template diff --git a/libNeonDomain/include/Neon/domain/details/mGrid/xField.h b/libNeonDomain/include/Neon/domain/details/mGrid/xField.h index 45276a30..22c17f4e 100644 --- a/libNeonDomain/include/Neon/domain/details/mGrid/xField.h +++ b/libNeonDomain/include/Neon/domain/details/mGrid/xField.h @@ -3,7 +3,7 @@ #include "Neon/domain/details/mGrid/mPartition.h" #include "Neon/domain/interface/FieldBaseTemplate.h" -namespace Neon::domain::details::bGrid { +namespace Neon::domain::details::disaggregated::bGrid { template class bGrid; } @@ -17,14 +17,14 @@ class mGrid; template class xField : public Neon::domain::interface::FieldBaseTemplate, + Neon::domain::details::disaggregated::bGrid::bGrid, mPartition, int> { public: using Partition = mPartition; - using Grid = Neon::domain::details::bGrid::bGrid; + using Grid = Neon::domain::details::disaggregated::bGrid::bGrid; using Field = typename Grid::Field; diff --git a/libNeonDomain/include/Neon/domain/details/sGrid/sGrid_imp.h b/libNeonDomain/include/Neon/domain/details/sGrid/sGrid_imp.h index eed4c3bf..c76b2d42 100644 --- a/libNeonDomain/include/Neon/domain/details/sGrid/sGrid_imp.h +++ b/libNeonDomain/include/Neon/domain/details/sGrid/sGrid_imp.h @@ -41,7 +41,9 @@ sGrid::sGrid(const OuterGridT& outerGrid, nElementsPerPartition, defaultsBlockDim, outerGrid.getSpacing(), - outerGrid.getOrigin()); + outerGrid.getOrigin(), + outerGrid.getSpaceCurve(), + outerGrid.getMemoryBlock()); mStorage = std::make_shared(); mStorage->init(outerGrid); @@ -173,7 +175,9 @@ sGrid::sGrid(const OuterGridT& outerGrid, mStorage->getCount(Neon::DataView::STANDARD), defaultsBlockDim, outerGrid.getSpacing(), - outerGrid.getOrigin()); + outerGrid.getOrigin(), + outerGrid.getSpaceCurve(), + outerGrid.getMemoryBlock()); } template diff --git a/libNeonDomain/include/Neon/domain/interface/GridBase.h b/libNeonDomain/include/Neon/domain/interface/GridBase.h index daa5d697..04837435 100644 --- a/libNeonDomain/include/Neon/domain/interface/GridBase.h +++ b/libNeonDomain/include/Neon/domain/interface/GridBase.h @@ -9,8 +9,8 @@ #include "Neon/set/DevSet.h" #include "Neon/core/tools/io/ioToVti.h" +#include "Neon/domain/tools/SpaceCurves.h" #include "Stencil.h" - namespace Neon::domain::interface { /** @@ -66,13 +66,6 @@ class GridBase auto getNumActiveCellsPerPartition() const -> const Neon::set::DataSet&; - // /** - // * Return the number of cells stored per partition - // * @return - // */ - // auto getNumActiveCellsPerPartition() const - // -> const Neon::set::DataSet&; - /** * Creates a DataSet object compatible with the number of GPU used by the grid. */ @@ -123,6 +116,8 @@ class GridBase auto getGridUID() const -> size_t; + + /** * Add the grid information in a Report object */ @@ -136,31 +131,40 @@ class GridBase auto getDefaultBlock() const -> const Neon::index_3d&; + auto getMemoryBlock() const + -> Neon::index_3d; + + auto getSpaceCurve() const + -> Neon::domain::tool::spaceCurves::EncoderType; protected: /** * Protected constructor */ - GridBase(const std::string& gridImplementationName, - const Neon::Backend& backend, - const Neon::index_3d& dim, - const Neon::domain::Stencil& stencil, - const Neon::set::DataSet& nPartitionElements /**< Number of element per partition */, - const Neon::index_3d& defaultBlockSize, - const Vec_3d& spacingData = Vec_3d(1, 1, 1) /*! Spacing, i.e. size of a voxel */, - const Vec_3d& origin = Vec_3d(0, 0, 0) /*! Origin */); + GridBase(const std::string& gridImplementationName, + const Neon::Backend& backend, + const Neon::index_3d& dim, + const Neon::domain::Stencil& stencil, + const Neon::set::DataSet& nPartitionElements /**< Number of element per partition */, + const Neon::index_3d& defaultBlockSize, + const Vec_3d& spacingData /*! Spacing, i.e. size of a voxel */, + const Vec_3d& origin /*! Origin */, + Neon::domain::tool::spaceCurves::EncoderType spaceCurve, + Neon::index_3d memoryBlock); /** * Protected initialization function used by derived classes to set some parameters. */ - auto init(const std::string& gridImplementationName /**< Name of the implementation, for example dGrid eGrid etc */, - const Neon::Backend& backend /**< Backend used to create the grid */, - const Neon::index_3d& dimension /**< Dimension of the grid */, - const Neon::domain::Stencil& stencil /**< Union of all the stencil that will be used with the grid */, - const Neon::set::DataSet& nPartitionElements /**< Elements associated to each partition */, - const Neon::index_3d& defaultBlockSize /**< Default thread block size */, - const Vec_3d& spacingData /**< Grid spacing */, - const Vec_3d& origin /**< Position in space of the grid's origin */) -> void; + auto init(const std::string& gridImplementationName /**< Name of the implementation, for example dGrid eGrid etc */, + const Neon::Backend& backend /**< Backend used to create the grid */, + const Neon::index_3d& dimension /**< Dimension of the grid */, + const Neon::domain::Stencil& stencil /**< Union of all the stencil that will be used with the grid */, + const Neon::set::DataSet& nPartitionElements /**< Elements associated to each partition */, + const Neon::index_3d& defaultBlockSize /**< Default thread block size */, + const Vec_3d& spacingData /**< Grid spacing */, + const Vec_3d& origin /**< Position in space of the grid's origin */, + Neon::domain::tool::spaceCurves::EncoderType spaceCurve, + Neon::index_3d memoryBlock) -> void; /** * Protected method to set the default thread blocks size @@ -175,6 +179,7 @@ class GridBase -> Neon::set::LaunchParameters&; + private: struct Storage { @@ -187,14 +192,16 @@ class GridBase index_3d blockDim; }; - Neon::Backend backend /**< Backend used to create and run the grid. */; - Neon::index_3d dimension /**< Dimension of the grid */; - Neon::domain::Stencil stencil /**< Stencil used for the grid initialization */; - Neon::set::DataSet nPartitionElements /**< Number of elements per partition */; - Vec_3d spacing /**< Spacing, i.e. size of a voxel */; - Vec_3d origin /**< Position in space of the grid's origin */; - Defaults_t defaults; - std::string gridImplementationName; + Neon::Backend backend /**< Backend used to create and run the grid. */; + Neon::index_3d dimension /**< Dimension of the grid */; + Neon::domain::Stencil stencil /**< Stencil used for the grid initialization */; + Neon::set::DataSet nPartitionElements /**< Number of elements per partition */; + Vec_3d spacing /**< Spacing, i.e. size of a voxel */; + Vec_3d origin /**< Position in space of the grid's origin */; + Defaults_t defaults; + std::string gridImplementationName; + Neon::domain::tool::spaceCurves::EncoderType spaceCurve; + Neon::index_3d memoryBlock; }; std::shared_ptr mStorage; diff --git a/libNeonDomain/include/Neon/domain/interface/NghData.h b/libNeonDomain/include/Neon/domain/interface/NghData.h index 487c8fd7..b7de2fca 100644 --- a/libNeonDomain/include/Neon/domain/interface/NghData.h +++ b/libNeonDomain/include/Neon/domain/interface/NghData.h @@ -10,7 +10,7 @@ struct NghData { Type mData; bool mIsValid; - NEON_CUDA_HOST_DEVICE NghData(bool status = false) + NEON_CUDA_HOST_DEVICE NghData() { this->mIsValid = false; } diff --git a/libNeonDomain/include/Neon/domain/tools/GridTransformer.h b/libNeonDomain/include/Neon/domain/tools/GridTransformer.h index 90556fb9..47518f7a 100644 --- a/libNeonDomain/include/Neon/domain/tools/GridTransformer.h +++ b/libNeonDomain/include/Neon/domain/tools/GridTransformer.h @@ -1,10 +1,10 @@ #pragma once +#include "Neon/domain/tools/PartitionTable.h" +#include "Neon/domain/tools/SpanTable.h" #include "Neon/domain/tools/gridTransformer/tField.h" #include "Neon/domain/tools/gridTransformer/tGrid.h" #include "Neon/domain/tools/gridTransformer/tGrid_ti.h" -#include "Neon/domain/tools/PartitionTable.h" -#include "Neon/domain/tools/SpanTable.h" namespace Neon::domain::tool { @@ -24,9 +24,10 @@ template class GridTransformer { public: + using Idx = typename GridTransformation::Idx; + using Span = typename GridTransformation::Span; template using Partition = typename GridTransformation::template Partition; - using Span = typename GridTransformation::Span; using FoundationGrid = typename GridTransformation::FoundationGrid; using Grid = details::tGrid; diff --git a/libNeonDomain/include/Neon/domain/tools/Partitioner1D.h b/libNeonDomain/include/Neon/domain/tools/Partitioner1D.h index 67f7d9f7..6d110a1f 100644 --- a/libNeonDomain/include/Neon/domain/tools/Partitioner1D.h +++ b/libNeonDomain/include/Neon/domain/tools/Partitioner1D.h @@ -105,13 +105,14 @@ class Partitioner1D template - Partitioner1D(const Neon::Backend& backend, - const ActiveIndexLambda& activeIndexLambda, - const BcLambda& bcLambda, - const Neon::index_3d& dataBlockSize, - const Neon::int32_3d& domainSize, - const Neon::domain::Stencil stencil, - const int& multiResDiscreteIdxSpacing = 1) + Partitioner1D(const Neon::Backend& backend, + const ActiveIndexLambda& activeIndexLambda, + const BcLambda& bcLambda, + const Neon::index_3d& dataBlockSize, + const Neon::int32_3d& domainSize, + const Neon::domain::Stencil stencil, + Neon::domain::tool::spaceCurves::EncoderType spaceFillingType, + const int& multiResDiscreteIdxSpacing = 1) { mData = std::make_shared(); @@ -119,6 +120,7 @@ class Partitioner1D mData->mMultiResDiscreteIdxSpacing = multiResDiscreteIdxSpacing; mData->mStencil = stencil; mData->mDomainSize = domainSize; + mData->spaceCurve = spaceFillingType; // Block space interval (i.e. indexing space at the block granularity) @@ -164,6 +166,7 @@ class Partitioner1D domainSize, stencil, multiResDiscreteIdxSpacing, + spaceFillingType, mData->spanDecomposition); mData->mSpanLayout = std::make_shared( @@ -182,7 +185,12 @@ class Partitioner1D { return mData->block3DSpan; } - + + auto getSpaceCurve() const -> Neon::domain::tool::spaceCurves::EncoderType + { + return mData->spaceCurve; + } + auto getMemoryGrid() -> Neon::aGrid& { return mData->mTopologyWithGhost; @@ -288,7 +296,7 @@ class Partitioner1D auto getDenseMeta() -> const DenseMeta& { - //setDenseMeta(); + // setDenseMeta(); return *mData->mDenseMeta; } @@ -443,13 +451,14 @@ class Partitioner1D class Data { public: - Neon::index_3d mDataBlockSize = 0; - int mMultiResDiscreteIdxSpacing = 0; - Neon::domain::Stencil mStencil; - Neon::index_3d mDomainSize; - Neon::int32_3d block3DSpan; - bool globalMappingInit = false; - Neon::aGrid::Field globalMapping; + Neon::index_3d mDataBlockSize = 0; + int mMultiResDiscreteIdxSpacing = 0; + Neon::domain::Stencil mStencil; + Neon::index_3d mDomainSize; + Neon::int32_3d block3DSpan; + bool globalMappingInit = false; + Neon::aGrid::Field globalMapping; + Neon::domain::tool::spaceCurves::EncoderType spaceCurve; bool getStencil3dTo1dOffsetInit = false; Neon::set::MemSet stencil3dTo1dOffset; diff --git a/libNeonDomain/include/Neon/domain/tools/PointHashTable.h b/libNeonDomain/include/Neon/domain/tools/PointHashTable.h index 1b3e547e..d7bca923 100644 --- a/libNeonDomain/include/Neon/domain/tools/PointHashTable.h +++ b/libNeonDomain/include/Neon/domain/tools/PointHashTable.h @@ -61,6 +61,8 @@ class PointHashTable */ auto size() const -> size_t; + auto getBBox() const -> Point const&; + private: using Key = size_t; diff --git a/libNeonDomain/include/Neon/domain/tools/PointHashTable_imp.h b/libNeonDomain/include/Neon/domain/tools/PointHashTable_imp.h index 3a7375af..1c9abbef 100644 --- a/libNeonDomain/include/Neon/domain/tools/PointHashTable_imp.h +++ b/libNeonDomain/include/Neon/domain/tools/PointHashTable_imp.h @@ -105,4 +105,10 @@ auto PointHashTable::size() const -> size_t { return mMap.size(); } + +template +auto PointHashTable::getBBox() const -> Point const&{ + return mBBox; +} + } // namespace Neon::domain::tool \ No newline at end of file diff --git a/libNeonDomain/include/Neon/domain/tools/SpaceCurves.h b/libNeonDomain/include/Neon/domain/tools/SpaceCurves.h new file mode 100644 index 00000000..add3f51e --- /dev/null +++ b/libNeonDomain/include/Neon/domain/tools/SpaceCurves.h @@ -0,0 +1,352 @@ +#pragma once +#include "Neon/Neon.h" +#include "Neon/Report.h" + +namespace Neon::domain::tool::spaceCurves { + + +enum struct EncoderType +{ + sweep = 0, + morton = 1, + hilbert = 2, +}; + + +/** + * Set of utilities for DataView options. + */ +struct EncoderTypeUtil +{ + /** + * Number of configurations for the enum + */ + static const int nConfig{static_cast(3)}; + + /** + * Convert enum value to string + * + * @param dataView + * @return + */ + static auto toString(EncoderType encoderType) -> std::string; + + /** + * Returns all valid configuration for DataView + * @return + */ + static auto getOptions() -> std::array; + + static auto fromInt(int val) -> EncoderType; + static auto fromString(const std::string& opt) -> EncoderType; + static auto toInt(EncoderType encoderType) -> int; + + struct Cli + { + explicit Cli(std::string); + explicit Cli(EncoderType model); + Cli(); + + auto getOption() const -> EncoderType; + auto set(const std::string& opt) -> void; + auto getStringOptions() const -> std::string; + auto getStringOption() const -> std::string; + auto getDoc() const -> std::string; + + auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void; + auto addToReport(Neon::Report& report) const -> void; + + private: + bool mSet = false; + EncoderType mOption; + }; +}; + + +/** + * operator<< + * + * @param os + * @param m + * @return + */ +std::ostream& operator<<(std::ostream& os, Neon::DataView const& m); + +class Encoder +{ + private: + static constexpr uint8_t mortonToHilbertTable[] = { + 48, + 33, + 27, + 34, + 47, + 78, + 28, + 77, + 66, + 29, + 51, + 52, + 65, + 30, + 72, + 63, + 76, + 95, + 75, + 24, + 53, + 54, + 82, + 81, + 18, + 3, + 17, + 80, + 61, + 4, + 62, + 15, + 0, + 59, + 71, + 60, + 49, + 50, + 86, + 85, + 84, + 83, + 5, + 90, + 79, + 56, + 6, + 89, + 32, + 23, + 1, + 94, + 11, + 12, + 2, + 93, + 42, + 41, + 13, + 14, + 35, + 88, + 36, + 31, + 92, + 37, + 87, + 38, + 91, + 74, + 8, + 73, + 46, + 45, + 9, + 10, + 7, + 20, + 64, + 19, + 70, + 25, + 39, + 16, + 69, + 26, + 44, + 43, + 22, + 55, + 21, + 68, + 57, + 40, + 58, + 67, + }; + + static constexpr uint8_t hilbertToMortonTable[] = { + 48, + 33, + 35, + 26, + 30, + 79, + 77, + 44, + 78, + 68, + 64, + 50, + 51, + 25, + 29, + 63, + 27, + 87, + 86, + 74, + 72, + 52, + 53, + 89, + 83, + 18, + 16, + 1, + 5, + 60, + 62, + 15, + 0, + 52, + 53, + 57, + 59, + 87, + 86, + 66, + 61, + 95, + 91, + 81, + 80, + 2, + 6, + 76, + 32, + 2, + 6, + 12, + 13, + 95, + 91, + 17, + 93, + 41, + 40, + 36, + 38, + 10, + 11, + 31, + 14, + 79, + 77, + 92, + 88, + 33, + 35, + 82, + 70, + 10, + 11, + 23, + 21, + 41, + 40, + 4, + 19, + 25, + 29, + 47, + 46, + 68, + 64, + 34, + 45, + 60, + 62, + 71, + 67, + 18, + 16, + 49, + }; + + static inline auto transformCurve(uint64_t in, uint64_t bits, const uint8_t* lookupTable) + { + uint64_t transform = 0; + uint64_t out = 0; + + for (int32_t i = int(3 * (bits - 1)); i >= 0; i -= 3) { + transform = lookupTable[transform | ((in >> i) & 7)]; + out = (out << 3) | (transform & 7); + transform &= ~7; + } + + return out; + } + + static inline auto mortonToHilbert3D(uint64_t mortonIndex, uint64_t bits) + { + return transformCurve(mortonIndex, bits, mortonToHilbertTable); + } + + static inline auto hilbertToMorton3D(uint64_t hilbertIndex, uint64_t bits) + { + return transformCurve(hilbertIndex, bits, hilbertToMortonTable); + } + + + static inline auto splitBy3(uint64_t a) + { + uint64_t x = a & 0x1fffff; // we only care about 21 bits + x = (x | x << 32) & 0x1f00000000ffff; // shift left 32 bits, mask out bits 21-31 + x = (x | x << 16) & 0x1f0000ff0000ff; // shift left 16 bits, mask out bits 11-20, 43-52 + x = (x | x << 8) & 0x100f00f00f00f00f; // shift left 8 bits, mask out bits 5-10, 21-26, 37-42, 53-58 + x = (x | x << 4) & 0x10c30c30c30c30c3; // shift left 4 bits, mask out bits 3-4, 11-12, 19-20, 27-28, 35-36, 43-44, 51-52, 59-60 + x = (x | x << 2) & 0x1249249249249249; // shift left 2 bits, mask out bits 2, 6-7, 10, 14-15, 18, 22-23, 26, 30-31, 34, 38-39, 42, 46-47, 50, 54-55, 58 + return x; + } + + public: + static inline auto mortonEncode([[maybe_unused]] Neon::index_3d dim, Neon::index_3d idx) + -> uint64_t + { + auto idxU64 = idx.newType(); + return splitBy3(idxU64.x) | (splitBy3(idxU64.y) << 1) | (splitBy3(idxU64.z) << 2); + } + + static inline auto encodeHilbert(Neon::index_3d dim, Neon::index_3d idx) + -> uint64_t + { + uint64_t mortonEncoded = mortonEncode(dim, idx); + uint64_t bits = uint64_t(std::ceil(std::log2(dim.newType().rMax()))); + return mortonToHilbert3D(mortonEncoded, bits); + } + + static inline auto encodeSweep(Neon::index_3d dim, Neon::index_3d idx) + -> uint64_t + { + auto idxU64 = idx.newType(); + auto dimU64 = dim.newType(); + + uint64_t res = idxU64.x + idxU64.y * dimU64.x + idxU64.z * dimU64.x * dimU64.y; + return res; + } + + static inline auto encode(EncoderType type, Neon::index_3d dim, Neon::index_3d idx) + { + switch (type) { + case EncoderType::morton: + return mortonEncode(dim, idx); + case EncoderType::hilbert: + return encodeHilbert(dim, idx); + case EncoderType::sweep: + return encodeSweep(dim, idx); + default: + NEON_THROW_UNSUPPORTED_OPERATION("Encoder type not supported"); + } + } +}; +} // namespace Neon::domain::tool::spaceCurves diff --git a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tField.h b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tField.h index c9ca59b9..a1b4c90d 100644 --- a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tField.h +++ b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tField.h @@ -26,6 +26,7 @@ class tField : public Neon::domain::interface::FieldBaseTemplate; using Idx = typename Partition::Idx; using NghIdx = typename Partition::NghIdx; // for compatibility with eGrid + using NghData = typename Partition::NghData; // for compatibility with eGrid private: using FoundationGrid = typename GridTransformation::FoundationGrid; diff --git a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid.h b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid.h index d6d98be1..ac98983c 100644 --- a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid.h +++ b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid.h @@ -8,8 +8,8 @@ #include "Neon/domain/interface/Stencil.h" #include "Neon/domain/interface/common.h" #include "Neon/domain/patterns/PatternScalar.h" +#include "Neon/domain/tools/SpaceCurves.h" #include "Neon/domain/tools/SpanTable.h" - /** * template * GridTransformation { @@ -54,6 +54,16 @@ class tGrid : public Neon::domain::interface::GridBaseTemplate + tGrid(const Neon::Backend& backend /**< Target for computation */, + const Neon::int32_3d& dimension /**< Dimension of the bounding box containing the domain */, + const SparsityPattern& activeCellLambda /**< InOrOutLambda({x,y,z}->{true, false}) */, + const Neon::domain::Stencil& stencil /**< Stencil used by any computation on the grid */, + const Vec_3d& spacing = Vec_3d(1, 1, 1) /**< Spacing, i.e. size of a voxel */, + const Vec_3d& origin = Vec_3d(0, 0, 0) /**< Origin */, + Neon::domain::tool::spaceCurves::EncoderType encoderType = Neon::domain::tool::spaceCurves::EncoderType::sweep); + tGrid(const tGrid& other); // copy constructor tGrid(tGrid&& other) noexcept; // move constructor tGrid& operator=(const tGrid& other); // copy assignment @@ -109,7 +119,7 @@ class tGrid : public Neon::domain::interface::GridBaseTemplate(bk); } diff --git a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid_ti.h b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid_ti.h index 4ba1403d..b01b8718 100644 --- a/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid_ti.h +++ b/libNeonDomain/include/Neon/domain/tools/gridTransformer/tGrid_ti.h @@ -27,7 +27,41 @@ tGrid::tGrid(FoundationGrid& foundationGrid) foundationGrid.getNumActiveCellsPerPartition(), foundationGrid.getDefaultBlock(), foundationGrid.getSpacing(), - foundationGrid.getOrigin()); + foundationGrid.getOrigin(), + foundationGrid.getSpaceCurve(), + foundationGrid.getMemoryBlock()); +} + +template +template +tGrid::tGrid(const Neon::Backend& bk, + const Neon::int32_3d& dimension, + const SparsityPattern& activeCellLambda, + const Neon::domain::Stencil& stencil, + const Vec_3d& spacing, + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType encoderType) +{ + mData = std::make_shared(bk); + mData->foundationGrid = FoundationGrid(bk, + dimension, + activeCellLambda, + stencil, + spacing, + origin, + encoderType); + GridTransformation::initSpan(mData->foundationGrid, + NEON_OUT mData->spanTable); + tGrid::GridBase::init("tGrid", + bk, + mData->foundationGrid.getDimension(), + mData->foundationGrid.getStencil(), + mData->foundationGrid.getNumActiveCellsPerPartition(), + mData->foundationGrid.getDefaultBlock(), + mData->foundationGrid.getSpacing(), + mData->foundationGrid.getOrigin(), + encoderType, + mData->foundationGrid.getMemoryBlock()); } template diff --git a/libNeonDomain/include/Neon/domain/tools/partitioning/SpanClassifier.h b/libNeonDomain/include/Neon/domain/tools/partitioning/SpanClassifier.h index 8833af7a..ef52e7ef 100644 --- a/libNeonDomain/include/Neon/domain/tools/partitioning/SpanClassifier.h +++ b/libNeonDomain/include/Neon/domain/tools/partitioning/SpanClassifier.h @@ -1,240 +1,352 @@ #pragma once + #include "Neon/core/core.h" +#include #include "Cassifications.h" #include "Neon/domain/tools/PointHashTable.h" +#include "Neon/domain/tools/SpaceCurves.h" #include "Neon/domain/tools/partitioning/SpanDecomposition.h" namespace Neon::domain::tool::partitioning { -class SpanClassifier -{ - public: - SpanClassifier() = default; - - template - SpanClassifier(const Neon::Backend& backend, - const ActiveCellLambda& activeCellLambda, - const BcLambda& bcLambda, - const Block3dIdxToBlockOrigin& block3dIdxToBlockOrigin, - const GetVoxelAbsolute3DIdx& getVoxelAbsolute3DIdx, - const Neon::int32_3d& block3DSpan, - const Neon::int32_3d& dataBlockSize3D, - const Neon::int32_3d& domainSize, - const Neon::domain::Stencil stencil, - const int& discreteVoxelSpacing, - std::shared_ptr sp); - - - /** - * For the partition setIdx, it returns a vector that maps local ids to 3d points. - * The local ids are local in terms of partition, domain and direction classes. - */ - [[nodiscard]] auto getMapper1Dto3D(Neon::SetIdx const& setIdx, - ByPartition, - ByDirection, - ByDomain) const - -> const std::vector&; - - /** - * For the partition setIdx, it returns a hash object that maps 3d points to local ids - * The local ids are local in terms of partition, domain and direction classes. - */ - [[nodiscard]] auto getMapper3Dto1D(Neon::SetIdx const& setIdx, - ByPartition, - ByDirection, - ByDomain) const - -> const Neon::domain::tool::PointHashTable&; - - [[nodiscard]] auto countInternal(Neon::SetIdx setIdx, - ByDomain byDomain) const -> int; - - [[nodiscard]] auto countInternal(Neon::SetIdx setIdx) const -> int; - - [[nodiscard]] auto countBoundary(Neon::SetIdx setIdx, - ByDirection byDirection, - ByDomain byDomain) const -> int; - - - [[nodiscard]] auto countBoundary(Neon::SetIdx setIdx) const -> int; - - auto getMapper1Dto3D(Neon::SetIdx const& setIdx, - ByPartition, - ByDirection, - ByDomain) - -> std::vector&; - - auto getMapper3Dto1D(Neon::SetIdx const& setIdx, - ByPartition, - ByDirection, - ByDomain) - -> Neon::domain::tool::PointHashTable&; - - private: - auto addPoint(Neon::SetIdx const& setIdx, - Neon::int32_3d const& int323D, - ByPartition byPartition, - ByDirection byDirection, - ByDomain byDomain) -> void; - - - struct Info - { - std::vector id1dTo3d; - Neon::domain::tool::PointHashTable id3dTo1d; - }; - - using Leve0_Info = Info; - using Leve1_ByDomain = std::array; - using Leve2_ByDirection = std::array; - using Leve3_ByPartition = std::array; - using Data = Neon::set::DataSet; - - Data mData; - std::shared_ptr mSpanDecomposition; -}; - - -template -SpanClassifier::SpanClassifier(const Neon::Backend& backend, - const ActiveCellLambda& activeCellLambda, - const BcLambda& bcLambda, - const Block3dIdxToBlockOrigin& block3dIdxToBlockOrigin, - const GetVoxelAbsolute3DIdx& getVoxelAbsolute3DIdx, - const Neon::int32_3d& block3DSpan, - const Neon::int32_3d& dataBlockSize3D, - const Neon::int32_3d& domainSize, - const Neon::domain::Stencil stencil, - const int& discreteVoxelSpacing, - std::shared_ptr spanDecompositionNoUse) -{ - mData = backend.devSet().newDataSet(); - mSpanDecomposition = spanDecompositionNoUse; - - ByDirection defaultForInternal = ByDirection::up; - - mData.forEachSeq([&](SetIdx, auto& leve3ByPartition) { - // using Leve0_Info = Info; - // using Leve1_ByDomain = std::array; - // using Leve2_ByDirection = std::array; - // using Leve3_ByPartition = std::array; - // using Data = Neon::set::DataSet; - for (auto& level2 : leve3ByPartition) { - for (auto& level1 : level2) { - for (auto& level0 : level1) { - level0.id3dTo1d = Neon::domain::tool::PointHashTable(block3DSpan); - } + struct Hash { + std::vector id1dTo3d; + Neon::domain::tool::PointHashTable id3dTo1d; + + auto reHash(Neon::domain::tool::spaceCurves::EncoderType encoderType) -> void { + // std::cout << "BEFORE Cartesian "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << id1dTo3d[i] << " "; + // } + // std::cout << std::endl + // << " ID "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << *id3dTo1d.getMetadata(id1dTo3d[i]) << " "; + // } + // std::cout << std::endl + // << " CODE "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << Neon::domain::tool::spaceCurves::Encoder::encode(spaceCurve, id3dTo1d.getBBox(), id1dTo3d[i]) << " "; + // } + // std::cout << std::endl; + // std::cout << " BOX " << id3dTo1d.getBBox(); + // + // std::cout << std::endl; + + // Encoding all points w.r.t the encoder type + std::vector code; + for (auto const &point: id1dTo3d) { + code.push_back( + Neon::domain::tool::spaceCurves::Encoder::encode(encoderType, id3dTo1d.getBBox(), point)); + } + // Sort id1dTo3d w.r.t. the codes + std::vector permutation = getSortedPermutation(code, [](uint64_t a, uint64_t b) { + return a < b; + }); + id1dTo3d = applyPermutation(id1dTo3d, permutation); + for (uint64_t i = 0; i < id1dTo3d.size(); i++) { + *(id3dTo1d.getMetadata(id1dTo3d[i])) = i; } + // + // std::cout << "AFTER Cartesian "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << id1dTo3d[i] << " "; + // } + // std::cout << std::endl + // << " ID "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << *id3dTo1d.getMetadata(id1dTo3d[i]) << " "; + // } + // std::cout << std::endl + // << " CODE "; + // for (int i = 0; i < int(id1dTo3d.size()); i++) { + // std::cout << Neon::domain::tool::spaceCurves::Encoder::encode(spaceCurve, id3dTo1d.getBBox(), id1dTo3d[i]) << " "; + // } + // std::cout << std::endl; } - }); - - // Computing the stencil radius at block granularity - // If the dataBlockEdge is equal to 1 (element sparse block) the radius is - // the same as the stencil radius. - auto const zRadius = [&stencil, dataBlockSize3D]() -> int { - auto maxRadius = stencil.getRadius(); - maxRadius = ((maxRadius - 1) / dataBlockSize3D.z) + 1; - return maxRadius; - }(); - - // For each Partition - backend.devSet() - .forEachSetIdxSeq( - [&](const Neon::SetIdx& setIdx) { - int beginZ = mSpanDecomposition->getFirstZSliceIdx()[setIdx]; - int lastZ = mSpanDecomposition->getLastZSliceIdx()[setIdx]; - - std::vector const boundaryDwSlices = [&] { - std::vector result; - for (int i = 0; i < zRadius; i++) { - result.push_back(beginZ + i); - } - return result; - }(); - std::vector const boundaryUpSlices = [&] { - std::vector result; - for (int i = zRadius - 1; i >= 0; i--) { - result.push_back(lastZ - i); - } - return result; - }(); + private: + template + std::vector getSortedPermutation( + const std::vector &vec, + Compare const &compare) { + std::vector p(vec.size()); + std::iota(p.begin(), p.end(), 0); + std::sort(p.begin(), p.end(), + [&](std::size_t i, std::size_t j) { return compare(vec[i], vec[j]); }); + return p; + } + + template + std::vector applyPermutation( + const std::vector &vec, + const std::vector &p) { + std::vector sorted_vec(vec.size()); + std::transform(p.begin(), p.end(), sorted_vec.begin(), + [&](std::size_t i) { return vec[i]; }); + return sorted_vec; + } + }; - auto inspectBlock = [&](int bx, int by, int bz, ByPartition byPartition, ByDirection byDirection) { - Neon::int32_3d blockOrigin = block3dIdxToBlockOrigin({bx, by, bz}); + class SpanClassifier { + public: + SpanClassifier() = default; + + template + SpanClassifier(const Neon::Backend &backend, + const ActiveCellLambda &activeCellLambda, + const BcLambda &bcLambda, + const Block3dIdxToBlockOrigin &block3dIdxToBlockOrigin, + const GetVoxelAbsolute3DIdx &getVoxelAbsolute3DIdx, + const Neon::int32_3d &block3DSpan, + const Neon::int32_3d &dataBlockSize3D, + const Neon::int32_3d &domainSize, + const Neon::domain::Stencil stencil, + const int &discreteVoxelSpacing, + Neon::domain::tool::spaceCurves::EncoderType encoderType, + std::shared_ptr sp); + + + /** + * For the partition setIdx, it returns a vector that maps local ids to 3d points. + * The local ids are local in terms of partition, domain and direction classes. + */ + [[nodiscard]] auto getMapper1Dto3D(Neon::SetIdx const &setIdx, + ByPartition, + ByDirection, + ByDomain) const + -> const std::vector &; + + /** + * For the partition setIdx, it returns a hash object that maps 3d points to local ids + * The local ids are local in terms of partition, domain and direction classes. + */ + [[nodiscard]] auto getMapper3Dto1D(Neon::SetIdx const &setIdx, + ByPartition, + ByDirection, + ByDomain) const + -> const Neon::domain::tool::PointHashTable &; + + [[nodiscard]] auto countInternal(Neon::SetIdx setIdx, + ByDomain byDomain) const -> int; + + [[nodiscard]] auto countInternal(Neon::SetIdx setIdx) const -> int; + + [[nodiscard]] auto countBoundary(Neon::SetIdx setIdx, + ByDirection byDirection, + ByDomain byDomain) const -> int; + + + [[nodiscard]] auto countBoundary(Neon::SetIdx setIdx) const -> int; + + auto getMapper1Dto3D(Neon::SetIdx const &setIdx, + ByPartition, + ByDirection, + ByDomain) + -> std::vector &; + + auto getMapper3Dto1D(Neon::SetIdx const &setIdx, + ByPartition, + ByDirection, + ByDomain) + -> Neon::domain::tool::PointHashTable &; + + private: + auto addPoint(Neon::SetIdx const &setIdx, + Neon::int32_3d const &int323D, + ByPartition byPartition, + ByDirection byDirection, + ByDomain byDomain) -> void; + + + using Leve0_Info = Hash; + using Leve1_ByDomain = std::array; + using Leve2_ByDirection = std::array; + using Leve3_ByPartition = std::array; + using Data = Neon::set::DataSet; + + Data mData; + std::shared_ptr mSpanDecomposition; + }; - bool doBreak = false; - for (int z = 0; (z < dataBlockSize3D.z && !doBreak); z++) { - for (int y = 0; (y < dataBlockSize3D.y && !doBreak); y++) { - for (int x = 0; (x < dataBlockSize3D.x && !doBreak); x++) { - const Neon::int32_3d globalId = getVoxelAbsolute3DIdx(blockOrigin, {x, y, z}); - if (globalId < domainSize * discreteVoxelSpacing) { - if (activeCellLambda(globalId)) { - doBreak = true; + template + SpanClassifier::SpanClassifier(const Neon::Backend &backend, + const ActiveCellLambda &activeCellLambda, + const BcLambda &bcLambda, + const Block3dIdxToBlockOrigin &block3dIdxToBlockOrigin, + const GetVoxelAbsolute3DIdx &getVoxelAbsolute3DIdx, + const Neon::int32_3d &block3DSpan, + const Neon::int32_3d &dataBlockSize3D, + const Neon::int32_3d &domainSize, + const Neon::domain::Stencil stencil, + const int &discreteVoxelSpacing, + Neon::domain::tool::spaceCurves::EncoderType spaceFillingType, + std::shared_ptr spanDecompositionNoUse) { + mData = backend.devSet().newDataSet(); + mSpanDecomposition = spanDecompositionNoUse; + + ByDirection defaultForInternal = ByDirection::up; + + mData.forEachSeq([&](SetIdx, auto &leve3ByPartition) { + // using Leve0_Info = Info; + // using Leve1_ByDomain = std::array; + // using Leve2_ByDirection = std::array; + // using Leve3_ByPartition = std::array; + // using Data = Neon::set::DataSet; + for (auto &level2: leve3ByPartition) { + for (auto &level1: level2) { + for (auto &level0: level1) { + level0.id3dTo1d = Neon::domain::tool::PointHashTable(block3DSpan); + } + } + } + }); + + // Computing the stencil radius at block granularity + // If the dataBlockEdge is equal to 1 (element sparse block) the radius is + // the same as the stencil radius. + auto const zRadius = [&stencil, dataBlockSize3D]() -> int { + auto maxRadius = stencil.getRadius(); + maxRadius = ((maxRadius - 1) / dataBlockSize3D.z) + 1; + return maxRadius; + }(); + + // For each Partition + backend.devSet() + .forEachSetIdxSeq( + [&](const Neon::SetIdx &setIdx) { + int beginZ = mSpanDecomposition->getFirstZSliceIdx()[setIdx]; + int lastZ = mSpanDecomposition->getLastZSliceIdx()[setIdx]; + + std::vector const boundaryDwSlices = [&] { + std::vector result; + for (int i = 0; i < zRadius; i++) { + result.push_back(beginZ + i); + } + return result; + }(); - Neon::int32_3d const point(bx, by, bz); - ByDomain const byDomain = bcLambda(point) ? ByDomain::bc : ByDomain::bulk; - addPoint(setIdx, point, byPartition, byDirection, byDomain); + std::vector const boundaryUpSlices = [&] { + std::vector result; + for (int i = zRadius - 1; i >= 0; i--) { + result.push_back(lastZ - i); + } + return result; + }(); + + auto inspectBlock = [&](int bx, int by, int bz, ByPartition byPartition, + ByDirection byDirection) { + Neon::int32_3d blockOrigin = block3dIdxToBlockOrigin({bx, by, bz}); + + bool doBreak = false; + bool isActiveBlock = false; + ByDomain byDomain = ByDomain::bulk; + for (int z = 0; (z < dataBlockSize3D.z && !doBreak); z++) { + for (int y = 0; (y < dataBlockSize3D.y && !doBreak); y++) { + for (int x = 0; (x < dataBlockSize3D.x && !doBreak); x++) { + + const Neon::int32_3d globalId = getVoxelAbsolute3DIdx(blockOrigin, + {x, y, z}); + if (globalId < domainSize * discreteVoxelSpacing) { + + if constexpr (std::is_same_v) { + if (activeCellLambda(globalId)) { + byDomain = ByDomain::bulk; + isActiveBlock = true; + doBreak = true; + break; + } + } else if constexpr (std::is_same_v::type, bool>) { + NEON_THROW_UNSUPPORTED_OPERATION("bool"); + } else if constexpr (std::is_same_v::type, ByDomain>) { + auto whatdomain = bcLambda(globalId); + if (activeCellLambda(globalId)) { + isActiveBlock = true; + if (whatdomain == ByDomain::bc) { + byDomain = ByDomain::bc; + doBreak = true; + } + } + } + + } + } + } + } + if (isActiveBlock) { + Neon::int32_3d const point(bx, by, bz); + addPoint(setIdx, point, byPartition, byDirection, byDomain); + } + }; + if (backend.deviceCount() > 1) { + // We are running in the inner partition blocks + if (beginZ + zRadius > lastZ - zRadius) { + std::cout << spanDecompositionNoUse->toString(backend); + + NeonException exception("1D Partitioner"); + exception << "Domain too small for the number of devices that was providded.\n"; + exception << "Block Span " << block3DSpan << "\n"; + exception << spanDecompositionNoUse->toString(backend); + NEON_THROW(exception); + } + for (int bz = beginZ + zRadius; bz <= lastZ - zRadius; bz++) { + for (int by = 0; by < block3DSpan.y; by++) { + for (int bx = 0; bx < block3DSpan.x; bx++) { + inspectBlock(bx, by, bz, ByPartition::internal, defaultForInternal); + } + } + } + // We are running in the inner partition blocks + for (auto &bz: boundaryDwSlices) { + for (int by = 0; by < block3DSpan.y; by++) { + for (int bx = 0; bx < block3DSpan.x; bx++) { + inspectBlock(bx, by, bz, ByPartition::boundary, ByDirection::down); + } } } - } - } - } - }; - if (backend.deviceCount() > 1) { - - // We are running in the inner partition blocks - if (beginZ + zRadius > lastZ - zRadius) { - std::cout << spanDecompositionNoUse->toString(backend); - - NeonException exception("1D Partitioner"); - exception << "Domain too small for the number of devices that was providded.\n"; - exception << "Block Span " << block3DSpan << "\n"; - exception << spanDecompositionNoUse->toString(backend); - NEON_THROW(exception); - } - for (int bz = beginZ + zRadius; bz <= lastZ - zRadius; bz++) { - for (int by = 0; by < block3DSpan.y; by++) { - for (int bx = 0; bx < block3DSpan.x; bx++) { - inspectBlock(bx, by, bz, ByPartition::internal, defaultForInternal); - } - } - } - // We are running in the inner partition blocks - for (auto& bz : boundaryDwSlices) { - for (int by = 0; by < block3DSpan.y; by++) { - for (int bx = 0; bx < block3DSpan.x; bx++) { - inspectBlock(bx, by, bz, ByPartition::boundary, ByDirection::down); - } - } - } - // We are running in the inner partition blocks - for (auto& bz : boundaryUpSlices) { - for (int by = 0; by < block3DSpan.y; by++) { - for (int bx = 0; bx < block3DSpan.x; bx++) { - inspectBlock(bx, by, bz, ByPartition::boundary, ByDirection::up); - } - } - } - } else { - // We are running in the inner partition blocks - for (int bz = beginZ; bz <= lastZ; bz++) { - for (int by = 0; by < block3DSpan.y; by++) { - for (int bx = 0; bx < block3DSpan.x; bx++) { - inspectBlock(bx, by, bz, ByPartition::internal, defaultForInternal); + // We are running in the inner partition blocks + for (auto &bz: boundaryUpSlices) { + for (int by = 0; by < block3DSpan.y; by++) { + for (int bx = 0; bx < block3DSpan.x; bx++) { + inspectBlock(bx, by, bz, ByPartition::boundary, ByDirection::up); + } + } + } + } else { + // We are running in the inner partition blocks + for (int bz = beginZ; bz <= lastZ; bz++) { + for (int by = 0; by < block3DSpan.y; by++) { + for (int bx = 0; bx < block3DSpan.x; bx++) { + inspectBlock(bx, by, bz, ByPartition::internal, defaultForInternal); + } + } + } } - } + }); + + mData.forEachSeq([&](SetIdx, auto &leve3ByPartition) { + // using Leve0_Info = Info; + // using Leve1_ByDomain = std::array; + // using Leve2_ByDirection = std::array; + // using Leve3_ByPartition = std::array; + // using Data = Neon::set::DataSet; + for (auto &level2: leve3ByPartition) { + for (auto &level1: level2) { + for (auto &level0: level1) { + level0.reHash(spaceFillingType); } } - }); -} + } + }); + } } // namespace Neon::domain::tool::partitioning diff --git a/libNeonDomain/include/Neon/domain/tools/partitioning/SpanLayout.h b/libNeonDomain/include/Neon/domain/tools/partitioning/SpanLayout.h index a7e86f7c..4a01dd16 100644 --- a/libNeonDomain/include/Neon/domain/tools/partitioning/SpanLayout.h +++ b/libNeonDomain/include/Neon/domain/tools/partitioning/SpanLayout.h @@ -1,7 +1,7 @@ #pragma once #include "Neon/core/core.h" +#include "Neon/domain/tools/SpaceCurves.h" #include "Neon/domain/tools/partitioning/SpanClassifier.h" - namespace Neon::domain::tool::partitioning { class SpanLayout @@ -30,6 +30,10 @@ class SpanLayout std::shared_ptr spanPartitionerPtr, std::shared_ptr spanClassifierPtr); + auto sort(Neon::domain::tool::spaceCurves::EncoderType encoderType, + SpanClassifier& spanClassifier) + -> void; + auto getCount() -> Neon::set::DataSet; diff --git a/libNeonDomain/src/domain/details/aGrid/aGrid.cpp b/libNeonDomain/src/domain/details/aGrid/aGrid.cpp index be36fd4c..87942976 100644 --- a/libNeonDomain/src/domain/details/aGrid/aGrid.cpp +++ b/libNeonDomain/src/domain/details/aGrid/aGrid.cpp @@ -61,7 +61,9 @@ auto aGrid::init(const Neon::Backend& backend, lenghts, blockDim, spacingData, - origin); + origin, + Neon::domain::tool::spaceCurves::EncoderType::sweep, + {0, 0, 0}); mStorage = std::make_shared(); diff --git a/libNeonDomain/src/domain/details/bGridDisg/bFieldReduceKernels.cu b/libNeonDomain/src/domain/details/bGridDisg/bFieldReduceKernels.cu new file mode 100644 index 00000000..beac71a4 --- /dev/null +++ b/libNeonDomain/src/domain/details/bGridDisg/bFieldReduceKernels.cu @@ -0,0 +1,62 @@ +#include "Neon/domain/details/dGrid/dGrid.h" +#include "Neon/domain/patterns/ReduceKernels.cuh" + +namespace Neon::domain::details::dGrid { +#if 0 +template +auto dFieldDev::dotCUB( + Neon::set::patterns::BlasSet& blasSet, + const dFieldDev& input, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::dotCUB(blasSet, + grid(), + *this, + input, + output, + dataView); +} + + +template +auto dFieldDev::norm2CUB( + Neon::set::patterns::BlasSet& blasSet, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::norm2CUB(blasSet, + grid(), + *this, + output, + dataView); +} + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); +#endif +} // namespace Neon::domain::details::dGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/bGridDisg/bGrid.cpp b/libNeonDomain/src/domain/details/bGridDisg/bGrid.cpp new file mode 100644 index 00000000..6886b47a --- /dev/null +++ b/libNeonDomain/src/domain/details/bGridDisg/bGrid.cpp @@ -0,0 +1,8 @@ +#include "Neon/domain/details/bGridDisg/bGrid.h" + +namespace Neon::domain::details::disaggregated::bGrid { + + +template class bGrid>; + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/bGridDisgMask/bFieldReduceKernels.cu b/libNeonDomain/src/domain/details/bGridDisgMask/bFieldReduceKernels.cu new file mode 100644 index 00000000..678565ea --- /dev/null +++ b/libNeonDomain/src/domain/details/bGridDisgMask/bFieldReduceKernels.cu @@ -0,0 +1,62 @@ +#include "Neon/domain/details/dGrid/dGrid.h" +#include "Neon/domain/patterns/ReduceKernels.cuh" + +namespace Neon::domain::details::bGridMask { +#if 0 +template +auto dFieldDev::dotCUB( + Neon::set::patterns::BlasSet& blasSet, + const dFieldDev& input, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::dotCUB(blasSet, + grid(), + *this, + input, + output, + dataView); +} + + +template +auto dFieldDev::norm2CUB( + Neon::set::patterns::BlasSet& blasSet, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::norm2CUB(blasSet, + grid(), + *this, + output, + dataView); +} + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); +#endif +} // namespace Neon::domain::details::dGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/bGridDisgMask/bGrid.cpp b/libNeonDomain/src/domain/details/bGridDisgMask/bGrid.cpp new file mode 100644 index 00000000..d5e3126d --- /dev/null +++ b/libNeonDomain/src/domain/details/bGridDisgMask/bGrid.cpp @@ -0,0 +1,8 @@ +#include "Neon/domain/details/bGridDisgMask/bGrid.h" + +namespace Neon::domain::details::disaggregated::bGridMask { + + +template class bGrid>; + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/bGridDisgMgpu/bFieldReduceKernels.cu b/libNeonDomain/src/domain/details/bGridDisgMgpu/bFieldReduceKernels.cu new file mode 100644 index 00000000..e69de29b diff --git a/libNeonDomain/src/domain/details/bGridDisgMgpu/bGrid.cpp b/libNeonDomain/src/domain/details/bGridDisgMgpu/bGrid.cpp new file mode 100644 index 00000000..a54e64ca --- /dev/null +++ b/libNeonDomain/src/domain/details/bGridDisgMgpu/bGrid.cpp @@ -0,0 +1,7 @@ +#include "Neon/domain/details/bGridDisgMgpu/bGrid.h" + +namespace Neon::domain::details::bGridMgpu { + +template class bGrid>; + +} // namespace Neon::domain::details::bGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/dGrid/dGrid.cpp b/libNeonDomain/src/domain/details/dGrid/dGrid.cpp index 890642b3..ec8b24d8 100644 --- a/libNeonDomain/src/domain/details/dGrid/dGrid.cpp +++ b/libNeonDomain/src/domain/details/dGrid/dGrid.cpp @@ -59,7 +59,7 @@ auto dGrid::getLaunchParameters(const Neon::DataView dataView, auto dimsByDataView = getBackend().devSet().newDataSet([&](Neon::SetIdx const& setIdx, auto& value) { - value = getSpan(Neon::Execution::host, setIdx, dataView).mDim; + value = getSpan(Neon::Execution::host, setIdx, dataView).mSpanDim; }); ret.set(Neon::sys::GpuLaunchInfo::domainGridMode, diff --git a/libNeonDomain/src/domain/details/dGridDisg/dFieldReduceKernels.cu b/libNeonDomain/src/domain/details/dGridDisg/dFieldReduceKernels.cu new file mode 100644 index 00000000..50d076c6 --- /dev/null +++ b/libNeonDomain/src/domain/details/dGridDisg/dFieldReduceKernels.cu @@ -0,0 +1,62 @@ +#include "Neon/domain/details/dGrid/dGrid.h" +#include "Neon/domain/patterns/ReduceKernels.cuh" + +namespace Neon::domain::details::disaggregated::dGrid { +#if 0 +template +auto dFieldDev::dotCUB( + Neon::set::patterns::BlasSet& blasSet, + const dFieldDev& input, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::dotCUB(blasSet, + grid(), + *this, + input, + output, + dataView); +} + + +template +auto dFieldDev::norm2CUB( + Neon::set::patterns::BlasSet& blasSet, + Neon::set::MemDevSet& output, + const Neon::DataView& dataView) -> void +{ + Neon::domain::details::norm2CUB(blasSet, + grid(), + *this, + output, + dataView); +} + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::dotCUB(Neon::set::patterns::BlasSet&, + const dFieldDev&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); + +template void dFieldDev::norm2CUB(Neon::set::patterns::BlasSet&, + Neon::set::MemDevSet&, + const Neon::DataView&); +#endif +} // namespace Neon::domain::details::dGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/dGridDisg/dGrid.cpp b/libNeonDomain/src/domain/details/dGridDisg/dGrid.cpp new file mode 100644 index 00000000..b61c7527 --- /dev/null +++ b/libNeonDomain/src/domain/details/dGridDisg/dGrid.cpp @@ -0,0 +1,141 @@ +#include "Neon/domain/details/dGridDisg/dGrid.h" + +namespace Neon::domain::details::disaggregated::dGrid { + +dGrid::dGrid() +{ + mData = std::make_shared(); +} + +dGrid::Data::Data(const Neon::Backend& backend) +{ + partitionDims = backend.devSet().newDataSet({0, 0, 0}); + firstZIndex = backend.devSet().newDataSet(0); + spanTable = Neon::domain::tool::SpanTable(backend); + elementsPerPartition = Neon::domain::tool::SpanTable(backend); + + halo = index_3d(0, 0, 0); + reduceEngine = Neon::sys::patterns::Engine::cuBlas; +} + +auto dGrid::helpFieldMemoryAllocator() + const -> const Neon::aGrid& +{ + return mData->memoryGrid; +} + +auto dGrid::getSpan(Neon::Execution execution, + SetIdx setIdx, + Neon::DataView dataView) + const -> const Span& +{ + return mData->spanTable.getSpan(execution, setIdx, dataView); +} + + +auto dGrid::helpGetPartitionDim() + const -> const Neon::set::DataSet +{ + return mData->partitionDims; +} + +// auto dGrid::helpIdexPerPartition(Neon::DataView dataView) +// const -> const Neon::set::DataSet +//{ +// return mData->elementsPerPartition.getSpan(dataView); +// } + +auto dGrid::setReduceEngine(Neon::sys::patterns::Engine eng) + -> void +{ + mData->reduceEngine = eng; +} + +auto dGrid::getLaunchParameters(const Neon::DataView dataView, + const Neon::index_3d& blockSize, + const size_t& shareMem) const -> Neon::set::LaunchParameters +{ + Neon::set::LaunchParameters ret = getBackend().devSet().newLaunchParameters(); + + auto dimsByDataView = getBackend().devSet().newDataSet([&](Neon::SetIdx const& setIdx, + auto& value) { + value = getSpan(Neon::Execution::host, setIdx, dataView).mSpanDim; + }); + + ret.set(Neon::sys::GpuLaunchInfo::domainGridMode, + dimsByDataView, + blockSize, + shareMem); + return ret; +} + +auto dGrid::convertToNghIdx(const std::vector& stencilOffsets) + const -> std::vector +{ + std::vector res; + for (const auto& offset : stencilOffsets) { + res.push_back(offset.template newType()); + } + return res; +} + +auto dGrid::convertToNghIdx(Neon::index_3d const& stencilOffsets) + const -> NghIdx +{ + return stencilOffsets.template newType(); +} + +auto dGrid::isInsideDomain(const index_3d& idx) const -> bool +{ + bool isPositive = idx >= 0; + bool isLover = idx < this->getDimension(); + return isLover && isPositive; +} + +auto dGrid::getSetIdx(const Neon::index_3d& idx) + const -> int32_t +{ + auto prop = getProperties(idx); + if (!prop.isInside()) { + return -1; + } + return prop.getSetIdx(); +} + +auto dGrid::getProperties(const index_3d& idx) + const -> GridBaseTemplate::CellProperties +{ + GridBaseTemplate::CellProperties cellProperties; + cellProperties.setIsInside(isInsideDomain(idx)); + if (!cellProperties.isInside()) { + return cellProperties; + } + + if (this->getDevSet().setCardinality() == 1) { + cellProperties.init(0, DataView::INTERNAL); + } else { + int zCounter = 0; + int zCounterPrevious = 0; + Neon::SetIdx setIdx; + Neon::DataView dataView = DataView::BOUNDARY; + for (int i = 0; i < this->getDevSet().setCardinality(); i++) { + zCounter += mData->partitionDims[i].z; + if (idx.z < zCounter) { + setIdx = i; + } + if ((zCounterPrevious + mData->halo.z >= idx.z) && + (zCounter - mData->halo.z < idx.z)) { + dataView = Neon::DataView::INTERNAL; + } + zCounterPrevious = zCounter; + } + cellProperties.init(setIdx, dataView); + } + return cellProperties; +} +auto dGrid::helpGetFirstZindex() + const -> const Neon::set::DataSet& +{ + return mData->firstZIndex; +} +} // namespace Neon::domain::details::dGrid \ No newline at end of file diff --git a/libNeonDomain/src/domain/details/eGrid/eGrid.cpp b/libNeonDomain/src/domain/details/eGrid/eGrid.cpp index 164ae3b1..d4e12b7f 100644 --- a/libNeonDomain/src/domain/details/eGrid/eGrid.cpp +++ b/libNeonDomain/src/domain/details/eGrid/eGrid.cpp @@ -25,7 +25,9 @@ eGrid::eGrid(const Backend& backend, nElementsPerPartition, Neon::index_3d(256, 1, 1), spacing, - origin); + origin, + partitioner.getSpaceCurve(), + {1,1,1}); } @@ -35,7 +37,7 @@ eGrid::eGrid(const Backend& backend, mData->mGlobalMappingAField = mData->partitioner1D.getGlobalMapping(); mData->mStencil3dTo1dOffset = mData->partitioner1D.getStencil3dTo1dOffset(); mData->memoryGrid = mData->partitioner1D.getMemoryGrid(); - //mData->partitioner1D.getDenseMeta(mData->denseMeta); + // mData->partitioner1D.getDenseMeta(mData->denseMeta); const int32_t numDevices = getBackend().devSet().setCardinality(); @@ -109,7 +111,9 @@ eGrid::eGrid(const Backend& backend, nElementsPerPartition, defaultBlockSize, spacing, - origin); + origin, + partitioner.getSpaceCurve(), + {1,1,1}); } } @@ -200,7 +204,7 @@ auto eGrid::convertToNghIdx(Neon::index_3d const& offset) auto eGrid::isInsideDomain(const index_3d& idx) const -> bool { - //auto const& metaInfo = mData->denseMeta.get(idx); + // auto const& metaInfo = mData->denseMeta.get(idx); auto const& metaInfo = mData->partitioner1D.getDenseMeta().get(idx); return metaInfo.isValid(); } @@ -225,7 +229,7 @@ auto eGrid::getProperties(const index_3d& idx) const -> GridBaseTemplate::CellPr if (this->getDevSet().setCardinality() == 1) { cellProperties.init(0, DataView::INTERNAL); } else { - //auto const& metaInfo = mData->denseMeta.get(idx); + // auto const& metaInfo = mData->denseMeta.get(idx); auto const& metaInfo = mData->partitioner1D.getDenseMeta().get(idx); cellProperties.init(metaInfo.setIdx, metaInfo.dw); } @@ -262,7 +266,7 @@ auto eGrid::helpGetSetIdxAndGridIdx(Neon::index_3d idx) const -> std::tupledenseMeta.get(idx); + // auto const& meta = mData->denseMeta.get(idx); auto const& meta = mData->partitioner1D.getDenseMeta().get(idx); if (meta.isValid()) { auto const& span = getSpan(Execution::host, meta.setIdx, Neon::DataView::STANDARD); diff --git a/libNeonDomain/src/domain/details/mGrid/mGrid.cpp b/libNeonDomain/src/domain/details/mGrid/mGrid.cpp index a84c5bfd..01be2b23 100644 --- a/libNeonDomain/src/domain/details/mGrid/mGrid.cpp +++ b/libNeonDomain/src/domain/details/mGrid/mGrid.cpp @@ -2,6 +2,7 @@ #include "Neon/domain/details//mGrid/mGrid.h" #include "Neon/domain/details/mGrid/mPartition.h" +#include "Neon/domain/details/bGridDisg/ClassificationGrid/ClassSelector.h" namespace Neon::domain::details::mGrid { mGrid::mGrid( @@ -11,6 +12,7 @@ mGrid::mGrid( [[maybe_unused]] const Neon::domain::Stencil& stencil, const Descriptor descriptor, bool isStrongBalanced, + bool isCullOverlaps, [[maybe_unused]] const double_3d& spacingData, [[maybe_unused]] const double_3d& origin) { @@ -39,6 +41,7 @@ mGrid::mGrid( mData->backend = backend; mData->domainSize = domainSize; mData->mStrongBalanced = isStrongBalanced; + mData->mCullOverlaps = isCullOverlaps; mData->mDescriptor = descriptor; int top_level_spacing = 1; for (int l = 0; l < mData->mDescriptor.getDepth(); ++l) { @@ -81,6 +84,7 @@ mGrid::mGrid( std::vector msk(NEON_DIVIDE_UP(refFactor * refFactor * refFactor * mData->mTotalNumBlocks[i].rMul(), MaskSize), 0); mData->denseLevelsBitmask.push_back(msk); + mData->atInterfaceBitmask.push_back(msk); } //Each block loops over its voxels and check the lambda function and activate its voxels correspondingly @@ -117,6 +121,35 @@ mGrid::mGrid( } } + if (containVoxels) { + for (int z = 0; z < refFactor; z++) { + for (int y = 0; y < refFactor; y++) { + for (int x = 0; x < refFactor; x++) { + + const Neon::int32_3d voxel = mData->mDescriptor.parentToChild(blockOrigin, l, {x, y, z}); + + if (voxel < domainSize) { + setLevelBitMask(l, {bx, by, bz}, {x, y, z}); + } + } + } + } + } + + if (containVoxels) { + for (int z = 0; z < refFactor; z++) { + for (int y = 0; y < refFactor; y++) { + for (int x = 0; x < refFactor; x++) { + + const Neon::int32_3d voxel = mData->mDescriptor.parentToChild(blockOrigin, l, {x, y, z}); + + if (voxel < domainSize) { + setLevelBitMask(l, {bx, by, bz}, {x, y, z}); + } + } + } + } + } if (containVoxels) { //if the block contains voxels, it should activate itself @@ -138,6 +171,115 @@ mGrid::mGrid( } } + auto isRefined = [&](int level, const Neon::int32_3d& voxel) { + if (level < 1) { + NeonException exp("mGrid::mGrid"); + exp << "isRefined only work with level > 0. Input level =" << level; + NEON_THROW(exp); + } + + //given a voxel at level, check if it's refined i.e., one of its children are active + const int refFactor = mData->mDescriptor.getRefFactor(level); + const int spacing = mData->mDescriptor.getSpacing(level - 1); + + //for every possible child of this voxel + for (int z = 0; z < refFactor; z++) { + for (int y = 0; y < refFactor; y++) { + for (int x = 0; x < refFactor; x++) { + + const Neon::int32_3d childLocal(x, y, z); + + const Neon::int32_3d child = mData->mDescriptor.neighbourBlock(voxel, level - 1, childLocal); + + //find the child block + + if (child < domainSize) { + const Neon::int32_3d childBlock(child.x / spacing, + child.y / spacing, + child.z / spacing); + if (levelBitMaskIsSet(level - 1, childBlock, childLocal)) { + return true; + } + } + } + } + } + + return false; + }; + + //remove a coarse cell is + if (mData->mCullOverlaps) { + + //Loop over all voxels in all levels > 0 + //An active voxel may become inactive if: + //1. it is refined and + //2. and all its neighbor voxels (at level l) in all direction are also refined + + + //for every level + for (int l = mData->mDescriptor.getDepth() - 1; l > 0; --l) { + const int refFactor = mData->mDescriptor.getRefFactor(l); + + //for every (user) block in this level + for (int bz = 0; bz < mData->mTotalNumBlocks[l].z; bz++) { + for (int by = 0; by < mData->mTotalNumBlocks[l].y; by++) { + for (int bx = 0; bx < mData->mTotalNumBlocks[l].x; bx++) { + + + const Neon::index_3d blockOrigin = mData->mDescriptor.toBaseIndexSpace({bx, by, bz}, l + 1); + + //for every voxel in this block + for (int z = 0; z < refFactor; z++) { + for (int y = 0; y < refFactor; y++) { + for (int x = 0; x < refFactor; x++) { + + //if this voxel is active + if (levelBitMaskIsSet(l, {bx, by, bz}, {x, y, z})) { + + const Neon::int32_3d voxel = mData->mDescriptor.parentToChild(blockOrigin, l, {x, y, z}); + + //if the voxel is refined, then there may be a chance that we could deactivate it + if (voxel < domainSize) { + if (isRefined(l, voxel)) { + + //look at neighbor from all direction and check if there is at least one neighbor that is not refined + bool deactivate = true; + for (int k = -1; k < 2; k++) { + for (int j = -1; j < 2; j++) { + for (int i = -1; i < 2; i++) { + if (i == 0 && j == 0 && k == 0) { + continue; + } + + const Neon::int32_3d neighborVoxel = mData->mDescriptor.neighbourBlock(voxel, l, {i, j, k}); + + //if the neigbor is inside the domain + if (neighborVoxel.x >= 0 && neighborVoxel.y >= 0 && neighborVoxel.z >= 0 && neighborVoxel < domainSize) { + if (!isRefined(l, neighborVoxel)) { + deactivate = false; + } + } + } + } + } + + if (deactivate) { + clearLevelBitMask(l, {bx, by, bz}, {x, y, z}); + } + } + } + } + } + } + } + } + } + } + } + } + + //Impose the strong balance condition if (mData->mStrongBalanced) { bool again = true; @@ -232,6 +374,90 @@ mGrid::mGrid( } + //populate the atInterfaceBitmask bitmask + //at l>=0, if the cell has a parent, then it is on the interface i.e., it is a fine cell neighboring coarse cell + //at l> 0, if the cell is refined or has a neighbor that is refined i.e., it is a coarse cell neighboring a fine cell. + + //for every level + for (int l = 0; l < mData->mDescriptor.getDepth(); ++l) { + const int refFactor = mData->mDescriptor.getRefFactor(l); + + //for every (user) block in this level + for (int bz = 0; bz < mData->mTotalNumBlocks[l].z; bz++) { + for (int by = 0; by < mData->mTotalNumBlocks[l].y; by++) { + for (int bx = 0; bx < mData->mTotalNumBlocks[l].x; bx++) { + + const Neon::index_3d blockID(bx, by, bz); + + const Neon::index_3d blockOrigin = mData->mDescriptor.toBaseIndexSpace({bx, by, bz}, l + 1); + + //for every voxel in this block + for (int z = 0; z < refFactor; z++) { + for (int y = 0; y < refFactor; y++) { + for (int x = 0; x < refFactor; x++) { + + const Neon::index_3d localChild(x, y, z); + + //if this voxel is active + if (levelBitMaskIsSet(l, {bx, by, bz}, {x, y, z})) { + + const Neon::int32_3d voxel = mData->mDescriptor.parentToChild(blockOrigin, l, {x, y, z}); + + + if (voxel < domainSize) { + + //if the voxel has a parent, then it is on the interface + + if (l < mData->mDescriptor.getDepth() - 1) { + Neon::int32_3d parentBlockID = mData->mDescriptor.childToParent(voxel, l + 1); + Neon::int32_3d parentLocalID = mData->mDescriptor.toLocalIndex(voxel, l + 1); + + if (levelBitMaskIsSet(l + 1, parentBlockID, parentLocalID)) { + auto id = levelBitMaskIndex(l, blockID, localChild); + mData->atInterfaceBitmask[l][id.first] |= (1 << id.second); + } + } + + + if (l != 0) { + //if the voxel is refined, then it is on the interface + if (isRefined(l, voxel)) { + auto id = levelBitMaskIndex(l, blockID, localChild); + mData->atInterfaceBitmask[l][id.first] |= (1 << id.second); + } + + //look at neighbor from all direction and check if there is at least one neighbor that is refined + for (int k = -1; k < 2; k++) { + for (int j = -1; j < 2; j++) { + for (int i = -1; i < 2; i++) { + if (i == 0 && j == 0 && k == 0) { + continue; + } + + const Neon::int32_3d neighborVoxel = mData->mDescriptor.neighbourBlock(voxel, l, {i, j, k}); + + //if the neigbor is inside the domain + if (neighborVoxel.x >= 0 && neighborVoxel.y >= 0 && neighborVoxel.z >= 0 && neighborVoxel < domainSize) { + if (isRefined(l, neighborVoxel)) { + auto id = levelBitMaskIndex(l, blockID, localChild); + mData->atInterfaceBitmask[l][id.first] |= (1 << id.second); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + mData->grids.resize(mData->mDescriptor.getDepth()); for (int l = 0; l < mData->mDescriptor.getDepth(); ++l) { @@ -250,9 +476,22 @@ mGrid::mGrid( if (id < domainSize) { Neon::index_3d blockID = mData->mDescriptor.childToParent(id, l); Neon::index_3d localID = mData->mDescriptor.toLocalIndex(id, l); - return levelBitMaskIsSet(l, blockID, localID); + bool isInside = levelBitMaskIsSet(l, blockID, localID); + if (!isInside) { + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::outside; + } else { + auto idd = levelBitMaskIndex(l, blockID, localID); + bool isOnInterface = mData->atInterfaceBitmask[l][idd.first] & (1 << idd.second); + + if (isOnInterface) { + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::beta; + } else { + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::alpha; + } + } + } else { - return false; + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::outside; } }, stencil, @@ -386,19 +625,39 @@ mGrid::mGrid( //set child ID if (levelBitMaskIsSet(l, block3DIndex, localChild)) { - Neon::index_3d childId = mData->mDescriptor.parentToChild(userBlockOrigin, l, localChild); + Neon::index_3d childBlock3DIndex(block3DIndex.x * refFactor + x, + block3DIndex.y * refFactor + y, + block3DIndex.z * refFactor + z); - auto [setIdx, childBlockID] = mData->grids[l - 1].helpGetSetIdxAndGridIdx(childId); + bool childExist = false; + for (int32_t cz = 0; cz < refFactor; cz++) { + for (int32_t cy = 0; cy < refFactor; cy++) { + for (int32_t cx = 0; cx < refFactor; cx++) { + Neon::index_3d cc(cx, cy, cz); + childExist = childExist || levelBitMaskIsSet(l - 1, childBlock3DIndex, cc); + } + } + } uint32_t pitch = blockIdx * kMemBlockSizeX * kMemBlockSizeY * kMemBlockSizeZ + (i * kUserBlockSizeX + x) + (j * kUserBlockSizeY + y) * kMemBlockSizeY + (k * kUserBlockSizeZ + z) * kMemBlockSizeY * kMemBlockSizeZ; - if (setIdx.idx() == -1) { - mData->mChildBlockID[l].eRef(devID, pitch) = std::numeric_limits::max(); - } else { + if (childExist) { + + Neon::index_3d childId = mData->mDescriptor.parentToChild(userBlockOrigin, l, localChild); + + auto [setIdx, childBlockID] = mData->grids[l - 1].helpGetSetIdxAndGridIdx(childId); + + if (setIdx.idx() == -1) { + NeonException exp("mGrid::mGrid"); + exp << "Can not find the child"; + NEON_THROW(exp); + } mData->mChildBlockID[l].eRef(devID, pitch) = childBlockID.getDataBlockIdx(); + } else { + mData->mChildBlockID[l].eRef(devID, pitch) = std::numeric_limits::max(); } } } @@ -417,11 +676,10 @@ mGrid::mGrid( auto [setIdx, parentID] = mData->grids[l + 1].helpGetSetIdxAndGridIdx(parentOrigin); if (setIdx.idx() == -1) { - NeonException exp("mGrid::mGrid"); - exp << "Something went wrong during constructing mGrid. Can not find the right parent of a block\n"; - NEON_THROW(exp); + mData->mParentBlockID[l].eRef(devID, blockIdx) = std::numeric_limits::max(); + } else { + mData->mParentBlockID[l].eRef(devID, blockIdx) = parentID.getDataBlockIdx(); } - mData->mParentBlockID[l].eRef(devID, blockIdx) = parentID.getDataBlockIdx(); } }); } @@ -463,11 +721,24 @@ auto mGrid::setLevelBitMask(int l, const Neon::index_3d& blockID, const Neon::in mData->denseLevelsBitmask[l][id.first] |= (1 << id.second); }; +auto mGrid::clearLevelBitMask(int l, const Neon::index_3d& blockID, const Neon::index_3d& localChild) -> void +{ + auto id = levelBitMaskIndex(l, blockID, localChild); + mData->denseLevelsBitmask[l][id.first] &= ~(1 << id.second); +}; auto mGrid::isInsideDomain(const Neon::index_3d& idx, int level) const -> bool { return mData->grids[level].isInsideDomain(idx); } +auto mGrid::isOnInterface(const Neon::index_3d& idx, int level) const -> bool +{ + + Neon::index_3d blockID = mData->mDescriptor.childToParent(idx, level); + Neon::index_3d localID = mData->mDescriptor.toLocalIndex(idx, level); + auto idd = levelBitMaskIndex(level, blockID, localID); + return mData->atInterfaceBitmask[level][idd.first] & (1 << idd.second); +} auto mGrid::operator()(int level) -> InternalGrid& { diff --git a/libNeonDomain/src/domain/interface/GridBase.cpp b/libNeonDomain/src/domain/interface/GridBase.cpp index 81663239..3bfd8a21 100644 --- a/libNeonDomain/src/domain/interface/GridBase.cpp +++ b/libNeonDomain/src/domain/interface/GridBase.cpp @@ -3,14 +3,16 @@ namespace Neon::domain::interface { -auto GridBase::init(const std::string& gridImplementationName, - const Neon::Backend& backend, - const Neon::index_3d& dimension, - const Neon::domain::Stencil& stencil, - const Neon::set::DataSet& nPartitionElements, - const Neon::index_3d& defaultBlockSize, - const Vec_3d& spacingData, - const Vec_3d& origin) -> void +auto GridBase::init(const std::string& gridImplementationName, + const Neon::Backend& backend, + const Neon::index_3d& dimension, + const Neon::domain::Stencil& stencil, + const Neon::set::DataSet& nPartitionElements, + const Neon::index_3d& defaultBlockSize, + const Vec_3d& spacingData, + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType spaceCurve, + Neon::index_3d memoryBlock) -> void { mStorage->backend = backend; mStorage->dimension = dimension; @@ -24,6 +26,8 @@ auto GridBase::init(const std::string& gridImplementationName, mStorage->defaults.launchParameters[DataViewUtil::toInt(dw)] = backend.devSet().newLaunchParameters(); } mStorage->defaults.blockDim = defaultBlockSize; + mStorage->spaceCurve = spaceCurve; + mStorage->memoryBlock = memoryBlock; } GridBase::GridBase() @@ -31,14 +35,16 @@ GridBase::GridBase() { } -GridBase::GridBase(const std::string& gridImplementationName, - const Neon::Backend& backend, - const Neon::index_3d& dimension, - const Neon::domain::Stencil& stencil, - const Neon::set::DataSet& nPartitionElements, - const Neon::index_3d& defaultBlockSize, - const Vec_3d& spacingData, - const Vec_3d& origin) +GridBase::GridBase(const std::string& gridImplementationName, + const Neon::Backend& backend, + const Neon::index_3d& dimension, + const Neon::domain::Stencil& stencil, + const Neon::set::DataSet& nPartitionElements, + const Neon::index_3d& defaultBlockSize, + const Vec_3d& spacingData, + const Vec_3d& origin, + Neon::domain::tool::spaceCurves::EncoderType spaceCurve, + Neon::index_3d memoryBlock) : mStorage(std::make_shared()) { init(gridImplementationName, @@ -48,7 +54,9 @@ GridBase::GridBase(const std::string& gridImplementationName, nPartitionElements, defaultBlockSize, spacingData, - origin); + origin, + spaceCurve, + memoryBlock); } auto GridBase::getDimension() const -> const Neon::index_3d& @@ -161,7 +169,8 @@ auto GridBase::toString() const -> std::string return tmp.str(); }() << "}" - << ", [Backend]:{" << getBackend().toString() << "}"; + << ", [Backend]:{" << getBackend().toString() << "}" + << ", [Memory]:{" << Neon::domain::tool::spaceCurves::EncoderTypeUtil::toString(mStorage->spaceCurve) << ", " << this->mStorage->memoryBlock << "}"; return s.str(); } @@ -232,10 +241,41 @@ auto GridBase::toReport(Neon::Report& report, }(), &subdoc); + report.addMember( + "MemoryBlock", + [&] { + std::stringstream list; + list << "["; + list << getMemoryBlock().x << " " + << getMemoryBlock().y << " " + << getMemoryBlock().z << "]"; + return list.str(); + }(), + &subdoc); + + report.addMember( + "SpaceCurve", + [&] { + std::stringstream list; + list << Neon::domain::tool::spaceCurves::EncoderTypeUtil::toString(mStorage->spaceCurve); + return list.str(); + }(), + &subdoc); + if (includeBackendInfo) getBackend().toReport(report, &subdoc); report.addSubdoc("Grid", subdoc); } +auto GridBase::getMemoryBlock() const -> Neon::index_3d +{ + return mStorage->memoryBlock; +} + +auto GridBase::getSpaceCurve() const -> Neon::domain::tool::spaceCurves::EncoderType +{ + return mStorage->spaceCurve; +} + } // namespace Neon::domain::interface \ No newline at end of file diff --git a/libNeonDomain/src/domain/tools/SpaceCurves.cpp b/libNeonDomain/src/domain/tools/SpaceCurves.cpp new file mode 100644 index 00000000..cca20e19 --- /dev/null +++ b/libNeonDomain/src/domain/tools/SpaceCurves.cpp @@ -0,0 +1,164 @@ +#include "Neon/domain/tools/SpaceCurves.h" +#include "Neon/core/types/Exceptions.h" + +namespace Neon::domain::tool::spaceCurves { + +auto EncoderTypeUtil::getOptions() -> std::array +{ + std::array options = {EncoderType::sweep, + EncoderType::morton, + EncoderType::hilbert}; + return options; +} + +auto EncoderTypeUtil::toString(EncoderType e) -> std::string +{ + switch (e) { + case EncoderType::sweep: { + return "sweep"; + } + case EncoderType::morton: { + return "morton"; + } + case EncoderType::hilbert: { + return "hilbert"; + } + default: { + NEON_THROW_UNSUPPORTED_OPTION("EncoderTypeUtil"); + } + } +} + +auto EncoderTypeUtil::fromInt(int val) -> EncoderType +{ + switch (val) { + case static_cast(EncoderType::sweep): { + return EncoderType::sweep; + } + case static_cast(EncoderType::morton): { + return EncoderType::morton; + } + case static_cast(EncoderType::hilbert): { + return EncoderType::hilbert; + } + default: { + NEON_THROW_UNSUPPORTED_OPTION("EncoderTypeUtil"); + } + } +} + +auto EncoderTypeUtil::fromString(const std::string& occ) -> EncoderType +{ + std::array opts = getOptions(); + for (auto a : opts) { + if (toString(a) == occ) { + return a; + } + } + NEON_THROW_UNSUPPORTED_OPTION(""); +} + +auto EncoderTypeUtil::toInt(EncoderType dataView) -> int +{ + return static_cast(dataView); +} + +std::ostream& operator<<(std::ostream& os, EncoderType const& m) +{ + return os << std::string(EncoderTypeUtil::toString(m)); +} + + +EncoderTypeUtil::Cli::Cli() +{ + mSet = false; +} + +EncoderTypeUtil::Cli::Cli(std::string s) +{ + set(s); +} + +EncoderTypeUtil::Cli::Cli(EncoderType model) +{ + mOption = model; +} + +auto EncoderTypeUtil::Cli::getOption() const -> EncoderType +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "TransferSemantic was not set."; + NEON_ERROR(errorMsg.str()); + } + return mOption; +} + +auto EncoderTypeUtil::Cli::set(const std::string& opt) + -> void +{ + try { + mOption = EncoderTypeUtil::fromString(opt); + } catch (...) { + std::stringstream errorMsg; + errorMsg << "TransferSemantic: " << opt << " is not a valid option (valid options are {"; + auto options = EncoderTypeUtil::getOptions(); + int i = 0; + for (auto o : options) { + if (i != 0) { + errorMsg << ", " << EncoderTypeUtil::toString(o); + } + errorMsg << EncoderTypeUtil::toString(o); + i = 1; + } + errorMsg << "})"; + NEON_ERROR(errorMsg.str()); + } + mSet = true; +} + +auto EncoderTypeUtil::Cli::getStringOptions() const -> std::string +{ + std::stringstream s; + auto options = EncoderTypeUtil::getOptions(); + int i = 0; + for (auto o : options) { + if (i != 0) { + s << ", "; + } + s << EncoderTypeUtil::toString(o); + i = 1; + } + std::string msg = s.str(); + return msg; +} + +auto EncoderTypeUtil::Cli::getStringOption() const -> std::string +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "TransferSemantic was not set."; + NEON_ERROR(errorMsg.str()); + } + return EncoderTypeUtil::toString(mOption); +} + +auto EncoderTypeUtil::Cli::getDoc() const -> std::string +{ + std::stringstream s; + s << getStringOptions(); + s << " default: " << getStringOptions(); + return s.str(); +} + +auto EncoderTypeUtil::Cli::addToReport(Neon::Report& report) const -> void +{ + report.addMember("EncoderType", EncoderTypeUtil::toString(this->getOption())); +} + +auto EncoderTypeUtil::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void +{ + report.addMember("EncoderType", EncoderTypeUtil::toString(this->getOption()), &subBlock); +} + +} // namespace Neon::domain::tool::spaceCurves diff --git a/libNeonDomain/src/domain/tools/partitioning/SpanClassifier.cpp b/libNeonDomain/src/domain/tools/partitioning/SpanClassifier.cpp index e9c62754..4b372fc9 100644 --- a/libNeonDomain/src/domain/tools/partitioning/SpanClassifier.cpp +++ b/libNeonDomain/src/domain/tools/partitioning/SpanClassifier.cpp @@ -37,7 +37,7 @@ auto SpanClassifier::getMapper1Dto3D(const SetIdx& setIdx, auto SpanClassifier::getMapper3Dto1D(const SetIdx& setIdx, ByPartition byPartition, ByDirection byDirection, - ByDomain byDomain) const -> const Neon::domain::tool::PointHashTable& + ByDomain byDomain) const -> const Neon::domain::tool::PointHashTable& { return mData[setIdx] [static_cast(byPartition)] @@ -63,7 +63,7 @@ auto SpanClassifier::getMapper3Dto1D(const SetIdx& setIdx, ByPartition byPartition, ByDirection byDirection, ByDomain byDomain) - -> Neon::domain::tool::PointHashTable& + -> Neon::domain::tool::PointHashTable& { return mData[setIdx] [static_cast(byPartition)] diff --git a/libNeonDomain/src/domain/tools/partitioning/SpanLayout.cpp b/libNeonDomain/src/domain/tools/partitioning/SpanLayout.cpp index 591bd07f..9a81de6b 100644 --- a/libNeonDomain/src/domain/tools/partitioning/SpanLayout.cpp +++ b/libNeonDomain/src/domain/tools/partitioning/SpanLayout.cpp @@ -207,7 +207,7 @@ auto SpanLayout::findPossiblyLocalPointOffset( byDomain); auto const infoPtr = mapper.getMetadata(point); if (infoPtr != nullptr) { - return {true, *infoPtr, byPartition, byDirection, byDomain}; + return {true, int32_t(*infoPtr), byPartition, byDirection, byDomain}; } } } diff --git a/libNeonDomain/tests/CMakeLists.txt b/libNeonDomain/tests/CMakeLists.txt index 3f76cb4e..d0d9904d 100644 --- a/libNeonDomain/tests/CMakeLists.txt +++ b/libNeonDomain/tests/CMakeLists.txt @@ -3,10 +3,12 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR) add_subdirectory("domain-globalIdx") add_subdirectory("domain-host-containers") add_subdirectory("domain-map") +add_subdirectory("domain-map-disg") add_subdirectory("domain-neighbour-globalIdx") add_subdirectory("domain-halos") add_subdirectory("domain-stencil") add_subdirectory("domain-bGrid-tray") +add_subdirectory("domain-space-filling-curves") add_subdirectory("domainUt_sGrid") add_subdirectory("domain-unit-test-eGrid") diff --git a/libNeonDomain/tests/domain-globalIdx/src/globalIdx.cu b/libNeonDomain/tests/domain-globalIdx/src/globalIdx.cu index 158d3e05..21c75926 100644 --- a/libNeonDomain/tests/domain-globalIdx/src/globalIdx.cu +++ b/libNeonDomain/tests/domain-globalIdx/src/globalIdx.cu @@ -1,5 +1,7 @@ #include #include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" #include "Neon/domain/tools/TestData.h" #include "TestInformation.h" @@ -27,18 +29,18 @@ auto defContainer(int streamIdx, return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); Neon::index_3d globalPoint = a.getGlobalIndex(e); - a(e, 0) = globalPoint.x ; + a(e, 0) = globalPoint.x; b(e, 0) = globalPoint.y; c(e, 0) = globalPoint.z; -// if constexpr (std::is_same_v) { -// printf("Block %d Th %d %d %d Loc %d %d %d\n", e.mDataBlockIdx, -// e.mInDataBlockIdx.x, -// e.mInDataBlockIdx.y, -// e.mInDataBlockIdx.z, -// globalPoint.x, -// globalPoint.y, -// globalPoint.z); -// } + // if constexpr (std::is_same_v) { + // printf("Block %d Th %d %d %d Loc %d %d %d\n", e.mDataBlockIdx, + // e.mInDataBlockIdx.x, + // e.mInDataBlockIdx.y, + // e.mInDataBlockIdx.z, + // globalPoint.x, + // globalPoint.y, + // globalPoint.z); + // } }; }); } @@ -98,5 +100,8 @@ auto run(TestData& data) -> void template auto run(TestData&) -> void; template auto run(TestData&) -> void; template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; } // namespace globalIdx \ No newline at end of file diff --git a/libNeonDomain/tests/domain-globalIdx/src/globalIdx.h b/libNeonDomain/tests/domain-globalIdx/src/globalIdx.h index 0a3b87eb..117fdcd5 100644 --- a/libNeonDomain/tests/domain-globalIdx/src/globalIdx.h +++ b/libNeonDomain/tests/domain-globalIdx/src/globalIdx.h @@ -3,8 +3,10 @@ #include #include "Neon/domain/Grids.h" -#include "Neon/domain/tools/TestData.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" +#include "Neon/domain/tools/TestData.h" namespace globalIdx { using namespace Neon::domain::tool::testing; @@ -15,6 +17,9 @@ auto run(TestData& data) -> void; extern template auto run(TestData&) -> void; extern template auto run(TestData&) -> void; extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; -} // namespace map +} // namespace globalIdx diff --git a/libNeonDomain/tests/domain-globalIdx/src/gtests.cpp b/libNeonDomain/tests/domain-globalIdx/src/gtests.cpp index 783830ca..d6b91edd 100644 --- a/libNeonDomain/tests/domain-globalIdx/src/gtests.cpp +++ b/libNeonDomain/tests/domain-globalIdx/src/gtests.cpp @@ -3,8 +3,9 @@ #include "gtest/gtest.h" #include "globalIdx.h" #include "runHelper.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" -TEST(domain_unit_test_globalIdx, dGrid) +TEST(domain_globalIdx, dGrid) { int nGpus = 3; using Type = int64_t; @@ -13,7 +14,7 @@ TEST(domain_unit_test_globalIdx, dGrid) 1); } -TEST(domain_unit_test_globalIdx, eGrid) +TEST(domain_globalIdx, eGrid) { int nGpus = 3; using Type = int64_t; @@ -22,7 +23,7 @@ TEST(domain_unit_test_globalIdx, eGrid) 1); } -TEST(domain_unit_test_globalIdx, bGrid) +TEST(domain_globalIdx, bGrid) { int nGpus = 3; using Type = int64_t; @@ -31,6 +32,24 @@ TEST(domain_unit_test_globalIdx, bGrid) 1); } +TEST(domain_globalIdx, dGridDisg) +{ + int nGpus = 3; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::run), + nGpus, + 1); +} + +TEST(domain_globalIdx, bGridMgpu) +{ + int nGpus = 3; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::run), + nGpus, + 1); +} + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/libNeonDomain/tests/domain-map-disg/CMakeLists.txt b/libNeonDomain/tests/domain-map-disg/CMakeLists.txt new file mode 100644 index 00000000..ebeafe95 --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +file(GLOB_RECURSE SrcFiles src/*.*) + +add_executable(domain-map-disg ${SrcFiles}) + +target_link_libraries(domain-map-disg + PUBLIC libNeonDomain + PUBLIC gtest_main) + +set_target_properties(domain-map-disg PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS ON) +set_target_properties(domain-map-disg PROPERTIES FOLDER "libNeonDomain") +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} PREFIX "domain-map-disg" FILES ${SrcFiles}) + +add_test(NAME domain-map-disg COMMAND domain-map-disg) \ No newline at end of file diff --git a/libNeonDomain/tests/domain-map-disg/src/TestInformation.h b/libNeonDomain/tests/domain-map-disg/src/TestInformation.h new file mode 100644 index 00000000..3ac50ecd --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/src/TestInformation.h @@ -0,0 +1,17 @@ +#pragma once +namespace { +struct TestInformation +{ + static auto prefix() + -> std::string + { + return "domain-unit-test-map"; + } + + static auto fullName(const std::string& gridName) + -> std::string + { + return prefix() + "-" + gridName; + } +}; +} // namespace \ No newline at end of file diff --git a/libNeonDomain/tests/domain-map-disg/src/gtests.cpp b/libNeonDomain/tests/domain-map-disg/src/gtests.cpp new file mode 100644 index 00000000..3664f646 --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/src/gtests.cpp @@ -0,0 +1,48 @@ + +#include "Neon/Neon.h" +#include "gtest/gtest.h" +#include "map.h" +#include "runHelper.h" + +TEST(domain_map_disg, bGridDisg) +{ + int nGpus = 1; + using Type = int64_t; + runAllTestConfiguration(std::function(map::run), + nGpus, + 1); +} + +TEST(domain_map_disg_dataView, bGridDisg) +{ + int nGpus = 1; + using Type = int64_t; + runAllTestConfiguration(std::function(map::dataView::run), + nGpus, + 2); +} +// +//TEST(domain_map_dataView, bGrid) +//{ +// int nGpus = 3; +// using Type = int64_t; +// runAllTestConfiguration(std::function(map::dataView::run), +// nGpus, +// 2); +//} +// +//TEST(domain_map_dataView, dGrid) +//{ +// int nGpus = 3; +// using Type = int64_t; +// runAllTestConfiguration(std::function(map::dataView::run), +// nGpus, +// 2); +//} + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc, argv); + Neon::init(); + return RUN_ALL_TESTS(); +} diff --git a/libNeonDomain/tests/domain-map-disg/src/map.cu b/libNeonDomain/tests/domain-map-disg/src/map.cu new file mode 100644 index 00000000..434802ef --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/src/map.cu @@ -0,0 +1,254 @@ +#include +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/bGridDisg/bGrid.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" + +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/tools/TestData.h" +#include "TestInformation.h" +#include "gtest/gtest.h" + + +namespace map { + +template +auto set(const Field& filedA) + -> Neon::set::Container +{ + const auto& grid = filedA.getGrid(); + return grid.newContainer( + "set", + [&](Neon::set::Loader& loader) { + auto a = loader.load(filedA); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < a.cardinality(); i++) { + // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); + a(e, i) = 0; + } + }; + }); +} + +template +auto addAlpha(typename Field::Type val, + Field& filedA) + -> Neon::set::Container +{ + const auto& grid = filedA.getGrid(); + return grid.newAlphaContainer( + "AlphaSet", + [&](Neon::set::Loader& loader) { + auto a = loader.load(filedA); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < a.cardinality(); i++) { + // Neon::index_3d globalPoint = a.getGlobalIndex(e); + // printf("AlphaSet %d %d %d\n", globalPoint.x, globalPoint.y, globalPoint.z); + a(e, i) += val; + } + }; + }); +} + +template +auto addBeta(typename Field::Type val, + Field& filedA) + -> Neon::set::Container +{ + const auto& grid = filedA.getGrid(); + return grid.newBetaContainer( + "AlphaSet", + [&](Neon::set::Loader& loader) { + auto a = loader.load(filedA); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < a.cardinality(); i++) { + // Neon::index_3d globalPoint = a.getGlobalIndex(e); + // printf("AlphaSet %d %d %d\n", globalPoint.x, globalPoint.y, globalPoint.z); + a(e, i) += val; + } + }; + }); +} + +template +auto axpyAlphaBeta(typename Field::Type& val, + const Field& filedA, + Field& fieldB) + -> Neon::set::Container +{ + const auto& grid = filedA.getGrid(); + return grid.newAlphaBetaContainer( + "BetaSet", + [&](Neon::set::Loader& loader) { + auto const a = loader.load(filedA); + auto b = loader.load(fieldB); + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < a.cardinality(); i++) { + b(e, i) += a(e, i) * val; + } + }; + }, + [&](Neon::set::Loader& loader) { + auto const a = loader.load(filedA); + auto b = loader.load(fieldB); + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < a.cardinality(); i++) { + b(e, i) += a(e, i) * val; + } + }; + }); +} + +template +auto mapContainer_add(int streamIdx, + typename Field::Type& val, + Field& fieldB) + -> Neon::set::Container +{ + const auto& grid = fieldB.getGrid(); + return grid.newContainer( + "mapContainer_axpy", + [&, val](Neon::set::Loader& loader) { + auto b = loader.load(fieldB); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < b.cardinality(); i++) { + // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); + b(e, i) += val; + } + }; + }); +} + +using namespace Neon::domain::tool::testing; + +template +auto run(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + G tmp = G( + grid.getBackend(), + grid.getDimension(), + [&](Neon::index_3d idx) { + bool isInside = grid.isInsideDomain(idx); + if (!isInside) { + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::outside; + } + if (idx.x == 0 || idx.y == 0 || idx.z == 0 || idx.x == grid.getDimension().x - 1 || idx.y == grid.getDimension().y - 1 || idx.z == grid.getDimension().z - 1) { + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::beta; + } + return Neon::domain::details::disaggregated::bGrid::details::cGrid::ClassSelector::alpha; + }, + grid.getStencil(), + 1, + grid.getSpacing(), + grid.getOrigin(), + grid.getSpaceCurve()); + + + grid = tmp; + grid.helpGetClassField().template ioToVtk("classField", "classField"); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + data.resetValuesToLinear(1, 100); + + set(data.getField(FieldNames::X)).run(0); + addAlpha(11, data.getField(FieldNames::X)).run(0); + addBeta(17, data.getField(FieldNames::X)).run(0); + data.getField(FieldNames::X).ioToVtk("XAlphaBeta", "XAlphaBeta"); + + data.resetValuesToLinear(1, 100); + + T val = T(33); + + { // NEON + const Neon::index_3d dim = grid.getDimension(); + std::vector elements; + + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + + + axpyAlphaBeta(val, X, Y).run(0); + + X.updateHostData(0); + Y.updateHostData(0); + + data.getBackend().sync(0); + } + + { // Golden data + auto& X = data.getIODomain(FieldNames::X); + auto& Y = data.getIODomain(FieldNames::Y); + data.axpy(&val, X, Y); + } + + bool isOk = data.compare(FieldNames::Y); + ASSERT_TRUE(isOk); +} + +namespace dataView { +template +auto run(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + + data.resetValuesToLinear(1, 100); + T val = T(33); + + { // NEON + const Neon::index_3d dim = grid.getDimension(); + std::vector elements; + + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + data.getField(FieldNames::X).ioToVtk("X_t0", "X_t0"); + data.getField(FieldNames::Y).ioToVtk("Y_t0", "Y_t0"); + + axpyAlphaBeta(val, X, Y).run(0, Neon::DataView::BOUNDARY); + axpyAlphaBeta(val, X, Y).run(0, Neon::DataView::INTERNAL); + + X.updateHostData(0); + Y.updateHostData(0); + + data.getBackend().sync(0); + } + + { // Golden data + auto& X = data.getIODomain(FieldNames::X); + auto& Y = data.getIODomain(FieldNames::Y); + data.axpy(&val, X, Y); + } + + bool isOk = data.compare(FieldNames::Y); + if (!isOk) { + auto flagField = data.compareAndGetField(FieldNames::X); + + data.getField(FieldNames::X).ioToVtk("X", "X"); + data.getField(FieldNames::Y).ioToVtk("Y", "Y"); + + flagField.ioToVti("X_diffFlag", "X_diffFlag"); + flagField = data.compareAndGetField(FieldNames::Y); + flagField.ioToVti("Y_diffFlag", "Y_diffFlag"); + } + ASSERT_TRUE(isOk); +} + +} // namespace dataView + +template auto run(TestData&) -> void; +// template auto run(TestData&) -> void; + +namespace dataView { +template auto run(TestData&) -> void; +// template auto run(TestData&) -> void; +// template auto run(TestData&) -> void; + +} // namespace dataView +} // namespace map \ No newline at end of file diff --git a/libNeonDomain/tests/domain-map-disg/src/map.h b/libNeonDomain/tests/domain-map-disg/src/map.h new file mode 100644 index 00000000..4f0d628e --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/src/map.h @@ -0,0 +1,30 @@ + +#pragma once +#include + +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/tools/TestData.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" + + +namespace map { +using namespace Neon::domain::tool::testing; + +template +auto run(TestData& data) -> void; + +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +namespace dataView { + +template +auto run(TestData& data) -> void; + +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; + +} // namespace dataView + +} // namespace map diff --git a/libNeonDomain/tests/domain-map-disg/src/runHelper.h b/libNeonDomain/tests/domain-map-disg/src/runHelper.h new file mode 100644 index 00000000..db05061f --- /dev/null +++ b/libNeonDomain/tests/domain-map-disg/src/runHelper.h @@ -0,0 +1,148 @@ +#pragma once +#include +#include "gtest/gtest.h" + +#include "Neon/core/core.h" +#include "Neon/core/tools/io/ioToVti.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/DeviceType.h" + +#include "Neon/domain/dGrid.h" +#include "Neon/domain/tools/Geometries.h" +#include "Neon/domain/tools/TestData.h" + +#include "Neon/domain/bGrid.h" +#include "gtest/gtest.h" + +using namespace Neon; +using namespace Neon::domain; + +using namespace Neon::domain::tool::testing; +using namespace Neon::domain::tool; + +template +void runAllTestConfiguration( + std::function&)> f, + [[maybe_unused]] int nGpus, + [[maybe_unused]] int minNumGpus) +{ + std::vector nGpuTest; + for (int i = minNumGpus; i <= nGpus; i++) { + nGpuTest.push_back(i); + } + // std::vector nGpuTest{2,4,6,8}; + std::vector cardinalityTest{1}; + + std::vector dimTest{{20, 20, 33},{1, 55, 17}, {144, 1, 17}}; + std::vector runtimeE{Neon::Runtime::openmp}; + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + runtimeE.push_back(Neon::Runtime::stream); + } + + std::vector geos; + + if constexpr (std::is_same_v) { + geos = std::vector{ + Geometry::FullDomain, + }; + } else { + geos = std::vector{ + Geometry::FullDomain, + // Geometry::Sphere, + // Geometry::HollowSphere, + }; + } + + for (auto& dim : dimTest) { + for (const auto& card : cardinalityTest) { + for (auto& geo : geos) { + for (const auto& ngpu : nGpuTest) { + for (const auto& runtime : runtimeE) { + int maxnGPUs = [] { + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + return Neon::set::DevSet::maxSet().setCardinality(); + } + return 1; + }(); + + std::vector ids; + for (int i = 0; i < ngpu; i++) { + ids.push_back(i % maxnGPUs); + } + + Neon::Backend backend(ids, runtime); + Neon::MemoryOptions memoryOptions = backend.getMemoryOptions(); + + if constexpr (std::is_same_v||std::is_same_v) { + if (dim.z < 1 * ngpu * 3) { + dim.z = ngpu * 3 * 1; + } + } + + TestData testData(backend, + dim, + card, + memoryOptions, + geo); + + NEON_INFO(testData.toString()); + + f(testData); + } + } + } + } + } +} + +#if 0 + +template +void runOneTestConfiguration(const std::string& gname, + std::function&)> f, + int nGpus, + int minNumGpus = 1) +{ + std::vector nGpuTest{2}; + std::vector cardinalityTest{1}; + + std::vector dimTest{{1, 1, 10}}; + std::vector runtimeE{Neon::Runtime::openmp}; + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + runtimeE.push_back(Neon::Runtime::stream); + } + + std::vector geos = std::vector{ + Geometry::FullDomain}; + + for (const auto& dim : dimTest) { + for (const auto& card : cardinalityTest) { + for (auto& geo : geos) { + for (const auto& ngpu : nGpuTest) { + for (const auto& runtime : runtimeE) { + int maxnGPUs = Neon::set::DevSet::maxSet().setCardinality(); + + std::vector ids; + for (int i = 0; i < ngpu; i++) { + ids.push_back(i % maxnGPUs); + } + + Neon::Backend backend(ids, runtime); + Neon::MemoryOptions memoryOptions = backend.getMemoryOptions(); + + TestData testData(backend, + dim, + card, + memoryOptions, + geo); + + NEON_INFO(testData.toString()); + + f(testData); + } + } + } + } + } +} +#endif \ No newline at end of file diff --git a/libNeonDomain/tests/domain-map/src/gtests.cpp b/libNeonDomain/tests/domain-map/src/gtests.cpp index d0d43b60..f6977444 100644 --- a/libNeonDomain/tests/domain-map/src/gtests.cpp +++ b/libNeonDomain/tests/domain-map/src/gtests.cpp @@ -13,6 +13,15 @@ TEST(domain_map, dGrid) 1); } +TEST(domain_map_dataView, dGrid) +{ + int nGpus = 2; + using Type = int64_t; + runAllTestConfiguration(std::function(map::dataView::run), + nGpus, + 2); +} + TEST(domain_map, eGrid) { int nGpus = 3; @@ -31,6 +40,34 @@ TEST(domain_map, bGrid) 1); } +TEST(domain_map, dGridDisg) +{ + int nGpus = 3; + using Type = int64_t; + runAllTestConfiguration(std::function(map::run), + nGpus, + 1); +} + +TEST(domain_map, dGridSoA) +{ + int nGpus = 1; + using Type = int64_t; + runAllTestConfiguration(std::function(map::run), + nGpus, + 1); +} + +TEST(domain_map, bGridMgpu) +{ + int nGpus = 3; + using Type = int64_t; + // extern template auto run(TestData&) -> void; + runAllTestConfiguration(std::function(map::run), + nGpus, + 1); +} + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/libNeonDomain/tests/domain-map/src/map.cu b/libNeonDomain/tests/domain-map/src/map.cu index bd25f178..d2dc5e5f 100644 --- a/libNeonDomain/tests/domain-map/src/map.cu +++ b/libNeonDomain/tests/domain-map/src/map.cu @@ -1,6 +1,9 @@ #include #include "Neon/domain/Grids.h" +#include "Neon/domain/details/bGridDisg/bGrid.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" #include "Neon/domain/tools/TestData.h" #include "TestInformation.h" #include "gtest/gtest.h" @@ -31,6 +34,27 @@ auto mapContainer_axpy(int streamIdx, }); } +template +auto mapContainer_add(int streamIdx, + typename Field::Type& val, + Field& fieldB) + -> Neon::set::Container +{ + const auto& grid = fieldB.getGrid(); + return grid.newContainer( + "mapContainer_axpy", + [&, val](Neon::set::Loader& loader) { + auto b = loader.load(fieldB); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + for (int i = 0; i < b.cardinality(); i++) { + // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); + b(e, i) += val; + } + }; + }); +} + using namespace Neon::domain::tool::testing; template @@ -75,6 +99,60 @@ auto run(TestData& data) -> void template auto run(TestData&) -> void; template auto run(TestData&) -> void; template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; + +namespace dataView { +template +auto run(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + + data.resetValuesToLinear(1, 100); + T val = T(33); + + { // NEON + const Neon::index_3d dim = grid.getDimension(); + std::vector elements; + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + + + mapContainer_axpy(Neon::Backend::mainStreamIdx, + val, X, Y) + .run(0, Neon::DataView::BOUNDARY); + + mapContainer_axpy(Neon::Backend::mainStreamIdx, + val, X, Y) + .run(0, Neon::DataView::INTERNAL); + + X.updateHostData(0); + Y.updateHostData(0); + + data.getBackend().sync(0); + } + + { // Golden data + auto& X = data.getIODomain(FieldNames::X); + auto& Y = data.getIODomain(FieldNames::Y); + data.axpy(&val, X, Y); + } + + bool isOk = data.compare(FieldNames::Y); + ASSERT_TRUE(isOk); +} +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +} // namespace dataView } // namespace map \ No newline at end of file diff --git a/libNeonDomain/tests/domain-map/src/map.h b/libNeonDomain/tests/domain-map/src/map.h index 611f2046..73038353 100644 --- a/libNeonDomain/tests/domain-map/src/map.h +++ b/libNeonDomain/tests/domain-map/src/map.h @@ -3,7 +3,9 @@ #include #include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" #include "Neon/domain/tools/TestData.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" namespace map { @@ -14,6 +16,23 @@ auto run(TestData& data) -> void; extern template auto run(TestData&) -> void; extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +namespace dataView { + +template +auto run(TestData& data) -> void; + +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; + +} // namespace dataView } // namespace map diff --git a/libNeonDomain/tests/domain-map/src/runHelper.h b/libNeonDomain/tests/domain-map/src/runHelper.h index 53ea8681..4c622f82 100644 --- a/libNeonDomain/tests/domain-map/src/runHelper.h +++ b/libNeonDomain/tests/domain-map/src/runHelper.h @@ -31,7 +31,7 @@ void runAllTestConfiguration( nGpuTest.push_back(i); } // std::vector nGpuTest{2,4,6,8}; - std::vector cardinalityTest{1}; + std::vector cardinalityTest{1,3,19}; std::vector dimTest{{10, 17, 13}, {1, 1, 100}, {17, 1, 77}}; std::vector runtimeE{Neon::Runtime::openmp}; @@ -73,7 +73,7 @@ void runAllTestConfiguration( Neon::Backend backend(ids, runtime); Neon::MemoryOptions memoryOptions = backend.getMemoryOptions(); - if constexpr (std::is_same_v) { + if constexpr (G::executionThreadSpan == Neon::set::details::ExecutionThreadSpan::d1b3) { if (dim.z < 8 * ngpu * 3) { dim.z = ngpu * 3 * 8; } @@ -95,6 +95,7 @@ void runAllTestConfiguration( } } +#if 0 template void runOneTestConfiguration(const std::string& gname, @@ -144,3 +145,4 @@ void runOneTestConfiguration(const std::string& gname, } } } +#endif \ No newline at end of file diff --git a/libNeonDomain/tests/domain-neighbour-globalIdx/src/gtests.cpp b/libNeonDomain/tests/domain-neighbour-globalIdx/src/gtests.cpp index feba5a9b..2376b72f 100644 --- a/libNeonDomain/tests/domain-neighbour-globalIdx/src/gtests.cpp +++ b/libNeonDomain/tests/domain-neighbour-globalIdx/src/gtests.cpp @@ -1,10 +1,10 @@ +#include "./testsAndContainers.h" #include "Neon/Neon.h" #include "gtest/gtest.h" -#include "./testsAndContainers.h" #include "runHelper.h" -TEST(domain_unit_test_globalIdx, dGrid) +TEST(domain_neighbour_globalIdx, dGrid) { int nGpus = 5; using Type = int64_t; @@ -13,7 +13,7 @@ TEST(domain_unit_test_globalIdx, dGrid) 1); } -TEST(domain_unit_test_globalIdx, eGrid) +TEST(domain_neighbour_globalIdx, eGrid) { int nGpus = 5; using Type = int64_t; @@ -22,7 +22,7 @@ TEST(domain_unit_test_globalIdx, eGrid) 1); } -TEST(domain_unit_test_globalIdx, bGrid) +TEST(domain_neighbour_globalIdx, bGrid) { int nGpus = 5; using Type = int64_t; @@ -31,6 +31,82 @@ TEST(domain_unit_test_globalIdx, bGrid) 1); } +TEST(domain_neighbour_globalIdx, dGridSoA) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::run), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx, dGridDisg) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::run), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx, bGridMgpu) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::run), + nGpus, + 1); +} + +/////////////////////////////////////////// + +TEST(domain_neighbour_globalIdx, dGrid_template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::runTemplate), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx, eGrid_template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::runTemplate), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx, bGrid_template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::runTemplate), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx, dGridSoA_template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::runTemplate), + nGpus, + 1); +} + +TEST(domain_neighbour_globalIdx,bGridMgpu_template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(globalIdx::runTemplate), + nGpus, + 1); +} + + + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/libNeonDomain/tests/domain-neighbour-globalIdx/src/runHelper.h b/libNeonDomain/tests/domain-neighbour-globalIdx/src/runHelper.h index 0014594c..d74db246 100644 --- a/libNeonDomain/tests/domain-neighbour-globalIdx/src/runHelper.h +++ b/libNeonDomain/tests/domain-neighbour-globalIdx/src/runHelper.h @@ -8,6 +8,7 @@ #include "Neon/core/types/DeviceType.h" #include "Neon/domain/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" #include "Neon/domain/eGrid.h" #include "Neon/domain/tools/Geometries.h" #include "Neon/domain/tools/TestData.h" @@ -82,8 +83,8 @@ void runAllTestConfiguration( if (dim.z < 8 * ngpu * 3) { dim.z = ngpu * 3 * 8; } - if(memoryLayout == Neon::MemoryLayout::arrayOfStructs){ - continue ; + if (memoryLayout == Neon::MemoryLayout::arrayOfStructs) { + continue; } } diff --git a/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.cu b/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.cu index 49dd3bd2..fe25f54e 100644 --- a/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.cu +++ b/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.cu @@ -1,5 +1,7 @@ #include #include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" #include "Neon/domain/tools/TestData.h" #include "TestInformation.h" @@ -61,15 +63,15 @@ auto checkNeighbourData(Field const& filedA, Field const& filedB, Field const& filedC, Neon::index_3d testDirection, - Field const& checkFlatA, - Field const& checkFlatB, - Field const& checkFlatC) + Field& checkFlatA, + Field& checkFlatB, + Field& checkFlatC) -> Neon::set::Container { const auto& grid = filedA.getGrid(); return grid.newContainer( "defContainer", - [&](Neon::set::Loader& loader) { + [&, testDirection](Neon::set::Loader& loader) { auto a = loader.load(filedA, Neon::Pattern::STENCIL); auto b = loader.load(filedB, Neon::Pattern::STENCIL); auto c = loader.load(filedC, Neon::Pattern::STENCIL); @@ -102,6 +104,58 @@ auto checkNeighbourData(Field const& filedA, }); } +template +auto checkNeighbourDataTemplate(Field const& filedA, + Field const& filedB, + Field const& filedC, + Field& checkFlatA, + Field& checkFlatB, + Field& checkFlatC) + -> Neon::set::Container +{ + const auto& grid = filedA.getGrid(); + return grid.newContainer( + "defContainer", + [&](Neon::set::Loader& loader) { + auto a = loader.load(filedA, Neon::Pattern::STENCIL); + auto b = loader.load(filedB, Neon::Pattern::STENCIL); + auto c = loader.load(filedC, Neon::Pattern::STENCIL); + + auto resA = loader.load(checkFlatA, Neon::Pattern::MAP); + auto resB = loader.load(checkFlatB, Neon::Pattern::MAP); + auto resC = loader.load(checkFlatC, Neon::Pattern::MAP); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& e) mutable { + constexpr Neon::index_3d testDirection(xOff, yOff, zOff); + + // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); + Neon::index_3d globalPoint = a.getGlobalIndex(e); + auto ngh = globalPoint + testDirection; + + decltype(a)* nghInfo[3] = {&a, &b, &c}; + decltype(a)* results[3] = {&resA, &resB, &resC}; + + for (int i = 0; i < 3; i++) { + auto d = nghInfo[i]->template getNghData(e, 0); + // auto d = nghInfo[i]->getNghData(e, testDirection.newType(), 0); + + if (d.isValid()) { + results[i]->operator()(e, 0) = d.getData() == ngh.v[i] ? +1 : -1; + if (d.getData() != ngh.v[i]) { + printf("ERROR: %d %d %d %d %d %d\n", globalPoint.x, globalPoint.y, globalPoint.z, ngh.v[0], ngh.v[1], ngh.v[2]); + d = nghInfo[i]->getNghData(e, testDirection.newType(), 0); + } + } else { + results[i]->operator()(e, 0) = 0; + } + } + }; + }); +} + using namespace Neon::domain::tool::testing; template @@ -165,15 +219,15 @@ auto run(TestData& data) -> void X, Y, Z); }; - // constexpr std::array - // stencil{Ngh3DIdx(1, 0, 0), - // Ngh3DIdx(-1, 0, 0), - // Ngh3DIdx(0, 1, 0), - // Ngh3DIdx(0, -1, 0), - // Ngh3DIdx(0, 0, 1), - // Ngh3DIdx(0, 0, -1)}; - constexpr std::array - stencil{Ngh3DIdx(0, 0, -1)}; + constexpr std::array + stencil{Ngh3DIdx(1, 0, 0), + Ngh3DIdx(-1, 0, 0), + Ngh3DIdx(0, 1, 0), + Ngh3DIdx(0, -1, 0), + Ngh3DIdx(0, 0, 1), + Ngh3DIdx(0, 0, -1)}; + // constexpr std::array + // stencil{Ngh3DIdx(0, 0, -1)}; for (auto const& direction : stencil) { reset(aField, bField, cField).run(Neon::Backend::mainStreamIdx); @@ -214,8 +268,153 @@ auto run(TestData& data) -> void } } +template +auto runTemplate(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + + data.resetValuesToLinear(1, 100); + + auto aField = grid.template newField("a", 1, 0); + auto bField = grid.template newField("a", 1, 0); + auto cField = grid.template newField("a", 1, 0); + + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + auto& Z = data.getField(FieldNames::Z); + + const Neon::index_3d dim = grid.getDimension(); + auto bk = grid.getBackend(); + + { // NEON + { + initData(aField, bField, cField).run(Neon::Backend::mainStreamIdx); + bk.sync(Neon::Backend::mainStreamIdx); + aField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + cField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bk.sync(Neon::Backend::mainStreamIdx); + } + } + using Ngh3DIdx = Neon::int32_3d; + + auto setGolden = [&](Ngh3DIdx const& direction) { // Golden data + auto& X = data.getIODomain(FieldNames::X); + auto& Y = data.getIODomain(FieldNames::Y); + auto& Z = data.getIODomain(FieldNames::Z); + + data.forEachActiveIODomain([&](const Neon::index_3d& idx, + int cardinality, + Type& a, + Type& b, + Type& c) { + a = 1; + b = 1; + c = 1; + auto ngh = direction + idx; + if (!(ngh >= 0)) { + a = 0; + b = 0; + c = 0; + } + if (!(dim > ngh)) { + a = 0; + b = 0; + c = 0; + } + }, + X, Y, Z); + }; + + constexpr std::array + stencil{Ngh3DIdx(1, 0, 0), + Ngh3DIdx(-1, 0, 0), + Ngh3DIdx(0, 1, 0), + Ngh3DIdx(0, -1, 0), + Ngh3DIdx(0, 0, 1), + Ngh3DIdx(0, 0, -1)}; + // constexpr std::array + // stencil{Ngh3DIdx(0, 0, -1)}; + + for (auto const& direction : stencil) { + reset(aField, bField, cField).run(Neon::Backend::mainStreamIdx); + reset(X, Y, Z).run(Neon::Backend::mainStreamIdx); + { // Updating halo with wrong data + bk.sync(Neon::Backend::mainStreamIdx); + aField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + cField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bk.sync(Neon::Backend::mainStreamIdx); + } + { + initData(aField, bField, cField).run(Neon::Backend::mainStreamIdx); + bk.sync(Neon::Backend::mainStreamIdx); + aField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + cField.newHaloUpdate(Neon::set::StencilSemantic::standard, Neon::set::TransferMode::put, Neon::Execution::device).run(Neon::Backend::mainStreamIdx); + bk.sync(Neon::Backend::mainStreamIdx); + } + + + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + + if (direction == Neon::index_3d(1, 0, 0)) { + checkNeighbourDataTemplate<1, 0, 0>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else if (direction == Neon::index_3d(-1, 0, 0)) { + checkNeighbourDataTemplate<-1, 0, 0>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else if (direction == Neon::index_3d(0, 1, 0)) { + checkNeighbourDataTemplate<0, 1, 0>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else if (direction == Neon::index_3d(0, -1, 0)) { + checkNeighbourDataTemplate<0, -1, 0>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else if (direction == Neon::index_3d(0, 0, 1)) { + checkNeighbourDataTemplate<0, 0, 1>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else if (direction == Neon::index_3d(0, 0, -1)) { + checkNeighbourDataTemplate<0, 0, -1>(aField, bField, cField, X, Y, Z).run(Neon::Backend::mainStreamIdx); + // checkNeighbourData(aField, bField, cField, direction, X, Y, Z).run(Neon::Backend::mainStreamIdx); + } else { + std::cout << "Direction not implemented " << direction << std::endl; + exit(99); + } + setGolden(direction); + + bk.sync(Neon::Backend::mainStreamIdx); + bool isOk = data.compare(FieldNames::X); + isOk = isOk && data.compare(FieldNames::Y); + isOk = isOk && data.compare(FieldNames::Z); + + if (!isOk) { + std::cout << "Direction with errors " << direction << std::endl; + data.getField(FieldNames::X).ioToVtk(grid.getImplementationName() + "X", "X", true); + data.getField(FieldNames::Y).ioToVtk(grid.getImplementationName() + "Y", "Y", true); + data.getField(FieldNames::Z).ioToVtk(grid.getImplementationName() + "Z", "Z", true); + exit(77); + ASSERT_TRUE(isOk); + } + } +} + + template auto run(TestData&) -> void; template auto run(TestData&) -> void; template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; +template auto run(TestData&) -> void; + + +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; } // namespace globalIdx \ No newline at end of file diff --git a/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.h b/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.h index 0a3b87eb..92542034 100644 --- a/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.h +++ b/libNeonDomain/tests/domain-neighbour-globalIdx/src/testsAndContainers.h @@ -4,6 +4,8 @@ #include "Neon/domain/Grids.h" #include "Neon/domain/tools/TestData.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" namespace globalIdx { @@ -12,9 +14,21 @@ using namespace Neon::domain::tool::testing; template auto run(TestData& data) -> void; +template +auto runTemplate(TestData& data) -> void; + extern template auto run(TestData&) -> void; extern template auto run(TestData&) -> void; extern template auto run(TestData&) -> void; - +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; +extern template auto run(TestData&) -> void; + +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; } // namespace map diff --git a/libNeonDomain/tests/domain-space-filling-curves/CMakeLists.txt b/libNeonDomain/tests/domain-space-filling-curves/CMakeLists.txt new file mode 100644 index 00000000..76af1689 --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +set(APP_NAME domain-space-filling-curves) +file(GLOB_RECURSE SrcFiles src/*.*) + +add_executable(${APP_NAME} ${SrcFiles}) + +target_link_libraries(${APP_NAME} + PUBLIC libNeonDomain + PUBLIC gtest_main) + +set_target_properties(${APP_NAME} PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS ON) + +set_target_properties(${APP_NAME} PROPERTIES FOLDER "libNeonDomain") +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} PREFIX "${APP_NAME}" FILES ${SrcFiles}) + +add_test(NAME ${APP_NAME} COMMAND ${APP_NAME}) \ No newline at end of file diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/TestInformation.h b/libNeonDomain/tests/domain-space-filling-curves/src/TestInformation.h new file mode 100644 index 00000000..3ac50ecd --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/TestInformation.h @@ -0,0 +1,17 @@ +#pragma once +namespace { +struct TestInformation +{ + static auto prefix() + -> std::string + { + return "domain-unit-test-map"; + } + + static auto fullName(const std::string& gridName) + -> std::string + { + return prefix() + "-" + gridName; + } +}; +} // namespace \ No newline at end of file diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.cu b/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.cu new file mode 100644 index 00000000..b43ca7f4 --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.cu @@ -0,0 +1,74 @@ +#include +#include +#include +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/tools/SpaceCurves.h" +#include "Neon/domain/tools/TestData.h" +#include "TestInformation.h" +#include "gtest/gtest.h" + +#include +#include + +namespace space_filling_curves { + +template +auto defHostContainer(Field& filedSweep, + Field& filedMorton, + Field& filedHilbert) + -> Neon::set::Container +{ + const auto& grid = filedSweep.getGrid(); + return grid.template newContainer( + "defContainer", + [&](Neon::set::Loader& loader) { + auto sweep = loader.load(filedSweep); + auto morton = loader.load(filedMorton); + auto hilbert = loader.load(filedHilbert); + + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& gidx) mutable { + Neon::index_3d p = sweep.getGlobalIndex(gidx); + Neon::index_3d dim = sweep.getDomainSize(); + using namespace Neon::domain::tool::spaceCurves; + sweep(gidx, 0) = Encoder::encode(EncoderType::sweep, dim, p); + morton(gidx, 0) = Encoder::encode(EncoderType::morton, dim, p); + hilbert(gidx, 0) = Encoder::encode(EncoderType::hilbert, dim, p); + }; + }); +} + + +using namespace Neon::domain::tool::testing; + +template +auto run(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + + data.resetValuesToLinear(1, 100); + + { // NEON + const Neon::index_3d dim = grid.getDimension(); + std::vector elements; + + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + auto& Z = data.getField(FieldNames::Z); + + defHostContainer(X, Y, Z).run(0); + data.getBackend().sync(0); + + data.getField(FieldNames::X).ioToVtk("spaceCurveSweep", "code", false); + data.getField(FieldNames::Y).ioToVtk("spaceCurveMorton", "code", false); + data.getField(FieldNames::Z).ioToVtk("spaceCurveHilbert", "code", false); + } +} + +template auto run(TestData&) -> void; + + +} // namespace space_filling_curves \ No newline at end of file diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.h b/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.h new file mode 100644 index 00000000..a5b9fd3a --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/domain-space-filling-curves.h @@ -0,0 +1,18 @@ + +#pragma once +#include + +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/tools/TestData.h" + +namespace space_filling_curves { +using namespace Neon::domain::tool::testing; + +template +auto run(TestData& data) -> void; + +extern template auto run(TestData&) -> void; + + +} // namespace globalIdx diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/goldenEncoding.h b/libNeonDomain/tests/domain-space-filling-curves/src/goldenEncoding.h new file mode 100644 index 00000000..d6292c4b --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/goldenEncoding.h @@ -0,0 +1,11 @@ + +#include "Neon/Neon.h" +#include "domain-space-filling-curves.h" +#include "gtest/gtest.h" +#include "runHelper.h" + +uint64_t morton_grid_16_16_16[16 * 16* 16] = { + 0, 4, 32, 36, 256, 260, 288, 292, 2048, 2052, 2080, 2084, 2304, 2308, 2336, 2340, 2, 6, 34, 38, 258, 262, 290, 294, 2050, 2054, 2082, 2086, 2306, 2310, 2338, 2342, 16, 20, 48, 52, 272, 276, 304, 308, 2064, 2068, 2096, 2100, 2320, 2324, 2352, 2356, 18, 22, 50, 54, 274, 278, 306, 310, 2066, 2070, 2098, 2102, 2322, 2326, 2354, 2358, 128, 132, 160, 164, 384, 388, 416, 420, 2176, 2180, 2208, 2212, 2432, 2436, 2464, 2468, 130, 134, 162, 166, 386, 390, 418, 422, 2178, 2182, 2210, 2214, 2434, 2438, 2466, 2470, 144, 148, 176, 180, 400, 404, 432, 436, 2192, 2196, 2224, 2228, 2448, 2452, 2480, 2484, 146, 150, 178, 182, 402, 406, 434, 438, 2194, 2198, 2226, 2230, 2450, 2454, 2482, 2486, 1024, 1028, 1056, 1060, 1280, 1284, 1312, 1316, 3072, 3076, 3104, 3108, 3328, 3332, 3360, 3364, 1026, 1030, 1058, 1062, 1282, 1286, 1314, 1318, 3074, 3078, 3106, 3110, 3330, 3334, 3362, 3366, 1040, 1044, 1072, 1076, 1296, 1300, 1328, 1332, 3088, 3092, 3120, 3124, 3344, 3348, 3376, 3380, 1042, 1046, 1074, 1078, 1298, 1302, 1330, 1334, 3090, 3094, 3122, 3126, 3346, 3350, 3378, 3382, 1152, 1156, 1184, 1188, 1408, 1412, 1440, 1444, 3200, 3204, 3232, 3236, 3456, 3460, 3488, 3492, 1154, 1158, 1186, 1190, 1410, 1414, 1442, 1446, 3202, 3206, 3234, 3238, 3458, 3462, 3490, 3494, 1168, 1172, 1200, 1204, 1424, 1428, 1456, 1460, 3216, 3220, 3248, 3252, 3472, 3476, 3504, 3508, 1170, 1174, 1202, 1206, 1426, 1430, 1458, 1462, 3218, 3222, 3250, 3254, 3474, 3478, 3506, 3510, 1, 5, 33, 37, 257, 261, 289, 293, 2049, 2053, 2081, 2085, 2305, 2309, 2337, 2341, 3, 7, 35, 39, 259, 263, 291, 295, 2051, 2055, 2083, 2087, 2307, 2311, 2339, 2343, 17, 21, 49, 53, 273, 277, 305, 309, 2065, 2069, 2097, 2101, 2321, 2325, 2353, 2357, 19, 23, 51, 55, 275, 279, 307, 311, 2067, 2071, 2099, 2103, 2323, 2327, 2355, 2359, 129, 133, 161, 165, 385, 389, 417, 421, 2177, 2181, 2209, 2213, 2433, 2437, 2465, 2469, 131, 135, 163, 167, 387, 391, 419, 423, 2179, 2183, 2211, 2215, 2435, 2439, 2467, 2471, 145, 149, 177, 181, 401, 405, 433, 437, 2193, 2197, 2225, 2229, 2449, 2453, 2481, 2485, 147, 151, 179, 183, 403, 407, 435, 439, 2195, 2199, 2227, 2231, 2451, 2455, 2483, 2487, 1025, 1029, 1057, 1061, 1281, 1285, 1313, 1317, 3073, 3077, 3105, 3109, 3329, 3333, 3361, 3365, 1027, 1031, 1059, 1063, 1283, 1287, 1315, 1319, 3075, 3079, 3107, 3111, 3331, 3335, 3363, 3367, 1041, 1045, 1073, 1077, 1297, 1301, 1329, 1333, 3089, 3093, 3121, 3125, 3345, 3349, 3377, 3381, 1043, 1047, 1075, 1079, 1299, 1303, 1331, 1335, 3091, 3095, 3123, 3127, 3347, 3351, 3379, 3383, 1153, 1157, 1185, 1189, 1409, 1413, 1441, 1445, 3201, 3205, 3233, 3237, 3457, 3461, 3489, 3493, 1155, 1159, 1187, 1191, 1411, 1415, 1443, 1447, 3203, 3207, 3235, 3239, 3459, 3463, 3491, 3495, 1169, 1173, 1201, 1205, 1425, 1429, 1457, 1461, 3217, 3221, 3249, 3253, 3473, 3477, 3505, 3509, 1171, 1175, 1203, 1207, 1427, 1431, 1459, 1463, 3219, 3223, 3251, 3255, 3475, 3479, 3507, 3511, 8, 12, 40, 44, 264, 268, 296, 300, 2056, 2060, 2088, 2092, 2312, 2316, 2344, 2348, 10, 14, 42, 46, 266, 270, 298, 302, 2058, 2062, 2090, 2094, 2314, 2318, 2346, 2350, 24, 28, 56, 60, 280, 284, 312, 316, 2072, 2076, 2104, 2108, 2328, 2332, 2360, 2364, 26, 30, 58, 62, 282, 286, 314, 318, 2074, 2078, 2106, 2110, 2330, 2334, 2362, 2366, 136, 140, 168, 172, 392, 396, 424, 428, 2184, 2188, 2216, 2220, 2440, 2444, 2472, 2476, 138, 142, 170, 174, 394, 398, 426, 430, 2186, 2190, 2218, 2222, 2442, 2446, 2474, 2478, 152, 156, 184, 188, 408, 412, 440, 444, 2200, 2204, 2232, 2236, 2456, 2460, 2488, 2492, 154, 158, 186, 190, 410, 414, 442, 446, 2202, 2206, 2234, 2238, 2458, 2462, 2490, 2494, 1032, 1036, 1064, 1068, 1288, 1292, 1320, 1324, 3080, 3084, 3112, 3116, 3336, 3340, 3368, 3372, 1034, 1038, 1066, 1070, 1290, 1294, 1322, 1326, 3082, 3086, 3114, 3118, 3338, 3342, 3370, 3374, 1048, 1052, 1080, 1084, 1304, 1308, 1336, 1340, 3096, 3100, 3128, 3132, 3352, 3356, 3384, 3388, 1050, 1054, 1082, 1086, 1306, 1310, 1338, 1342, 3098, 3102, 3130, 3134, 3354, 3358, 3386, 3390, 1160, 1164, 1192, 1196, 1416, 1420, 1448, 1452, 3208, 3212, 3240, 3244, 3464, 3468, 3496, 3500, 1162, 1166, 1194, 1198, 1418, 1422, 1450, 1454, 3210, 3214, 3242, 3246, 3466, 3470, 3498, 3502, 1176, 1180, 1208, 1212, 1432, 1436, 1464, 1468, 3224, 3228, 3256, 3260, 3480, 3484, 3512, 3516, 1178, 1182, 1210, 1214, 1434, 1438, 1466, 1470, 3226, 3230, 3258, 3262, 3482, 3486, 3514, 3518, 9, 13, 41, 45, 265, 269, 297, 301, 2057, 2061, 2089, 2093, 2313, 2317, 2345, 2349, 11, 15, 43, 47, 267, 271, 299, 303, 2059, 2063, 2091, 2095, 2315, 2319, 2347, 2351, 25, 29, 57, 61, 281, 285, 313, 317, 2073, 2077, 2105, 2109, 2329, 2333, 2361, 2365, 27, 31, 59, 63, 283, 287, 315, 319, 2075, 2079, 2107, 2111, 2331, 2335, 2363, 2367, 137, 141, 169, 173, 393, 397, 425, 429, 2185, 2189, 2217, 2221, 2441, 2445, 2473, 2477, 139, 143, 171, 175, 395, 399, 427, 431, 2187, 2191, 2219, 2223, 2443, 2447, 2475, 2479, 153, 157, 185, 189, 409, 413, 441, 445, 2201, 2205, 2233, 2237, 2457, 2461, 2489, 2493, 155, 159, 187, 191, 411, 415, 443, 447, 2203, 2207, 2235, 2239, 2459, 2463, 2491, 2495, 1033, 1037, 1065, 1069, 1289, 1293, 1321, 1325, 3081, 3085, 3113, 3117, 3337, 3341, 3369, 3373, 1035, 1039, 1067, 1071, 1291, 1295, 1323, 1327, 3083, 3087, 3115, 3119, 3339, 3343, 3371, 3375, 1049, 1053, 1081, 1085, 1305, 1309, 1337, 1341, 3097, 3101, 3129, 3133, 3353, 3357, 3385, 3389, 1051, 1055, 1083, 1087, 1307, 1311, 1339, 1343, 3099, 3103, 3131, 3135, 3355, 3359, 3387, 3391, 1161, 1165, 1193, 1197, 1417, 1421, 1449, 1453, 3209, 3213, 3241, 3245, 3465, 3469, 3497, 3501, 1163, 1167, 1195, 1199, 1419, 1423, 1451, 1455, 3211, 3215, 3243, 3247, 3467, 3471, 3499, 3503, 1177, 1181, 1209, 1213, 1433, 1437, 1465, 1469, 3225, 3229, 3257, 3261, 3481, 3485, 3513, 3517, 1179, 1183, 1211, 1215, 1435, 1439, 1467, 1471, 3227, 3231, 3259, 3263, 3483, 3487, 3515, 3519, 64, 68, 96, 100, 320, 324, 352, 356, 2112, 2116, 2144, 2148, 2368, 2372, 2400, 2404, 66, 70, 98, 102, 322, 326, 354, 358, 2114, 2118, 2146, 2150, 2370, 2374, 2402, 2406, 80, 84, 112, 116, 336, 340, 368, 372, 2128, 2132, 2160, 2164, 2384, 2388, 2416, 2420, 82, 86, 114, 118, 338, 342, 370, 374, 2130, 2134, 2162, 2166, 2386, 2390, 2418, 2422, 192, 196, 224, 228, 448, 452, 480, 484, 2240, 2244, 2272, 2276, 2496, 2500, 2528, 2532, 194, 198, 226, 230, 450, 454, 482, 486, 2242, 2246, 2274, 2278, 2498, 2502, 2530, 2534, 208, 212, 240, 244, 464, 468, 496, 500, 2256, 2260, 2288, 2292, 2512, 2516, 2544, 2548, 210, 214, 242, 246, 466, 470, 498, 502, 2258, 2262, 2290, 2294, 2514, 2518, 2546, 2550, 1088, 1092, 1120, 1124, 1344, 1348, 1376, 1380, 3136, 3140, 3168, 3172, 3392, 3396, 3424, 3428, 1090, 1094, 1122, 1126, 1346, 1350, 1378, 1382, 3138, 3142, 3170, 3174, 3394, 3398, 3426, 3430, 1104, 1108, 1136, 1140, 1360, 1364, 1392, 1396, 3152, 3156, 3184, 3188, 3408, 3412, 3440, 3444, 1106, 1110, 1138, 1142, 1362, 1366, 1394, 1398, 3154, 3158, 3186, 3190, 3410, 3414, 3442, 3446, 1216, 1220, 1248, 1252, 1472, 1476, 1504, 1508, 3264, 3268, 3296, 3300, 3520, 3524, 3552, 3556, 1218, 1222, 1250, 1254, 1474, 1478, 1506, 1510, 3266, 3270, 3298, 3302, 3522, 3526, 3554, 3558, 1232, 1236, 1264, 1268, 1488, 1492, 1520, 1524, 3280, 3284, 3312, 3316, 3536, 3540, 3568, 3572, 1234, 1238, 1266, 1270, 1490, 1494, 1522, 1526, 3282, 3286, 3314, 3318, 3538, 3542, 3570, 3574, 65, 69, 97, 101, 321, 325, 353, 357, 2113, 2117, 2145, 2149, 2369, 2373, 2401, 2405, 67, 71, 99, 103, 323, 327, 355, 359, 2115, 2119, 2147, 2151, 2371, 2375, 2403, 2407, 81, 85, 113, 117, 337, 341, 369, 373, 2129, 2133, 2161, 2165, 2385, 2389, 2417, 2421, 83, 87, 115, 119, 339, 343, 371, 375, 2131, 2135, 2163, 2167, 2387, 2391, 2419, 2423, 193, 197, 225, 229, 449, 453, 481, 485, 2241, 2245, 2273, 2277, 2497, 2501, 2529, 2533, 195, 199, 227, 231, 451, 455, 483, 487, 2243, 2247, 2275, 2279, 2499, 2503, 2531, 2535, 209, 213, 241, 245, 465, 469, 497, 501, 2257, 2261, 2289, 2293, 2513, 2517, 2545, 2549, 211, 215, 243, 247, 467, 471, 499, 503, 2259, 2263, 2291, 2295, 2515, 2519, 2547, 2551, 1089, 1093, 1121, 1125, 1345, 1349, 1377, 1381, 3137, 3141, 3169, 3173, 3393, 3397, 3425, 3429, 1091, 1095, 1123, 1127, 1347, 1351, 1379, 1383, 3139, 3143, 3171, 3175, 3395, 3399, 3427, 3431, 1105, 1109, 1137, 1141, 1361, 1365, 1393, 1397, 3153, 3157, 3185, 3189, 3409, 3413, 3441, 3445, 1107, 1111, 1139, 1143, 1363, 1367, 1395, 1399, 3155, 3159, 3187, 3191, 3411, 3415, 3443, 3447, 1217, 1221, 1249, 1253, 1473, 1477, 1505, 1509, 3265, 3269, 3297, 3301, 3521, 3525, 3553, 3557, 1219, 1223, 1251, 1255, 1475, 1479, 1507, 1511, 3267, 3271, 3299, 3303, 3523, 3527, 3555, 3559, 1233, 1237, 1265, 1269, 1489, 1493, 1521, 1525, 3281, 3285, 3313, 3317, 3537, 3541, 3569, 3573, 1235, 1239, 1267, 1271, 1491, 1495, 1523, 1527, 3283, 3287, 3315, 3319, 3539, 3543, 3571, 3575, 72, 76, 104, 108, 328, 332, 360, 364, 2120, 2124, 2152, 2156, 2376, 2380, 2408, 2412, 74, 78, 106, 110, 330, 334, 362, 366, 2122, 2126, 2154, 2158, 2378, 2382, 2410, 2414, 88, 92, 120, 124, 344, 348, 376, 380, 2136, 2140, 2168, 2172, 2392, 2396, 2424, 2428, 90, 94, 122, 126, 346, 350, 378, 382, 2138, 2142, 2170, 2174, 2394, 2398, 2426, 2430, 200, 204, 232, 236, 456, 460, 488, 492, 2248, 2252, 2280, 2284, 2504, 2508, 2536, 2540, 202, 206, 234, 238, 458, 462, 490, 494, 2250, 2254, 2282, 2286, 2506, 2510, 2538, 2542, 216, 220, 248, 252, 472, 476, 504, 508, 2264, 2268, 2296, 2300, 2520, 2524, 2552, 2556, 218, 222, 250, 254, 474, 478, 506, 510, 2266, 2270, 2298, 2302, 2522, 2526, 2554, 2558, 1096, 1100, 1128, 1132, 1352, 1356, 1384, 1388, 3144, 3148, 3176, 3180, 3400, 3404, 3432, 3436, 1098, 1102, 1130, 1134, 1354, 1358, 1386, 1390, 3146, 3150, 3178, 3182, 3402, 3406, 3434, 3438, 1112, 1116, 1144, 1148, 1368, 1372, 1400, 1404, 3160, 3164, 3192, 3196, 3416, 3420, 3448, 3452, 1114, 1118, 1146, 1150, 1370, 1374, 1402, 1406, 3162, 3166, 3194, 3198, 3418, 3422, 3450, 3454, 1224, 1228, 1256, 1260, 1480, 1484, 1512, 1516, 3272, 3276, 3304, 3308, 3528, 3532, 3560, 3564, 1226, 1230, 1258, 1262, 1482, 1486, 1514, 1518, 3274, 3278, 3306, 3310, 3530, 3534, 3562, 3566, 1240, 1244, 1272, 1276, 1496, 1500, 1528, 1532, 3288, 3292, 3320, 3324, 3544, 3548, 3576, 3580, 1242, 1246, 1274, 1278, 1498, 1502, 1530, 1534, 3290, 3294, 3322, 3326, 3546, 3550, 3578, 3582, 73, 77, 105, 109, 329, 333, 361, 365, 2121, 2125, 2153, 2157, 2377, 2381, 2409, 2413, 75, 79, 107, 111, 331, 335, 363, 367, 2123, 2127, 2155, 2159, 2379, 2383, 2411, 2415, 89, 93, 121, 125, 345, 349, 377, 381, 2137, 2141, 2169, 2173, 2393, 2397, 2425, 2429, 91, 95, 123, 127, 347, 351, 379, 383, 2139, 2143, 2171, 2175, 2395, 2399, 2427, 2431, 201, 205, 233, 237, 457, 461, 489, 493, 2249, 2253, 2281, 2285, 2505, 2509, 2537, 2541, 203, 207, 235, 239, 459, 463, 491, 495, 2251, 2255, 2283, 2287, 2507, 2511, 2539, 2543, 217, 221, 249, 253, 473, 477, 505, 509, 2265, 2269, 2297, 2301, 2521, 2525, 2553, 2557, 219, 223, 251, 255, 475, 479, 507, 511, 2267, 2271, 2299, 2303, 2523, 2527, 2555, 2559, 1097, 1101, 1129, 1133, 1353, 1357, 1385, 1389, 3145, 3149, 3177, 3181, 3401, 3405, 3433, 3437, 1099, 1103, 1131, 1135, 1355, 1359, 1387, 1391, 3147, 3151, 3179, 3183, 3403, 3407, 3435, 3439, 1113, 1117, 1145, 1149, 1369, 1373, 1401, 1405, 3161, 3165, 3193, 3197, 3417, 3421, 3449, 3453, 1115, 1119, 1147, 1151, 1371, 1375, 1403, 1407, 3163, 3167, 3195, 3199, 3419, 3423, 3451, 3455, 1225, 1229, 1257, 1261, 1481, 1485, 1513, 1517, 3273, 3277, 3305, 3309, 3529, 3533, 3561, 3565, 1227, 1231, 1259, 1263, 1483, 1487, 1515, 1519, 3275, 3279, 3307, 3311, 3531, 3535, 3563, 3567, 1241, 1245, 1273, 1277, 1497, 1501, 1529, 1533, 3289, 3293, 3321, 3325, 3545, 3549, 3577, 3581, 1243, 1247, 1275, 1279, 1499, 1503, 1531, 1535, 3291, 3295, 3323, 3327, 3547, 3551, 3579, 3583, 512, 516, 544, 548, 768, 772, 800, 804, 2560, 2564, 2592, 2596, 2816, 2820, 2848, 2852, 514, 518, 546, 550, 770, 774, 802, 806, 2562, 2566, 2594, 2598, 2818, 2822, 2850, 2854, 528, 532, 560, 564, 784, 788, 816, 820, 2576, 2580, 2608, 2612, 2832, 2836, 2864, 2868, 530, 534, 562, 566, 786, 790, 818, 822, 2578, 2582, 2610, 2614, 2834, 2838, 2866, 2870, 640, 644, 672, 676, 896, 900, 928, 932, 2688, 2692, 2720, 2724, 2944, 2948, 2976, 2980, 642, 646, 674, 678, 898, 902, 930, 934, 2690, 2694, 2722, 2726, 2946, 2950, 2978, 2982, 656, 660, 688, 692, 912, 916, 944, 948, 2704, 2708, 2736, 2740, 2960, 2964, 2992, 2996, 658, 662, 690, 694, 914, 918, 946, 950, 2706, 2710, 2738, 2742, 2962, 2966, 2994, 2998, 1536, 1540, 1568, 1572, 1792, 1796, 1824, 1828, 3584, 3588, 3616, 3620, 3840, 3844, 3872, 3876, 1538, 1542, 1570, 1574, 1794, 1798, 1826, 1830, 3586, 3590, 3618, 3622, 3842, 3846, 3874, 3878, 1552, 1556, 1584, 1588, 1808, 1812, 1840, 1844, 3600, 3604, 3632, 3636, 3856, 3860, 3888, 3892, 1554, 1558, 1586, 1590, 1810, 1814, 1842, 1846, 3602, 3606, 3634, 3638, 3858, 3862, 3890, 3894, 1664, 1668, 1696, 1700, 1920, 1924, 1952, 1956, 3712, 3716, 3744, 3748, 3968, 3972, 4000, 4004, 1666, 1670, 1698, 1702, 1922, 1926, 1954, 1958, 3714, 3718, 3746, 3750, 3970, 3974, 4002, 4006, 1680, 1684, 1712, 1716, 1936, 1940, 1968, 1972, 3728, 3732, 3760, 3764, 3984, 3988, 4016, 4020, 1682, 1686, 1714, 1718, 1938, 1942, 1970, 1974, 3730, 3734, 3762, 3766, 3986, 3990, 4018, 4022, 513, 517, 545, 549, 769, 773, 801, 805, 2561, 2565, 2593, 2597, 2817, 2821, 2849, 2853, 515, 519, 547, 551, 771, 775, 803, 807, 2563, 2567, 2595, 2599, 2819, 2823, 2851, 2855, 529, 533, 561, 565, 785, 789, 817, 821, 2577, 2581, 2609, 2613, 2833, 2837, 2865, 2869, 531, 535, 563, 567, 787, 791, 819, 823, 2579, 2583, 2611, 2615, 2835, 2839, 2867, 2871, 641, 645, 673, 677, 897, 901, 929, 933, 2689, 2693, 2721, 2725, 2945, 2949, 2977, 2981, 643, 647, 675, 679, 899, 903, 931, 935, 2691, 2695, 2723, 2727, 2947, 2951, 2979, 2983, 657, 661, 689, 693, 913, 917, 945, 949, 2705, 2709, 2737, 2741, 2961, 2965, 2993, 2997, 659, 663, 691, 695, 915, 919, 947, 951, 2707, 2711, 2739, 2743, 2963, 2967, 2995, 2999, 1537, 1541, 1569, 1573, 1793, 1797, 1825, 1829, 3585, 3589, 3617, 3621, 3841, 3845, 3873, 3877, 1539, 1543, 1571, 1575, 1795, 1799, 1827, 1831, 3587, 3591, 3619, 3623, 3843, 3847, 3875, 3879, 1553, 1557, 1585, 1589, 1809, 1813, 1841, 1845, 3601, 3605, 3633, 3637, 3857, 3861, 3889, 3893, 1555, 1559, 1587, 1591, 1811, 1815, 1843, 1847, 3603, 3607, 3635, 3639, 3859, 3863, 3891, 3895, 1665, 1669, 1697, 1701, 1921, 1925, 1953, 1957, 3713, 3717, 3745, 3749, 3969, 3973, 4001, 4005, 1667, 1671, 1699, 1703, 1923, 1927, 1955, 1959, 3715, 3719, 3747, 3751, 3971, 3975, 4003, 4007, 1681, 1685, 1713, 1717, 1937, 1941, 1969, 1973, 3729, 3733, 3761, 3765, 3985, 3989, 4017, 4021, 1683, 1687, 1715, 1719, 1939, 1943, 1971, 1975, 3731, 3735, 3763, 3767, 3987, 3991, 4019, 4023, 520, 524, 552, 556, 776, 780, 808, 812, 2568, 2572, 2600, 2604, 2824, 2828, 2856, 2860, 522, 526, 554, 558, 778, 782, 810, 814, 2570, 2574, 2602, 2606, 2826, 2830, 2858, 2862, 536, 540, 568, 572, 792, 796, 824, 828, 2584, 2588, 2616, 2620, 2840, 2844, 2872, 2876, 538, 542, 570, 574, 794, 798, 826, 830, 2586, 2590, 2618, 2622, 2842, 2846, 2874, 2878, 648, 652, 680, 684, 904, 908, 936, 940, 2696, 2700, 2728, 2732, 2952, 2956, 2984, 2988, 650, 654, 682, 686, 906, 910, 938, 942, 2698, 2702, 2730, 2734, 2954, 2958, 2986, 2990, 664, 668, 696, 700, 920, 924, 952, 956, 2712, 2716, 2744, 2748, 2968, 2972, 3000, 3004, 666, 670, 698, 702, 922, 926, 954, 958, 2714, 2718, 2746, 2750, 2970, 2974, 3002, 3006, 1544, 1548, 1576, 1580, 1800, 1804, 1832, 1836, 3592, 3596, 3624, 3628, 3848, 3852, 3880, 3884, 1546, 1550, 1578, 1582, 1802, 1806, 1834, 1838, 3594, 3598, 3626, 3630, 3850, 3854, 3882, 3886, 1560, 1564, 1592, 1596, 1816, 1820, 1848, 1852, 3608, 3612, 3640, 3644, 3864, 3868, 3896, 3900, 1562, 1566, 1594, 1598, 1818, 1822, 1850, 1854, 3610, 3614, 3642, 3646, 3866, 3870, 3898, 3902, 1672, 1676, 1704, 1708, 1928, 1932, 1960, 1964, 3720, 3724, 3752, 3756, 3976, 3980, 4008, 4012, 1674, 1678, 1706, 1710, 1930, 1934, 1962, 1966, 3722, 3726, 3754, 3758, 3978, 3982, 4010, 4014, 1688, 1692, 1720, 1724, 1944, 1948, 1976, 1980, 3736, 3740, 3768, 3772, 3992, 3996, 4024, 4028, 1690, 1694, 1722, 1726, 1946, 1950, 1978, 1982, 3738, 3742, 3770, 3774, 3994, 3998, 4026, 4030, 521, 525, 553, 557, 777, 781, 809, 813, 2569, 2573, 2601, 2605, 2825, 2829, 2857, 2861, 523, 527, 555, 559, 779, 783, 811, 815, 2571, 2575, 2603, 2607, 2827, 2831, 2859, 2863, 537, 541, 569, 573, 793, 797, 825, 829, 2585, 2589, 2617, 2621, 2841, 2845, 2873, 2877, 539, 543, 571, 575, 795, 799, 827, 831, 2587, 2591, 2619, 2623, 2843, 2847, 2875, 2879, 649, 653, 681, 685, 905, 909, 937, 941, 2697, 2701, 2729, 2733, 2953, 2957, 2985, 2989, 651, 655, 683, 687, 907, 911, 939, 943, 2699, 2703, 2731, 2735, 2955, 2959, 2987, 2991, 665, 669, 697, 701, 921, 925, 953, 957, 2713, 2717, 2745, 2749, 2969, 2973, 3001, 3005, 667, 671, 699, 703, 923, 927, 955, 959, 2715, 2719, 2747, 2751, 2971, 2975, 3003, 3007, 1545, 1549, 1577, 1581, 1801, 1805, 1833, 1837, 3593, 3597, 3625, 3629, 3849, 3853, 3881, 3885, 1547, 1551, 1579, 1583, 1803, 1807, 1835, 1839, 3595, 3599, 3627, 3631, 3851, 3855, 3883, 3887, 1561, 1565, 1593, 1597, 1817, 1821, 1849, 1853, 3609, 3613, 3641, 3645, 3865, 3869, 3897, 3901, 1563, 1567, 1595, 1599, 1819, 1823, 1851, 1855, 3611, 3615, 3643, 3647, 3867, 3871, 3899, 3903, 1673, 1677, 1705, 1709, 1929, 1933, 1961, 1965, 3721, 3725, 3753, 3757, 3977, 3981, 4009, 4013, 1675, 1679, 1707, 1711, 1931, 1935, 1963, 1967, 3723, 3727, 3755, 3759, 3979, 3983, 4011, 4015, 1689, 1693, 1721, 1725, 1945, 1949, 1977, 1981, 3737, 3741, 3769, 3773, 3993, 3997, 4025, 4029, 1691, 1695, 1723, 1727, 1947, 1951, 1979, 1983, 3739, 3743, 3771, 3775, 3995, 3999, 4027, 4031, 576, 580, 608, 612, 832, 836, 864, 868, 2624, 2628, 2656, 2660, 2880, 2884, 2912, 2916, 578, 582, 610, 614, 834, 838, 866, 870, 2626, 2630, 2658, 2662, 2882, 2886, 2914, 2918, 592, 596, 624, 628, 848, 852, 880, 884, 2640, 2644, 2672, 2676, 2896, 2900, 2928, 2932, 594, 598, 626, 630, 850, 854, 882, 886, 2642, 2646, 2674, 2678, 2898, 2902, 2930, 2934, 704, 708, 736, 740, 960, 964, 992, 996, 2752, 2756, 2784, 2788, 3008, 3012, 3040, 3044, 706, 710, 738, 742, 962, 966, 994, 998, 2754, 2758, 2786, 2790, 3010, 3014, 3042, 3046, 720, 724, 752, 756, 976, 980, 1008, 1012, 2768, 2772, 2800, 2804, 3024, 3028, 3056, 3060, 722, 726, 754, 758, 978, 982, 1010, 1014, 2770, 2774, 2802, 2806, 3026, 3030, 3058, 3062, 1600, 1604, 1632, 1636, 1856, 1860, 1888, 1892, 3648, 3652, 3680, 3684, 3904, 3908, 3936, 3940, 1602, 1606, 1634, 1638, 1858, 1862, 1890, 1894, 3650, 3654, 3682, 3686, 3906, 3910, 3938, 3942, 1616, 1620, 1648, 1652, 1872, 1876, 1904, 1908, 3664, 3668, 3696, 3700, 3920, 3924, 3952, 3956, 1618, 1622, 1650, 1654, 1874, 1878, 1906, 1910, 3666, 3670, 3698, 3702, 3922, 3926, 3954, 3958, 1728, 1732, 1760, 1764, 1984, 1988, 2016, 2020, 3776, 3780, 3808, 3812, 4032, 4036, 4064, 4068, 1730, 1734, 1762, 1766, 1986, 1990, 2018, 2022, 3778, 3782, 3810, 3814, 4034, 4038, 4066, 4070, 1744, 1748, 1776, 1780, 2000, 2004, 2032, 2036, 3792, 3796, 3824, 3828, 4048, 4052, 4080, 4084, 1746, 1750, 1778, 1782, 2002, 2006, 2034, 2038, 3794, 3798, 3826, 3830, 4050, 4054, 4082, 4086, 577, 581, 609, 613, 833, 837, 865, 869, 2625, 2629, 2657, 2661, 2881, 2885, 2913, 2917, 579, 583, 611, 615, 835, 839, 867, 871, 2627, 2631, 2659, 2663, 2883, 2887, 2915, 2919, 593, 597, 625, 629, 849, 853, 881, 885, 2641, 2645, 2673, 2677, 2897, 2901, 2929, 2933, 595, 599, 627, 631, 851, 855, 883, 887, 2643, 2647, 2675, 2679, 2899, 2903, 2931, 2935, 705, 709, 737, 741, 961, 965, 993, 997, 2753, 2757, 2785, 2789, 3009, 3013, 3041, 3045, 707, 711, 739, 743, 963, 967, 995, 999, 2755, 2759, 2787, 2791, 3011, 3015, 3043, 3047, 721, 725, 753, 757, 977, 981, 1009, 1013, 2769, 2773, 2801, 2805, 3025, 3029, 3057, 3061, 723, 727, 755, 759, 979, 983, 1011, 1015, 2771, 2775, 2803, 2807, 3027, 3031, 3059, 3063, 1601, 1605, 1633, 1637, 1857, 1861, 1889, 1893, 3649, 3653, 3681, 3685, 3905, 3909, 3937, 3941, 1603, 1607, 1635, 1639, 1859, 1863, 1891, 1895, 3651, 3655, 3683, 3687, 3907, 3911, 3939, 3943, 1617, 1621, 1649, 1653, 1873, 1877, 1905, 1909, 3665, 3669, 3697, 3701, 3921, 3925, 3953, 3957, 1619, 1623, 1651, 1655, 1875, 1879, 1907, 1911, 3667, 3671, 3699, 3703, 3923, 3927, 3955, 3959, 1729, 1733, 1761, 1765, 1985, 1989, 2017, 2021, 3777, 3781, 3809, 3813, 4033, 4037, 4065, 4069, 1731, 1735, 1763, 1767, 1987, 1991, 2019, 2023, 3779, 3783, 3811, 3815, 4035, 4039, 4067, 4071, 1745, 1749, 1777, 1781, 2001, 2005, 2033, 2037, 3793, 3797, 3825, 3829, 4049, 4053, 4081, 4085, 1747, 1751, 1779, 1783, 2003, 2007, 2035, 2039, 3795, 3799, 3827, 3831, 4051, 4055, 4083, 4087, 584, 588, 616, 620, 840, 844, 872, 876, 2632, 2636, 2664, 2668, 2888, 2892, 2920, 2924, 586, 590, 618, 622, 842, 846, 874, 878, 2634, 2638, 2666, 2670, 2890, 2894, 2922, 2926, 600, 604, 632, 636, 856, 860, 888, 892, 2648, 2652, 2680, 2684, 2904, 2908, 2936, 2940, 602, 606, 634, 638, 858, 862, 890, 894, 2650, 2654, 2682, 2686, 2906, 2910, 2938, 2942, 712, 716, 744, 748, 968, 972, 1000, 1004, 2760, 2764, 2792, 2796, 3016, 3020, 3048, 3052, 714, 718, 746, 750, 970, 974, 1002, 1006, 2762, 2766, 2794, 2798, 3018, 3022, 3050, 3054, 728, 732, 760, 764, 984, 988, 1016, 1020, 2776, 2780, 2808, 2812, 3032, 3036, 3064, 3068, 730, 734, 762, 766, 986, 990, 1018, 1022, 2778, 2782, 2810, 2814, 3034, 3038, 3066, 3070, 1608, 1612, 1640, 1644, 1864, 1868, 1896, 1900, 3656, 3660, 3688, 3692, 3912, 3916, 3944, 3948, 1610, 1614, 1642, 1646, 1866, 1870, 1898, 1902, 3658, 3662, 3690, 3694, 3914, 3918, 3946, 3950, 1624, 1628, 1656, 1660, 1880, 1884, 1912, 1916, 3672, 3676, 3704, 3708, 3928, 3932, 3960, 3964, 1626, 1630, 1658, 1662, 1882, 1886, 1914, 1918, 3674, 3678, 3706, 3710, 3930, 3934, 3962, 3966, 1736, 1740, 1768, 1772, 1992, 1996, 2024, 2028, 3784, 3788, 3816, 3820, 4040, 4044, 4072, 4076, 1738, 1742, 1770, 1774, 1994, 1998, 2026, 2030, 3786, 3790, 3818, 3822, 4042, 4046, 4074, 4078, 1752, 1756, 1784, 1788, 2008, 2012, 2040, 2044, 3800, 3804, 3832, 3836, 4056, 4060, 4088, 4092, 1754, 1758, 1786, 1790, 2010, 2014, 2042, 2046, 3802, 3806, 3834, 3838, 4058, 4062, 4090, 4094, 585, 589, 617, 621, 841, 845, 873, 877, 2633, 2637, 2665, 2669, 2889, 2893, 2921, 2925, 587, 591, 619, 623, 843, 847, 875, 879, 2635, 2639, 2667, 2671, 2891, 2895, 2923, 2927, 601, 605, 633, 637, 857, 861, 889, 893, 2649, 2653, 2681, 2685, 2905, 2909, 2937, 2941, 603, 607, 635, 639, 859, 863, 891, 895, 2651, 2655, 2683, 2687, 2907, 2911, 2939, 2943, 713, 717, 745, 749, 969, 973, 1001, 1005, 2761, 2765, 2793, 2797, 3017, 3021, 3049, 3053, 715, 719, 747, 751, 971, 975, 1003, 1007, 2763, 2767, 2795, 2799, 3019, 3023, 3051, 3055, 729, 733, 761, 765, 985, 989, 1017, 1021, 2777, 2781, 2809, 2813, 3033, 3037, 3065, 3069, 731, 735, 763, 767, 987, 991, 1019, 1023, 2779, 2783, 2811, 2815, 3035, 3039, 3067, 3071, 1609, 1613, 1641, 1645, 1865, 1869, 1897, 1901, 3657, 3661, 3689, 3693, 3913, 3917, 3945, 3949, 1611, 1615, 1643, 1647, 1867, 1871, 1899, 1903, 3659, 3663, 3691, 3695, 3915, 3919, 3947, 3951, 1625, 1629, 1657, 1661, 1881, 1885, 1913, 1917, 3673, 3677, 3705, 3709, 3929, 3933, 3961, 3965, 1627, 1631, 1659, 1663, 1883, 1887, 1915, 1919, 3675, 3679, 3707, 3711, 3931, 3935, 3963, 3967, 1737, 1741, 1769, 1773, 1993, 1997, 2025, 2029, 3785, 3789, 3817, 3821, 4041, 4045, 4073, 4077, 1739, 1743, 1771, 1775, 1995, 1999, 2027, 2031, 3787, 3791, 3819, 3823, 4043, 4047, 4075, 4079, 1753, 1757, 1785, 1789, 2009, 2013, 2041, 2045, 3801, 3805, 3833, 3837, 4057, 4061, 4089, 4093, 1755, 1759, 1787, 1791, 2011, 2015, 2043, 2047, 3803, 3807, 3835, 3839, 4059, 4063, 4091, 4095}; + +uint64_t hilbert_grid_16_16_16[16 * 16* 16] = { + 0, 7, 8, 11, 212, 211, 204, 203, 3892, 3891, 3884, 3883, 4084, 4087, 4088, 4095, 3, 4, 9, 10, 215, 208, 207, 200, 3895, 3888, 3887, 3880, 4085, 4086, 4091, 4092, 60, 59, 54, 53, 216, 219, 198, 199, 3896, 3897, 3876, 3879, 4042, 4041, 4036, 4035, 63, 56, 55, 52, 217, 218, 193, 192, 3903, 3902, 3877, 3878, 4043, 4040, 4039, 4032, 64, 67, 124, 127, 128, 131, 188, 191, 3904, 3907, 3964, 3967, 3968, 3971, 4028, 4031, 65, 66, 125, 126, 129, 130, 189, 190, 3905, 3906, 3965, 3966, 3969, 3970, 4029, 4030, 90, 93, 98, 101, 154, 157, 162, 165, 3930, 3933, 3938, 3941, 3994, 3997, 4002, 4005, 89, 94, 97, 102, 153, 158, 161, 166, 3929, 3934, 3937, 3942, 3993, 3998, 4001, 4006, 1702, 1703, 1704, 1707, 1876, 1879, 1880, 1881, 2214, 2215, 2216, 2219, 2388, 2391, 2392, 2393, 1697, 1696, 1705, 1706, 1877, 1878, 1887, 1886, 2209, 2208, 2217, 2218, 2389, 2390, 2399, 2398, 1694, 1695, 1686, 1685, 1898, 1897, 1888, 1889, 2206, 2207, 2198, 2197, 2410, 2409, 2400, 2401, 1689, 1688, 1687, 1684, 1899, 1896, 1895, 1894, 2201, 2200, 2199, 2196, 2411, 2408, 2407, 2406, 1638, 1639, 1640, 1643, 1940, 1943, 1944, 1945, 2150, 2151, 2152, 2155, 2452, 2455, 2456, 2457, 1633, 1632, 1641, 1642, 1941, 1942, 1951, 1950, 2145, 2144, 2153, 2154, 2453, 2454, 2463, 2462, 1630, 1631, 1622, 1621, 1962, 1961, 1952, 1953, 2142, 2143, 2134, 2133, 2474, 2473, 2464, 2465, 1625, 1624, 1623, 1620, 1963, 1960, 1959, 1958, 2137, 2136, 2135, 2132, 2475, 2472, 2471, 2470, 1, 6, 15, 12, 213, 210, 205, 202, 3893, 3890, 3885, 3882, 4083, 4080, 4089, 4094, 2, 5, 14, 13, 214, 209, 206, 201, 3894, 3889, 3886, 3881, 4082, 4081, 4090, 4093, 61, 58, 49, 50, 223, 220, 197, 196, 3899, 3898, 3875, 3872, 4045, 4046, 4037, 4034, 62, 57, 48, 51, 222, 221, 194, 195, 3900, 3901, 3874, 3873, 4044, 4047, 4038, 4033, 71, 68, 123, 120, 135, 132, 187, 184, 3911, 3908, 3963, 3960, 3975, 3972, 4027, 4024, 70, 69, 122, 121, 134, 133, 186, 185, 3910, 3909, 3962, 3961, 3974, 3973, 4026, 4025, 91, 92, 99, 100, 155, 156, 163, 164, 3931, 3932, 3939, 3940, 3995, 3996, 4003, 4004, 88, 95, 96, 103, 152, 159, 160, 167, 3928, 3935, 3936, 3943, 3992, 3999, 4000, 4007, 1701, 1700, 1711, 1708, 1875, 1872, 1883, 1882, 2213, 2212, 2223, 2220, 2387, 2384, 2395, 2394, 1698, 1699, 1710, 1709, 1874, 1873, 1884, 1885, 2210, 2211, 2222, 2221, 2386, 2385, 2396, 2397, 1693, 1692, 1681, 1682, 1901, 1902, 1891, 1890, 2205, 2204, 2193, 2194, 2413, 2414, 2403, 2402, 1690, 1691, 1680, 1683, 1900, 1903, 1892, 1893, 2202, 2203, 2192, 2195, 2412, 2415, 2404, 2405, 1637, 1636, 1647, 1644, 1939, 1936, 1947, 1946, 2149, 2148, 2159, 2156, 2451, 2448, 2459, 2458, 1634, 1635, 1646, 1645, 1938, 1937, 1948, 1949, 2146, 2147, 2158, 2157, 2450, 2449, 2460, 2461, 1629, 1628, 1617, 1618, 1965, 1966, 1955, 1954, 2141, 2140, 2129, 2130, 2477, 2478, 2467, 2466, 1626, 1627, 1616, 1619, 1964, 1967, 1956, 1957, 2138, 2139, 2128, 2131, 2476, 2479, 2468, 2469, 26, 27, 16, 19, 234, 237, 242, 245, 3850, 3853, 3858, 3861, 4076, 4079, 4068, 4069, 29, 28, 17, 18, 233, 238, 241, 246, 3849, 3854, 3857, 3862, 4077, 4078, 4067, 4066, 34, 35, 46, 45, 224, 227, 250, 251, 3844, 3845, 3868, 3871, 4050, 4049, 4060, 4061, 37, 36, 47, 44, 225, 226, 253, 252, 3843, 3842, 3869, 3870, 4051, 4048, 4059, 4058, 72, 73, 118, 119, 136, 137, 182, 183, 3912, 3913, 3958, 3959, 3976, 3977, 4022, 4023, 79, 78, 113, 112, 143, 142, 177, 176, 3919, 3918, 3953, 3952, 3983, 3982, 4017, 4016, 80, 81, 110, 111, 144, 145, 174, 175, 3920, 3921, 3950, 3951, 3984, 3985, 4014, 4015, 87, 86, 105, 104, 151, 150, 169, 168, 3927, 3926, 3945, 3944, 3991, 3990, 4009, 4008, 1726, 1721, 1712, 1715, 1868, 1871, 1862, 1857, 2238, 2233, 2224, 2227, 2380, 2383, 2374, 2369, 1725, 1722, 1713, 1714, 1869, 1870, 1861, 1858, 2237, 2234, 2225, 2226, 2381, 2382, 2373, 2370, 1666, 1669, 1678, 1677, 1906, 1905, 1914, 1917, 2178, 2181, 2190, 2189, 2418, 2417, 2426, 2429, 1665, 1670, 1679, 1676, 1907, 1904, 1913, 1918, 2177, 2182, 2191, 2188, 2419, 2416, 2425, 2430, 1662, 1657, 1648, 1651, 1932, 1935, 1926, 1921, 2174, 2169, 2160, 2163, 2444, 2447, 2438, 2433, 1661, 1658, 1649, 1650, 1933, 1934, 1925, 1922, 2173, 2170, 2161, 2162, 2445, 2446, 2437, 2434, 1602, 1605, 1614, 1613, 1970, 1969, 1978, 1981, 2114, 2117, 2126, 2125, 2482, 2481, 2490, 2493, 1601, 1606, 1615, 1612, 1971, 1968, 1977, 1982, 2113, 2118, 2127, 2124, 2483, 2480, 2489, 2494, 25, 24, 23, 20, 235, 236, 243, 244, 3851, 3852, 3859, 3860, 4075, 4072, 4071, 4070, 30, 31, 22, 21, 232, 239, 240, 247, 3848, 3855, 3856, 3863, 4074, 4073, 4064, 4065, 33, 32, 41, 42, 231, 228, 249, 248, 3847, 3846, 3867, 3864, 4053, 4054, 4063, 4062, 38, 39, 40, 43, 230, 229, 254, 255, 3840, 3841, 3866, 3865, 4052, 4055, 4056, 4057, 75, 74, 117, 116, 139, 138, 181, 180, 3915, 3914, 3957, 3956, 3979, 3978, 4021, 4020, 76, 77, 114, 115, 140, 141, 178, 179, 3916, 3917, 3954, 3955, 3980, 3981, 4018, 4019, 83, 82, 109, 108, 147, 146, 173, 172, 3923, 3922, 3949, 3948, 3987, 3986, 4013, 4012, 84, 85, 106, 107, 148, 149, 170, 171, 3924, 3925, 3946, 3947, 3988, 3989, 4010, 4011, 1727, 1720, 1719, 1716, 1867, 1864, 1863, 1856, 2239, 2232, 2231, 2228, 2379, 2376, 2375, 2368, 1724, 1723, 1718, 1717, 1866, 1865, 1860, 1859, 2236, 2235, 2230, 2229, 2378, 2377, 2372, 2371, 1667, 1668, 1673, 1674, 1909, 1910, 1915, 1916, 2179, 2180, 2185, 2186, 2421, 2422, 2427, 2428, 1664, 1671, 1672, 1675, 1908, 1911, 1912, 1919, 2176, 2183, 2184, 2187, 2420, 2423, 2424, 2431, 1663, 1656, 1655, 1652, 1931, 1928, 1927, 1920, 2175, 2168, 2167, 2164, 2443, 2440, 2439, 2432, 1660, 1659, 1654, 1653, 1930, 1929, 1924, 1923, 2172, 2171, 2166, 2165, 2442, 2441, 2436, 2435, 1603, 1604, 1609, 1610, 1973, 1974, 1979, 1980, 2115, 2116, 2121, 2122, 2485, 2486, 2491, 2492, 1600, 1607, 1608, 1611, 1972, 1975, 1976, 1983, 2112, 2119, 2120, 2123, 2484, 2487, 2488, 2495, 486, 487, 488, 491, 276, 275, 268, 267, 3828, 3827, 3820, 3819, 3604, 3607, 3608, 3609, 481, 480, 489, 490, 279, 272, 271, 264, 3831, 3824, 3823, 3816, 3605, 3606, 3615, 3614, 478, 479, 470, 469, 280, 283, 262, 263, 3832, 3833, 3812, 3815, 3626, 3625, 3616, 3617, 473, 472, 471, 468, 281, 282, 257, 256, 3839, 3838, 3813, 3814, 3627, 3624, 3623, 3622, 436, 437, 394, 395, 372, 373, 330, 331, 3764, 3765, 3722, 3723, 3700, 3701, 3658, 3659, 435, 434, 397, 396, 371, 370, 333, 332, 3763, 3762, 3725, 3724, 3699, 3698, 3661, 3660, 428, 429, 402, 403, 364, 365, 338, 339, 3756, 3757, 3730, 3731, 3692, 3693, 3666, 3667, 427, 426, 405, 404, 363, 362, 341, 340, 3755, 3754, 3733, 3732, 3691, 3690, 3669, 3668, 1728, 1731, 1788, 1791, 1792, 1795, 1852, 1855, 2240, 2243, 2300, 2303, 2304, 2307, 2364, 2367, 1729, 1730, 1789, 1790, 1793, 1794, 1853, 1854, 2241, 2242, 2301, 2302, 2305, 2306, 2365, 2366, 1754, 1757, 1762, 1765, 1818, 1821, 1826, 1829, 2266, 2269, 2274, 2277, 2330, 2333, 2338, 2341, 1753, 1758, 1761, 1766, 1817, 1822, 1825, 1830, 2265, 2270, 2273, 2278, 2329, 2334, 2337, 2342, 1588, 1587, 1580, 1579, 2004, 2003, 1996, 1995, 2100, 2099, 2092, 2091, 2516, 2515, 2508, 2507, 1591, 1584, 1583, 1576, 2007, 2000, 1999, 1992, 2103, 2096, 2095, 2088, 2519, 2512, 2511, 2504, 1592, 1593, 1572, 1575, 2008, 2011, 1990, 1991, 2104, 2105, 2084, 2087, 2520, 2523, 2502, 2503, 1599, 1598, 1573, 1574, 2009, 2010, 1985, 1984, 2111, 2110, 2085, 2086, 2521, 2522, 2497, 2496, 485, 484, 495, 492, 277, 274, 269, 266, 3829, 3826, 3821, 3818, 3603, 3600, 3611, 3610, 482, 483, 494, 493, 278, 273, 270, 265, 3830, 3825, 3822, 3817, 3602, 3601, 3612, 3613, 477, 476, 465, 466, 287, 284, 261, 260, 3835, 3834, 3811, 3808, 3629, 3630, 3619, 3618, 474, 475, 464, 467, 286, 285, 258, 259, 3836, 3837, 3810, 3809, 3628, 3631, 3620, 3621, 439, 438, 393, 392, 375, 374, 329, 328, 3767, 3766, 3721, 3720, 3703, 3702, 3657, 3656, 432, 433, 398, 399, 368, 369, 334, 335, 3760, 3761, 3726, 3727, 3696, 3697, 3662, 3663, 431, 430, 401, 400, 367, 366, 337, 336, 3759, 3758, 3729, 3728, 3695, 3694, 3665, 3664, 424, 425, 406, 407, 360, 361, 342, 343, 3752, 3753, 3734, 3735, 3688, 3689, 3670, 3671, 1735, 1732, 1787, 1784, 1799, 1796, 1851, 1848, 2247, 2244, 2299, 2296, 2311, 2308, 2363, 2360, 1734, 1733, 1786, 1785, 1798, 1797, 1850, 1849, 2246, 2245, 2298, 2297, 2310, 2309, 2362, 2361, 1755, 1756, 1763, 1764, 1819, 1820, 1827, 1828, 2267, 2268, 2275, 2276, 2331, 2332, 2339, 2340, 1752, 1759, 1760, 1767, 1816, 1823, 1824, 1831, 2264, 2271, 2272, 2279, 2328, 2335, 2336, 2343, 1589, 1586, 1581, 1578, 2005, 2002, 1997, 1994, 2101, 2098, 2093, 2090, 2517, 2514, 2509, 2506, 1590, 1585, 1582, 1577, 2006, 2001, 1998, 1993, 2102, 2097, 2094, 2089, 2518, 2513, 2510, 2505, 1595, 1594, 1571, 1568, 2015, 2012, 1989, 1988, 2107, 2106, 2083, 2080, 2527, 2524, 2501, 2500, 1596, 1597, 1570, 1569, 2014, 2013, 1986, 1987, 2108, 2109, 2082, 2081, 2526, 2525, 2498, 2499, 510, 505, 496, 499, 298, 301, 306, 309, 3786, 3789, 3794, 3797, 3596, 3599, 3590, 3585, 509, 506, 497, 498, 297, 302, 305, 310, 3785, 3790, 3793, 3798, 3597, 3598, 3589, 3586, 450, 453, 462, 461, 288, 291, 314, 315, 3780, 3781, 3804, 3807, 3634, 3633, 3642, 3645, 449, 454, 463, 460, 289, 290, 317, 316, 3779, 3778, 3805, 3806, 3635, 3632, 3641, 3646, 440, 443, 388, 391, 376, 379, 324, 327, 3768, 3771, 3716, 3719, 3704, 3707, 3652, 3655, 441, 442, 389, 390, 377, 378, 325, 326, 3769, 3770, 3717, 3718, 3705, 3706, 3653, 3654, 420, 419, 412, 411, 356, 355, 348, 347, 3748, 3747, 3740, 3739, 3684, 3683, 3676, 3675, 423, 416, 415, 408, 359, 352, 351, 344, 3751, 3744, 3743, 3736, 3687, 3680, 3679, 3672, 1736, 1737, 1782, 1783, 1800, 1801, 1846, 1847, 2248, 2249, 2294, 2295, 2312, 2313, 2358, 2359, 1743, 1742, 1777, 1776, 1807, 1806, 1841, 1840, 2255, 2254, 2289, 2288, 2319, 2318, 2353, 2352, 1744, 1745, 1774, 1775, 1808, 1809, 1838, 1839, 2256, 2257, 2286, 2287, 2320, 2321, 2350, 2351, 1751, 1750, 1769, 1768, 1815, 1814, 1833, 1832, 2263, 2262, 2281, 2280, 2327, 2326, 2345, 2344, 1546, 1549, 1554, 1557, 2026, 2029, 2034, 2037, 2058, 2061, 2066, 2069, 2538, 2541, 2546, 2549, 1545, 1550, 1553, 1558, 2025, 2030, 2033, 2038, 2057, 2062, 2065, 2070, 2537, 2542, 2545, 2550, 1540, 1541, 1564, 1567, 2016, 2019, 2042, 2043, 2052, 2053, 2076, 2079, 2528, 2531, 2554, 2555, 1539, 1538, 1565, 1566, 2017, 2018, 2045, 2044, 2051, 2050, 2077, 2078, 2529, 2530, 2557, 2556, 511, 504, 503, 500, 299, 300, 307, 308, 3787, 3788, 3795, 3796, 3595, 3592, 3591, 3584, 508, 507, 502, 501, 296, 303, 304, 311, 3784, 3791, 3792, 3799, 3594, 3593, 3588, 3587, 451, 452, 457, 458, 295, 292, 313, 312, 3783, 3782, 3803, 3800, 3637, 3638, 3643, 3644, 448, 455, 456, 459, 294, 293, 318, 319, 3776, 3777, 3802, 3801, 3636, 3639, 3640, 3647, 447, 444, 387, 384, 383, 380, 323, 320, 3775, 3772, 3715, 3712, 3711, 3708, 3651, 3648, 446, 445, 386, 385, 382, 381, 322, 321, 3774, 3773, 3714, 3713, 3710, 3709, 3650, 3649, 421, 418, 413, 410, 357, 354, 349, 346, 3749, 3746, 3741, 3738, 3685, 3682, 3677, 3674, 422, 417, 414, 409, 358, 353, 350, 345, 3750, 3745, 3742, 3737, 3686, 3681, 3678, 3673, 1739, 1738, 1781, 1780, 1803, 1802, 1845, 1844, 2251, 2250, 2293, 2292, 2315, 2314, 2357, 2356, 1740, 1741, 1778, 1779, 1804, 1805, 1842, 1843, 2252, 2253, 2290, 2291, 2316, 2317, 2354, 2355, 1747, 1746, 1773, 1772, 1811, 1810, 1837, 1836, 2259, 2258, 2285, 2284, 2323, 2322, 2349, 2348, 1748, 1749, 1770, 1771, 1812, 1813, 1834, 1835, 2260, 2261, 2282, 2283, 2324, 2325, 2346, 2347, 1547, 1548, 1555, 1556, 2027, 2028, 2035, 2036, 2059, 2060, 2067, 2068, 2539, 2540, 2547, 2548, 1544, 1551, 1552, 1559, 2024, 2031, 2032, 2039, 2056, 2063, 2064, 2071, 2536, 2543, 2544, 2551, 1543, 1542, 1563, 1560, 2023, 2020, 2041, 2040, 2055, 2054, 2075, 2072, 2535, 2532, 2553, 2552, 1536, 1537, 1562, 1561, 2022, 2021, 2046, 2047, 2048, 2049, 2074, 2073, 2534, 2533, 2558, 2559, 512, 515, 572, 575, 576, 577, 602, 601, 3494, 3493, 3518, 3519, 3520, 3523, 3580, 3583, 513, 514, 573, 574, 583, 582, 603, 600, 3495, 3492, 3513, 3512, 3521, 3522, 3581, 3582, 538, 541, 546, 549, 584, 591, 592, 599, 3496, 3503, 3504, 3511, 3546, 3549, 3554, 3557, 537, 542, 545, 550, 587, 588, 595, 596, 3499, 3500, 3507, 3508, 3545, 3550, 3553, 3558, 998, 993, 990, 985, 948, 947, 940, 939, 3156, 3155, 3148, 3147, 3110, 3105, 3102, 3097, 997, 994, 989, 986, 951, 944, 943, 936, 3159, 3152, 3151, 3144, 3109, 3106, 3101, 3098, 1022, 1021, 962, 961, 952, 953, 932, 935, 3160, 3163, 3142, 3143, 3134, 3133, 3074, 3073, 1023, 1020, 963, 960, 959, 958, 933, 934, 3161, 3162, 3137, 3136, 3135, 3132, 3075, 3072, 1024, 1027, 1084, 1087, 1088, 1089, 1114, 1113, 2982, 2981, 3006, 3007, 3008, 3011, 3068, 3071, 1025, 1026, 1085, 1086, 1095, 1094, 1115, 1112, 2983, 2980, 3001, 3000, 3009, 3010, 3069, 3070, 1050, 1053, 1058, 1061, 1096, 1103, 1104, 1111, 2984, 2991, 2992, 2999, 3034, 3037, 3042, 3045, 1049, 1054, 1057, 1062, 1099, 1100, 1107, 1108, 2987, 2988, 2995, 2996, 3033, 3038, 3041, 3046, 1510, 1505, 1502, 1497, 1460, 1459, 1452, 1451, 2644, 2643, 2636, 2635, 2598, 2593, 2590, 2585, 1509, 1506, 1501, 1498, 1463, 1456, 1455, 1448, 2647, 2640, 2639, 2632, 2597, 2594, 2589, 2586, 1534, 1533, 1474, 1473, 1464, 1465, 1444, 1447, 2648, 2651, 2630, 2631, 2622, 2621, 2562, 2561, 1535, 1532, 1475, 1472, 1471, 1470, 1445, 1446, 2649, 2650, 2625, 2624, 2623, 2620, 2563, 2560, 519, 516, 571, 568, 579, 578, 605, 606, 3489, 3490, 3517, 3516, 3527, 3524, 3579, 3576, 518, 517, 570, 569, 580, 581, 604, 607, 3488, 3491, 3514, 3515, 3526, 3525, 3578, 3577, 539, 540, 547, 548, 585, 590, 593, 598, 3497, 3502, 3505, 3510, 3547, 3548, 3555, 3556, 536, 543, 544, 551, 586, 589, 594, 597, 3498, 3501, 3506, 3509, 3544, 3551, 3552, 3559, 999, 992, 991, 984, 949, 946, 941, 938, 3157, 3154, 3149, 3146, 3111, 3104, 3103, 3096, 996, 995, 988, 987, 950, 945, 942, 937, 3158, 3153, 3150, 3145, 3108, 3107, 3100, 3099, 1017, 1018, 965, 966, 955, 954, 931, 928, 3167, 3164, 3141, 3140, 3129, 3130, 3077, 3078, 1016, 1019, 964, 967, 956, 957, 930, 929, 3166, 3165, 3138, 3139, 3128, 3131, 3076, 3079, 1031, 1028, 1083, 1080, 1091, 1090, 1117, 1118, 2977, 2978, 3005, 3004, 3015, 3012, 3067, 3064, 1030, 1029, 1082, 1081, 1092, 1093, 1116, 1119, 2976, 2979, 3002, 3003, 3014, 3013, 3066, 3065, 1051, 1052, 1059, 1060, 1097, 1102, 1105, 1110, 2985, 2990, 2993, 2998, 3035, 3036, 3043, 3044, 1048, 1055, 1056, 1063, 1098, 1101, 1106, 1109, 2986, 2989, 2994, 2997, 3032, 3039, 3040, 3047, 1511, 1504, 1503, 1496, 1461, 1458, 1453, 1450, 2645, 2642, 2637, 2634, 2599, 2592, 2591, 2584, 1508, 1507, 1500, 1499, 1462, 1457, 1454, 1449, 2646, 2641, 2638, 2633, 2596, 2595, 2588, 2587, 1529, 1530, 1477, 1478, 1467, 1466, 1443, 1440, 2655, 2652, 2629, 2628, 2617, 2618, 2565, 2566, 1528, 1531, 1476, 1479, 1468, 1469, 1442, 1441, 2654, 2653, 2626, 2627, 2616, 2619, 2564, 2567, 520, 521, 566, 567, 636, 637, 610, 609, 3486, 3485, 3458, 3459, 3528, 3529, 3574, 3575, 527, 526, 561, 560, 635, 634, 611, 608, 3487, 3484, 3461, 3460, 3535, 3534, 3569, 3568, 528, 529, 558, 559, 630, 625, 622, 617, 3478, 3473, 3470, 3465, 3536, 3537, 3566, 3567, 535, 534, 553, 552, 629, 626, 621, 618, 3477, 3474, 3469, 3466, 3543, 3542, 3561, 3560, 1000, 1001, 982, 983, 906, 909, 914, 917, 3178, 3181, 3186, 3189, 3112, 3113, 3094, 3095, 1007, 1006, 977, 976, 905, 910, 913, 918, 3177, 3182, 3185, 3190, 3119, 3118, 3089, 3088, 1008, 1009, 974, 975, 900, 901, 924, 927, 3168, 3171, 3194, 3195, 3120, 3121, 3086, 3087, 1015, 1014, 969, 968, 899, 898, 925, 926, 3169, 3170, 3197, 3196, 3127, 3126, 3081, 3080, 1032, 1033, 1078, 1079, 1148, 1149, 1122, 1121, 2974, 2973, 2946, 2947, 3016, 3017, 3062, 3063, 1039, 1038, 1073, 1072, 1147, 1146, 1123, 1120, 2975, 2972, 2949, 2948, 3023, 3022, 3057, 3056, 1040, 1041, 1070, 1071, 1142, 1137, 1134, 1129, 2966, 2961, 2958, 2953, 3024, 3025, 3054, 3055, 1047, 1046, 1065, 1064, 1141, 1138, 1133, 1130, 2965, 2962, 2957, 2954, 3031, 3030, 3049, 3048, 1512, 1513, 1494, 1495, 1418, 1421, 1426, 1429, 2666, 2669, 2674, 2677, 2600, 2601, 2582, 2583, 1519, 1518, 1489, 1488, 1417, 1422, 1425, 1430, 2665, 2670, 2673, 2678, 2607, 2606, 2577, 2576, 1520, 1521, 1486, 1487, 1412, 1413, 1436, 1439, 2656, 2659, 2682, 2683, 2608, 2609, 2574, 2575, 1527, 1526, 1481, 1480, 1411, 1410, 1437, 1438, 2657, 2658, 2685, 2684, 2615, 2614, 2569, 2568, 523, 522, 565, 564, 639, 638, 613, 614, 3481, 3482, 3457, 3456, 3531, 3530, 3573, 3572, 524, 525, 562, 563, 632, 633, 612, 615, 3480, 3483, 3462, 3463, 3532, 3533, 3570, 3571, 531, 530, 557, 556, 631, 624, 623, 616, 3479, 3472, 3471, 3464, 3539, 3538, 3565, 3564, 532, 533, 554, 555, 628, 627, 620, 619, 3476, 3475, 3468, 3467, 3540, 3541, 3562, 3563, 1003, 1002, 981, 980, 907, 908, 915, 916, 3179, 3180, 3187, 3188, 3115, 3114, 3093, 3092, 1004, 1005, 978, 979, 904, 911, 912, 919, 3176, 3183, 3184, 3191, 3116, 3117, 3090, 3091, 1011, 1010, 973, 972, 903, 902, 923, 920, 3175, 3172, 3193, 3192, 3123, 3122, 3085, 3084, 1012, 1013, 970, 971, 896, 897, 922, 921, 3174, 3173, 3198, 3199, 3124, 3125, 3082, 3083, 1035, 1034, 1077, 1076, 1151, 1150, 1125, 1126, 2969, 2970, 2945, 2944, 3019, 3018, 3061, 3060, 1036, 1037, 1074, 1075, 1144, 1145, 1124, 1127, 2968, 2971, 2950, 2951, 3020, 3021, 3058, 3059, 1043, 1042, 1069, 1068, 1143, 1136, 1135, 1128, 2967, 2960, 2959, 2952, 3027, 3026, 3053, 3052, 1044, 1045, 1066, 1067, 1140, 1139, 1132, 1131, 2964, 2963, 2956, 2955, 3028, 3029, 3050, 3051, 1515, 1514, 1493, 1492, 1419, 1420, 1427, 1428, 2667, 2668, 2675, 2676, 2603, 2602, 2581, 2580, 1516, 1517, 1490, 1491, 1416, 1423, 1424, 1431, 2664, 2671, 2672, 2679, 2604, 2605, 2578, 2579, 1523, 1522, 1485, 1484, 1415, 1414, 1435, 1432, 2663, 2660, 2681, 2680, 2611, 2610, 2573, 2572, 1524, 1525, 1482, 1483, 1408, 1409, 1434, 1433, 2662, 2661, 2686, 2687, 2612, 2613, 2570, 2571, 724, 727, 728, 729, 640, 641, 666, 665, 3430, 3429, 3454, 3455, 3366, 3367, 3368, 3371, 725, 726, 735, 734, 647, 646, 667, 664, 3431, 3428, 3449, 3448, 3361, 3360, 3369, 3370, 746, 745, 736, 737, 648, 655, 656, 663, 3432, 3439, 3440, 3447, 3358, 3359, 3350, 3349, 747, 744, 743, 742, 651, 652, 659, 660, 3435, 3436, 3443, 3444, 3353, 3352, 3351, 3348, 788, 791, 792, 793, 884, 883, 876, 875, 3220, 3219, 3212, 3211, 3302, 3303, 3304, 3307, 789, 790, 799, 798, 887, 880, 879, 872, 3223, 3216, 3215, 3208, 3297, 3296, 3305, 3306, 810, 809, 800, 801, 888, 889, 868, 871, 3224, 3227, 3206, 3207, 3294, 3295, 3286, 3285, 811, 808, 807, 806, 895, 894, 869, 870, 3225, 3226, 3201, 3200, 3289, 3288, 3287, 3284, 1236, 1239, 1240, 1241, 1152, 1153, 1178, 1177, 2918, 2917, 2942, 2943, 2854, 2855, 2856, 2859, 1237, 1238, 1247, 1246, 1159, 1158, 1179, 1176, 2919, 2916, 2937, 2936, 2849, 2848, 2857, 2858, 1258, 1257, 1248, 1249, 1160, 1167, 1168, 1175, 2920, 2927, 2928, 2935, 2846, 2847, 2838, 2837, 1259, 1256, 1255, 1254, 1163, 1164, 1171, 1172, 2923, 2924, 2931, 2932, 2841, 2840, 2839, 2836, 1300, 1303, 1304, 1305, 1396, 1395, 1388, 1387, 2708, 2707, 2700, 2699, 2790, 2791, 2792, 2795, 1301, 1302, 1311, 1310, 1399, 1392, 1391, 1384, 2711, 2704, 2703, 2696, 2785, 2784, 2793, 2794, 1322, 1321, 1312, 1313, 1400, 1401, 1380, 1383, 2712, 2715, 2694, 2695, 2782, 2783, 2774, 2773, 1323, 1320, 1319, 1318, 1407, 1406, 1381, 1382, 2713, 2714, 2689, 2688, 2777, 2776, 2775, 2772, 723, 720, 731, 730, 643, 642, 669, 670, 3425, 3426, 3453, 3452, 3365, 3364, 3375, 3372, 722, 721, 732, 733, 644, 645, 668, 671, 3424, 3427, 3450, 3451, 3362, 3363, 3374, 3373, 749, 750, 739, 738, 649, 654, 657, 662, 3433, 3438, 3441, 3446, 3357, 3356, 3345, 3346, 748, 751, 740, 741, 650, 653, 658, 661, 3434, 3437, 3442, 3445, 3354, 3355, 3344, 3347, 787, 784, 795, 794, 885, 882, 877, 874, 3221, 3218, 3213, 3210, 3301, 3300, 3311, 3308, 786, 785, 796, 797, 886, 881, 878, 873, 3222, 3217, 3214, 3209, 3298, 3299, 3310, 3309, 813, 814, 803, 802, 891, 890, 867, 864, 3231, 3228, 3205, 3204, 3293, 3292, 3281, 3282, 812, 815, 804, 805, 892, 893, 866, 865, 3230, 3229, 3202, 3203, 3290, 3291, 3280, 3283, 1235, 1232, 1243, 1242, 1155, 1154, 1181, 1182, 2913, 2914, 2941, 2940, 2853, 2852, 2863, 2860, 1234, 1233, 1244, 1245, 1156, 1157, 1180, 1183, 2912, 2915, 2938, 2939, 2850, 2851, 2862, 2861, 1261, 1262, 1251, 1250, 1161, 1166, 1169, 1174, 2921, 2926, 2929, 2934, 2845, 2844, 2833, 2834, 1260, 1263, 1252, 1253, 1162, 1165, 1170, 1173, 2922, 2925, 2930, 2933, 2842, 2843, 2832, 2835, 1299, 1296, 1307, 1306, 1397, 1394, 1389, 1386, 2709, 2706, 2701, 2698, 2789, 2788, 2799, 2796, 1298, 1297, 1308, 1309, 1398, 1393, 1390, 1385, 2710, 2705, 2702, 2697, 2786, 2787, 2798, 2797, 1325, 1326, 1315, 1314, 1403, 1402, 1379, 1376, 2719, 2716, 2693, 2692, 2781, 2780, 2769, 2770, 1324, 1327, 1316, 1317, 1404, 1405, 1378, 1377, 2718, 2717, 2690, 2691, 2778, 2779, 2768, 2771, 716, 719, 710, 705, 700, 701, 674, 673, 3422, 3421, 3394, 3395, 3390, 3385, 3376, 3379, 717, 718, 709, 706, 699, 698, 675, 672, 3423, 3420, 3397, 3396, 3389, 3386, 3377, 3378, 754, 753, 762, 765, 694, 689, 686, 681, 3414, 3409, 3406, 3401, 3330, 3333, 3342, 3341, 755, 752, 761, 766, 693, 690, 685, 682, 3413, 3410, 3405, 3402, 3329, 3334, 3343, 3340, 780, 783, 774, 769, 842, 845, 850, 853, 3242, 3245, 3250, 3253, 3326, 3321, 3312, 3315, 781, 782, 773, 770, 841, 846, 849, 854, 3241, 3246, 3249, 3254, 3325, 3322, 3313, 3314, 818, 817, 826, 829, 836, 837, 860, 863, 3232, 3235, 3258, 3259, 3266, 3269, 3278, 3277, 819, 816, 825, 830, 835, 834, 861, 862, 3233, 3234, 3261, 3260, 3265, 3270, 3279, 3276, 1228, 1231, 1222, 1217, 1212, 1213, 1186, 1185, 2910, 2909, 2882, 2883, 2878, 2873, 2864, 2867, 1229, 1230, 1221, 1218, 1211, 1210, 1187, 1184, 2911, 2908, 2885, 2884, 2877, 2874, 2865, 2866, 1266, 1265, 1274, 1277, 1206, 1201, 1198, 1193, 2902, 2897, 2894, 2889, 2818, 2821, 2830, 2829, 1267, 1264, 1273, 1278, 1205, 1202, 1197, 1194, 2901, 2898, 2893, 2890, 2817, 2822, 2831, 2828, 1292, 1295, 1286, 1281, 1354, 1357, 1362, 1365, 2730, 2733, 2738, 2741, 2814, 2809, 2800, 2803, 1293, 1294, 1285, 1282, 1353, 1358, 1361, 1366, 2729, 2734, 2737, 2742, 2813, 2810, 2801, 2802, 1330, 1329, 1338, 1341, 1348, 1349, 1372, 1375, 2720, 2723, 2746, 2747, 2754, 2757, 2766, 2765, 1331, 1328, 1337, 1342, 1347, 1346, 1373, 1374, 2721, 2722, 2749, 2748, 2753, 2758, 2767, 2764, 715, 712, 711, 704, 703, 702, 677, 678, 3417, 3418, 3393, 3392, 3391, 3384, 3383, 3380, 714, 713, 708, 707, 696, 697, 676, 679, 3416, 3419, 3398, 3399, 3388, 3387, 3382, 3381, 757, 758, 763, 764, 695, 688, 687, 680, 3415, 3408, 3407, 3400, 3331, 3332, 3337, 3338, 756, 759, 760, 767, 692, 691, 684, 683, 3412, 3411, 3404, 3403, 3328, 3335, 3336, 3339, 779, 776, 775, 768, 843, 844, 851, 852, 3243, 3244, 3251, 3252, 3327, 3320, 3319, 3316, 778, 777, 772, 771, 840, 847, 848, 855, 3240, 3247, 3248, 3255, 3324, 3323, 3318, 3317, 821, 822, 827, 828, 839, 838, 859, 856, 3239, 3236, 3257, 3256, 3267, 3268, 3273, 3274, 820, 823, 824, 831, 832, 833, 858, 857, 3238, 3237, 3262, 3263, 3264, 3271, 3272, 3275, 1227, 1224, 1223, 1216, 1215, 1214, 1189, 1190, 2905, 2906, 2881, 2880, 2879, 2872, 2871, 2868, 1226, 1225, 1220, 1219, 1208, 1209, 1188, 1191, 2904, 2907, 2886, 2887, 2876, 2875, 2870, 2869, 1269, 1270, 1275, 1276, 1207, 1200, 1199, 1192, 2903, 2896, 2895, 2888, 2819, 2820, 2825, 2826, 1268, 1271, 1272, 1279, 1204, 1203, 1196, 1195, 2900, 2899, 2892, 2891, 2816, 2823, 2824, 2827, 1291, 1288, 1287, 1280, 1355, 1356, 1363, 1364, 2731, 2732, 2739, 2740, 2815, 2808, 2807, 2804, 1290, 1289, 1284, 1283, 1352, 1359, 1360, 1367, 2728, 2735, 2736, 2743, 2812, 2811, 2806, 2805, 1333, 1334, 1339, 1340, 1351, 1350, 1371, 1368, 2727, 2724, 2745, 2744, 2755, 2756, 2761, 2762, 1332, 1335, 1336, 1343, 1344, 1345, 1370, 1369, 2726, 2725, 2750, 2751, 2752, 2759, 2760, 2763}; \ No newline at end of file diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/gtests.cpp b/libNeonDomain/tests/domain-space-filling-curves/src/gtests.cpp new file mode 100644 index 00000000..954d4ecd --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/gtests.cpp @@ -0,0 +1,116 @@ + +#include "Neon/Neon.h" +#include "Neon/domain/tools/SpaceCurves.h" +#include "domain-space-filling-curves.h" +#include "goldenEncoding.h" +#include "gtest/gtest.h" +#include "runHelper.h" + +TEST(domain_space_filling_curves, morton) +{ + Neon::int32_3d dim = {16, 16, 16}; + for (int x = 0; x < dim.x; x++) { + for (int y = 0; y < dim.y; y++) { + for (int z = 0; z < dim.z; z++) { + using namespace Neon::domain::tool::spaceCurves; + Neon::int32_3d idx = {x, y, z}; + auto morton = Encoder::encode(EncoderType::morton, dim, idx); + auto sweep = Encoder::encode(EncoderType::sweep, dim, {z, y, x}); + + ASSERT_EQ(morton_grid_16_16_16[sweep], morton) << dim << " " << idx << " " << morton; + } + } + } +} + +TEST(domain_space_filling_curves, hilbert) +{ + Neon::int32_3d dim = {16, 16, 16}; + for (int x = 0; x < dim.x; x++) { + for (int y = 0; y < dim.y; y++) { + for (int z = 0; z < dim.z; z++) { + + using namespace Neon::domain::tool::spaceCurves; + Neon::int32_3d idx = {x, y, z}; + auto hilbert = Encoder::encode(EncoderType::hilbert, dim, idx); + auto sweep = Encoder::encode(EncoderType::sweep, dim, {z, y, x}); + + ASSERT_EQ(hilbert_grid_16_16_16[sweep], hilbert) << dim << " " << idx << " " << hilbert; + } + } + } +} + +TEST(domain_space_filling_curves, hilbert_hilbert) +{ + auto run = [](Neon::domain::tool::spaceCurves::EncoderType encodingType, int dimEdge) { + // Step 1 -> Neon backend: choosing the hardware for the computation + Neon::init(); + // auto runtime = Neon::Runtime::openmp; + auto runtime = Neon::Runtime::openmp; + // We are overbooking GPU 0 three times + std::vector devIds{0}; + Neon::Backend backend(devIds, runtime); + + // Step 2 -> Neon grid: setting up a dense cartesian domain + Neon::index_3d dim(dimEdge, dimEdge, dimEdge); // Size of the domain + + using Grid = Neon::eGrid; // Selecting one of the grid provided by Neon + Neon::domain::Stencil gradStencil([] { + // We use a center difference scheme to compute the grad + // The order of the points is important, + // as we'll leverage the specific order when computing the grad. + // First positive direction on x, y and z, + // then negative direction on x, y, z respectively. + return std::vector{ + {1, 0, 0}, + {0, 1, 0}, + {0, 0, 1}, + {-1, 0, 0}, + {0, -1, 0}, + {0, 0, -1}}; + }()); + // Actual Neon grid allocation + Grid grid( + backend, + dim, + [&](const Neon::index_3d&) -> bool { + return true; + }, // <- defining the active cells. + gradStencil, + 1.0, + 0.0, encodingType); + + auto field = grid.newField("spaceCode", 1, 0); + + grid.newContainer("DecoceFromId", + [&](Neon::set::Loader& l) { + auto f = l.load(field); + return [=] NEON_CUDA_HOST_DEVICE(const Grid::Idx& gidx) mutable { + auto internalId = gidx.helpGet(); + auto global = f.getGlobalIndex(gidx); +#pragma omp critical + { + using namespace Neon::domain::tool::spaceCurves; + auto encoded = Encoder::encode(encodingType, dim, global); + // std::cout << global << " -> internal " << internalId << " code " << encoded << std::endl; + EXPECT_EQ(internalId, encoded); + } + f(gidx, 0) = internalId; + }; + }) + .run(Neon::Backend::mainStreamIdx); + field.ioToVtk("DecoceFromId", "grad"); + printf("DONE\n"); + }; + run(Neon::domain::tool::spaceCurves::EncoderType::sweep, 32); + run(Neon::domain::tool::spaceCurves::EncoderType::morton,32); + run(Neon::domain::tool::spaceCurves::EncoderType::hilbert,32); +} + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc, argv); + Neon::init(); + return RUN_ALL_TESTS(); +} diff --git a/libNeonDomain/tests/domain-space-filling-curves/src/runHelper.h b/libNeonDomain/tests/domain-space-filling-curves/src/runHelper.h new file mode 100644 index 00000000..993bce70 --- /dev/null +++ b/libNeonDomain/tests/domain-space-filling-curves/src/runHelper.h @@ -0,0 +1,100 @@ +#pragma once +#include +#include "gtest/gtest.h" + +#include "Neon/core/core.h" +#include "Neon/core/tools/io/ioToVti.h" +#include "Neon/core/types/DataUse.h" +#include "Neon/core/types/DeviceType.h" + +#include "Neon/domain/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" +#include "Neon/domain/eGrid.h" +#include "Neon/domain/tools/Geometries.h" +#include "Neon/domain/tools/TestData.h" + +#include "gtest/gtest.h" + +using namespace Neon; +using namespace Neon::domain; + +using namespace Neon::domain::tool::testing; +using namespace Neon::domain::tool; + +template +void runAllTestConfigurations(std::function&)> f) +{ + std::vector nGpuTest; + nGpuTest.push_back(1); + std::vector cardinalityTest{1}; + + std::vector dimTest{{32,32,32}}; + std::vector runtimeE; + + runtimeE.push_back(Neon::Runtime::openmp); + + + std::vector geos; + std::vector memoryLayoutOptions{Neon::MemoryLayout::structOfArrays}; + + if constexpr (std::is_same_v) { + geos = std::vector{ + Geometry::FullDomain, + }; + } else { + geos = std::vector{ + Geometry::FullDomain, + // Geometry::Sphere, + // Geometry::HollowSphere, + + }; + } + + for (auto dim : dimTest) { + for (const auto& card : cardinalityTest) { + for (auto& geo : geos) { + for (const auto& ngpu : nGpuTest) { + for (const auto& runtime : runtimeE) { + for (const auto& memoryLayout : memoryLayoutOptions) { + + int maxnGPUs = [] { + if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { + return Neon::set::DevSet::maxSet().setCardinality(); + } + return 1; + }(); + + std::vector ids; + for (int i = 0; i < ngpu; i++) { + ids.push_back(i % maxnGPUs); + } + + Neon::Backend backend(ids, runtime); + Neon::MemoryOptions memoryOptions = backend.getMemoryOptions(); + memoryOptions.setOrder(memoryLayout); + + if constexpr (std::is_same_v) { + if (dim.z < 8 * ngpu * 3) { + dim.z = ngpu * 3 * 8; + } + if (memoryLayout == Neon::MemoryLayout::arrayOfStructs) { + continue; + } + } + + assert(card == 1); + TestData testData(backend, + dim, + card, + memoryOptions, + geo); + + NEON_INFO(testData.toString()); + f(testData); + } + } + } + } + } + } +} diff --git a/libNeonDomain/tests/domain-stencil/src/gtests.cpp b/libNeonDomain/tests/domain-stencil/src/gtests.cpp index ec6f892a..3d5f436c 100644 --- a/libNeonDomain/tests/domain-stencil/src/gtests.cpp +++ b/libNeonDomain/tests/domain-stencil/src/gtests.cpp @@ -4,29 +4,101 @@ #include "runHelper.h" #include "stencil.h" -TEST(domain_stencil, dGrid) +TEST(domain_stencil, dGrid_NoTemplate) { int nGpus = 3; using Type = int64_t; - runAllTestConfiguration(std::function(map::run), + runAllTestConfiguration(std::function(map::runNoTemplate), nGpus, 1); } -TEST(domain_stencil, eGrid) +TEST(domain_stencil, eGrid_NoTemplate) { int nGpus = 3; using Type = int64_t; - runAllTestConfiguration(std::function(map::run), + runAllTestConfiguration(std::function(map::runNoTemplate), nGpus, 1); } -TEST(domain_stencil, bGri ) +TEST(domain_stencil, bGri_NoTemplate) { int nGpus = 5; using Type = int64_t; - runAllTestConfiguration(std::function(map::run), + runAllTestConfiguration(std::function(map::runNoTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, dGridSoA_NoTemplate) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runNoTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, dGridDisg_NoTemplate) +{ + int nGpus = 1; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runNoTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, dGrid_Template) +{ + int nGpus = 3; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, eGrid_Template) +{ + int nGpus = 3; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, bGri_Template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, dGridSoA_Template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, dGridDisg_Template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), + nGpus, + 1); +} + +TEST(domain_stencil, bGridDisgMgpu_Template) +{ + int nGpus = 5; + using Type = int64_t; + runAllTestConfiguration(std::function(map::runTemplate), nGpus, 1); } diff --git a/libNeonDomain/tests/domain-stencil/src/runHelper.h b/libNeonDomain/tests/domain-stencil/src/runHelper.h index e8f286ae..16cefb0f 100644 --- a/libNeonDomain/tests/domain-stencil/src/runHelper.h +++ b/libNeonDomain/tests/domain-stencil/src/runHelper.h @@ -33,7 +33,7 @@ void runAllTestConfiguration( // std::vector nGpuTest{2,4,6,8}; std::vector cardinalityTest{1}; - std::vector dimTest{{10, 17, 13}, {1, 1, 100}, {17, 1, 77}}; + std::vector dimTest{{10, 17, 90}, {1, 1, 100}, {17, 1, 77}}; std::vector runtimeE{Neon::Runtime::openmp}; if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { runtimeE.push_back(Neon::Runtime::stream); diff --git a/libNeonDomain/tests/domain-stencil/src/stencil.cu b/libNeonDomain/tests/domain-stencil/src/stencil.cu index a86f1def..4cf31f05 100644 --- a/libNeonDomain/tests/domain-stencil/src/stencil.cu +++ b/libNeonDomain/tests/domain-stencil/src/stencil.cu @@ -4,13 +4,14 @@ #include "Neon/domain/tools/TestData.h" #include "TestInformation.h" #include "gtest/gtest.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" namespace map { template -auto stencilContainer_laplace(const Field& filedA, - Field& fieldB) +auto laplaceNoTemplate(const Field& filedA, + Field& fieldB) -> Neon::set::Container { const auto& grid = filedA.getGrid(); @@ -59,20 +60,37 @@ static constexpr std::array stencil{ Ngh3DIdx(0, 0, 1), Ngh3DIdx(0, 0, -1)}; -template -inline auto viaTemplate (const IDX& idx, int i, const Field& a, int& partial, int& count){ - a.template getNghData(idx, i, - [&](typename Field::Type const& val) { - partial += val; - count++; - }); +template +NEON_CUDA_HOST_DEVICE inline auto viaTemplate(const IDX& idx, int i, const Partition& a, Partial& partial, int& count) +{ + // Neon::index_3d direction(X, Y, Z); + // auto nghData = a.getNghData(idx, direction.newType(), i); + // if (nghData.isValid()) { + // partial += nghData.getData(); + // count++; + // } + a.template getNghData(idx, i, + [&](typename Partition::Type const& val) { + partial += val; + count++; + }); }; + +//template +//constexpr void constexpr_for(F&& f) +//{ +// if constexpr (Start < End) { +// f(std::integral_constant()); +// constexpr_for(f); +// } +//} + template -auto stencilContainerLaplaceTemplate(const Field& filedA, - Field& fieldB) +auto laplaceTemplate(const Field& filedA, + Field& fieldB) -> Neon::set::Container { const auto& grid = filedA.getGrid(); @@ -88,34 +106,17 @@ auto stencilContainerLaplaceTemplate(const Field& filedA, // printf("GPU %ld <- %ld + %ld\n", lc(e, i) , la(e, i) , val); typename Field::Type partial = 0; int count = 0; + using Ngh3DIdx = Neon::int8_3d; - constexpr std::array stencil{ - Ngh3DIdx(1, 0, 0), - Ngh3DIdx(-1, 0, 0), - Ngh3DIdx(0, 1, 0), - Ngh3DIdx(0, -1, 0), - Ngh3DIdx(0, 0, 1), - Ngh3DIdx(0, 0, -1)}; - -#if 0 - auto viaTemplate = [&]() { - if constexpr (std::is_same_v) { - a.template getNghData(idx, i, - [&](Field::Type const& val) { - partial += val; - count++; - }); - } - }; -#endif - viaTemplate<0>(idx, i, a, partial, count); - viaTemplate<1>(idx, i, a, partial, count); - viaTemplate<2>(idx, i, a, partial, count); - viaTemplate<3>(idx, i, a, partial, count); - viaTemplate<4>(idx, i, a, partial, count); - viaTemplate<5>(idx, i, a, partial, count); + Neon::ConstexprFor<0, 6, 1>([&](auto sIdx) { + a.template getNghData(idx, i, + [&](auto const& val) { + partial += val; + count++; + }); + }); b(idx, i) = a(idx, i) - count * partial; } @@ -126,7 +127,82 @@ auto stencilContainerLaplaceTemplate(const Field& filedA, using namespace Neon::domain::tool::testing; template -auto run(TestData& data) -> void +auto runNoTemplate(TestData& data) -> void +{ + + using Type = typename TestData::Type; + auto& grid = data.getGrid(); + const std::string appName = TestInformation::fullName(grid.getImplementationName()); + const int maxIters = 1; + + NEON_INFO(grid.toString()); + + // data.resetValuesToLinear(1, 100); + data.resetValuesToMasked(1); + + { // NEON + const Neon::index_3d dim = grid.getDimension(); + std::vector elements; + auto bk = grid.getBackend(); + auto& X = data.getField(FieldNames::X); + auto& Y = data.getField(FieldNames::Y); + for (int iter = maxIters; iter > 0; iter--) { + bk.sync(Neon::Backend::mainStreamIdx); + X.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::put, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + + bk.sync(Neon::Backend::mainStreamIdx); + laplaceNoTemplate(X, Y).run(Neon::Backend::mainStreamIdx); + + bk.sync(Neon::Backend::mainStreamIdx); + Y.newHaloUpdate(Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::get, + Neon::Execution::device) + .run(Neon::Backend::mainStreamIdx); + + bk.sync(Neon::Backend::mainStreamIdx); + laplaceNoTemplate(Y, X).run(Neon::Backend::mainStreamIdx); + } + data.getBackend().sync(0); + } + + { // Golden data + auto& X = data.getIODomain(FieldNames::X); + auto& Y = data.getIODomain(FieldNames::Y); + for (int iter = maxIters; iter > 0; iter--) { + data.laplace(X, Y); + data.laplace(Y, X); + } + } + + data.updateHostData(); + + data.getField(FieldNames::X).ioToVtk("X", "X", true); + // data.getField(FieldNames::Y).ioToVtk("Y", "Y", false); + // data.getField(FieldNames::Z).ioToVtk("Z", "Z", false); + // + data.getIODomain(FieldNames::X).ioToVti("X_", "X_"); + // data.getField(FieldNames::Y).ioVtiAllocator("Y_"); + // data.getField(FieldNames::Z).ioVtiAllocator("Z_"); + + bool isOk = data.compare(FieldNames::X); + isOk = data.compare(FieldNames::Y); + if (!isOk) { + auto flagField = data.compareAndGetField(FieldNames::X); + flagField.ioToVti("X_diffFlag", "X_diffFlag"); + flagField = data.compareAndGetField(FieldNames::Y); + flagField.ioToVti("Y_diffFlag", "Y_diffFlag"); + } + ASSERT_TRUE(isOk); + if (!isOk) { + exit(99); + } +} + +template +auto runTemplate(TestData& data) -> void { using Type = typename TestData::Type; @@ -153,7 +229,7 @@ auto run(TestData& data) -> void .run(Neon::Backend::mainStreamIdx); bk.sync(Neon::Backend::mainStreamIdx); - stencilContainer_laplace(X, Y).run(Neon::Backend::mainStreamIdx); + laplaceTemplate(X, Y).run(Neon::Backend::mainStreamIdx); bk.sync(Neon::Backend::mainStreamIdx); Y.newHaloUpdate(Neon::set::StencilSemantic::standard, @@ -162,7 +238,7 @@ auto run(TestData& data) -> void .run(Neon::Backend::mainStreamIdx); bk.sync(Neon::Backend::mainStreamIdx); - stencilContainer_laplace(Y, X).run(Neon::Backend::mainStreamIdx); + laplaceTemplate(Y, X).run(Neon::Backend::mainStreamIdx); } data.getBackend().sync(0); } @@ -200,9 +276,18 @@ auto run(TestData& data) -> void } } -template auto run(TestData&) -> void; -template auto run(TestData&) -> void; -template auto run(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runNoTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; +template auto runTemplate(TestData&) -> void; } // namespace map \ No newline at end of file diff --git a/libNeonDomain/tests/domain-stencil/src/stencil.h b/libNeonDomain/tests/domain-stencil/src/stencil.h index a35d8011..21d68f0b 100644 --- a/libNeonDomain/tests/domain-stencil/src/stencil.h +++ b/libNeonDomain/tests/domain-stencil/src/stencil.h @@ -2,6 +2,7 @@ #pragma once #include #include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" #include "Neon/domain/tools/TestData.h" @@ -11,9 +12,22 @@ namespace map { using namespace Neon::domain::tool::testing; template -auto run(TestData& data) -> void; +auto runNoTemplate(TestData& data) -> void; -extern template auto run(TestData&) -> void; -extern template auto run(TestData&) -> void; +template +auto runTemplate(TestData& data) -> void; + + +extern template auto runNoTemplate(TestData&) -> void; +extern template auto runNoTemplate(TestData&) -> void; +extern template auto runNoTemplate(TestData&) -> void; +extern template auto runNoTemplate(TestData&) -> void; +extern template auto runNoTemplate(TestData&) -> void; + +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; +extern template auto runTemplate(TestData&) -> void; } // namespace map diff --git a/libNeonDomain/tests/test-template/CMakeLists.txt b/libNeonDomain/tests/test-template/CMakeLists.txt new file mode 100644 index 00000000..c077f20f --- /dev/null +++ b/libNeonDomain/tests/test-template/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +set(APP_NAME domain-neighbour-globalIdx) +file(GLOB_RECURSE SrcFiles src/*.*) + +add_executable(${APP_NAME} ${SrcFiles}) + +target_link_libraries(${APP_NAME} + PUBLIC libNeonDomain + PUBLIC gtest_main) + +set_target_properties(${APP_NAME} PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS ON) + +set_target_properties(${APP_NAME} PROPERTIES FOLDER "libNeonDomain") +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} PREFIX "${APP_NAME}" FILES ${SrcFiles}) + +add_test(NAME ${APP_NAME} COMMAND ${APP_NAME}) \ No newline at end of file diff --git a/libNeonDomain/tests/test-template/src/testsAndContainers.cu b/libNeonDomain/tests/test-template/src/testsAndContainers.cu new file mode 100644 index 00000000..91368f7c --- /dev/null +++ b/libNeonDomain/tests/test-template/src/testsAndContainers.cu @@ -0,0 +1,75 @@ +#include +#include "Neon/domain/Grids.h" +#include "Neon/domain/details/dGridDisg/dGrid.h" +#include "Neon/domain/details/dGridSoA/dGridSoA.h" + +#include "Neon/domain/tools/TestData.h" + +auto NEON_CUDA_HOST_DEVICE idxToInt(Neon::index_3d idx) +{ + return 33 * 1000000 + 10000 * idx.x + 100 * idx.y + idx.z; +}; + +int main() +{ + using Grid = Neon::bGridMgpu; + Neon::init(); + Neon::Backend bk({0, 0}, Neon::Runtime::openmp); + int blockSize = Neon::domain::details::bGridMgpu::defaultBlockSize; + Grid bGridMgpu( + bk, + {blockSize, blockSize, 6 * blockSize}, + [](Neon::index_3d idx) { return true; }, + Neon::domain::Stencil::s6_Jacobi_t(), + {1, 1, 1}, + {0, 0, 0}, + Neon::domain::tool::spaceCurves::EncoderType::sweep); + using Field = typename Grid::Field; + Field A = bGridMgpu.newField("A", 1, 0); + + auto setupOp = bGridMgpu.newContainer( + "setup", + [&A](Neon::set::Loader& loader) { + auto a = loader.load(A); + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& gIdx) mutable { + auto const global_idx = a.getGlobalIndex(gIdx); + a(gIdx, 0) = idxToInt(global_idx); + }; + }); + + setupOp.run(0); + bk.sync(0); + + A.newHaloUpdate( + Neon::set::StencilSemantic::standard, + Neon::set::TransferMode::get, + Neon::Execution::device) + .run(0); + + bk.sync(0); + + auto stencilOp = bGridMgpu.newContainer( + "setup", + [&A](Neon::set::Loader& loader) { + auto a = loader.load(A); + return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& gIdx) mutable { + auto const global_idx = a.getGlobalIndex(gIdx); + auto expectedNgh = global_idx + Neon::index_3d(0, 0, 1); + auto val = a.getNghData<0, 0, 1>(gIdx, 0, -1).getData(); + if (val != -1 && + val != idxToInt(expectedNgh)) { + printf("ERROR: %d (%d %d %d) %d\n", val, + global_idx.x, global_idx.y, global_idx.z, + a(gIdx, 0)); + if (global_idx.x == 0 && global_idx.y == 0 && global_idx.z == 11) { + printf("ERROR: %d (%d %d %d) %d\n", val, + global_idx.x, global_idx.y, global_idx.z, + a(gIdx, 0)); + val = a.getNghData<0, 0, 1>(gIdx, 0, -1).getData(); + } + } + }; + }); + stencilOp.run(0); + bk.sync(0); +}; diff --git a/libNeonSet/include/Neon/set/Containter.h b/libNeonSet/include/Neon/set/Containter.h index eba242d5..76e63940 100644 --- a/libNeonSet/include/Neon/set/Containter.h +++ b/libNeonSet/include/Neon/set/Containter.h @@ -117,6 +117,9 @@ struct Container const container::Graph& graph, std::function loadingLambda) -> Container; + static auto factorySequence(const std::string& name, + std::vector& sequence) -> Container; + static auto factoryDeviceThenHostManaged(const std::string& name, Container& device, Container& host) @@ -158,6 +161,12 @@ struct Container auto getContainerExecutionType() const -> Neon::set::ContainerExecutionType; + auto getSequence() const + -> const std::vector&; + + auto isSequence() const + -> bool; + protected: std::shared_ptr mContainer; diff --git a/libNeonSet/include/Neon/set/DevSet.h b/libNeonSet/include/Neon/set/DevSet.h index 5ac38250..78b54f08 100644 --- a/libNeonSet/include/Neon/set/DevSet.h +++ b/libNeonSet/include/Neon/set/DevSet.h @@ -20,6 +20,7 @@ #include "Neon/set/LambdaExecutor.h" #include "Neon/set/LaunchParameters.h" #include "Neon/set/Transfer.h" +#include "Neon/set/container/CudaLaunchCompileTimeHints.h" #include "Neon/set/memory/memDevSet.h" #include "Neon/set/memory/memSet.h" #include "Neon/sys/global/GpuSysGlobal.h" @@ -222,7 +223,9 @@ class DevSet auto newLaunchParameters() const -> LaunchParameters; - template + template inline auto launchLambdaOnSpan( Neon::Execution execution, const Neon::set::KernelConfig& kernelConfig, @@ -236,9 +239,11 @@ class DevSet switch (mode) { case Neon::Runtime::stream: { if (execution == Neon::Execution::device) { - this->template helpLaunchLambdaOnSpanCUDA(kernelConfig, - dataSetContainer, - lambdaHolder); + this->template helpLaunchLambdaOnSpanCUDA(kernelConfig, + dataSetContainer, + lambdaHolder); return; } #if defined(NEON_OS_LINUX) || defined(NEON_OS_MAC) @@ -352,7 +357,9 @@ class DevSet } } - template + template inline auto helpLaunchLambdaOnSpanCUDA([[maybe_unused]] const Neon::set::KernelConfig& kernelConfig, [[maybe_unused]] DataSetContainer& dataSetContainer, [[maybe_unused]] std::function; + if constexpr (!CudaLaunchCompilerTimeHints::initialized) { + if constexpr (!details::ExecutionThreadSpanUtils::isBlockSpan(DataSetContainer::executionThreadSpan)) { + executor = (void*)Neon::set::details::denseSpan::launchLambdaOnSpanCUDA; + } else { + executor = (void*)Neon::set::details::blockSpan::launchLambdaOnSpanCUDA; + } + } + + if constexpr (CudaLaunchCompilerTimeHints::initialized) { + if constexpr (!details::ExecutionThreadSpanUtils::isBlockSpan(DataSetContainer::executionThreadSpan)) { + executor = (void*)Neon::set::details::denseSpan::launchLambdaOnSpanCUDAWithCompilerHints; + } else { + executor = (void*)Neon::set::details::blockSpan::launchLambdaOnSpanCUDAWithCompilerHints; + } + } + auto launchInfo = launchInfoSet[setIdx.idx()]; + auto cudaGrid = launchInfo.cudaGrid(); + if (cudaGrid.x * cudaGrid.y * cudaGrid.z != 0) { + + dev.kernel.template cudaLaunchKernel(gpuStreamSet[setIdx.idx()], + launchInfo, + executor, + untypedParams); } else { - executor = (void*)Neon::set::details::blockSpan::launchLambdaOnSpanCUDA; + //NEON_WARNING("Cuda grid with zero number of element was detected. The kernel will be skipped."); } - dev.kernel.template cudaLaunchKernel(gpuStreamSet[setIdx.idx()], - launchInfoSet[setIdx.idx()], - executor, - untypedParams); } #else NeonException exp("DevSet"); @@ -430,10 +454,18 @@ class DevSet } else { executor = (void*)Neon::set::details::blockSpan::launchLambdaOnSpanCUDA; } - dev.kernel.template cudaLaunchKernel(gpuStreamSet[setIdx.idx()], - launchInfoSet[setIdx.idx()], - executor, - untypedParams); + auto launchInfo = launchInfoSet[setIdx.idx()]; + auto cudaGrid = launchInfo.cudaGrid(); + if (cudaGrid.x * cudaGrid.y * cudaGrid.z != 0) { + + dev.kernel.template cudaLaunchKernel(gpuStreamSet[setIdx.idx()], + launchInfo, + executor, + untypedParams); + } else { + NEON_WARNING("Cuda grid with zero number of element was detected. The kernel will be skipped."); + ; + } } if (kernelConfig.runMode() == Neon::run_et::sync) { gpuStreamSet.sync(); @@ -485,9 +517,14 @@ class DevSet const Neon::Integer_3d blockSize(cudaBlock.x, cudaBlock.y, cudaBlock.z); const Neon::Integer_3d gridSize(cudaGrid.x, cudaGrid.y, cudaGrid.z); - Neon::set::details::blockSpan::launchLambdaOnSpanOMP(blockSize, gridSize, iterator, lambda); + if (cudaGrid.x * cudaGrid.y * cudaGrid.z != 0) { + + Neon::set::details::blockSpan::launchLambdaOnSpanOMP(blockSize, gridSize, iterator, lambda); + } else { + NEON_WARNING("Omp grid with zero number of element was detected. The kernel will be skipped."); + } } } } @@ -526,10 +563,14 @@ class DevSet auto const& cudaGrid = launchInfoSet[setIdx].cudaGrid(); const Neon::Integer_3d blockSize(cudaBlock.x, cudaBlock.y, cudaBlock.z); const Neon::Integer_3d gridSize(cudaGrid.x, cudaGrid.y, cudaGrid.z); + if (cudaGrid.x * cudaGrid.y * cudaGrid.z != 0) { Neon::set::details::blockSpan::launchLambdaOnSpanOMP(blockSize, gridSize, iterator, lambda); + } else { + NEON_WARNING("Omp grid with zero number of element was detected. The kernel will be skipped."); + } } return; } diff --git a/libNeonSet/include/Neon/set/LambdaExecutor.h b/libNeonSet/include/Neon/set/LambdaExecutor.h index 4ffe2501..825e86a7 100644 --- a/libNeonSet/include/Neon/set/LambdaExecutor.h +++ b/libNeonSet/include/Neon/set/LambdaExecutor.h @@ -36,6 +36,38 @@ NEON_CUDA_KERNEL auto launchLambdaOnSpanCUDA(typename DataSetContainer::Span spa } } } + +template +__launch_bounds__(CudaLaunchCompilerTimeHints::maxThreadsPerBlock) + NEON_CUDA_KERNEL auto launchLambdaOnSpanCUDAWithCompilerHints(typename DataSetContainer::Span span, + UserLambda userLambdaTa) + -> void +{ + typename DataSetContainer::Idx e; + if constexpr (DataSetContainer::executionThreadSpan == ExecutionThreadSpan::d1) { + if (span.setAndValidate(e, + threadIdx.x + blockIdx.x * blockDim.x)) { + userLambdaTa(e); + } + } + if constexpr (DataSetContainer::executionThreadSpan == ExecutionThreadSpan::d2) { + if (span.setAndValidate(e, + threadIdx.x + blockIdx.x * blockDim.x, + threadIdx.y + blockIdx.y * blockDim.y)) { + userLambdaTa(e); + } + } + if constexpr (DataSetContainer::executionThreadSpan == ExecutionThreadSpan::d3) { + if (span.setAndValidate(e, + threadIdx.x + blockIdx.x * blockDim.x, + threadIdx.y + blockIdx.y * blockDim.y, + threadIdx.z + blockIdx.z * blockDim.z)) { + userLambdaTa(e); + } + } +} #endif @@ -48,9 +80,9 @@ void launchLambdaOnSpanOMP(Neon::Integer_3d const& gridDim, { if constexpr (DataSetContainer::executionThreadSpan == ExecutionThreadSpan::d1) { #ifdef NEON_OS_WINDOWS -//#pragma omp parallel for default(shared) +// #pragma omp parallel for default(shared) #else - #pragma omp parallel for simd default(shared) +#pragma omp parallel for simd default(shared) #endif for (IndexType x = 0; x < gridDim.x; x++) { typename DataSetContainer::Idx e; @@ -65,7 +97,7 @@ void launchLambdaOnSpanOMP(Neon::Integer_3d const& gridDim, #ifdef NEON_OS_WINDOWS #pragma omp parallel for default(shared) #else -// #pragma omp parallel for simd collapse(2) default(shared) + // #pragma omp parallel for simd collapse(2) default(shared) #endif for (IndexType y = 0; y < gridDim.y; y++) { for (IndexType x = 0; x < gridDim.x; x++) { @@ -81,7 +113,7 @@ void launchLambdaOnSpanOMP(Neon::Integer_3d const& gridDim, #ifdef NEON_OS_WINDOWS #pragma omp parallel for default(shared) #else -// #pragma omp parallel for simd collapse(1) default(shared) schedule(guided) + // #pragma omp parallel for simd collapse(1) default(shared) schedule(guided) #endif for (IndexType z = 0; z < gridDim.z; z++) { for (IndexType y = 0; y < gridDim.y; y++) { @@ -113,6 +145,21 @@ NEON_CUDA_KERNEL auto launchLambdaOnSpanCUDA(typename DataSetContainer::Span spa } } } + +template +NEON_CUDA_KERNEL auto launchLambdaOnSpanCUDAWithCompilerHints(typename DataSetContainer::Span span, + UserLambda userLambdaTa) + -> void +{ + typename DataSetContainer::Idx e; + if constexpr (DataSetContainer::executionThreadSpan == ExecutionThreadSpan::d1b3) { + if (span.setAndValidateGPUDevice(e)) { + userLambdaTa(e); + } + } +} #endif diff --git a/libNeonSet/include/Neon/set/StencilSemantic.h b/libNeonSet/include/Neon/set/StencilSemantic.h index cd512ae7..28b596dc 100644 --- a/libNeonSet/include/Neon/set/StencilSemantic.h +++ b/libNeonSet/include/Neon/set/StencilSemantic.h @@ -2,6 +2,7 @@ #include #include +#include "Neon/Report.h" #include "Neon/core/core.h" namespace Neon::set { @@ -9,7 +10,7 @@ namespace Neon::set { enum struct StencilSemantic { standard = 0 /*< Transfer for halo update on grid structure */, - streaming = 1 /*< Transfer for halo update on lattice structure */ + lattice = 1 /*< Transfer for halo update on lattice structure */ }; @@ -20,19 +21,24 @@ struct StencilSemanticUtils static auto toString(StencilSemantic opt) -> std::string; static auto fromString(const std::string& opt) -> StencilSemantic; static auto getOptions() -> std::array; - + struct Cli { explicit Cli(std::string); explicit Cli(StencilSemantic model); Cli(); - auto getOption() -> StencilSemantic; + auto getOption() const -> StencilSemantic; auto set(const std::string& opt) -> void; - auto getStringOptions() -> std::string; + auto getStringOptions() const -> std::string; + auto getStringOption() const -> std::string; + auto getDoc() const -> std::string; + + auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void; + auto addToReport(Neon::Report& report) const -> void; private: - bool mSet = false; + bool mSet = false; StencilSemantic mOption; }; }; diff --git a/libNeonSet/include/Neon/set/TransferMode.h b/libNeonSet/include/Neon/set/TransferMode.h index b6f4ec86..a335f5da 100644 --- a/libNeonSet/include/Neon/set/TransferMode.h +++ b/libNeonSet/include/Neon/set/TransferMode.h @@ -3,6 +3,7 @@ #include #include "Neon/core/core.h" +#include "Neon/Report.h" namespace Neon::set { @@ -26,9 +27,14 @@ class TransferModeUtils explicit Cli(TransferMode model); Cli(); - auto getOption() -> TransferMode; + auto getOption() const -> TransferMode; auto set(const std::string& opt) -> void; - auto getStringOptions() -> std::string; + auto getStringOptions() const -> std::string; + auto getStringOption() const -> std::string; + auto getDoc () const -> std::string; + + auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const ->void; + auto addToReport(Neon::Report& report) const ->void; private: bool mSet = false; diff --git a/libNeonSet/include/Neon/set/container/ContainerAPI.h b/libNeonSet/include/Neon/set/container/ContainerAPI.h index cf83a46e..49b66f17 100644 --- a/libNeonSet/include/Neon/set/container/ContainerAPI.h +++ b/libNeonSet/include/Neon/set/container/ContainerAPI.h @@ -11,6 +11,7 @@ namespace Neon::set { struct Loader; +struct Container; } namespace Neon::set::container { @@ -89,6 +90,9 @@ struct ContainerAPI virtual auto getTransferMode() const -> Neon::set::TransferMode; + virtual auto getSequence() const + -> const std::vector&; + /** * Returns a name associated to the container. */ @@ -206,6 +210,9 @@ struct ContainerAPI auto setParsingDataUpdated(bool) -> void; + auto isContainerSequence() + -> bool; + private: using TokenList = std::vector; diff --git a/libNeonSet/include/Neon/set/container/CudaLaunchCompileTimeHints.h b/libNeonSet/include/Neon/set/container/CudaLaunchCompileTimeHints.h new file mode 100644 index 00000000..84fee176 --- /dev/null +++ b/libNeonSet/include/Neon/set/container/CudaLaunchCompileTimeHints.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Neon/core/core.h" + + +namespace Neon::set::container { + +template +struct CudaLaunchCompileTimeHint +{ + public: + static constexpr bool initialized = inited__; + static constexpr int maxThreadsPerBlock = maxThreadsPerBlock__; + static constexpr int minBlocksPerMultiprocessor = minBlocksPerMultiprocessor__; + static constexpr int maxBlocksPerCluster = maxBlocksPerCluster__; +}; + +} // namespace Neon::set::container diff --git a/libNeonSet/include/Neon/set/container/DataTransferContainer.h b/libNeonSet/include/Neon/set/container/DataTransferContainer.h index 847c5690..59a51d7d 100644 --- a/libNeonSet/include/Neon/set/container/DataTransferContainer.h +++ b/libNeonSet/include/Neon/set/container/DataTransferContainer.h @@ -35,12 +35,12 @@ struct DataTransferContainer setDataViewSupport(DataViewSupport::off); } - auto run(int streamIdx, + auto run(int streamIdx, Neon::DataView /*dataView*/) -> void override { const Neon::Backend& bk = mMultiXpuData.getBackend(); - bk.forEachDeviceSeq([&](SetIdx setIdx) { + bk.forEachDevicePar([&](SetIdx setIdx) { // std::cout <<"Sending Section ("<(streamIdx, @@ -48,8 +48,8 @@ struct DataTransferContainer mTransferMode, memoryTransfer.dst.setIdx, (char*)memoryTransfer.dst.mem, memoryTransfer.src.setIdx, (char*)memoryTransfer.src.mem); - //std::cout <<"Sending ("< +template < typename DataIteratorContainerT, + typename UserComputeLambdaT, typename CudaLaunchCompileTimeHintT = Neon::set::container::CudaLaunchCompileTimeHint> struct DeviceContainer : ContainerAPI { public: @@ -90,10 +90,11 @@ struct DeviceContainer : ContainerAPI { const Neon::Backend& bk = m_dataIteratorContainer.getBackend(); - Neon::set::KernelConfig kernelConfig(dataView, bk, streamIdx, this->getLaunchParameters(dataView)); + auto launchParameters = this->getLaunchParameters(dataView); + Neon::set::KernelConfig kernelConfig(dataView, bk, streamIdx, launchParameters); if (ContainerExecutionType::device == this->getContainerExecutionType()) { - bk.devSet().template launchLambdaOnSpan( + bk.devSet().template launchLambdaOnSpan( mExecution, kernelConfig, m_dataIteratorContainer, diff --git a/libNeonSet/include/Neon/set/container/Loader_imp.h b/libNeonSet/include/Neon/set/container/Loader_imp.h index e134effe..c9682ff9 100644 --- a/libNeonSet/include/Neon/set/container/Loader_imp.h +++ b/libNeonSet/include/Neon/set/container/Loader_imp.h @@ -115,7 +115,7 @@ auto Loader:: if (compute == Neon::Pattern::STENCIL && (stencilSemantic == StencilSemantic::standard || - stencilSemantic == StencilSemantic::streaming)) { + stencilSemantic == StencilSemantic::lattice)) { Neon::NeonException exp("Loader"); exp << "Loading a non const field for a stencil operation is not supported in Neon"; NEON_THROW(exp); diff --git a/libNeonSet/include/Neon/set/container/SequenceContainer.h b/libNeonSet/include/Neon/set/container/SequenceContainer.h new file mode 100644 index 00000000..f7709a9f --- /dev/null +++ b/libNeonSet/include/Neon/set/container/SequenceContainer.h @@ -0,0 +1,41 @@ +#pragma once + +#include "Neon/set/container/ContainerAPI.h" +#include "Neon/set/container/Loader.h" + +namespace Neon::set::internal { +struct Graph; +/** + * Specialized implementation of KContainer_i + * + * + * @tparam DataContainer + * @tparam ComputeLambdaT + */ +struct SequenceContainer : ContainerAPI +{ + public: + ~SequenceContainer() override = default; + + SequenceContainer(const std::string& name, + std::vector const& containerGraph); + + auto parse() + -> const std::vector& override; + + auto run(int streamIdx = 0, + Neon::DataView dataView = Neon::DataView::STANDARD) + -> void override; + + auto run(Neon::SetIdx setIdx, + int streamIdx = 0, + Neon::DataView dataView = Neon::DataView::STANDARD) + -> void override; + + auto getSequence() const -> const std::vector&; + + private: + std::vector mSequence; +}; + +} // namespace Neon::set::internal diff --git a/libNeonSet/include/Neon/set/container/types/ContainerExecutionType.h b/libNeonSet/include/Neon/set/container/types/ContainerExecutionType.h index 4e717e3a..48544707 100644 --- a/libNeonSet/include/Neon/set/container/types/ContainerExecutionType.h +++ b/libNeonSet/include/Neon/set/container/types/ContainerExecutionType.h @@ -17,15 +17,16 @@ enum struct ContainerExecutionType deviceThenHostManaged = 2, /** a container that stores operation on both device and host. For this type of Container a getHostContainer method is enabled to retrieved a container with the host code */ hostManaged = 3 /** host managed container */, graph = 4 /** A complex container */, - communication = 5, - host = 6, - none = 7 + sequence = 5, + communication = 6, + host = 7, + none = 8 }; struct ContainerExecutionTypeUtils { - static constexpr int nOptions = 7; + static constexpr int nOptions = 8; static auto toString(ContainerExecutionType option) -> std::string; @@ -38,6 +39,9 @@ struct ContainerExecutionTypeUtils static auto isExpandable(ContainerExecutionType option) -> bool; + + static auto isSequence(ContainerExecutionType option) + -> bool; }; /** diff --git a/libNeonSet/include/Neon/set/container/types/ContainerOperationType.h b/libNeonSet/include/Neon/set/container/types/ContainerOperationType.h index 59fae9aa..2ffd5cfc 100644 --- a/libNeonSet/include/Neon/set/container/types/ContainerOperationType.h +++ b/libNeonSet/include/Neon/set/container/types/ContainerOperationType.h @@ -14,15 +14,16 @@ enum struct ContainerOperationType { compute = 0 /**< Compute container, can be on host or device */, graph = 1 /**< A graph based container */, - communication = 2 /**< Halo update container **/, - synchronization = 3 /**< Synchronization Container */, - anchor = 4 /**< Synchronization Container: begin or end */ + sequence = 2, + communication = 3 /**< Halo update container **/, + synchronization = 4 /**< Synchronization Container */, + anchor = 5 /**< Synchronization Container: begin or end */ }; struct ContainerOperationTypeUtils { - static constexpr int nOptions = 5; + static constexpr int nOptions = 6; /** * Convert type to string diff --git a/libNeonSet/src/set/Containter.cpp b/libNeonSet/src/set/Containter.cpp index 390ef9e5..ba5c424c 100644 --- a/libNeonSet/src/set/Containter.cpp +++ b/libNeonSet/src/set/Containter.cpp @@ -1,7 +1,8 @@ #include "Neon/set/Containter.h" #include "Neon/set/container/AnchorContainer.h" -#include "Neon/set/container/SynchronizationContainer.h" #include "Neon/set/container/Loader.h" +#include "Neon/set/container/SequenceContainer.h" +#include "Neon/set/container/SynchronizationContainer.h" namespace Neon::set { @@ -110,6 +111,27 @@ auto Container::getContainerExecutionType() const return type; } + +auto Container::getSequence() const + -> const std::vector& +{ + auto executionType = this->getContainerInterface().getContainerExecutionType(); + if (executionType == Neon::set::ContainerExecutionType::sequence) { + auto& api = this->getContainerInterface(); + auto const& seq = api.getSequence(); + return seq; + } else { + throw std::runtime_error("Container is not a sequence"); + } +} + +auto Container::isSequence() const + -> bool +{ + auto executionType = this->getContainerInterface().getContainerExecutionType(); + return executionType == Neon::set::ContainerExecutionType::sequence; +} + Container::Container(std::shared_ptr& container) : mContainer(container) { @@ -132,4 +154,13 @@ auto Container::factoryGraph(const std::string& name, return Container(tmp); } +auto Container::factorySequence(const std::string& name, + std::vector& sequence) -> Container +{ + auto k = new Neon::set::internal::SequenceContainer(name, sequence); + + std::shared_ptr tmp(k); + return Container(tmp); +} + } // namespace Neon::set diff --git a/libNeonSet/src/set/StencilSemantic.cpp b/libNeonSet/src/set/StencilSemantic.cpp index 560b687a..0e6b2114 100644 --- a/libNeonSet/src/set/StencilSemantic.cpp +++ b/libNeonSet/src/set/StencilSemantic.cpp @@ -5,11 +5,11 @@ namespace Neon::set { auto StencilSemanticUtils::toString(StencilSemantic option) -> std::string { switch (option) { - case StencilSemantic::streaming: { - return "streaming"; + case StencilSemantic::lattice: { + return "lattice"; } case StencilSemantic::standard: { - return "grid"; + return "standard"; } } NEON_THROW_UNSUPPORTED_OPTION(""); @@ -17,7 +17,7 @@ auto StencilSemanticUtils::toString(StencilSemantic option) -> std::string auto StencilSemanticUtils::fromString(const std::string& occ) -> StencilSemantic { - std::array opts{StencilSemantic::standard, StencilSemantic::streaming}; + std::array opts{StencilSemantic::standard, StencilSemantic::lattice}; for (auto a : opts) { if (toString(a) == occ) { return a; @@ -28,7 +28,7 @@ auto StencilSemanticUtils::fromString(const std::string& occ) -> StencilSemantic auto StencilSemanticUtils::getOptions() -> std::array { - std::array opts = {StencilSemantic::standard, StencilSemantic::streaming}; + std::array opts = {StencilSemantic::standard, StencilSemantic::lattice}; return opts; } @@ -47,7 +47,7 @@ StencilSemanticUtils::Cli::Cli(StencilSemantic model) mOption = model; } -auto StencilSemanticUtils::Cli::getOption() -> StencilSemantic +auto StencilSemanticUtils::Cli::getOption() const -> StencilSemantic { if (!mSet) { std::stringstream errorMsg; @@ -66,13 +66,13 @@ auto StencilSemanticUtils::Cli::set(const std::string& opt) std::stringstream errorMsg; errorMsg << "TransferSemantic: " << opt << " is not a valid option (valid options are {"; auto options = StencilSemanticUtils::getOptions(); - int i = 0; + int i = 0; for (auto o : options) { - if(i!=0){ - errorMsg << ", "<< StencilSemanticUtils::toString(o) ; + if (i != 0) { + errorMsg << ", " << StencilSemanticUtils::toString(o); } errorMsg << StencilSemanticUtils::toString(o); - i=1; + i = 1; } errorMsg << "})"; NEON_ERROR(errorMsg.str()); @@ -80,19 +80,48 @@ auto StencilSemanticUtils::Cli::set(const std::string& opt) mSet = true; } -auto StencilSemanticUtils::Cli::getStringOptions() -> std::string +auto StencilSemanticUtils::Cli::getStringOptions() const -> std::string { std::stringstream s; auto options = StencilSemanticUtils::getOptions(); int i = 0; for (auto o : options) { if (i != 0) { - s << ", " ; + s << ", "; } s << StencilSemanticUtils::toString(o); i = 1; } - std::string msg= s.str(); + std::string msg = s.str(); return msg; } -} // namespace Neon + +auto StencilSemanticUtils::Cli::getStringOption() const -> std::string +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "TransferSemantic was not set."; + NEON_ERROR(errorMsg.str()); + } + return StencilSemanticUtils::toString(mOption); +} + +auto StencilSemanticUtils::Cli::getDoc() const-> std::string +{ + std::stringstream s; + s << getStringOptions(); + s << " default: " << getStringOptions(); + return s.str(); +} + + +auto StencilSemanticUtils::Cli::addToReport(Neon::Report& report) const -> void +{ + report.addMember("StencilSemantic", StencilSemanticUtils::toString(this->getOption())); +} + +auto StencilSemanticUtils::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void +{ + report.addMember("StencilSemantic", StencilSemanticUtils::toString(this->getOption()), &subBlock); +} +} // namespace Neon::set diff --git a/libNeonSet/src/set/TransferMode.cpp b/libNeonSet/src/set/TransferMode.cpp index 9ef657eb..c2a30ab2 100644 --- a/libNeonSet/src/set/TransferMode.cpp +++ b/libNeonSet/src/set/TransferMode.cpp @@ -47,7 +47,7 @@ TransferModeUtils::Cli::Cli(TransferMode model) mOption = model; } -auto TransferModeUtils::Cli::getOption() -> TransferMode +auto TransferModeUtils::Cli::getOption() const -> TransferMode { if (!mSet) { std::stringstream errorMsg; @@ -66,13 +66,13 @@ auto TransferModeUtils::Cli::set(const std::string& opt) std::stringstream errorMsg; errorMsg << "Transfer: " << opt << " is not a valid option (valid options are {"; auto options = TransferModeUtils::getOptions(); - int i = 0; + int i = 0; for (auto o : options) { - if(i!=0){ - errorMsg << ", "<< TransferModeUtils::toString(o) ; + if (i != 0) { + errorMsg << ", " << TransferModeUtils::toString(o); } errorMsg << TransferModeUtils::toString(o); - i=1; + i = 1; } errorMsg << "})"; NEON_ERROR(errorMsg.str()); @@ -80,19 +80,47 @@ auto TransferModeUtils::Cli::set(const std::string& opt) mSet = true; } -auto TransferModeUtils::Cli::getStringOptions() -> std::string +auto TransferModeUtils::Cli::getStringOptions() const -> std::string { std::stringstream s; auto options = TransferModeUtils::getOptions(); int i = 0; for (auto o : options) { if (i != 0) { - s << ", " ; + s << ", "; } s << TransferModeUtils::toString(o); i = 1; } - std::string msg= s.str(); + std::string msg = s.str(); return msg; } -} // namespace Neon + +auto TransferModeUtils::Cli::getStringOption() const -> std::string +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "TransferMode was not set."; + NEON_ERROR(errorMsg.str()); + } + return TransferModeUtils::toString(mOption); +} + +auto TransferModeUtils::Cli::getDoc() const -> std::string +{ + std::stringstream s; + s << getStringOptions(); + s << " default: " << getStringOptions(); + return s.str(); +} + +auto TransferModeUtils::Cli::addToReport(Neon::Report& report) const -> void +{ + report.addMember("TransferMode", TransferModeUtils::toString(this->getOption())); +} + +auto TransferModeUtils::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void +{ + report.addMember("TransferMode", TransferModeUtils::toString(this->getOption()), &subBlock); +} +} // namespace Neon::set diff --git a/libNeonSet/src/set/container/ContainerAPI.cpp b/libNeonSet/src/set/container/ContainerAPI.cpp index 4cf0add1..05aa4f3f 100644 --- a/libNeonSet/src/set/container/ContainerAPI.cpp +++ b/libNeonSet/src/set/container/ContainerAPI.cpp @@ -209,6 +209,12 @@ auto ContainerAPI:: mParsingDataUpdated = status; } +auto ContainerAPI::isContainerSequence() + -> bool +{ + return getContainerExecutionType() == ContainerExecutionType::sequence; +} + auto ContainerAPI:: parse() -> const std::vector& @@ -235,9 +241,20 @@ auto ContainerAPI:: auto ContainerAPI:: - configureWithScheduling([[maybe_unused]] Neon::set::container::GraphNode& graphNode) - -> void{ + configureWithScheduling([[maybe_unused]] Neon::set::container::GraphNode& graphNode) + -> void +{ +} +auto ContainerAPI:: + getSequence() const -> const std::vector& +{ + std::string description = helpGetNameForError(); + Neon::NeonException exp("ContainerAPI"); + exp << description << " " + << "getSequence" + << " is not supported."; + NEON_THROW(exp); } } // namespace Neon::set::internal diff --git a/libNeonSet/src/set/container/SequenceContainer.cpp b/libNeonSet/src/set/container/SequenceContainer.cpp new file mode 100644 index 00000000..14b08db6 --- /dev/null +++ b/libNeonSet/src/set/container/SequenceContainer.cpp @@ -0,0 +1,55 @@ +#include "Neon/set/container/SequenceContainer.h" +#include "Neon/set/container/Graph.h" + +namespace Neon::set::internal { + +SequenceContainer:: + SequenceContainer(const std::string& name, + std::vector const& sequence) + : mSequence(sequence) +{ + setContainerExecutionType(ContainerExecutionType::sequence); + setContainerOperationType(ContainerOperationType::sequence); + setDataViewSupport(DataViewSupport::off); + setName(name); +} + +auto SequenceContainer:: + parse() + -> const std::vector& +{ + NEON_THROW_UNSUPPORTED_OPERATION("SequenceContainer"); +} + +auto SequenceContainer:: + getSequence() + const -> const std::vector& +{ + return mSequence; +} + +/** + * Run container over streams + * @param streamIdx + * @param dataView + */ +auto SequenceContainer:: + run(int streamIdx, + Neon::DataView dataView) -> void +{ + for (auto& container : mSequence) { + container.run(streamIdx, dataView); + } +} + +auto SequenceContainer:: + run(Neon::SetIdx setIdx, + int streamIdx, + Neon::DataView dataView) -> void +{ + for (auto& container : mSequence) { + container.run(setIdx, streamIdx, dataView); + } +} + +} // namespace Neon::set::internal diff --git a/libNeonSet/src/set/container/graph/GraphDependency.cpp b/libNeonSet/src/set/container/graph/GraphDependency.cpp index bc356a84..60486a14 100644 --- a/libNeonSet/src/set/container/graph/GraphDependency.cpp +++ b/libNeonSet/src/set/container/graph/GraphDependency.cpp @@ -52,7 +52,12 @@ auto GraphDependency:: getLabel() const -> std::string { - return GraphDependencyTypeUtil::toString(getType()); + std::stringstream s; + s << GraphDependencyTypeUtil::toString(getType()); + for(auto const& token : mTokens) { + s << "\\l" << token.toString(); + } + return s.str(); } auto GraphDependency:: diff --git a/libNeonSet/src/set/container/graph/GraphNode.cpp b/libNeonSet/src/set/container/graph/GraphNode.cpp index 7af3a45b..10906462 100644 --- a/libNeonSet/src/set/container/graph/GraphNode.cpp +++ b/libNeonSet/src/set/container/graph/GraphNode.cpp @@ -181,7 +181,11 @@ auto GraphNode:: s << "\\l - Execution: " << getContainer().getContainerExecutionType(); s << "\\lGraph "; s << "\\l - Node id: " << this->getGraphData().getUid(); - + auto tokens = this->getContainer().getContainerInterface().getTokens(); + s << "\\lTokens "; + for(auto t: tokens) { + s << "\\l - Token: " << t.toString(); + } addSchedulingInfo(s); s << "\\l ---- "; diff --git a/libNeonSet/src/set/container/types/ContainerExecutionType.cpp b/libNeonSet/src/set/container/types/ContainerExecutionType.cpp index e2a89b52..07918746 100644 --- a/libNeonSet/src/set/container/types/ContainerExecutionType.cpp +++ b/libNeonSet/src/set/container/types/ContainerExecutionType.cpp @@ -24,6 +24,9 @@ auto ContainerExecutionTypeUtils::toString(ContainerExecutionType option) -> std case ContainerExecutionType::graph: { return "graph"; } + case ContainerExecutionType::sequence: { + return "sequence"; + } case ContainerExecutionType::communication: { return "communication"; } @@ -57,6 +60,7 @@ auto ContainerExecutionTypeUtils::getOptions() -> std::array return false; } +auto ContainerExecutionTypeUtils::isSequence(ContainerExecutionType option) -> bool +{ + if (option == ContainerExecutionType::sequence) { + return true; + } + return false; +} + std::ostream& operator<<(std::ostream& os, Neon::set::ContainerExecutionType const& m) { return os << Neon::set::ContainerExecutionTypeUtils::toString(m); diff --git a/libNeonSet/src/set/container/types/ContainerOperationType.cpp b/libNeonSet/src/set/container/types/ContainerOperationType.cpp index 6afce6c4..edb447b2 100644 --- a/libNeonSet/src/set/container/types/ContainerOperationType.cpp +++ b/libNeonSet/src/set/container/types/ContainerOperationType.cpp @@ -15,6 +15,9 @@ auto ContainerOperationTypeUtils::toString(ContainerOperationType option) -> std case ContainerOperationType::graph: { return "graph"; } + case ContainerOperationType::sequence: { + return "sequence"; + } case ContainerOperationType::communication: { return "communication"; } @@ -45,6 +48,7 @@ auto ContainerOperationTypeUtils::getOptions() -> std::array opts = {ContainerOperationType::compute, ContainerOperationType::graph, + ContainerOperationType::sequence, ContainerOperationType::communication, ContainerOperationType::synchronization, ContainerOperationType::anchor}; diff --git a/libNeonSkeleton/include/Neon/skeleton/Occ.h b/libNeonSkeleton/include/Neon/skeleton/Occ.h index a54f799a..041d178f 100644 --- a/libNeonSkeleton/include/Neon/skeleton/Occ.h +++ b/libNeonSkeleton/include/Neon/skeleton/Occ.h @@ -27,12 +27,15 @@ struct OccUtils explicit Cli(Occ model); Cli(); - auto getOption() -> Occ; + auto getOption() const -> Occ; auto set(const std::string& opt) -> void; - auto getStringOptions() -> std::string; + auto getStringOptions() const -> std::string; + auto getDoc() const -> std::string; - auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock)->void; - auto addToReport(Neon::Report& report)->void; + auto getStringOption() const -> std::string; + + auto addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void; + auto addToReport(Neon::Report& report) const -> void; private: bool mSet = false; @@ -41,4 +44,4 @@ struct OccUtils }; -} // namespace Neon::skeleton \ No newline at end of file +} // namespace Neon::skeleton diff --git a/libNeonSkeleton/include/Neon/skeleton/Skeleton.h b/libNeonSkeleton/include/Neon/skeleton/Skeleton.h index 6825981e..11437862 100644 --- a/libNeonSkeleton/include/Neon/skeleton/Skeleton.h +++ b/libNeonSkeleton/include/Neon/skeleton/Skeleton.h @@ -33,16 +33,25 @@ struct Skeleton std::string name, Options options = Options()) { + std::vector opWithSequenceExpanded; if (!m_inited) { NeonException exp(""); exp << "A backend was not set"; NEON_THROW(exp); } + for (auto op : operations) { + if (op.isSequence()) { + auto sequence = op.getSequence(); + for (auto s : sequence) { + opWithSequenceExpanded.push_back(s); + } + } else { + opWithSequenceExpanded.push_back(op); + } + } mOptions = options; - mMultiGraph.init(mBackend, operations, name, options); - mMultiGraph.ioToDot("DB_multiGpuGraph", "graphname"); - // mStreamScheduler.init(mBackend, mMultiGraph); - // m_streamScheduler.io2Dot("DB_streamScheduler", "graphname"); + mMultiGraph.init(mBackend, opWithSequenceExpanded, name, options); + mMultiGraph.ioToDot("DB_multiGpuGraph", name, true); } @@ -68,9 +77,7 @@ struct Skeleton Neon::Backend mBackend; Options mOptions; Neon::skeleton::internal::MultiXpuGraph mMultiGraph; - // Neon::skeleton::internal::StreamScheduler mStreamScheduler; - - bool m_inited = {false}; + bool m_inited = {false}; }; } // namespace Neon::skeleton diff --git a/libNeonSkeleton/src/skeleton/Occ.cpp b/libNeonSkeleton/src/skeleton/Occ.cpp index 44ac9155..44ba2cd9 100644 --- a/libNeonSkeleton/src/skeleton/Occ.cpp +++ b/libNeonSkeleton/src/skeleton/Occ.cpp @@ -48,12 +48,23 @@ OccUtils::Cli::Cli(std::string s) set(s); } +auto OccUtils::Cli::getStringOption() const -> std::string +{ + if (!mSet) { + std::stringstream errorMsg; + errorMsg << "Occ was not set."; + NEON_ERROR(errorMsg.str()); + } + return OccUtils::toString(mOption); +} + OccUtils::Cli::Cli(Occ model) { mOption = model; + mSet = true; } -auto OccUtils::Cli::getOption() -> Occ +auto OccUtils::Cli::getOption() const -> Occ { if (!mSet) { std::stringstream errorMsg; @@ -86,7 +97,7 @@ auto OccUtils::Cli::set(const std::string& opt) mSet = true; } -auto OccUtils::Cli::getStringOptions() -> std::string +auto OccUtils::Cli::getStringOptions() const -> std::string { std::stringstream s; auto options = OccUtils::getOptions(); @@ -102,14 +113,22 @@ auto OccUtils::Cli::getStringOptions() -> std::string return msg; } -auto OccUtils::Cli::addToReport(Neon::Report& report) -> void +auto OccUtils::Cli::getDoc() const -> std::string +{ + std::stringstream s; + s << getStringOptions(); + s << " default: " << OccUtils::toString(getOption()); + return s.str(); +} + +auto OccUtils::Cli::addToReport(Neon::Report& report) const -> void { report.addMember("Occ", OccUtils::toString(this->getOption())); } -auto OccUtils::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) -> void +auto OccUtils::Cli::addToReport(Neon::Report& report, Neon::Report::SubBlock& subBlock) const -> void { report.addMember("Occ", OccUtils::toString(this->getOption()), &subBlock); } -} // namespace Neon::skeleton \ No newline at end of file +} // namespace Neon::skeleton diff --git a/libNeonSkeleton/src/skeleton/internal/multiGpuGraph.cpp b/libNeonSkeleton/src/skeleton/internal/multiGpuGraph.cpp index 16c935ed..1e198cd9 100644 --- a/libNeonSkeleton/src/skeleton/internal/multiGpuGraph.cpp +++ b/libNeonSkeleton/src/skeleton/internal/multiGpuGraph.cpp @@ -5,8 +5,8 @@ namespace Neon::skeleton::internal { void MultiXpuGraph::init(Neon::Backend& bk, const std::vector& operations, - std::string /*name*/, - Options options) + [[maybe_unused]] std::string name, + Options options) { getGraph() = Neon::set::container::Graph(bk); parse(bk.devSet().setCardinality(), @@ -17,16 +17,16 @@ void MultiXpuGraph::init(Neon::Backend& bk, // We fix them manually after all redundant dependencies are cleaned. fixingDependenciesWithBeginNode(); - // h_ioToDot("t0_" + name + ".dot", "i"); + ioToDot("t0_" + name + ".dot", "i", true); optimizations(options); - // h_ioToDot("t1_" + name + ".dot", "i"); + ioToDot("t1_" + name + ".dot", "i", true); communications(options); getGraph().removeRedundantDependencies(); - // h_ioToDot("t2_" + name + ".dot", "i"); + ioToDot("t2_" + name + ".dot", "i", true); this->computeScheduling(); - // h_ioToDot("final" + name + ".dot", "i"); + ioToDot("final" + name + ".dot", "i", true); } void MultiXpuGraph::parse(int setCardinalty, diff --git a/libNeonSkeleton/tests/unit/CMakeLists.txt b/libNeonSkeleton/tests/unit/CMakeLists.txt index 76c90107..609c697d 100644 --- a/libNeonSkeleton/tests/unit/CMakeLists.txt +++ b/libNeonSkeleton/tests/unit/CMakeLists.txt @@ -4,5 +4,4 @@ add_subdirectory("skeleton-maps") add_subdirectory("skeleton-stencil") add_subdirectory("sUt_skeletonOnStreams") -add_subdirectory("sUt_userInterface") add_subdirectory("sUt_multiRes") \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResChild.h b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResChild.h index e6a6be75..7def9e22 100644 --- a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResChild.h +++ b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResChild.h @@ -31,7 +31,7 @@ void MultiResChild() return id.x >= SectionX[1] && id.x < SectionX[2]; }}, Neon::domain::Stencil::s7_Laplace_t(), - descriptor); + descriptor, true, false); auto XField = grid.newField("XField", 1, -1); auto isRefinedField = grid.newField("isRefined", 1, -1); diff --git a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResDemo.h b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResDemo.h index bba0c0fb..0bce3552 100644 --- a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResDemo.h +++ b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResDemo.h @@ -122,7 +122,7 @@ void MultiResDemo() return false; }}, Neon::domain::Stencil::s7_Laplace_t(), - descriptor); + descriptor, true, false); std::stringstream s("mGridDemo", std::ios_base::app | std::ios_base::out); diff --git a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResParent.h b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResParent.h index 6aa427bc..528a52f8 100644 --- a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResParent.h +++ b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResParent.h @@ -32,7 +32,7 @@ void MultiResParent() return id.x >= SectionX[1] && id.x < SectionX[2]; }}, Neon::domain::Stencil::s7_Laplace_t(), - descriptor); + descriptor, true, false); auto XField = grid.newField("XField", 1, -1); auto hasParentField = grid.newField("hasParent", 1, -1); diff --git a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResSkeleton.h b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResSkeleton.h index 9ee9ce9f..31447cc5 100644 --- a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResSkeleton.h +++ b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResSkeleton.h @@ -28,7 +28,7 @@ void MultiResSkeleton() return true; }}, Neon::domain::Stencil::s7_Laplace_t(), - descriptor); + descriptor, true, false); auto field = grid.newField("field", 3, -1); diff --git a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResStencil.h b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResStencil.h index 5b30f868..dbd9c995 100644 --- a/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResStencil.h +++ b/libNeonSkeleton/tests/unit/sUt_multiRes/src/MultiResStencil.h @@ -28,7 +28,7 @@ void MultiResSameLevelStencil() return true; }}, Neon::domain::Stencil::s7_Laplace_t(), - descriptor); + descriptor, true, false); auto XField = grid.newField("XField", 1, -1); auto YField = grid.newField("YField", 1, -1); diff --git a/libNeonSkeleton/tests/unit/sUt_skeletonOnStreams/src/sUt_skeleton.Stencil.cu b/libNeonSkeleton/tests/unit/sUt_skeletonOnStreams/src/sUt_skeleton.Stencil.cu index 0170936c..5da7eab0 100644 --- a/libNeonSkeleton/tests/unit/sUt_skeletonOnStreams/src/sUt_skeleton.Stencil.cu +++ b/libNeonSkeleton/tests/unit/sUt_skeletonOnStreams/src/sUt_skeleton.Stencil.cu @@ -160,7 +160,7 @@ void SingleStencil(TestData& data, } template -void SingleStencilOCC(TestData& data) +void SingleStencilStandardOCC(TestData& data) { SingleStencil(data, Neon::skeleton::Occ::standard, Neon::set::TransferMode::get); } @@ -208,4 +208,14 @@ TEST(SingleStencil_NoOCC, bGrid) // using Grid = Neon::dGrid; using Type = int32_t; runAllTestConfiguration("bGrid_t", SingleStencilNoOCC, nGpus, 1); +} + +TEST(SingleStencil_StandardOCC, bGrid) +{ + int nGpus = 3; + using Grid = Neon::bGrid; + // using Grid = Neon::domain::eGrid; + // using Grid = Neon::dGrid; + using Type = int32_t; + runAllTestConfiguration("bGrid_t", SingleStencilStandardOCC, nGpus, 2); } \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/CMakeLists.txt b/libNeonSkeleton/tests/unit/sUt_userInterface/CMakeLists.txt deleted file mode 100644 index ff190485..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.19 FATAL_ERROR) - -file(GLOB_RECURSE SrcFiles src/*.*) - -add_executable(sUt_userInterface ${SrcFiles}) - -target_link_libraries(sUt_userInterface - PUBLIC libNeonSkeleton - PUBLIC gtest_main) - -set_target_properties(sUt_userInterface PROPERTIES - CUDA_SEPARABLE_COMPILATION ON - CUDA_RESOLVE_DEVICE_SYMBOLS ON) -set_target_properties(sUt_userInterface PROPERTIES FOLDER "libNeonSkeleton") -source_group(TREE ${CMAKE_CURRENT_LIST_DIR} PREFIX "sUt_userInterface" FILES ${SrcFiles}) - -add_test(NAME sUt_userInterface COMMAND sUt_userInterface) \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt.runHelper.h b/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt.runHelper.h deleted file mode 100644 index e4159557..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt.runHelper.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include -#include "Neon/domain/aGrid.h" -#include "Neon/domain/eGrid.h" -#include "gtest/gtest.h" -#include "sUt_common.h" - -using aGrid_t = Neon::aGrid; -using eGrid_t = Neon::eGrid; -using dGrid_t = Neon::dGrid; -using bGrid_t = Neon::bGrid; - -void runAllTestConfiguration(std::function f, int maxNumGpu = 3) -{ - std::vector nGpuTest{}; - std::vector cardinalityTest{1, 2, 3, 4, 5}; - std::vector dimTest{{117, 100, 21}, {33, 17, 47}, {117, 100, 100}, {33, 100, 100}}; - - std::vector backendTest{Neon::Runtime::openmp}; - if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { - backendTest.push_back(Neon::Runtime::stream); - } - - for (int i = 0; i < maxNumGpu; i++) { - nGpuTest.push_back(i + 1); - } - - for (const auto& ngpu : nGpuTest) { - for (const auto& card : cardinalityTest) { - for (const auto& dim : dimTest) { - for (const auto& backend : backendTest) { - std::string backend_name = (backend == Neon::Runtime::openmp) ? "openmp" : "stream"; - std::stringstream stringstream; - stringstream << "ngpu " << ngpu << " cardinality " << card << " dim " << dim << " backend " << backend_name << std::endl; - NEON_INFO(std::string("Test Configuration: ") + stringstream.str()); - f(dim, ngpu, card, backend); - } - } - } - } -} \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_add.h b/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_add.h deleted file mode 100644 index bf2a8bd0..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_add.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once -#include -#include "Neon/core/tools/metaprogramming/debugHelp.h" - -#include "Neon/domain/aGrid.h" -#include "Neon/domain/bGrid.h" -#include "Neon/domain/dGrid.h" -#include "Neon/domain/eGrid.h" - -#include "gtest/gtest.h" -#include "sUt.runHelper.h" -#include "sUt_common.h" -template -auto add(const Field& X, - const Field& Y, - Field& Z) -> Neon::set::Container -{ - auto c = X.getGrid().newContainer( - "add", [&](Neon::set::Loader& L) -> auto { - auto& x = L.load(X); - auto& y = L.load(Y); - auto& z = L.load(Z); - return [=] NEON_CUDA_HOST_DEVICE(const typename Field::Idx& gidx) mutable { - for (int i = 0; i < z.cardinality(); i++) { - z(gidx, i) = x(gidx, i) + y(gidx, i); - } - }; - }); - return c; -} - -template -void dataViewAddTest(Neon::index64_3d dim, - int nGPU, - int cardinality, - const Neon::Runtime& backendType) -{ - storage_t storage(dim, nGPU, cardinality, backendType); - storage.initLinearly(); - - auto container = add(storage.Xf, storage.Yf, storage.Zf); - container.run(0); - - storage.sum(storage.Xd, storage.Yd, storage.Zd); - - storage.m_backend.syncAll(); - - //storage.Zf.template ioToVtk("sUt_add.vti", "Z"); - - bool isOk = storage.compare(storage.Zd, storage.Zf); - ASSERT_TRUE(isOk); -} - -TEST(eGrid, Add) -{ - NEON_INFO("eGrid_t"); - int nGpus = 3; - runAllTestConfiguration(dataViewAddTest, nGpus); -} - -TEST(bGrid, Add) -{ - std::cout << "bGrid_t" << std::endl; - int nGpus = 1; - runAllTestConfiguration(dataViewAddTest, nGpus); -} - -TEST(dGrid, Add) -{ - std::cout << "dGrid_t" << std::endl; - int nGpus = 3; - runAllTestConfiguration(dataViewAddTest, nGpus); -} diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_common.h b/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_common.h deleted file mode 100644 index d16144d4..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_common.h +++ /dev/null @@ -1,477 +0,0 @@ -#include - -#include -#include "Neon/domain/aGrid.h" -#include "Neon/domain/bGrid.h" -#include "Neon/domain/dGrid.h" -#include "Neon/domain/eGrid.h" - -#pragma once - -template -class storage_t -{ - using Grid = grid_ta; - using Field = typename Grid::template Field; - - public: - Grid m_grid; - Neon::index64_3d m_size3d; - int m_cardinality; - - public: - Field Xf, Yf, Zf; - std::shared_ptr Xd, Yd, Zd; - - // TODO remove Xd, Yd, Zd, and use directly Xnd, Ynd, Znd - Neon::IODense Xnd, Ynd, Znd; - Neon::Backend m_backend; - - - private: - auto getNewDenseField(Neon::index64_3d size3d, - int cardinality, - std::shared_ptr& d, - Neon::IODense& nd) - -> void - { - nd = Neon::IODense(size3d.template newType::Index>(), - cardinality); - d = nd.getSharedPtr(); - } - - void setLinearly(int offset, std::shared_ptr& dense) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = (100 * offset) * (i + 1) + card; - } - } - } - - void setConsant(std::shared_ptr& dense, int constVal) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = constVal + card; - } - } - } - - void setLinearly(int offset, std::shared_ptr& dense, int targetCard) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(1) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - if (card == targetCard) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = (100 * offset) * (i + 1) + card; - } - } else { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = 0; - } - } - } - } - - void setConsant(std::shared_ptr& dense, int targetCard, int constVal) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(1) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - if (card == targetCard) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = constVal + card; - } - } else { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - dense.get()[i + m_size3d.rMul() * card] = 0; - } - } - } - } - - void loadField(const Neon::IODense& dense, Field& field) - { - - field.ioFromDense(dense); - field.updateDeviceData(0); - field.getGrid().getBackend().sync(0); - } - - public: - void ioToVti(const std::string fname) - { - Xf.updateHostData(Xf.grid().devSet().defaultStreamSet()); - Yf.updateHostData(Xf.grid().devSet().defaultStreamSet()); - Zf.updateHostData(Xf.grid().devSet().defaultStreamSet()); - Xf.grid().devSet().defaultStreamSet().sync(); - - auto Xd_val = [&](const Neon::int64_3d& index3d, int card) { - return double(Xd.get()[index3d.x + m_size3d.rMul() * card]); - }; - auto Yd_val = [&](const Neon::int64_3d& index3d, int card) { - return double(Yd.get()[index3d.x + m_size3d.rMul() * card]); - }; - auto Zd_val = [&](const Neon::int64_3d& index3d, int card) { - return double(Zd.get()[index3d.x + m_size3d.rMul() * card]); - }; - Neon::int64_3d l(m_size3d.rMul(), 1, 1); - Neon::ioToVTI({{Xd_val, m_cardinality, "Xd", true, Neon::IoFileType::ASCII}, - {Yd_val, m_cardinality, "Yd", true, Neon::IoFileType::ASCII}, - {Zd_val, m_cardinality, "Zd", true, Neon::IoFileType::ASCII}}, - fname + "_dense.vti", l, l - 1); - m_grid.template ioVtk({{&Xf, "Xa", true}, {&Yf, "Ya", true}, {&Zf, "Za", true}}, fname + "_field.vti"); - } - - public: - void initLinearly() - { - setLinearly(1, Xd); - setLinearly(2, Yd); - setLinearly(3, Zd); - - loadField(Xnd, Xf); - loadField(Ynd, Yf); - loadField(Znd, Zf); - } - - void initConst(int a = 1, int b = 2, int c = 3) - { - setConsant(Xd, a); - setConsant(Yd, b); - setConsant(Zd, c); - - loadField(Xnd, Xf); - loadField(Ynd, Yf); - loadField(Znd, Zf); - } - - void initLinearly(int targetCard) - { - setLinearly(1, Xd, targetCard); - setLinearly(2, Yd, targetCard); - setLinearly(3, Zd, targetCard); - - loadField(Xnd, Xf); - loadField(Ynd, Yf); - loadField(Znd, Zf); - } - - bool compare(std::shared_ptr& a, Field& bField) - { - int same = 0; - m_backend.sync(); - - bField.updateHostData(0); - m_backend.sync(); - - std::shared_ptr b = bField.ioToDense().getSharedPtr(); - -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) reduction(+ \ - : same) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - if (a.get()[i + m_size3d.rMul() * card] != b.get()[i + m_size3d.rMul() * card]) { - same += 1; - } - } - } - return same == 0; - } - - void copy(std::shared_ptr& a, std::shared_ptr& c) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] = a.get()[i + m_size3d.rMul() * card]; - } - } - } - - void sum(std::shared_ptr& a, std::shared_ptr& b, std::shared_ptr& c) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] = a.get()[i + m_size3d.rMul() * card] + b.get()[i + m_size3d.rMul() * card]; - } - } - } - - void axpy(T a, std::shared_ptr& X, std::shared_ptr& Y) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - Y.get()[i + m_size3d.rMul() * card] += a * X.get()[i + m_size3d.rMul() * card]; - } - } - } - - void axpy(T a, std::shared_ptr& X, std::shared_ptr& Y, T a1, std::shared_ptr& X1, std::shared_ptr& Y1) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - Y.get()[i + m_size3d.rMul() * card] += a * X.get()[i + m_size3d.rMul() * card]; - Y1.get()[i + m_size3d.rMul() * card] += a1 * X1.get()[i + m_size3d.rMul() * card]; - } - } - } - - void xpay(std::shared_ptr& X, T a, std::shared_ptr& Y) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - Y.get()[i + m_size3d.rMul() * card] = X.get()[i + m_size3d.rMul() * card] + a * Y.get()[i + m_size3d.rMul() * card]; - } - } - } - - T rMaxNorm(std::shared_ptr& a, std::shared_ptr& b) - { - T final = 0; -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(1) reduction(max \ - : final) -#endif - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - T cardPartial = 0; - for (int64_t card = 0; card < m_cardinality; card++) { - const auto aVal = a.get()[i + m_size3d.rMul() * card]; - const auto bVal = b.get()[i + m_size3d.rMul() * card]; - cardPartial += (aVal - bVal) * (aVal - bVal); - } - final = std::max(final, cardPartial); - } - final = T(std::sqrt(final)); - return final; - } - - T rL2Norm(std::shared_ptr& a, std::shared_ptr& b) - { - T final = 0; -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(1) reduction(+ \ - : final) -#endif - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - T cardPartial = 0; - for (int64_t card = 0; card < m_cardinality; card++) { - const auto aVal = a.get()[i + m_size3d.rMul() * card]; - const auto bVal = b.get()[i + m_size3d.rMul() * card]; - cardPartial += (aVal - bVal) * (aVal - bVal); - } - final += cardPartial; - } - final = T(std::sqrt(final)); - return final; - } - - - T dot(std::shared_ptr& a, std::shared_ptr& b) - { - T final = 0; -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(1) reduction(+ \ - : final) -#endif - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - T cardPartial = 0; - for (int64_t card = 0; card < m_cardinality; card++) { - const auto aVal = a.get()[i + m_size3d.rMul() * card]; - const auto bVal = b.get()[i + m_size3d.rMul() * card]; - cardPartial += (aVal * bVal); - } - final += cardPartial; - } - return final; - } - - void sum(T sa, std::shared_ptr& a, T sb, std::shared_ptr& b, std::shared_ptr& c) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] = sa * a.get()[i + m_size3d.rMul() * card] + sb * b.get()[i + m_size3d.rMul() * card]; - } - } - } - - void scale(std::shared_ptr& a, T val, std::shared_ptr& c) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] = val * a.get()[i + m_size3d.rMul() * card]; - } - } - } - - void increment(std::shared_ptr& a, std::shared_ptr& c) - { -#pragma omp parallel for collapse(2) - - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] += a.get()[i + m_size3d.rMul() * card]; - } - } - } - - void decrement(std::shared_ptr& a, std::shared_ptr& c) - { -#ifdef _MSC_VER -#else -#pragma omp parallel for collapse(2) -#endif - for (int64_t card = 0; card < m_cardinality; card++) { - for (int64_t i = 0; i < m_size3d.rMul(); i++) { - c.get()[i + m_size3d.rMul() * card] -= a.get()[i + m_size3d.rMul() * card]; - } - } - } - - static void gridInit(Neon::index64_3d dim, storage_t& storage) - { - storage.m_size3d = {1, 1, 1}; - storage.m_size3d.x = dim.template rMulTyped(); - - auto lengths = storage.m_backend.devSet().template newDataSet(storage.m_size3d.x / storage.m_backend.devSet().setCardinality()); - int64_t sumTmp = 0; - for (int i = 0; i < storage.m_size3d.x % storage.m_backend.devSet().setCardinality(); i++) { - lengths[i]++; - } - for (int i = 0; i < storage.m_backend.devSet().setCardinality(); i++) { - sumTmp += lengths[i]; - } - assert(sumTmp == storage.m_size3d.x); - storage.m_grid = Neon::aGrid(storage.m_backend, lengths); - - storage.Xf = storage.m_grid.template newField({storage.m_backend, Neon::DataUse::HOST_DEVICE}, storage.m_cardinality); - storage.Yf = storage.m_grid.template newField({storage.m_backend, Neon::DataUse::HOST_DEVICE}, storage.m_cardinality); - storage.Zf = storage.m_grid.template newField({storage.m_backend, Neon::DataUse::HOST_DEVICE}, storage.m_cardinality); - } - - static void gridInit(Neon::index64_3d dim, - storage_t& storage) - { - storage.m_size3d = dim; - - storage.m_grid = Neon::domain::details::eGrid::eGrid( - storage.m_backend, - dim.template newType(), - [&](const Neon::index_3d&) -> bool { - return true; - }, - Neon::domain::Stencil::s7_Laplace_t()); - - T outsideVal = 0; - auto memoryOption = storage.m_backend.getMemoryOptions(Neon::MemoryLayout::structOfArrays); - - storage.Xf = storage.m_grid.template newField("Xf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Yf = storage.m_grid.template newField("Yf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Zf = storage.m_grid.template newField("Zf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - } - - static void gridInit(Neon::index64_3d dim, - storage_t& storage) - { - storage.m_size3d = dim; - - storage.m_grid = Neon::dGrid( - storage.m_backend, - dim.template newType(), - [&](const Neon::index_3d&) -> bool { - return true; - }, - Neon::domain::Stencil::s7_Laplace_t()); - - T outsideVal = 0; - auto memoryOption = storage.m_backend.getMemoryOptions(Neon::MemoryLayout::structOfArrays); - - storage.Xf = storage.m_grid.template newField("Xf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Yf = storage.m_grid.template newField("Yf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Zf = storage.m_grid.template newField("Zf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - } - - - static void gridInit(Neon::index64_3d dim, - storage_t& storage) - { - storage.m_size3d = dim; - - storage.m_grid = Neon::bGrid( - storage.m_backend, - dim.template newType(), - [&](const Neon::index_3d&) -> bool { - return true; - }, - Neon::domain::Stencil::s7_Laplace_t()); - - T outsideVal = 0; - auto memoryOption = storage.m_backend.getMemoryOptions(Neon::MemoryLayout::structOfArrays); - - storage.Xf = storage.m_grid.template newField("Xf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Yf = storage.m_grid.template newField("Yf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - storage.Zf = storage.m_grid.template newField("Zf", storage.m_cardinality, T(0), Neon::DataUse::HOST_DEVICE, memoryOption); - } - - storage_t(Neon::index64_3d dim, int nGPUs, int cardinality, const Neon::Runtime& backendType) - { - m_cardinality = cardinality; - std::vector gpusIds(nGPUs, 0); - m_backend = Neon::Backend(gpusIds, backendType); - m_backend.setAvailableStreamSet(3); - - gridInit(dim, *this); - - - getNewDenseField(m_size3d, m_cardinality, Xd, Xnd); - getNewDenseField(m_size3d, m_cardinality, Yd, Ynd); - getNewDenseField(m_size3d, m_cardinality, Zd, Znd); - } -}; diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_main.cpp b/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_main.cpp deleted file mode 100644 index c3c6af9e..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_main.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "gtest/gtest.h" -#include - -#include "Neon/Neon.h" - -#include "Neon/core/core.h" -#include "sUt_common.h" -using namespace Neon; -using namespace Neon::domain; - - -int main(int argc, char** argv) -{ - ::testing::InitGoogleTest(&argc, argv); - Neon::init(); - return RUN_ALL_TESTS(); -} diff --git a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_tests.cu b/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_tests.cu deleted file mode 100644 index 69df5d06..00000000 --- a/libNeonSkeleton/tests/unit/sUt_userInterface/src/sUt_tests.cu +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include "Neon/domain/details/aGrid//aGrid.h" -#include "Neon/domain/dGrid.h" -#include "Neon/domain/eGrid.h" -#include "gtest/gtest.h" -#include "sUt_common.h" - -#include "sUt_add.h" - -int dummy() -{ - return 0; -} \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/skeleton-maps/src/map.cu b/libNeonSkeleton/tests/unit/skeleton-maps/src/map.cu index 4a053450..9113087e 100644 --- a/libNeonSkeleton/tests/unit/skeleton-maps/src/map.cu +++ b/libNeonSkeleton/tests/unit/skeleton-maps/src/map.cu @@ -1,6 +1,7 @@ #include "Neon/domain/aGrid.h" #include "Neon/domain/dGrid.h" #include "Neon/domain/eGrid.h" +#include "Neon/domain/Grids.h" #include "Neon/skeleton/Skeleton.h" @@ -189,6 +190,16 @@ TEST(OneStageXPYPipe, bGrid) runAllTestConfiguration(std::function(oneStageXPYPipe), nGpus, 1); } +TEST(OneStageXPYPipe, bGridDisg) +{ + int nGpus = 1; + constexpr int C = 0; + using Grid = Neon::bGridDisg; + using T = int64_t; + // runAllTestConfiguration(AXPY_struct, nGpus); + runAllTestConfiguration(std::function(oneStageXPYPipe), nGpus, 1); +} + // =============================================================================== TEST(twoStageXPYPipe, eGrid) { @@ -220,6 +231,15 @@ TEST(twoStageXPYPipe, bGrid) runAllTestConfiguration(std::function(twoStageXPYPipe), nGpus, 1); } +TEST(twoStageXPYPipe, bGridDisg ) +{ + int nGpus = 1; + constexpr int C = 0; + using Grid = Neon::bGridDisg; + using T = int64_t; + // runAllTestConfiguration(AXPY_struct, nGpus); + runAllTestConfiguration(std::function(twoStageXPYPipe), nGpus, 1); +} // =============================================================================== TEST(threeLevelXPYTree, eGrid) @@ -250,4 +270,14 @@ TEST(threeLevelXPYTree, bGrid) using T = int64_t; // runAllTestConfiguration(AXPY_struct, nGpus); runAllTestConfiguration(std::function(threeLevelXPYTree), nGpus, 1); +} + +TEST(threeLevelXPYTree, bGridDisg ) +{ + int nGpus = 1; + constexpr int C = 0; + using Grid = Neon::bGridDisg; + using T = int64_t; + // runAllTestConfiguration(AXPY_struct, nGpus); + runAllTestConfiguration(std::function(threeLevelXPYTree), nGpus, 1); } \ No newline at end of file diff --git a/libNeonSkeleton/tests/unit/skeleton-stencil/src/runHelper.h b/libNeonSkeleton/tests/unit/skeleton-stencil/src/runHelper.h index 4858b819..8cd53082 100644 --- a/libNeonSkeleton/tests/unit/skeleton-stencil/src/runHelper.h +++ b/libNeonSkeleton/tests/unit/skeleton-stencil/src/runHelper.h @@ -22,10 +22,11 @@ using namespace Neon::domain::tool::testing; using namespace Neon::domain::tool; template -void runAllTestConfiguration(const std::string& gname, - std::function&)> f, - int nGpus, - int minNumGpus) +void runAllTestConfiguration(const std::string& gname, + std::function&, Neon::skeleton::Occ)> f, + Neon::skeleton::Occ occ, + int nGpus, + int minNumGpus) { if (Neon::sys::globalSpace::gpuSysObjStorage.numDevs() > 0) { std::vector nGpuTest; @@ -69,7 +70,7 @@ void runAllTestConfiguration(const std::string& gname, NEON_INFO(testData.toString()); - f(testData); + f(gname, testData, occ); } } } diff --git a/libNeonSkeleton/tests/unit/skeleton-stencil/src/stencil.cu b/libNeonSkeleton/tests/unit/skeleton-stencil/src/stencil.cu index 0e88980a..095959f9 100644 --- a/libNeonSkeleton/tests/unit/skeleton-stencil/src/stencil.cu +++ b/libNeonSkeleton/tests/unit/skeleton-stencil/src/stencil.cu @@ -59,7 +59,9 @@ auto laplaceOnIntegers(const Field& filedA, template -void singleStencil(TestData& data) +void singleStencil(std::string testName, + TestData& data, + Neon::skeleton::Occ occ) { using Type = typename TestData::Type; @@ -82,7 +84,9 @@ void singleStencil(TestData& data) ops.push_back(laplaceOnIntegers(Y, X)); Neon::skeleton::Skeleton skl(data.getBackend()); - skl.sequence(ops, "sUt_dGridStencil"); + Neon::skeleton::Options opt(occ, Neon::set::TransferMode::get); + skl.sequence(ops, testName, opt); + skl.ioToDot(testName, testName, true); for (int j = 0; j < nIterations; j++) { skl.run(); @@ -108,20 +112,29 @@ void singleStencil(TestData& data) ASSERT_TRUE(isOk); } -TEST(singleStencil, dGrid) +TEST(skeleton_stencil_occ_none, dGrid) { int nGpus = 1; using Grid = Neon::dGrid; using Type = int32_t; constexpr int C = 0; - runAllTestConfiguration("dGrid", singleStencil, nGpus, 1); + runAllTestConfiguration("skeleton_stencil_occ_none_dGrid", singleStencil, Neon::skeleton::Occ::none, nGpus, 1); } -TEST(singleStencil, bGridSingleGpu) +TEST(skeleton_stencil_occ_standard, dGrid) +{ + int nGpus = 1; + using Grid = Neon::dGrid; + using Type = int32_t; + constexpr int C = 0; + runAllTestConfiguration("skeleton_stencil_occ_standard_dGrid", singleStencil, Neon::skeleton::Occ::standard, nGpus, 1); +} + +TEST(skeleton_stencil, bGridSingleGpu) { int nGpus = 1; using Grid = Neon::bGrid; using Type = int32_t; constexpr int C = 0; - runAllTestConfiguration("bGrid", singleStencil, nGpus, 1); + runAllTestConfiguration("bGrid", singleStencil, Neon::skeleton::Occ::none, nGpus, 1); } \ No newline at end of file diff --git a/libNeonSys/include/Neon/sys/devices/gpu/GpuDevice.h b/libNeonSys/include/Neon/sys/devices/gpu/GpuDevice.h index 80cdbbe9..ac5cc97a 100644 --- a/libNeonSys/include/Neon/sys/devices/gpu/GpuDevice.h +++ b/libNeonSys/include/Neon/sys/devices/gpu/GpuDevice.h @@ -182,6 +182,7 @@ class GpuDevice : public DeviceInterface exc << "\n Kernel requires " << func_attr.sharedSizeBytes << " bytes of static shared memory"; exc << "\n Kernel requires " << func_attr.constSizeBytes << " bytes of user-allocated constant memory"; exc << "\n Kernel requires " << func_attr.localSizeBytes << " bytes of local memory per thread"; + exc << "\n Kernel grid size is " << cudaGrid.x << " x " << cudaGrid.y << " x " << cudaGrid.z; exc << "\n Kernel maximum thread/block is " << func_attr.maxThreadsPerBlock << " while launched block is " << cudaBlock.x * cudaBlock.y * cudaBlock.z; exc << "\n Kernel maximum dynamic shared memory is " << func_attr.maxDynamicSharedSizeBytes << " bytes while launched dynamic shared memory is " << shrMemSize << "bytes\n"; NEON_THROW(exc);